git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* What's cooking in git.git (Aug 2026, #07)
@ 2026-08-17  7:43 14% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-08-17  7:43 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The 14th batch of topics have now graduated to the 'master' branch.
We have 437 non-merge commits in 'master' since Git 2.55.  There
are 112 non-merge commits cooking in 'next' (note that some have
been reverted), and 273 non-merge commits, including those in and
out of 'next', in 'seen' as of this writing.

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

* jc/add-resolved (2026-07-31) 4 commits
  (merged to 'next' on 2026-08-08 at 61afef3e37)
 + add: introduce '--resolved' option
 + read-cache: add remove_file_from_index_with_flags()
 + merge-ll: consolidate conflict marker scanning logic
 + read-cache: reindent

 'git add' has been taught a new '--resolved' option to stage
 conflict-resolved paths, while leaving unrelated local changes
 unstaged.  It scans the unmerged paths for leftover conflict
 markers and aborts if any are found.

 Graduated to 'master'.
 cf. <20260801141414.GD2041176@coredump.intra.peff.net>
 source: <20260731125605.3638938-1-gitster@pobox.com>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
  (merged to 'next' on 2026-08-08 at ea8486f2a7)
 + t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Graduated to 'master'.
 cf. <xmqq8q6myl76.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* kl/t7528-ssh-agent-for-csh-users (2026-08-02) 1 commit
  (merged to 'next' on 2026-08-08 at bb96050841)
 + t7528: fix failure under csh

 The 'ssh-agent' tests in 't7528' have been fixed to work when the
 user's login shell is csh-like, by explicitly passing '-s' to
 'ssh-agent' to force Bourne shell syntax.

 Graduated to 'master'.
 cf. <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>
 source: <20260803004105.36913-2-keni@his.com>


* tn/packfile-uri-concurrency (2026-07-26) 6 commits
  (merged to 'next' on 2026-08-08 at 44df3a3ec5)
 + fetch-pack: accept "pack" output for packfile URIs
 + http: permit unlinking partial packs on Windows
 + http: avoid concurrent appends to partial packs
 + http: accept HTTP 416 for complete partial packs
 + http: avoid closing index-pack input twice
 + http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP are
 safer by avoiding concurrent appends to the staging file.  Opening in
 read-write mode with separate file offsets prevents corruption and
 preserves resumability.  'fetch-pack' now tolerates pre-existing
 '.keep' files.

 Graduated to 'master'.
 cf. <20260801140255.GC2041176@coredump.intra.peff.net>
 source: <cover.1785111375.git.tnyman@openai.com>


--------------------------------------------------
[Stalled]

* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response for too long, stalled.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response for too long, stalled.
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Will discard.
 cf. <xmqq8q71clob.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response for too long, stalled.
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>

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

* kh/format-rev-doc-synopsis (2026-08-13) 2 commits
 - doc: format-rev: use [synopsis] on code block
 - doc: format-rev: quote subject placeholder before and after

 The documentation for 'git format-rev' has been updated to use the
 [synopsis] block definition on code blocks to properly highlight
 placeholders, and a quoting inconsistency in the running text has
 been fixed.

 Expecting a reroll.
 cf. <ef8ee6fb-ef3d-4a83-b8fc-121448d58e53@app.fastmail.com>
 source: <V3_CV_synopsis_block.b64@msgid.xyz>


* kh/format-rev-more-options (2026-08-13) 4 commits
 - format-rev: learn --abbrev, --color, and --date
 - doc: rev-list-options.adoc: factor out --date alts
 - format-rev: factor option variables into a struct
 - format-rev: use lower case for opts description

 The experimental 'git format-rev' has been taught a few more
 formatting options.

 Waiting for response.
 cf. <xmqqbjb4ktz5.fsf@gitster.g>
 source: <CV_format-rev_three_more_opts.b80@msgid.xyz>


* ps/odb-pluggable-pack-generation (2026-08-07) 5 commits
 - bundle: generate packfiles via the object database
 - builtin/bundle: refactor option handling for progress meter
 - send-pack: generate packfiles via the object database
 - upload-pack: generate packfiles via the object database
 - odb: introduce interface to generate packfiles

 The mechanism to generate a packfile corresponding to the result of
 a fetch/push has been made pluggable through a set of object
 database callback functions, removing hardcoded references to
 'pack-objects' and enabling alternative ODBs to serve packfiles
 themselves.

 Expecting a reroll.
 cf. <an7GgQLQfleCPr-a@pks.im>
 source: <20260807-b4-pks-odb-generate-pack-v1-0-7dec431ae7cd@pks.im>


* ty/repository-fetch-if-missing (2026-08-14) 1 commit
 - repository: move fetch_if_missing into struct repository

 The global variable 'fetch_if_missing' has been moved to a member in
 'struct repository', continuing the libification process and
 allowing per-repository control (such as for submodules).

 Will merge to 'next'?
 cf. <xmqqmrun8jeu.fsf@gitster.g>
 source: <20260815064747.2196896-1-cat@malon.dev>


* ns/ref-symref-additional-tests (2026-08-13) 2 commits
 - t1401: test symbolic-ref exit codes on a non-symbolic ref
 - t1402: test forbidden characters in refnames

 A few additional tests.

 Needs review.
 source: <pull.2204.git.1786655554197.gitgitgadget@gmail.com>
 source: <pull.2203.git.1786653837190.gitgitgadget@gmail.com>


* en/diff-l-opt-help (2026-08-13) 1 commit
 - diff: avoid misleading statement about -l option

 The help text for the '-l' option of 'git diff' has been updated.

 Will merge to 'next'?
 cf. <xmqqbjb4rd5q.fsf@gitster.g>
 source: <pull.2035.v2.git.1786673186855.gitgitgadget@gmail.com>


* ss/submittingpatches-typofix (2026-08-14) 1 commit
 - doc: fix typo in submitting patches

 Typofix.

 Will merge to 'next'?
 cf. <xmqq7blsmru5.fsf@gitster.g>
 source: <pull.2383.git.git.1786733219160.gitgitgadget@gmail.com>


* ch/chdir-notify-drop-name (2026-08-14) 1 commit
 - chdir-notify.h: Removed unused param 'name'

 The unused name parameter in 'struct chdir_notify_entry' has been
 removed from chdir_notify_register(), chdir_notify_unregister(), and
 related callback signatures across several subsystems, simplifying the
 API now that trace output no longer uses it.

 Will merge to 'next'?
 cf. <20260815051213.GA26013@coredump.intra.peff.net>
 source: <20260814214210.1625-1-colinlewishinton@gmail.com>


* cc/git-shallow-file-wo-value (2026-08-11) 1 commit
 - git: avoid segfault on "git --shallow-file" without a value

 The '--shallow-file' option of 'git' command requires a value, but the
 code did not check the presence of a value and instead segfaulted
 without one, which has been corrected.

 Will merge to 'next'.
 cf. <an10XhFPo0nJWJIV@pks.im>
 cf. <xmqqcxvo1n8w.fsf@gitster.g>
 source: <20260811121446.2080190-1-christian.couder@gmail.com>


* js/sequencer-release-odb-before-commit (2026-08-12) 1 commit
  (merged to 'next' on 2026-08-15 at 1c83dffd7a)
 + sequencer: release the ODB before spawning git commit

 The sequencer has been updated to release the object database before
 spawning 'git commit'.  This prevents open file handles from
 blocking auto-maintenance tasks, such as repacking, on systems like
 Windows where open files cannot be easily unlinked.

 Will merge to 'master'.
 cf. <xmqqqzk3xqxs.fsf@gitster.g>
 source: <pull.2198.v2.git.1786528498689.gitgitgadget@gmail.com>


* jt/receive-pack-pluggable-writes (2026-08-11) 9 commits
 - odb/transaction: add transaction interface to write packfiles
 - odb: return temporary ODB source when set
 - builtin/receive-pack: explicitly pass packfile fd
 - builtin/receive-pack: report unpack errors via strbuf
 - builtin/receive-pack: lift global state out of unpack()
 - builtin/receive-pack: read unpack limit config lazily
 - builtin/receive-pack: pass shallow file explicitly
 - odb/transaction: add transaction finalize interface
 - builtin/receive-pack: properly clean up keep files

 The 'git receive-pack' command has been updated to use a new ODB
 transaction interface for writing incoming packfiles, making it more
 backend-agnostic.

 Expecting a reroll.
 cf. <an8YSE8iIDXPSkH8@denethor>
 source: <20260811175415.2044235-1-jltobler@gmail.com>


* jc/complete-checkout (2026-08-13) 4 commits
 - completion: 'git checkout' completes untracked paths as a last resort
 - completion: complete tracked paths for "git checkout"
 - completion: no-op refactoring of checkout completion
 - Merge branch 'jc/complete-diff-tracked-paths' into jc/complete-checkout
 (this branch uses jc/complete-diff-tracked-paths.)

 Will merge to 'next'?
 cf. <CABPp-BFeLStBR3OeTCJoBmC7cn_VXrn4RcvBg-WWGyz4LpJxsg@mail.gmail.com>
 source: <20260813191234.1066662-1-gitster@pobox.com>


* en/sequencer-lose-pretty-given (2026-08-11) 1 commit
 - sequencer: remove unnecessary variable setting

 The setting of a now-unused member '.pretty_given' in the sequencer
 machinery has been removed.

 Will merge to 'next'.
 cf. <an11zsTm-fanH8yt@pks.im>
 cf. <xmqqa4qrxneq.fsf@gitster.g>
 source: <pull.1922.git.1786516959130.gitgitgadget@gmail.com>


* en/serve-promisor-remote-fix (2026-08-11) 1 commit
 - serve: reject valueless promisor-remote capability

 A client requesting the promisor-remote capability without a value
 caused a null pointer dereference, which has been corrected by
 rejecting a request without an argument.

 Will merge to 'next'.
 cf. <CAP8UFD0+iXC3VxWmuuuB7La-pP6hdz58tr6vaEJSKpXJ_4ZH2w@mail.gmail.com>
 source: <pull.2199.git.1786516783909.gitgitgadget@gmail.com>


* ps/odb-eagerly-load-alternates (2026-08-12) 5 commits
 - odb: drop `alternates_db` field
 - odb: drop `loaded_alternates` field
 - odb: eagerly initialize alternates
 - odb: decouple source path comparisons from `the_repository`
 - Merge branch 'ps/odb-make-creation-pluggable' into ps/odb-eagerly-load-alternates
 (this branch uses ps/odb-make-creation-pluggable.)

 The object database layer has been simplified by eagerly loading
 alternate object directories upon initialization, instead of
 deferring it to the first object lookup.  This eliminates the need
 for scattered lazy-loading calls throughout the codebase and paves
 the way for integrating alternates with the pluggable backends.

 Waiting for response.
 cf. <an36BA_Nw7eLAKYC@denethor>
 cf. <CAOLa=ZQARq2eoVegh1BsnKrvd9MuraNFJ3htKDxQ5H25WJUs1w@mail.gmail.com>
 source: <20260812-pks-odb-eagerly-prepare-alternates-v2-0-522b9a5bc1ea@pks.im>


* gg/http-ssl-verify-status (2026-08-12) 2 commits
 - SQUASH???
 - http: add http.sslVerifyStatus to check stapled OCSP responses

 The HTTP transport has been taught to check the revocation status of
 the server certificate using the stapled OCSP response during the
 TLS handshake via a new 'http.sslVerifyStatus' configuration
 variable.

 Waiting for response.
 cf. <xmqq1pc3vx9w.fsf@gitster.g>
 cf. <xmqqmruqt36l.fsf@gitster.g>
 source: <20260812182509.67358-1-ggordon@gitlab.com>


* js/packfile-fast-append (2026-08-13) 1 commit
 - packfile: fix perf regression with many packs

 The performance of adding numerous new packfiles has been improved
 by introducing a fast path for known-new packfiles to skip an
 unnecessary traversal in packfile_list_append(), avoiding a
 quadratic complexity regression on load.

 Will merge to 'next'?
 cf. <an7ItVYrKZFXg2ci@pks.im>
 cf. <xmqqy0e8pxos.fsf@gitster.g>
 source: <pull.2202.v2.git.1786633010179.gitgitgadget@gmail.com>


* hn/send-email-missing-subject-error (2026-08-10) 1 commit
  (merged to 'next' on 2026-08-15 at 6470901400)
 + send-email: clarify missing subject error

 The error message given by 'git send-email' when a message file is
 missing a 'Subject:' header has been clarified, and the error string
 is now terminated with a newline so that Perl avoids appending its
 internal source location data.

 Will merge to 'master'.
 cf. <xmqqtsp165tj.fsf@gitster.g>
 source: <pull.2375.v2.git.git.1786384412423.gitgitgadget@gmail.com>


* ss/repack-drop-filtered (2026-08-13) 6 commits
 - builtin/repack: add guards for --drop-filtered
 - builtin/repack: actually drop filtered promisor blobs
 - builtin/repack: enumerate promisor blobs for --drop-filtered
 - repack-promisor: allow excluding objects from the rebuilt promisor pack
 - list-objects-filter: add list_objects_filter__filter_oidset()
 - builtin/repack: add --drop-filtered and --dry-run options

 'git repack' has been taught '--drop-filtered' to delete local
 promisor blobs exceeding a limit (currently 'blob:limit=') in partial
 clones, reclaiming space.  Guards prevent running during other
 operations or if referenced by the index.

 Will merge to 'next'?
 cf. <CAP8UFD1esJ0fk3xPXvAmQhMK_5wrpGKZJg9YaFV0-qUAC7bf5g@mail.gmail.com>
 source: <20260813200830.84348-1-r.siddharth.shrimali@gmail.com>


* ty/repo-config-cleanups (2026-08-07) 3 commits
 - environment: remove inaccurate repo_config_values comments
 - environment: clarify repository config getter documentation
 - environment: drop redundant NULL checks in config getters

 Repository configuration getters in 'environment.c' have been
 simplified by removing redundant NULL checks.  The documentation for
 these getters in 'environment.h' has been clarified, and inaccurate
 section comments inside 'struct repo_config_values' have been removed.

 Needs review.
 cf. <anW7wHfUxYj9cj0P@pks.im>
 source: <20260807085932.3958759-1-cat@malon.dev>


* vm/complete-history (2026-08-13) 4 commits
 - completion: complete 'git history split' pathspecs
 - completion: complete 'git history --update-refs' values
 - completion: complete 'git history --empty' values
 - completion: add 'git history' subcommands

 The command line completion (in contrib/) has been taught to handle
 the experimental 'git history' command.

 Needs review.
 source: <20260813-history_autocompletion-v3-0-69eed1cea93a@kernel.org>


* cc/lazy-fetch-trusted-bit (2026-08-13) 5 commits
 - builtin/upload-pack: set GIT_NO_LAZY_FETCH to 0 on trusted repo
 - upload-pack: read uploadpack.lazyFetchTrusted
 - setup: add 'allow_dot' arg to path_allowlist_apply()
 - setup: extract path_allowlist_apply()
 - promisor-remote: factor out lazy_fetch_objects()

 A new 'uploadpack.lazyFetchTrusted' configuration variable has been
 introduced to allow 'upload-pack' to lazily fetch missing objects from
 configured promisor remotes when serving trusted repositories.

 Waiting for response.
 cf. <xmqqy0e8mv0k.fsf@gitster.g>
 cf. <xmqq1pc0mr5i.fsf@gitster.g>
 source: <20260813154748.2378747-1-christian.couder@gmail.com>


* dk/use-nsec-runtime (2026-08-14) 3 commits
 - core: convert build-time USE_NSEC into runtime core.useNanosec
 - environment: align repo_config_values_init with struct declaration
 - meson: expose knob for xmlto relative links in manuals

 The build-time knob 'USE_NSEC' for nanosecond stat precision has been
 converted to a runtime configuration 'core.useNanosec', allowing
 distributions to bundle one binary that adapts to filesystem
 capabilities dynamically.

 Expecting a reroll.
 cf. <CALnO6CA96y0g9iy+GRMV1v86zk3eKpCKxeJWid=097sFNXEknA@mail.gmail.com>
 source: <cover.1786710807.git.ben.knoble@gmail.com>


* ps/t7900-deflake-maintenance (2026-08-12) 2 commits
 - t7900: fix flaky "maintenance.strategy" test
 - t7900: adapt some tests to use a throwaway repository

 Various tests in 't7900-maintenance.sh' have been updated to use a
 throwaway repository, and auto-detaching of maintenance tasks is now
 disabled for these tests to fix flaky races with concurrent background
 maintenance jobs.

 Will merge to 'next'.
 cf. <CAOLa=ZQmZ0spmdPOzCZe36i24nQh+o7d4fSz5dcJS7+O3p2skg@mail.gmail.com>
 source: <20260812-pks-t7900-fix-flaky-test-v2-0-9ea0e1ac0edd@pks.im>


* ps/odb-streams (2026-08-05) 8 commits
  (merged to 'next' on 2026-08-15 at a8fbd74d00)
 + odb/streaming: unify function names to create new streams
 + odb/streaming: rename `struct input_zstream_data`
 + odb/streaming: rename `struct read_object_fd_data`
 + odb/streaming: consolidate read and write streams
 + odb/streaming: rename `struct odb_read_stream`
 + odb/streaming: support streaming arbitrary object types
 + odb/streaming: drop `is_finished` field
 + odb/streaming: track write stream size in the structure

 The 'struct odb_read_stream' and 'struct odb_write_stream'
 structures have been consolidated into a single unified 'struct
 odb_stream' structure, simplifying object database streaming APIs
 and enabling streaming of arbitrary object types.

 Will merge to 'master'.
 cf. <anuBdm29ye_qV_Rq@denethor>
 source: <20260805-pks-odb-stream-unification-v2-0-b8c369564641@pks.im>


* bc/restrict-hex-to-lowercase (2026-07-29) 6 commits
 - hex: allow only lowercase object IDs in breaking changes mode
 - object-name: use hexval
 - hex: label usages of hex parsing for object IDs
 - hex: make hex_to_bytes accept kind of hex to use
 - hex: allow specifying hex type with hex2chr
 - hex: add functionality for lowercase-only hex

 The parser for hex object names has been updated to reject uppercase
 hexadecimal characters when running in the breaking changes mode, in
 preparation for Git 3.0.

 Waiting for review.
 cf. <anJdvLV7-raJK67B@fruit.crustytoothpaste.net>
 source: <20260729233215.398654-1-sandals@crustytoothpaste.net>


* js/mingw-build-updates (2026-08-12) 12 commits
 - mingw: allow `git.exe` to be used instead of the "Git wrapper"
 - mingw: ensure valid CTYPE
 - mingw: always define `ETC_*` for MSYS2 environments
 - windows: skip linking `git-<command>` for built-ins
 - mingw: rely on MSYS2's metadata instead of hard-coding it
 - mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
 - mingw: set the prefix and HOST_CPU as per MSYS2's settings
 - mingw: avoid over-specifying `--pic-executable`
 - mingw: only use -Wl,--large-address-aware for 32-bit builds
 - mingw: drop the -D_USE_32BIT_TIME_T option
 - mingw: stop hard-coding `CC = gcc`
 - mingw: include the Python parts in the build

 A collection of patches from Git for Windows has been upstreamed,
 mostly focusing on simplifying and robustifying build configurations
 for MinGW/MSYS2, dropping obsolete compatibility options, and allowing
 the main 'git.exe' to be used directly without the extra wrapper
 process on Windows.

 Waiting for response.
 cf. <4f4129df-681f-4e99-8b1f-8bb96e206a2d@kdbg.org>
 source: <pull.2195.v2.git.1786521173.gitgitgadget@gmail.com>


* yn/worktree-add-no-dwim-with-b (2026-08-10) 1 commit
 - worktree add: improve message for ambiguous remote branch name

 'git worktree add' did not prevent DWIM behavior when '-b' or '-B' was
 specified, which has been corrected.

 Expecting a reroll.
 cf. <CAF5D8-tfAfjNONh8dbqxmF+kzzaQ4rSQL94DK2=TLd9_HV9oaA@mail.gmail.com>
 source: <pull.2197.v4.git.1786430155244.gitgitgadget@gmail.com>


* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit
 - ci: cancel stale pull request workflow runs

 GitHub Actions CI workflow runs triggered by pull requests have
 been configured to cancel older runs when a new push is made to the
 same pull request.

 Needs review.
 source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>


* kh/doc-refs-migrate-limitations (2026-08-05) 2 commits
  (merged to 'next' on 2026-08-11 at 2eb1041920)
 + doc: refs: linkgit to git-maintenance(1)
 + doc: refs: put ref migration warning under the command

 The known limitations of the ref format migration in 'git refs' have
 been moved to be displayed as a warning admonition directly under the
 description of the 'migrate' subcommand, improving visibility.  A
 reference to 'git-maintenance' has also been corrected to use the
 'linkgit' macro.

 Will merge to 'master'.
 cf. <anQYWlv3UhpS3iE7@pks.im>
 cf. <CAOLa=ZQQnrRca60BAfnm6Azu=bHvnoVhcGwQ3KkDT7yqLDd8Dw@mail.gmail.com>
 source: <V3_CV_git_ref_migration_warning.b23@msgid.xyz>


* jc/complete-diff-tracked-paths (2026-08-12) 3 commits
 - completion: 'git diff' completes untracked paths as a last resort
 - completion: complete tracked paths for 'git diff'
 - completion: no-op refactoring of diff completion
 (this branch is used by jc/complete-checkout.)

 'git -C <dir> diff fi<TAB>' did not complete 'dir/file', which has
 been corrected.

 Needs review.
 cf. <CABPp-BFdwxTvkcWKNP0-Lk+mqQLnULoYuLHZe0aot4VYfHnjSw@mail.gmail.com>
 source: <20260812162551.2229680-1-gitster@pobox.com>


* kh/trailers-no-urls (2026-08-02) 2 commits
 - trailers: stop recognizing URLs as trailers
 - Merge branch 'kh/doc-trailers' into kh/trailers-no-urls
 (this branch uses kh/doc-trailers.)

 The trailers code has been taught to avoid mistaking a line that has
 '<token>://' at the beginning as a trailer line.

 On hold, waiting for the base topic.
 cf. <20260803152025.GA189075@coredump.intra.peff.net>
 cf. <xmqqmrv42lrg.fsf@gitster.g>
 cf. <xmqqtspbz00x.fsf@gitster.g>
 source: <URLs_not_trailers.b13@msgid.xyz>


* kh/doc-trailers (2026-08-09) 11 commits
  (merged to 'next' on 2026-08-13 at 2966f0265a)
 + doc: interpret-trailers: document comment line treatment
 + doc: interpret-trailers: rewrite new-trailers paragraphs
 + doc: interpret-trailers: commit to “trailer block” term
 + doc: interpret-trailers: join new-trailers again
 + doc: interpret-trailers: add key format example
 + doc: interpret-trailers: explain key format
 + doc: interpret-trailers: explain the format after the intro
 + doc: interpret-trailers: not just for commit messages
 + doc: interpret-trailers: use “metadata” in Name as well
 + doc: interpret-trailers: replace “lines” with “metadata”
 + doc: interpret-trailers: stop fixating on RFC 822
 (this branch is used by kh/trailers-no-urls.)

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Will merge to 'master'.
 cf. <0687D60D-DF6B-4547-868C-FCFC5B27ECAF@gmail.com>
 source: <V5_CV_doc_int-tr_key_format.b26@msgid.xyz>


* cl/regexec-macos-leak (2026-07-28) 2 commits
 - SQUASH???
 - regexec: work around macOS TRE leak on invalid UTF-8

 A compatibility workaround has been introduced for macOS to address
 a memory leak in the system regex engine when it encounters invalid
 multibyte sequences.  The workaround segments the input buffer at
 invalid byte boundaries and searches each valid segment separately
 using regexec(), avoiding the leaking path.

 Waiting for response.
 cf. <xmqqse52bpa9.fsf@gitster.g>
 cf. <anL7qL2-4h8ZlLcg@pks.im>
 source: <20260728052538.12429-1-chungmin@chungminlee.com>


* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
 - checkout -m: refine autostash fallback
 - sequencer: teach autostash apply to report conflicts

 The autostash fallback in 'git checkout -m' has been refined to only
 retry when there are local changes.  Additionally, a blank line now
 visually separates autostash conflict advice from the subsequent
 branch-switch message.

 Needs review.
 cf. <xmqqwluebuhb.fsf@gitster.g>
 source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>


* tb/pack-with-duplicates (2026-07-24) 5 commits
 - pack-bitmap: handle duplicate pack entries during MIDX reuse
 - test-tool bitmap: reject packs with duplicate objects
 - midx: verify duplicate pack entries by OID and offset
 - packfile: recover delta cycles through duplicate entries
 - t5308: test reverse indexes with duplicate objects

 The handling of packfiles with duplicate object entries has been
 hardened.  Specifically, reverse index lookup, delta cycle
 recovery, multi-pack-index verification, and pack reuse paths have
 been updated to correctly handle or gracefully reject duplicate
 entries.

 Waiting for response.
 cf. <xmqqecgs3vg6.fsf@gitster.g>
 source: <cover.1784927134.git.ttaylorr@openai.com>


* ps/cat-file-remote-object-info-type (2026-08-07) 11 commits
  (merged to 'next' on 2026-08-15 at 3f5daf59a8)
 + cat-file: unify default format
 + serve: advertise type capability
 + fetch-object-info: parse type from server response
 + protocol-caps: add type support to object-info
 + transport: drop remote object-info fields from transport struct
 + fetch-object-info: die() on the remaining error path
 + fetch-object-info: use dedicated struct for the results
 + fetch-object-info: pass arguments directly instead of a struct
 + fetch-object-info: detect malformed server responses
 + t5701: use test_file_size() to get the size of a file
 + Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type

 The 'remote-object-info' command for 'git cat-file --batch-command'
 has been extended to support the '%(objecttype)' placeholder.

 Will merge to 'master'.
 cf. <20260808074157.GA2915582@coredump.intra.peff.net>
 cf. <CA+J6zkR5ZkUc8c=xiXgKiAYmbgcoyGfwpgm6aaG0Gog8OVmOjw@mail.gmail.com>
 cf. <CAOLa=ZTrf_WHiRHTjBGAus+YbRsUkbR3dzsW=fgCK0jit6fYzQ@mail.gmail.com>
 source: <20260808-objecttype-support-v6-0-e5cdaf27a49c@gmail.com>


* ps/odb-make-creation-pluggable (2026-08-06) 6 commits
  (merged to 'next' on 2026-08-13 at 749fa77ae1)
 + odb: make creation of on-disk structures pluggable
 + odb/source: introduce function to map source type to name
 + setup: defer object database creation
 + setup: handle ODB-related environment variables in `odb_new()`
 + setup: detangle loading of loose object maps
 + loose: load loose object map for the correct source
 (this branch is used by ps/odb-eagerly-load-alternates.)

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Will merge to 'master'.
 cf. <87jyq24cxm.fsf@emacs.iotcl.com>
 source: <20260807-pks-odb-create-on-disk-v5-0-399da0b0b140@pks.im>


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for response.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response, stalled.
 cf. <1eba5fb2-ab76-41e9-955d-e283256ad25d@gmail.com>
 cf. <98682fa4-55d9-4829-97f1-02e244b35266@gmail.com>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* kj/repo-info-more-path-keys (2026-08-06) 7 commits
 - repo: remove unused setup.h include
 - repo: add path.git-prefix
 - repo: add path.grafts with absolute and relative suffixes
 - repo: add path.index with absolute and relative suffixes
 - repo: add path.hooks with absolute and relative suffixes
 - repo: add path.superproject-root with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Waiting for response.
 cf. <6E2B0ADE-2101-47AC-B11B-315897AC2AF9@gmail.com>
 cf. <749F5FAC-5803-4E7A-AEC8-BA653D329EE2@gmail.com>
 source: <20260806101556.162940-1-jayatheerthkulkarni2005@gmail.com>


* tc/last-modified-bloom (2026-08-07) 6 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: add Bloom check that includes parent directories
 - bloom: add helper to check if any key in a vector is present
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Waiting for response.
 cf. <xmqqtsp4a6c2.fsf@gitster.g>
 source: <20260807-toon-speed-up-last-modified-v2-0-7d87bbdeaf9b@iotcl.com>


* hn/bisect-reset-when-found (2026-08-02) 2 commits
  (merged to 'next' on 2026-08-11 at cad4ed37c6)
 + bisect: add --reset-when-found to leave when done
 + bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Will merge to 'master'.
 cf. <xmqqldajjgn3.fsf@gitster.g>
 source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-08-12) 12 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - reftable: handle block-writer initialization errors
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Will merge to 'next'.
 cf. <an1k0d5fI4EVsfsM@pks.im>
 source: <pull.2179.v3.git.1786521801.gitgitgadget@gmail.com>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Expecting a reroll.
 cf. <fbb118df-7c82-49a5-90bb-4458b7e9a850@gmail.com>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-08-11) 12 commits
  (merged to 'next' on 2026-08-15 at a0434930b4)
 + fast-import: remove useless from_stream argument
 + fast-import: use parse_options() for command line options
 + fast-import: use callbacks to parse some options
 + fast-import: use struct option for usage string
 + fast-import: move command state globals into 'struct fast_import_state'
 + fast-import: introduce 'struct fast_import_state'
 + fast-import: factor out option_*() functions
 + fast-import: use int for some bool flags
 + fast-import: localize 'i' into the 'for' loops using it
 + api-parse-options.adoc: document hidden and OPT_*_F option macros
 + api-parse-options.adoc: document per-option flags
 + parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Will merge to 'master'.
 cf. <CABPp-BE_gVtCF+Y0AAyXSXnJ2hUK0pJiWqEhkD8kVc4S8-y7kQ@mail.gmail.com>
 source: <20260811083314.2023489-1-christian.couder@gmail.com>


* ps/writev (2026-08-06) 5 commits
  (merged to 'next' on 2026-08-11 at bc2a935c92)
 + fast-import: use writev(3p) to send cat-blob responses
 + sideband: use writev(3p) to send pktlines
 + wrapper: properly handle MAX_IO_SIZE in writev(3p)
 + wrapper: introduce writev(3p) wrappers
 + compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Will merge to 'master'.
 cf. <xmqqcxvvhu6q.fsf@gitster.g>
 source: <20260807-pks-reintroduce-writev-v2-0-30fcff0e89c1@pks.im>


* js/pack-objects-delta-size-t (2026-08-13) 13 commits
 - packfile: widen `unpack_object_header_buffer()` to `size_t`
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Will merge to 'next'.
 cf. <xmqqbjb6t179.fsf@gitster.g>
 source: <pull.2175.v3.git.1786632952.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command can now configure how submodule fetch errors
 are handled via 'fetch.submoduleErrors' and '--submodule-errors',
 making them non-fatal.  A premature failure during recursive submodule
 fetches has been fixed by deferring the error until the OID-based
 retry phase fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.  This topic has been ejected due to conflicts with
 'pw/rebase-drop-notes-with-commit'.

 Expecting a reroll.
 cf. <DKJ2CZKJC6P0.VHLMCUDH6Z44@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-08-12) 3 commits
 - t/lib-httpd: document writing concurrency-safe CGI helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v3.git.1786583137.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.  This topic has been ejected for now, as it causes too
 many evil merges with other topics.

 Waiting for response, stalled.
 cf. <xmqqqzkx9t95.fsf@gitster.g>
 cf. <al6yCTDjBRn2HGq0@com-79390>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-08-13) 9 commits
 - fixup! history: create squashed commits without editing
 - history: support editing squashed commit messages
 - history: create squashed commits without editing
 - history: protect branches when squashing a range
 - history: validate squash revision ranges
 - history: add skeleton for squash subcommand
 - sequencer: share the squash message marker helpers and flags
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Waiting for response.
 cf. <xmqq4igyszeb.fsf@gitster.g>
 cf. <xmqqtsoxr8lm.fsf@gitster.g>
 source: <pull.2337.v13.git.git.1786088371.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Expecting a reroll.
 cf. <an4uIQA09rDCwwBp@com-79390>
 source: <cover.1781294771.git.me@ttaylorr.com>


* tc/replay-linearize (2026-07-28) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: resolve the replay base outside pick_regular_commit()
 - replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Waiting for response.
 cf. <anYLeQj4Sx2vZqvy@denethor>
 cf. <CABPp-BEFGku8msiJCcXburV+tcersr6uqEumKaPh-TguA1LjSg@mail.gmail.com>
 source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>


* mm/diff-process-hunks (2026-08-13) 12 commits
 - fixup! diff: consult oid-only hunk providers via diff.<driver>.process
 - diff: consult oid-only hunk providers via diff.<driver>.process
 - userdiff: add diff.<driver>.process config
 - sub-process: add a gentle status read
 - sub-process: separate process lifecycle from hashmap management
 - blame: read precomputed hunks
 - diff: read precomputed hunks for stat output
 - diff: record precomputed hunks during stat output
 - diff-hunks: add the store format, library, and command
 - diff: introduce a hunk provider interface
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Waiting for response, stalled
 cf. <xmqqmrupr7yh.fsf@gitster.g>
 cf. <1f8fe709-ef19-496e-9857-8c2d24b29c56@gmail.com>
 source: <20260801174156.2998808-1-mmontalbo@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-08-05) 7 commits
  (merged to 'next' on 2026-08-13 at 07f0138e2e)
 + branch: add --dry-run for --delete-merged
 + branch: add branch.<name>.deleteMerged opt-out
 + branch: add --delete-merged <pattern>
 + branch: prepare delete_branches for a bulk caller
 + branch: let delete_branches skip unmerged branches on bulk refusal
 + branch: convert delete_branches() to a flags argument
 + branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Will merge to 'master'.
 cf. <10b22a6b-e028-469c-a117-8dc2ed5bed3b@gmail.com>
 source: <pull.2285.v25.git.git.1785939877.gitgitgadget@gmail.com>


* kk/merge-base-exhaustion (2026-08-11) 11 commits
  (merged to 'next' on 2026-08-15 at 3f836fa1e4)
 + commit-reach: remove commit-date ordering fallback
 + commit-reach: move min_generation check into paint_queue_get()
 + commit-reach: terminate merge-base walk when one paint side is exhausted
 + commit-reach: introduce struct paint_state with per-side counters
 + t6600: add clock-skew topologies and step counts for edge cases
 + commit-reach: add trace2 instrumentation to paint_down_to_common()
 + t6099: add side-exhaustion regression test
 + t6600: add test cases for side-exhaustion edge cases
 + test-lib-functions: improve diagnostic output for trace2 data assertions
 + Documentation/technical: add paint-down-to-common doc
 + Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Will merge to 'master'.
 cf. <CABPp-BHuh_8q6Hy2-Bk7H6Chdb4+eeW1f4LZU0szZ4zU9Eeo+w@mail.gmail.com>
 cf. <xmqqbjb7w1dq.fsf@gitster.g>
 source: <pull.2149.v8.git.1786440533.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 . fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Retracted
 cf. <CAJ-ks9kQR77vH-56eS9tT-iXEnih+Z7SPRMs1gD_wTyg_6gZ_w@mail.gmail.com>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 . send-pack: honor `no-ref-delta` capability
 . pack-objects: support reuse with `--no-ref-delta`
 . pack-objects: introduce `--no-ref-delta`
 . t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Retracted for now.
 source: <cover.1783905084.git.ttaylorr@openai.com>


^ permalink raw reply	[relevance 14%]

* What's cooking in git.git (Aug 2026, #06)
@ 2026-08-15  0:33 14% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-08-15  0:33 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The 13th batch of topics have now graduated to the 'master' branch.
We have 424 non-merge commits in 'master' since Git 2.55.  There
are 82 non-merge commits cooking in 'next' (note that some have
been reverted), and 286 non-merge commits, including those in and
out of 'next', in 'seen' as of this writing.

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]

* kh/format-rev-doc-synopsis (2026-08-13) 2 commits
 - doc: format-rev: use [synopsis] on code block
 - doc: format-rev: quote subject placeholder before and after

 The documentation for 'git format-rev' has been updated to use the
 [synopsis] block definition on code blocks to properly highlight
 placeholders, and a quoting inconsistency in the running text has
 been fixed.

 Expecting a reroll.
 cf. <ef8ee6fb-ef3d-4a83-b8fc-121448d58e53@app.fastmail.com>
 source: <V3_CV_synopsis_block.b64@msgid.xyz>


* kh/format-rev-more-options (2026-08-13) 4 commits
 - format-rev: learn --abbrev, --color, and --date
 - doc: rev-list-options.adoc: factor out --date alts
 - format-rev: factor option variables into a struct
 - format-rev: use lower case for opts description

 The experimental 'git format-rev' has been taught a few more
 formatting options.

 Waiting for review.
 cf. <add02b44-8896-48af-9338-bb913e83ff82@app.fastmail.com>
 source: <CV_format-rev_three_more_opts.b80@msgid.xyz>


* ps/odb-pluggable-pack-generation (2026-08-07) 5 commits
 - bundle: generate packfiles via the object database
 - builtin/bundle: refactor option handling for progress meter
 - send-pack: generate packfiles via the object database
 - upload-pack: generate packfiles via the object database
 - odb: introduce interface to generate packfiles

 The mechanism to generate a packfile corresponding to the result of
 a fetch/push has been made pluggable through a set of object
 database callback functions, removing hardcoded references to
 'pack-objects' and enabling alternative ODBs to serve packfiles
 themselves.

 Expecting a reroll.
 cf. <an7GgQLQfleCPr-a@pks.im>
 source: <20260807-b4-pks-odb-generate-pack-v1-0-7dec431ae7cd@pks.im>


* ty/repository-fetch-if-missing (2026-08-14) 2 commits
 - repository: move fetch_if_missing into struct repository
 - pack-objects: give fetch_if_missing call sites access to 'repo'

 The global variable 'fetch_if_missing' has been moved to a member in
 'struct repository', continuing the libification process and
 allowing per-repository control (such as for submodules).

 Waiting for response.
 cf. <xmqq33wgrcco.fsf@gitster.g>
 cf. <xmqq7blsrclt.fsf@gitster.g>
 source: <20260814072419.1666358-1-cat@malon.dev>


* ns/ref-symref-additional-tests (2026-08-13) 2 commits
 - t1401: test symbolic-ref exit codes on a non-symbolic ref
 - t1402: test forbidden characters in refnames

 A few additional tests.

 Needs review.
 source: <pull.2204.git.1786655554197.gitgitgadget@gmail.com>
 source: <pull.2203.git.1786653837190.gitgitgadget@gmail.com>


* en/diff-l-opt-help (2026-08-13) 1 commit
 - diff: avoid misleading statement about -l option

 The help text for the '-l' option of 'git diff' has been updated.

 Will merge to 'next'?
 cf. <xmqqbjb4rd5q.fsf@gitster.g>
 source: <pull.2035.v2.git.1786673186855.gitgitgadget@gmail.com>


* ss/submittingpatches-typofix (2026-08-14) 1 commit
 - doc: fix typo in submitting patches

 Typofix.

 Will merge to 'next'?
 source: <pull.2383.git.git.1786733219160.gitgitgadget@gmail.com>


* ch/chdir-notify-drop-name (2026-08-14) 1 commit
 - chdir-notify.h: Removed unused param 'name'

 The unused name parameter in 'struct chdir_notify_entry' has been
 removed from chdir_notify_register(), chdir_notify_unregister(), and
 related callback signatures across several subsystems, simplifying the
 API now that trace output no longer uses it.

 Will merge to 'next'?
 cf. <20260814203100.GB2575854@coredump.intra.peff.net>
 source: <20260814214210.1625-1-colinlewishinton@gmail.com>

--------------------------------------------------
[Stalled]

* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response for too long, stalled.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response for too long, stalled.
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Will discard.
 cf. <xmqq8q71clob.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response for too long, stalled.
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>

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

* cc/git-shallow-file-wo-value (2026-08-11) 1 commit
 - git: avoid segfault on "git --shallow-file" without a value

 The '--shallow-file' option of 'git' command requires a value, but the
 code did not check the presence of a value and instead segfaulted
 without one, which has been corrected.

 Will merge to 'next'?
 cf. <an10XhFPo0nJWJIV@pks.im>
 cf. <xmqqcxvo1n8w.fsf@gitster.g>
 source: <20260811121446.2080190-1-christian.couder@gmail.com>


* js/sequencer-release-odb-before-commit (2026-08-12) 1 commit
 - sequencer: release the ODB before spawning git commit

 The sequencer has been updated to release the object database before
 spawning 'git commit'.  This prevents open file handles from
 blocking auto-maintenance tasks, such as repacking, on systems like
 Windows where open files cannot be easily unlinked.

 Will merge to 'next'?
 cf. <xmqqqzk3xqxs.fsf@gitster.g>
 source: <pull.2198.v2.git.1786528498689.gitgitgadget@gmail.com>


* jt/receive-pack-pluggable-writes (2026-08-11) 9 commits
 - odb/transaction: add transaction interface to write packfiles
 - odb: return temporary ODB source when set
 - builtin/receive-pack: explicitly pass packfile fd
 - builtin/receive-pack: report unpack errors via strbuf
 - builtin/receive-pack: lift global state out of unpack()
 - builtin/receive-pack: read unpack limit config lazily
 - builtin/receive-pack: pass shallow file explicitly
 - odb/transaction: add transaction finalize interface
 - builtin/receive-pack: properly clean up keep files

 The 'git receive-pack' command has been updated to use a new ODB
 transaction interface for writing incoming packfiles, making it more
 backend-agnostic.

 Expecting a reroll.
 cf. <an8YSE8iIDXPSkH8@denethor>
 source: <20260811175415.2044235-1-jltobler@gmail.com>


* jc/complete-checkout (2026-08-13) 4 commits
 - completion: 'git checkout' completes untracked paths as a last resort
 - completion: complete tracked paths for "git checkout"
 - completion: no-op refactoring of checkout completion
 - Merge branch 'jc/complete-diff-tracked-paths' into jc/complete-checkout
 (this branch uses jc/complete-diff-tracked-paths.)

 Will merge to 'next'?
 cf. <CABPp-BFeLStBR3OeTCJoBmC7cn_VXrn4RcvBg-WWGyz4LpJxsg@mail.gmail.com>
 source: <20260813191234.1066662-1-gitster@pobox.com>


* en/sequencer-lose-pretty-given (2026-08-11) 1 commit
 - sequencer: remove unnecessary variable setting

 The setting of a now-unused member '.pretty_given' in the sequencer
 machinery has been removed.

 Will merge to 'next'?
 cf. <an11zsTm-fanH8yt@pks.im>
 cf. <xmqqa4qrxneq.fsf@gitster.g>
 source: <pull.1922.git.1786516959130.gitgitgadget@gmail.com>


* en/serve-promisor-remote-fix (2026-08-11) 1 commit
 - serve: reject valueless promisor-remote capability

 A client requesting the promisor-remote capability without a value
 caused a null pointer dereference, which has been corrected by
 rejecting a request without an argument.

 Will merge to 'next'?
 cf. <CAP8UFD0+iXC3VxWmuuuB7La-pP6hdz58tr6vaEJSKpXJ_4ZH2w@mail.gmail.com>
 source: <pull.2199.git.1786516783909.gitgitgadget@gmail.com>


* ps/odb-eagerly-load-alternates (2026-08-12) 5 commits
 - odb: drop `alternates_db` field
 - odb: drop `loaded_alternates` field
 - odb: eagerly initialize alternates
 - odb: decouple source path comparisons from `the_repository`
 - Merge branch 'ps/odb-make-creation-pluggable' into ps/odb-eagerly-load-alternates
 (this branch uses ps/odb-make-creation-pluggable.)

 The object database layer has been simplified by eagerly loading
 alternate object directories upon initialization, instead of
 deferring it to the first object lookup.  This eliminates the need
 for scattered lazy-loading calls throughout the codebase and paves
 the way for integrating alternates with the pluggable backends.

 Waiting for response.
 cf. <an36BA_Nw7eLAKYC@denethor>
 cf. <CAOLa=ZTLq2xjkC12B=4wPJA9UJ1PWS4_iUAyqgcJ7GYnbM2YrQ@mail.gmail.com>
 cf. <20260814171724.GB2563235@coredump.intra.peff.net>
 source: <20260812-pks-odb-eagerly-prepare-alternates-v2-0-522b9a5bc1ea@pks.im>


* gg/http-ssl-verify-status (2026-08-12) 2 commits
 - SQUASH???
 - http: add http.sslVerifyStatus to check stapled OCSP responses

 The HTTP transport has been taught to check the revocation status of
 the server certificate using the stapled OCSP response during the
 TLS handshake via a new 'http.sslVerifyStatus' configuration
 variable.

 Waiting for response.
 cf. <xmqq1pc3vx9w.fsf@gitster.g>
 cf. <xmqqmruqt36l.fsf@gitster.g>
 source: <20260812182509.67358-1-ggordon@gitlab.com>


* js/packfile-fast-append (2026-08-13) 1 commit
 - packfile: fix perf regression with many packs

 The performance of adding numerous new packfiles has been improved
 by introducing a fast path for known-new packfiles to skip an
 unnecessary traversal in packfile_list_append(), avoiding a
 quadratic complexity regression on load.

 Will merge to 'next'?
 cf. <an7ItVYrKZFXg2ci@pks.im>
 cf. <xmqqy0e8pxos.fsf@gitster.g>
 source: <pull.2202.v2.git.1786633010179.gitgitgadget@gmail.com>


* hn/send-email-missing-subject-error (2026-08-10) 1 commit
 - send-email: clarify missing subject error

 The error message given by 'git send-email' when a message file is
 missing a 'Subject:' header has been clarified, and the error string
 is now terminated with a newline so that Perl avoids appending its
 internal source location data.

 Will merge to 'next'?
 cf. <xmqqtsp165tj.fsf@gitster.g>
 source: <pull.2375.v2.git.git.1786384412423.gitgitgadget@gmail.com>


* ss/repack-drop-filtered (2026-08-13) 6 commits
 - builtin/repack: add guards for --drop-filtered
 - builtin/repack: actually drop filtered promisor blobs
 - builtin/repack: enumerate promisor blobs for --drop-filtered
 - repack-promisor: allow excluding objects from the rebuilt promisor pack
 - list-objects-filter: add list_objects_filter__filter_oidset()
 - builtin/repack: add --drop-filtered and --dry-run options

 'git repack' has been taught '--drop-filtered' to delete local
 promisor blobs exceeding a limit (currently 'blob:limit=') in partial
 clones, reclaiming space.  Guards prevent running during other
 operations or if referenced by the index.

 Expecting a reroll.
 cf. <CAP8UFD1esJ0fk3xPXvAmQhMK_5wrpGKZJg9YaFV0-qUAC7bf5g@mail.gmail.com>
 source: <20260813200830.84348-1-r.siddharth.shrimali@gmail.com>


* ty/repo-config-cleanups (2026-08-07) 3 commits
 - environment: remove inaccurate repo_config_values comments
 - environment: clarify repository config getter documentation
 - environment: drop redundant NULL checks in config getters

 Repository configuration getters in 'environment.c' have been
 simplified by removing redundant NULL checks.  The documentation for
 these getters in 'environment.h' has been clarified, and inaccurate
 section comments inside 'struct repo_config_values' have been removed.

 Needs review.
 cf. <anW7wHfUxYj9cj0P@pks.im>
 source: <20260807085932.3958759-1-cat@malon.dev>


* vm/complete-history (2026-08-13) 4 commits
 - completion: complete 'git history split' pathspecs
 - completion: complete 'git history --update-refs' values
 - completion: complete 'git history --empty' values
 - completion: add 'git history' subcommands

 The command line completion (in contrib/) has been taught to handle
 the experimental 'git history' command.

 Needs review.
 source: <20260813-history_autocompletion-v3-0-69eed1cea93a@kernel.org>


* cc/lazy-fetch-trusted-bit (2026-08-13) 5 commits
 - builtin/upload-pack: set GIT_NO_LAZY_FETCH to 0 on trusted repo
 - upload-pack: read uploadpack.lazyFetchTrusted
 - setup: add 'allow_dot' arg to path_allowlist_apply()
 - setup: extract path_allowlist_apply()
 - promisor-remote: factor out lazy_fetch_objects()

 A new 'uploadpack.lazyFetchTrusted' configuration variable has been
 introduced to allow 'upload-pack' to lazily fetch missing objects from
 configured promisor remotes when serving trusted repositories.

 Waiting for response.
 cf. <xmqqy0e8mv0k.fsf@gitster.g>
 cf. <xmqq1pc0mr5i.fsf@gitster.g>
 source: <20260813154748.2378747-1-christian.couder@gmail.com>


* dk/use-nsec-runtime (2026-08-14) 3 commits
 - core: convert build-time USE_NSEC into runtime core.useNanosec
 - environment: align repo_config_values_init with struct declaration
 - meson: expose knob for xmlto relative links in manuals

 The build-time knob 'USE_NSEC' for nanosecond stat precision has been
 converted to a runtime configuration 'core.useNanosec', allowing
 distributions to bundle one binary that adapts to filesystem
 capabilities dynamically.

 Expecting a reroll.
 cf. <CALnO6CA96y0g9iy+GRMV1v86zk3eKpCKxeJWid=097sFNXEknA@mail.gmail.com>
 source: <cover.1786710807.git.ben.knoble@gmail.com>


* ps/t7900-deflake-maintenance (2026-08-12) 2 commits
 - t7900: fix flaky "maintenance.strategy" test
 - t7900: adapt some tests to use a throwaway repository

 Various tests in 't7900-maintenance.sh' have been updated to use a
 throwaway repository, and auto-detaching of maintenance tasks is now
 disabled for these tests to fix flaky races with concurrent background
 maintenance jobs.

 Will merge to 'next'?
 cf. <CAOLa=ZQmZ0spmdPOzCZe36i24nQh+o7d4fSz5dcJS7+O3p2skg@mail.gmail.com>
 source: <20260812-pks-t7900-fix-flaky-test-v2-0-9ea0e1ac0edd@pks.im>


* ps/odb-streams (2026-08-05) 8 commits
 - odb/streaming: unify function names to create new streams
 - odb/streaming: rename `struct input_zstream_data`
 - odb/streaming: rename `struct read_object_fd_data`
 - odb/streaming: consolidate read and write streams
 - odb/streaming: rename `struct odb_read_stream`
 - odb/streaming: support streaming arbitrary object types
 - odb/streaming: drop `is_finished` field
 - odb/streaming: track write stream size in the structure

 The 'struct odb_read_stream' and 'struct odb_write_stream'
 structures have been consolidated into a single unified 'struct
 odb_stream' structure, simplifying object database streaming APIs
 and enabling streaming of arbitrary object types.

 Will merge to 'next'?
 cf. <anuBdm29ye_qV_Rq@denethor>
 source: <20260805-pks-odb-stream-unification-v2-0-b8c369564641@pks.im>


* bc/restrict-hex-to-lowercase (2026-07-29) 6 commits
 - hex: allow only lowercase object IDs in breaking changes mode
 - object-name: use hexval
 - hex: label usages of hex parsing for object IDs
 - hex: make hex_to_bytes accept kind of hex to use
 - hex: allow specifying hex type with hex2chr
 - hex: add functionality for lowercase-only hex

 The parser for hex object names has been updated to reject uppercase
 hexadecimal characters when running in the breaking changes mode, in
 preparation for Git 3.0.

 Waiting for review.
 cf. <anJdvLV7-raJK67B@fruit.crustytoothpaste.net>
 source: <20260729233215.398654-1-sandals@crustytoothpaste.net>


* js/mingw-build-updates (2026-08-12) 12 commits
 - mingw: allow `git.exe` to be used instead of the "Git wrapper"
 - mingw: ensure valid CTYPE
 - mingw: always define `ETC_*` for MSYS2 environments
 - windows: skip linking `git-<command>` for built-ins
 - mingw: rely on MSYS2's metadata instead of hard-coding it
 - mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
 - mingw: set the prefix and HOST_CPU as per MSYS2's settings
 - mingw: avoid over-specifying `--pic-executable`
 - mingw: only use -Wl,--large-address-aware for 32-bit builds
 - mingw: drop the -D_USE_32BIT_TIME_T option
 - mingw: stop hard-coding `CC = gcc`
 - mingw: include the Python parts in the build

 A collection of patches from Git for Windows has been upstreamed,
 mostly focusing on simplifying and robustifying build configurations
 for MinGW/MSYS2, dropping obsolete compatibility options, and allowing
 the main 'git.exe' to be used directly without the extra wrapper
 process on Windows.

 Needs review.
 source: <pull.2195.v2.git.1786521173.gitgitgadget@gmail.com>


* yn/worktree-add-no-dwim-with-b (2026-08-10) 1 commit
 - worktree add: improve message for ambiguous remote branch name

 'git worktree add' did not prevent DWIM behavior when '-b' or '-B' was
 specified, which has been corrected.

 Waiting for response.
 cf. <xmqqjypvw3cg.fsf@gitster.g>
 source: <pull.2197.v4.git.1786430155244.gitgitgadget@gmail.com>


* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit
 - ci: cancel stale pull request workflow runs

 GitHub Actions CI workflow runs triggered by pull requests have
 been configured to cancel older runs when a new push is made to the
 same pull request.

 Needs review.
 source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>


* kh/doc-refs-migrate-limitations (2026-08-05) 2 commits
  (merged to 'next' on 2026-08-11 at 2eb1041920)
 + doc: refs: linkgit to git-maintenance(1)
 + doc: refs: put ref migration warning under the command

 The known limitations of the ref format migration in 'git refs' have
 been moved to be displayed as a warning admonition directly under the
 description of the 'migrate' subcommand, improving visibility.  A
 reference to 'git-maintenance' has also been corrected to use the
 'linkgit' macro.

 Will merge to 'master'.
 cf. <anQYWlv3UhpS3iE7@pks.im>
 cf. <CAOLa=ZQQnrRca60BAfnm6Azu=bHvnoVhcGwQ3KkDT7yqLDd8Dw@mail.gmail.com>
 source: <V3_CV_git_ref_migration_warning.b23@msgid.xyz>


* jc/complete-diff-tracked-paths (2026-08-12) 3 commits
 - completion: 'git diff' completes untracked paths as a last resort
 - completion: complete tracked paths for 'git diff'
 - completion: no-op refactoring of diff completion
 (this branch is used by jc/complete-checkout.)

 'git -C <dir> diff fi<TAB>' did not complete 'dir/file', which has
 been corrected.

 Needs review.
 cf. <CABPp-BFdwxTvkcWKNP0-Lk+mqQLnULoYuLHZe0aot4VYfHnjSw@mail.gmail.com>
 source: <20260812162551.2229680-1-gitster@pobox.com>


* kh/trailers-no-urls (2026-08-02) 2 commits
 - trailers: stop recognizing URLs as trailers
 - Merge branch 'kh/doc-trailers' into kh/trailers-no-urls
 (this branch uses kh/doc-trailers.)

 The trailers code has been taught to avoid mistaking a line that has
 '<token>://' at the beginning as a trailer line.

 On hold, waiting for the base topic.
 cf. <20260803152025.GA189075@coredump.intra.peff.net>
 cf. <xmqqmrv42lrg.fsf@gitster.g>
 cf. <xmqqtspbz00x.fsf@gitster.g>
 source: <URLs_not_trailers.b13@msgid.xyz>


* kl/t7528-ssh-agent-for-csh-users (2026-08-02) 1 commit
  (merged to 'next' on 2026-08-08 at bb96050841)
 + t7528: fix failure under csh

 The 'ssh-agent' tests in 't7528' have been fixed to work when the
 user's login shell is csh-like, by explicitly passing '-s' to
 'ssh-agent' to force Bourne shell syntax.

 Will merge to 'master'.
 cf. <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>
 source: <20260803004105.36913-2-keni@his.com>


* kh/doc-trailers (2026-08-09) 11 commits
  (merged to 'next' on 2026-08-13 at 2966f0265a)
 + doc: interpret-trailers: document comment line treatment
 + doc: interpret-trailers: rewrite new-trailers paragraphs
 + doc: interpret-trailers: commit to “trailer block” term
 + doc: interpret-trailers: join new-trailers again
 + doc: interpret-trailers: add key format example
 + doc: interpret-trailers: explain key format
 + doc: interpret-trailers: explain the format after the intro
 + doc: interpret-trailers: not just for commit messages
 + doc: interpret-trailers: use “metadata” in Name as well
 + doc: interpret-trailers: replace “lines” with “metadata”
 + doc: interpret-trailers: stop fixating on RFC 822
 (this branch is used by kh/trailers-no-urls.)

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Will merge to 'master'.
 cf. <0687D60D-DF6B-4547-868C-FCFC5B27ECAF@gmail.com>
 source: <V5_CV_doc_int-tr_key_format.b26@msgid.xyz>


* cl/regexec-macos-leak (2026-07-28) 2 commits
 - SQUASH???
 - regexec: work around macOS TRE leak on invalid UTF-8

 A compatibility workaround has been introduced for macOS to address
 a memory leak in the system regex engine when it encounters invalid
 multibyte sequences.  The workaround segments the input buffer at
 invalid byte boundaries and searches each valid segment separately
 using regexec(), avoiding the leaking path.

 Waiting for response.
 cf. <xmqqse52bpa9.fsf@gitster.g>
 cf. <anL7qL2-4h8ZlLcg@pks.im>
 source: <20260728052538.12429-1-chungmin@chungminlee.com>


* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
 - checkout -m: refine autostash fallback
 - sequencer: teach autostash apply to report conflicts

 The autostash fallback in 'git checkout -m' has been refined to only
 retry when there are local changes.  Additionally, a blank line now
 visually separates autostash conflict advice from the subsequent
 branch-switch message.

 Needs review.
 cf. <xmqqwluebuhb.fsf@gitster.g>
 source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>


* jc/add-resolved (2026-07-31) 4 commits
  (merged to 'next' on 2026-08-08 at 61afef3e37)
 + add: introduce '--resolved' option
 + read-cache: add remove_file_from_index_with_flags()
 + merge-ll: consolidate conflict marker scanning logic
 + read-cache: reindent

 'git add' has been taught a new '--resolved' option to stage
 conflict-resolved paths, while leaving unrelated local changes
 unstaged.  It scans the unmerged paths for leftover conflict
 markers and aborts if any are found.

 Will merge to 'master'.
 cf. <20260801141414.GD2041176@coredump.intra.peff.net>
 source: <20260731125605.3638938-1-gitster@pobox.com>


* tb/pack-with-duplicates (2026-07-24) 5 commits
 - pack-bitmap: handle duplicate pack entries during MIDX reuse
 - test-tool bitmap: reject packs with duplicate objects
 - midx: verify duplicate pack entries by OID and offset
 - packfile: recover delta cycles through duplicate entries
 - t5308: test reverse indexes with duplicate objects

 The handling of packfiles with duplicate object entries has been
 hardened.  Specifically, reverse index lookup, delta cycle
 recovery, multi-pack-index verification, and pack reuse paths have
 been updated to correctly handle or gracefully reject duplicate
 entries.

 Waiting for response.
 cf. <xmqqecgs3vg6.fsf@gitster.g>
 source: <cover.1784927134.git.ttaylorr@openai.com>


* ps/cat-file-remote-object-info-type (2026-08-07) 11 commits
 - cat-file: unify default format
 - serve: advertise type capability
 - fetch-object-info: parse type from server response
 - protocol-caps: add type support to object-info
 - transport: drop remote object-info fields from transport struct
 - fetch-object-info: die() on the remaining error path
 - fetch-object-info: use dedicated struct for the results
 - fetch-object-info: pass arguments directly instead of a struct
 - fetch-object-info: detect malformed server responses
 - t5701: use test_file_size() to get the size of a file
 - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type

 The 'remote-object-info' command for 'git cat-file --batch-command'
 has been extended to support the '%(objecttype)' placeholder.

 Will merge to 'next'?
 cf. <20260808074157.GA2915582@coredump.intra.peff.net>
 cf. <CA+J6zkR5ZkUc8c=xiXgKiAYmbgcoyGfwpgm6aaG0Gog8OVmOjw@mail.gmail.com>
 cf. <CAOLa=ZTrf_WHiRHTjBGAus+YbRsUkbR3dzsW=fgCK0jit6fYzQ@mail.gmail.com>
 source: <20260808-objecttype-support-v6-0-e5cdaf27a49c@gmail.com>


* ps/odb-make-creation-pluggable (2026-08-06) 6 commits
  (merged to 'next' on 2026-08-13 at 749fa77ae1)
 + odb: make creation of on-disk structures pluggable
 + odb/source: introduce function to map source type to name
 + setup: defer object database creation
 + setup: handle ODB-related environment variables in `odb_new()`
 + setup: detangle loading of loose object maps
 + loose: load loose object map for the correct source
 (this branch is used by ps/odb-eagerly-load-alternates.)

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Will merge to 'master'.
 cf. <87jyq24cxm.fsf@emacs.iotcl.com>
 source: <20260807-pks-odb-create-on-disk-v5-0-399da0b0b140@pks.im>


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for response.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response, stalled.
 cf. <1eba5fb2-ab76-41e9-955d-e283256ad25d@gmail.com>
 cf. <98682fa4-55d9-4829-97f1-02e244b35266@gmail.com>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* kj/repo-info-more-path-keys (2026-08-06) 7 commits
 - repo: remove unused setup.h include
 - repo: add path.git-prefix
 - repo: add path.grafts with absolute and relative suffixes
 - repo: add path.index with absolute and relative suffixes
 - repo: add path.hooks with absolute and relative suffixes
 - repo: add path.superproject-root with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Needs review.
 source: <20260806101556.162940-1-jayatheerthkulkarni2005@gmail.com>


* tc/last-modified-bloom (2026-08-07) 6 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: add Bloom check that includes parent directories
 - bloom: add helper to check if any key in a vector is present
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Waiting for response.
 cf. <xmqqtsp4a6c2.fsf@gitster.g>
 source: <20260807-toon-speed-up-last-modified-v2-0-7d87bbdeaf9b@iotcl.com>


* hn/bisect-reset-when-found (2026-08-02) 2 commits
  (merged to 'next' on 2026-08-11 at cad4ed37c6)
 + bisect: add --reset-when-found to leave when done
 + bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Will merge to 'master'.
 cf. <xmqqldajjgn3.fsf@gitster.g>
 source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-08-12) 12 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - reftable: handle block-writer initialization errors
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Will merge to 'next'?
 cf. <an1k0d5fI4EVsfsM@pks.im>
 source: <pull.2179.v3.git.1786521801.gitgitgadget@gmail.com>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Expecting a reroll.
 cf. <fbb118df-7c82-49a5-90bb-4458b7e9a850@gmail.com>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-08-11) 12 commits
 - fast-import: remove useless from_stream argument
 - fast-import: use parse_options() for command line options
 - fast-import: use callbacks to parse some options
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: factor out option_*() functions
 - fast-import: use int for some bool flags
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Will merge to 'next'?
 cf. <CABPp-BE_gVtCF+Y0AAyXSXnJ2hUK0pJiWqEhkD8kVc4S8-y7kQ@mail.gmail.com>
 source: <20260811083314.2023489-1-christian.couder@gmail.com>


* ps/writev (2026-08-06) 5 commits
  (merged to 'next' on 2026-08-11 at bc2a935c92)
 + fast-import: use writev(3p) to send cat-blob responses
 + sideband: use writev(3p) to send pktlines
 + wrapper: properly handle MAX_IO_SIZE in writev(3p)
 + wrapper: introduce writev(3p) wrappers
 + compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Will merge to 'master'.
 cf. <xmqqcxvvhu6q.fsf@gitster.g>
 source: <20260807-pks-reintroduce-writev-v2-0-30fcff0e89c1@pks.im>


* tn/packfile-uri-concurrency (2026-07-26) 6 commits
  (merged to 'next' on 2026-08-08 at 44df3a3ec5)
 + fetch-pack: accept "pack" output for packfile URIs
 + http: permit unlinking partial packs on Windows
 + http: avoid concurrent appends to partial packs
 + http: accept HTTP 416 for complete partial packs
 + http: avoid closing index-pack input twice
 + http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP are
 safer by avoiding concurrent appends to the staging file.  Opening in
 read-write mode with separate file offsets prevents corruption and
 preserves resumability.  'fetch-pack' now tolerates pre-existing
 '.keep' files.

 Will merge to 'master'.
 cf. <20260801140255.GC2041176@coredump.intra.peff.net>
 source: <cover.1785111375.git.tnyman@openai.com>


* js/pack-objects-delta-size-t (2026-08-13) 13 commits
 - packfile: widen `unpack_object_header_buffer()` to `size_t`
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Will merge to 'next'?
 cf. <xmqqbjb6t179.fsf@gitster.g>
 source: <pull.2175.v3.git.1786632952.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command can now configure how submodule fetch errors
 are handled via 'fetch.submoduleErrors' and '--submodule-errors',
 making them non-fatal.  A premature failure during recursive submodule
 fetches has been fixed by deferring the error until the OID-based
 retry phase fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.  This topic has been ejected due to conflicts with
 'pw/rebase-drop-notes-with-commit'.

 Expecting a reroll.
 cf. <DKJ2CZKJC6P0.VHLMCUDH6Z44@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-08-12) 3 commits
 - t/lib-httpd: document writing concurrency-safe CGI helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v3.git.1786583137.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
  (merged to 'next' on 2026-08-08 at ea8486f2a7)
 + t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Will merge to 'master'.
 cf. <xmqq8q6myl76.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.  This topic has been ejected for now, as it causes too
 many evil merges with other topics.

 Waiting for response, stalled.
 cf. <xmqqqzkx9t95.fsf@gitster.g>
 cf. <al6yCTDjBRn2HGq0@com-79390>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-08-13) 9 commits
 - fixup! history: create squashed commits without editing
 - history: support editing squashed commit messages
 - history: create squashed commits without editing
 - history: protect branches when squashing a range
 - history: validate squash revision ranges
 - history: add skeleton for squash subcommand
 - sequencer: share the squash message marker helpers and flags
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Waiting for response.
 cf. <xmqq4igyszeb.fsf@gitster.g>
 cf. <xmqqtsoxr8lm.fsf@gitster.g>
 source: <pull.2337.v13.git.git.1786088371.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Expecting a reroll.
 cf. <an4uIQA09rDCwwBp@com-79390>
 source: <cover.1781294771.git.me@ttaylorr.com>


* tc/replay-linearize (2026-07-28) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: resolve the replay base outside pick_regular_commit()
 - replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Waiting for response.
 cf. <anYLeQj4Sx2vZqvy@denethor>
 cf. <CABPp-BEFGku8msiJCcXburV+tcersr6uqEumKaPh-TguA1LjSg@mail.gmail.com>
 source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>


* mm/diff-process-hunks (2026-08-13) 12 commits
 - fixup! diff: consult oid-only hunk providers via diff.<driver>.process
 - diff: consult oid-only hunk providers via diff.<driver>.process
 - userdiff: add diff.<driver>.process config
 - sub-process: add a gentle status read
 - sub-process: separate process lifecycle from hashmap management
 - blame: read precomputed hunks
 - diff: read precomputed hunks for stat output
 - diff: record precomputed hunks during stat output
 - diff-hunks: add the store format, library, and command
 - diff: introduce a hunk provider interface
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Waiting for response, stalled
 cf. <xmqqmrupr7yh.fsf@gitster.g>
 cf. <1f8fe709-ef19-496e-9857-8c2d24b29c56@gmail.com>
 source: <20260801174156.2998808-1-mmontalbo@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-08-05) 7 commits
  (merged to 'next' on 2026-08-13 at 07f0138e2e)
 + branch: add --dry-run for --delete-merged
 + branch: add branch.<name>.deleteMerged opt-out
 + branch: add --delete-merged <pattern>
 + branch: prepare delete_branches for a bulk caller
 + branch: let delete_branches skip unmerged branches on bulk refusal
 + branch: convert delete_branches() to a flags argument
 + branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Will merge to 'master'.
 cf. <10b22a6b-e028-469c-a117-8dc2ed5bed3b@gmail.com>
 source: <pull.2285.v25.git.git.1785939877.gitgitgadget@gmail.com>


* kk/merge-base-exhaustion (2026-08-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099: add side-exhaustion regression test
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Will merge to 'next'?
 cf. <CABPp-BHuh_8q6Hy2-Bk7H6Chdb4+eeW1f4LZU0szZ4zU9Eeo+w@mail.gmail.com>
 cf. <xmqqbjb7w1dq.fsf@gitster.g>
 source: <pull.2149.v8.git.1786440533.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 . fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Retracted
 cf. <CAJ-ks9kQR77vH-56eS9tT-iXEnih+Z7SPRMs1gD_wTyg_6gZ_w@mail.gmail.com>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 . send-pack: honor `no-ref-delta` capability
 . pack-objects: support reuse with `--no-ref-delta`
 . pack-objects: introduce `--no-ref-delta`
 . t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Retracted for now.
 source: <cover.1783905084.git.ttaylorr@openai.com>


^ permalink raw reply	[relevance 14%]

* Re: What's cooking in git.git (Aug 2026, #05)
  @ 2026-08-13 17:36 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-08-13 17:36 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

>> * tb/send-pack-no-ref-delta (2026-07-12) 4 commits
>>  - send-pack: honor `no-ref-delta` capability
>>  - pack-objects: support reuse with `--no-ref-delta`
>>  - pack-objects: introduce `--no-ref-delta`
>>  - t/helper: teach pack-deltas to list delta entries
>> 
>>  'git send-pack' has been taught to refrain from sending 'REF_DELTA'
>>  encoded packfiles when the other side asks it to.
>> 
>>  Needs review.
>>  source: <alQ7WKITYDXfiVn9@com-79390>
>
> In <an0EkMZGEbg6LERc@com-79390> we've agreed that this series can be
> evicted for now in favor of
> <20260807-b4-pks-odb-generate-pack-v1-0-7dec431ae7cd@pks.im>, as Taylor
> still needs some more time to rethink the approach in there.
>
>> * tb/midx-incremental-custom-base (2026-06-12) 3 commits
>>  - midx-write: include packs above custom incremental base
>>  - midx: pass custom '--base' through incremental writes
>>  - t5334: expose shared `nth_line()` helper
>> 
>>  The 'git multi-pack-index write --incremental' command has been
>>  corrected to properly honor the '--base' option.  Previously, the
>>  custom base was ignored by the normal write path; packs from layers
>>  above the selected base were incorrectly skipped by the pack exclusion
>>  logic, and reachability closure for bitmaps was broken.
>> 
>>  Needs review.
>>  source: <cover.1781294771.git.me@ttaylorr.com>
>
> I'll try to have a look at this series later today.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Aug 2026, #05)
@ 2026-08-13  4:45 15% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-08-13  4:45 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The 13th batch of topics have now graduated to the 'master' branch.
We have 424 non-merge commits in 'master' since Git 2.55.  There
are 58 non-merge commits cooking in 'next' (note that some have
been reverted), and 266 non-merge commits, including those in and
out of 'next', in 'seen' as of this writing.

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]

* cc/git-shallow-file-wo-value (2026-08-11) 1 commit
 - git: avoid segfault on "git --shallow-file" without a value

 The '--shallow-file' option of 'git' command requires a value, but the
 code did not check the presence of a value and instead segfaulted
 without one, which has been corrected.

 Will merge to 'next'?
 cf. <anxXbnuRt4I4uPdI@pks.im>
 source: <20260811121446.2080190-1-christian.couder@gmail.com>


* js/sequencer-release-odb-before-commit (2026-08-12) 1 commit
 - sequencer: release the ODB before spawning git commit

 The sequencer has been updated to release the object database before
 spawning 'git commit'.  This prevents open file handles from
 blocking auto-maintenance tasks, such as repacking, on systems like
 Windows where open files cannot be easily unlinked.

 Will merge to 'next'?
 cf. <xmqqqzk3xqxs.fsf@gitster.g>
 source: <pull.2198.v2.git.1786528498689.gitgitgadget@gmail.com>


* jt/receive-pack-pluggable-writes (2026-08-11) 9 commits
 - odb/transaction: add transaction interface to write packfiles
 - odb: return temporary ODB source when set
 - builtin/receive-pack: explicitly pass packfile fd
 - builtin/receive-pack: report unpack errors via strbuf
 - builtin/receive-pack: lift global state out of unpack()
 - builtin/receive-pack: read unpack limit config lazily
 - builtin/receive-pack: pass shallow file explicitly
 - odb/transaction: add transaction finalize interface
 - builtin/receive-pack: properly clean up keep files

 The 'git receive-pack' command has been updated to use a new ODB
 transaction interface for writing incoming packfiles, making it more
 backend-agnostic.

 Waiting for response.
 cf. <anwNonpw5SZuHADv@pks.im>
 cf. <anwNp8cbCOOuI7nK@pks.im>
 source: <20260811175415.2044235-1-jltobler@gmail.com>


* jc/complete-checkout (2026-08-12) 5 commits
 - fixup! completion: 'git checkout' completes untracked paths as a last resort
 - completion: 'git checkout' completes untracked paths as a last resort
 - completion: complete tracked paths for "git checkout"
 - completion: no-op refactoring of checkout completion
 - Merge branch 'jc/complete-diff-tracked-paths' into jc/complete-checkout
 (this branch uses jc/complete-diff-tracked-paths.)

 Expecting a reroll.
 cf. <xmqq7blvw0ro.fsf@gitster.g>
 cf. <834FE315-FB34-47B7-9ACF-FC8194FBE8D5@gmail.com>
 source: <20260812164846.2236221-1-gitster@pobox.com>


* en/sequencer-lose-pretty-given (2026-08-11) 1 commit
 - sequencer: remove unnecessary variable setting

 The setting of a now-unused member revs.pretty_given in the
 sequencer machinery has been removed.

 Will merge to 'next'?
 cf. <xmqqa4qrxneq.fsf@gitster.g>
 source: <pull.1922.git.1786516959130.gitgitgadget@gmail.com>


* en/serve-promisor-remote-fix (2026-08-11) 1 commit
 - serve: reject valueless promisor-remote capability

 A client requesting the promisor-remote capability without a value
 caused a null pointer dereference, which has been corrected by
 rejecting a request without an argument.

 Needs review.
 source: <pull.2199.git.1786516783909.gitgitgadget@gmail.com>


* ps/odb-eagerly-load-alternates (2026-08-12) 5 commits
 - odb: drop `alternates_db` field
 - odb: drop `loaded_alternates` field
 - odb: eagerly initialize alternates
 - odb: decouple source path comparisons from `the_repository`
 - Merge branch 'ps/odb-make-creation-pluggable' into ps/odb-eagerly-load-alternates
 (this branch uses ps/odb-make-creation-pluggable.)

 The object database layer has been simplified by eagerly loading
 alternate object directories upon initialization, instead of
 deferring it to the first object lookup.  This eliminates the need
 for scattered lazy-loading calls throughout the codebase and paves
 the way for integrating alternates with the pluggable backends.

 Needs review.
 cf. <anuP0Mh9aBz9VdBK@denethor>
 source: <20260812-pks-odb-eagerly-prepare-alternates-v2-0-522b9a5bc1ea@pks.im>


* gg/http-ssl-verify-status (2026-08-12) 1 commit
 - http: add http.sslVerifyStatus to check stapled OCSP responses

 The HTTP transport has been taught to check the revocation status of
 the server certificate using the stapled OCSP response during the
 TLS handshake via a new 'http.sslVerifyStatus' configuration
 variable.

 Needs review (Broken???)
 cf. <xmqq1pc3vx9w.fsf@gitster.g>
 source: <20260812182509.67358-1-ggordon@gitlab.com>


* js/packfile-fast-append (2026-08-12) 1 commit
 - packfile: fix perf regression with many packs

 The performance of adding numerous new packfiles has been improved
 by introducing a fast path for known-new packfiles to skip an
 unnecessary traversal in packfile_list_append(), avoiding a
 quadratic complexity regression on load.

 Will merge to 'next'?
 cf. <xmqqfr0jw20t.fsf@gitster.g>
 cf. <20260812212955.GA152730@coredump.intra.peff.net>
 source: <pull.2202.git.1786561870638.gitgitgadget@gmail.com>

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

* ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
  (merged to 'next' on 2026-08-03 at c744bba04e)
 + doc: convert git-request-pull synopsis and options to new style
 + doc: convert git-send-email synopsis and options to new style
 + doc: convert git-format-patch synopsis and options to new style
 + doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Graduated to 'master'.
 cf. <xmqqldato56l.fsf@gitster.g>
 source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>


* kh/doc-replay-config (2026-07-30) 4 commits
  (merged to 'next' on 2026-08-03 at 5450adb2e1)
 + doc: replay: move “default” to the right-hand side
 + doc: replay: use a nested description list
 + doc: replay: improve config description
 + doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Graduated to 'master'.
 cf. <xmqq4ihfduxi.fsf@gitster.g>
 source: <V4_CV_doc_replay_config.af3@msgid.xyz>


* lo/mv-missing-dest-dir-check (2026-07-30) 2 commits
  (merged to 'next' on 2026-08-03 at 7643cf1c2a)
 + mv: reject a destination whose leading path is missing or a symlink
 + mv: name both source and destination when rename fails

 'git mv' has been updated to check for a missing destination
 leading directory during the checking phase, allowing 'git mv -n'
 to report the failure.  The error message when the rename(2)
 syscall fails has also been improved to name both the source and
 the destination.

 Graduated to 'master'.
 cf. <xmqqtspgjkwb.fsf@gitster.g>
 source: <pull.2356.v5.git.git.1785410884.gitgitgadget@gmail.com>


* ns/merge-base-is-ancestor-tests (2026-07-29) 1 commit
  (merged to 'next' on 2026-08-03 at cf2c4e00eb)
 + merge-base: add tests for --is-ancestor

 Tests for 'git merge-base --is-ancestor' have been added to cover
 exit codes (0 for success, 1 for non-ancestor, 128 for errors) and
 to ensure it cannot be combined with '--all'.

 Graduated to 'master'.
 cf. <xmqq8q6slb2t.fsf@gitster.g>
 source: <pull.2186.v2.git.1785392350660.gitgitgadget@gmail.com>


* sk/test-commit-body-helper (2026-07-27) 2 commits
  (merged to 'next' on 2026-08-03 at ce42e63135)
 + t: use commit_body to extract commit message bodies
 + test-lib-functions: add commit_body helper

 A new test helper commit_body() has been introduced to print the
 message body of a commit, and various tests have been updated to use
 it instead of spelling out the command pipeline manually and losing
 the exit status of the 'git cat-file' command on the upstream of the
 pipe.

 Graduated to 'master'.
 cf. <xmqqpl05o5n7.fsf@gitster.g>
 source: <20260727095656.75496-1-diy2903@gmail.com>

--------------------------------------------------
[Stalled]

* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response for too long, stalled.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response for too long, stalled.
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Will discard.
 cf. <xmqq8q71clob.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response for too long, stalled.
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>

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

* hn/send-email-missing-subject-error (2026-08-10) 1 commit
 - send-email: clarify missing subject error

 The error message given by 'git send-email' when a message file is
 missing a 'Subject:' header has been clarified, and the error string
 is now terminated with a newline so that Perl avoids appending its
 internal source location data.

 Will merge to 'next'?
 cf. <xmqqtsp165tj.fsf@gitster.g>
 source: <pull.2375.v2.git.git.1786384412423.gitgitgadget@gmail.com>


* ss/repack-drop-filtered (2026-08-10) 7 commits
 . Documentation/git-repack: document --drop-filtered and --dry-run
 . builtin/repack: add guards for --drop-filtered
 . builtin/repack: actually drop filtered promisor blobs
 . builtin/repack: enumerate promisor blobs for --drop-filtered
 . repack-promisor: allow excluding objects from the rebuilt promisor pack
 . list-objects-filter: add list_objects_filter__filter_oidset()
 . builtin/repack.c: add --drop-filtered and --dry-run options

 'git repack' has been taught '--drop-filtered' to delete local
 promisor blobs exceeding a limit (currently 'blob:limit=') in partial
 clones, reclaiming space.  Guards prevent running during other
 operations or if referenced by the index.

 Expecting a reroll.
 cf. <CAGWgyh9bJ=BSq1B8LSEaQth_4fQHB_YHDgHmf5m5MYcENAkxrw@mail.gmail.com>
 source: <20260810174047.6524-1-r.siddharth.shrimali@gmail.com>


* ty/repo-config-cleanups (2026-08-07) 3 commits
 - environment: remove inaccurate repo_config_values comments
 - environment: clarify repository config getter documentation
 - environment: drop redundant NULL checks in config getters

 Repository configuration getters in 'environment.c' have been
 simplified by removing redundant NULL checks.  The documentation for
 these getters in 'environment.h' has been clarified, and inaccurate
 section comments inside 'struct repo_config_values' have been removed.

 Needs review.
 cf. <anW7wHfUxYj9cj0P@pks.im>
 source: <20260807085932.3958759-1-cat@malon.dev>


* vm/complete-history (2026-08-06) 4 commits
 - completion: complete 'git history split' pathspecs
 - completion: complete 'git history --update-refs' values
 - completion: complete 'git history --empty' values
 - completion: add 'git history' subcommands

 The command line completion (in contrib/) has been taught to handle
 the experimental 'git history' command.

 Waiting for response.
 cf. <anV7cHblfmGvbl-e@pks.im>
 source: <20260806-history_autocompletion-v2-0-7e60f52a1c20@kernel.org>


* cc/lazy-fetch-trusted-bit (2026-08-07) 5 commits
 - builtin/upload-pack: set GIT_NO_LAZY_FETCH to 0 on trusted repo
 - upload-pack: read uploadpack.lazyFetchTrusted
 - setup: add 'allow_dot' arg to path_allowlist_apply()
 - setup: extract path_allowlist_apply()
 - promisor-remote: factor out lazy_fetch_objects()

 Expecting a reroll.
 cf. <CAP8UFD1LxM1s-MJuffhVks6JfBXoMzKii4YU4iQRNzXJZCQkfQ@mail.gmail.com>
 source: <20260807135511.1818458-1-christian.couder@gmail.com>


* dk/use-nsec-runtime (2026-08-07) 3 commits
 - core: convert build-time USE_NSEC into runtime core.useNanosec
 - environment: align repo_config_values_init with struct declaration
 - meson: expose knob for xmlto relative links in manuals

 Expecting a reroll.
 cf. <CALnO6CBm4g27mWBvD9m6yL0e5YZu3M9_zcUeLZk7QwTgnxMLQA@mail.gmail.com>
 source: <cover.1786103607.git.ben.knoble@gmail.com>


* ps/t7900-deflake-maintenance (2026-08-12) 2 commits
 - t7900: fix flaky "maintenance.strategy" test
 - t7900: adapt some tests to use a throwaway repository

 Various tests in t7900-maintenance.sh have been updated to use a
 throwaway repository, and auto-detaching of maintenance tasks is
 now disabled for these tests to fix flaky races with concurrent
 background maintenance jobs.

 Needs review.
 source: <20260812-pks-t7900-fix-flaky-test-v2-0-9ea0e1ac0edd@pks.im>


* ps/odb-streams (2026-08-05) 8 commits
 - odb/streaming: unify function names to create new streams
 - odb/streaming: rename `struct input_zstream_data`
 - odb/streaming: rename `struct read_object_fd_data`
 - odb/streaming: consolidate read and write streams
 - odb/streaming: rename `struct odb_read_stream`
 - odb/streaming: support streaming arbitrary object types
 - odb/streaming: drop `is_finished` field
 - odb/streaming: track write stream size in the structure

 The 'struct odb_read_stream' and 'struct odb_write_stream'
 structures have been consolidated into a single unified 'struct
 odb_stream' structure, simplifying object database streaming APIs
 and enabling streaming of arbitrary object types.

 Will merge to 'next'?
 cf. <anuBdm29ye_qV_Rq@denethor>
 source: <20260805-pks-odb-stream-unification-v2-0-b8c369564641@pks.im>


* bc/restrict-hex-to-lowercase (2026-07-29) 6 commits
 - hex: allow only lowercase object IDs in breaking changes mode
 - object-name: use hexval
 - hex: label usages of hex parsing for object IDs
 - hex: make hex_to_bytes accept kind of hex to use
 - hex: allow specifying hex type with hex2chr
 - hex: add functionality for lowercase-only hex

 The parser for hex object names has been updated to reject uppercase
 hexadecimal characters when running in the breaking changes mode, in
 preparation for Git 3.0.

 Waiting for review.
 cf. <anJdvLV7-raJK67B@fruit.crustytoothpaste.net>
 source: <20260729233215.398654-1-sandals@crustytoothpaste.net>


* js/mingw-build-updates (2026-08-12) 12 commits
 - mingw: allow `git.exe` to be used instead of the "Git wrapper"
 - mingw: ensure valid CTYPE
 - mingw: always define `ETC_*` for MSYS2 environments
 - windows: skip linking `git-<command>` for built-ins
 - mingw: rely on MSYS2's metadata instead of hard-coding it
 - mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
 - mingw: set the prefix and HOST_CPU as per MSYS2's settings
 - mingw: avoid over-specifying `--pic-executable`
 - mingw: only use -Wl,--large-address-aware for 32-bit builds
 - mingw: drop the -D_USE_32BIT_TIME_T option
 - mingw: stop hard-coding `CC = gcc`
 - mingw: include the Python parts in the build

 A collection of patches from Git for Windows has been upstreamed,
 mostly focusing on simplifying and robustifying build configurations
 for MinGW/MSYS2, dropping obsolete compatibility options, and allowing
 the main 'git.exe' to be used directly without the extra wrapper
 process on Windows.

 Needs review.
 source: <pull.2195.v2.git.1786521173.gitgitgadget@gmail.com>


* yn/worktree-add-no-dwim-with-b (2026-08-10) 1 commit
 - worktree add: improve message for ambiguous remote branch name

 'git worktree add' did not prevent DWIM behavior when '-b' or '-B' was
 specified, which has been corrected.

 Waiting for response.
 cf. <xmqqjypvw3cg.fsf@gitster.g>
 source: <pull.2197.v4.git.1786430155244.gitgitgadget@gmail.com>


* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit
 - ci: cancel stale pull request workflow runs

 GitHub Actions CI workflow runs triggered by pull requests have
 been configured to cancel older runs when a new push is made to the
 same pull request.

 Needs review.
 source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>


* kh/doc-refs-migrate-limitations (2026-08-05) 2 commits
  (merged to 'next' on 2026-08-11 at 2eb1041920)
 + doc: refs: linkgit to git-maintenance(1)
 + doc: refs: put ref migration warning under the command

 The known limitations of the ref format migration in 'git refs' have
 been moved to be displayed as a warning admonition directly under the
 description of the 'migrate' subcommand, improving visibility.  A
 reference to 'git-maintenance' has also been corrected to use the
 'linkgit' macro.

 Will merge to 'master'.
 cf. <anQYWlv3UhpS3iE7@pks.im>
 cf. <CAOLa=ZQQnrRca60BAfnm6Azu=bHvnoVhcGwQ3KkDT7yqLDd8Dw@mail.gmail.com>
 source: <V3_CV_git_ref_migration_warning.b23@msgid.xyz>


* jc/complete-diff-tracked-paths (2026-08-12) 3 commits
 - completion: 'git diff' completes untracked paths as a last resort
 - completion: complete tracked paths for 'git diff'
 - completion: no-op refactoring of diff completion
 (this branch is used by jc/complete-checkout.)

 'git -C <dir> diff fi<TAB>' did not complete 'dir/file', which has
 been corrected.

 Needs review.
 cf. <CABPp-BFdwxTvkcWKNP0-Lk+mqQLnULoYuLHZe0aot4VYfHnjSw@mail.gmail.com>
 source: <20260812162551.2229680-1-gitster@pobox.com>


* kh/trailers-no-urls (2026-08-02) 2 commits
 - trailers: stop recognizing URLs as trailers
 - Merge branch 'kh/doc-trailers' into kh/trailers-no-urls
 (this branch uses kh/doc-trailers.)

 The trailers code has been taught to avoid mistaking a line that has
 '<token>://' at the beginning as a trailer line.

 On hold, waiting for the base topic.
 cf. <20260803152025.GA189075@coredump.intra.peff.net>
 cf. <xmqqmrv42lrg.fsf@gitster.g>
 cf. <xmqqtspbz00x.fsf@gitster.g>
 source: <URLs_not_trailers.b13@msgid.xyz>


* kl/t7528-ssh-agent-for-csh-users (2026-08-02) 1 commit
  (merged to 'next' on 2026-08-08 at bb96050841)
 + t7528: fix failure under csh

 The 'ssh-agent' tests in 't7528' have been fixed to work when the
 user's login shell is csh-like, by explicitly passing '-s' to
 'ssh-agent' to force Bourne shell syntax.

 Will merge to 'master'.
 cf. <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>
 source: <20260803004105.36913-2-keni@his.com>


* kh/doc-trailers (2026-08-09) 11 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: rewrite new-trailers paragraphs
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822
 (this branch is used by kh/trailers-no-urls.)

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Will merge to 'next'.
 cf. <0687D60D-DF6B-4547-868C-FCFC5B27ECAF@gmail.com>
 source: <V5_CV_doc_int-tr_key_format.b26@msgid.xyz>


* cl/regexec-macos-leak (2026-07-28) 2 commits
 - SQUASH???
 - regexec: work around macOS TRE leak on invalid UTF-8

 A compatibility workaround has been introduced for macOS to address
 a memory leak in the system regex engine when it encounters invalid
 multibyte sequences.  The workaround segments the input buffer at
 invalid byte boundaries and searches each valid segment separately
 using regexec(), avoiding the leaking path.

 Waiting for response.
 cf. <xmqqse52bpa9.fsf@gitster.g>
 cf. <anL7qL2-4h8ZlLcg@pks.im>
 source: <20260728052538.12429-1-chungmin@chungminlee.com>


* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
 - checkout -m: refine autostash fallback
 - sequencer: teach autostash apply to report conflicts

 The autostash fallback in 'git checkout -m' has been refined to only
 retry when there are local changes.  Additionally, a blank line now
 visually separates autostash conflict advice from the subsequent
 branch-switch message.

 Needs review.
 cf. <xmqqwluebuhb.fsf@gitster.g>
 source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>


* jc/add-resolved (2026-07-31) 4 commits
  (merged to 'next' on 2026-08-08 at 61afef3e37)
 + add: introduce '--resolved' option
 + read-cache: add remove_file_from_index_with_flags()
 + merge-ll: consolidate conflict marker scanning logic
 + read-cache: reindent

 'git add' has been taught a new '--resolved' option to stage
 conflict-resolved paths, while leaving unrelated local changes
 unstaged.  It scans the unmerged paths for leftover conflict
 markers and aborts if any are found.

 Will merge to 'master'.
 cf. <20260801141414.GD2041176@coredump.intra.peff.net>
 source: <20260731125605.3638938-1-gitster@pobox.com>


* tb/pack-with-duplicates (2026-07-24) 5 commits
 - pack-bitmap: handle duplicate pack entries during MIDX reuse
 - test-tool bitmap: reject packs with duplicate objects
 - midx: verify duplicate pack entries by OID and offset
 - packfile: recover delta cycles through duplicate entries
 - t5308: test reverse indexes with duplicate objects

 The handling of packfiles with duplicate object entries has been
 hardened.  Specifically, reverse index lookup, delta cycle
 recovery, multi-pack-index verification, and pack reuse paths have
 been updated to correctly handle or gracefully reject duplicate
 entries.

 Waiting for response.
 cf. <xmqqecgs3vg6.fsf@gitster.g>
 source: <cover.1784927134.git.ttaylorr@openai.com>


* ps/cat-file-remote-object-info-type (2026-08-07) 11 commits
 - cat-file: unify default format
 - serve: advertise type capability
 - fetch-object-info: parse type from server response
 - protocol-caps: add type support to object-info
 - transport: drop remote object-info fields from transport struct
 - fetch-object-info: die() on the remaining error path
 - fetch-object-info: use dedicated struct for the results
 - fetch-object-info: pass arguments directly instead of a struct
 - fetch-object-info: detect malformed server responses
 - t5701: use test_file_size() to get the size of a file
 - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type

 The 'remote-object-info' command for 'git cat-file --batch-command'
 has been extended to support the '%(objecttype)' placeholder.

 Will merge to 'next'?
 cf. <20260808074157.GA2915582@coredump.intra.peff.net>
 cf. <CA+J6zkR5ZkUc8c=xiXgKiAYmbgcoyGfwpgm6aaG0Gog8OVmOjw@mail.gmail.com>
 cf. <CAOLa=ZTrf_WHiRHTjBGAus+YbRsUkbR3dzsW=fgCK0jit6fYzQ@mail.gmail.com>
 source: <20260808-objecttype-support-v6-0-e5cdaf27a49c@gmail.com>


* ps/odb-make-creation-pluggable (2026-08-06) 6 commits
 - odb: make creation of on-disk structures pluggable
 - odb/source: introduce function to map source type to name
 - setup: defer object database creation
 - setup: handle ODB-related environment variables in `odb_new()`
 - setup: detangle loading of loose object maps
 - loose: load loose object map for the correct source
 (this branch is used by ps/odb-eagerly-load-alternates.)

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Will merge to 'next'.
 cf. <87jyq24cxm.fsf@emacs.iotcl.com>
 source: <20260807-pks-odb-create-on-disk-v5-0-399da0b0b140@pks.im>


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for response.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 - fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Waiting for review.
 cf. <CAJ-ks9=oV4SQSjTHNEOGBaQb8Rb4xBqVSp4wYum6yzU-zx3YtQ@mail.gmail.com>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response, stalled.
 cf. <1eba5fb2-ab76-41e9-955d-e283256ad25d@gmail.com>
 cf. <98682fa4-55d9-4829-97f1-02e244b35266@gmail.com>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* kj/repo-info-more-path-keys (2026-08-06) 7 commits
 - repo: remove unused setup.h include
 - repo: add path.git-prefix
 - repo: add path.grafts with absolute and relative suffixes
 - repo: add path.index with absolute and relative suffixes
 - repo: add path.hooks with absolute and relative suffixes
 - repo: add path.superproject-root with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Needs review.
 source: <20260806101556.162940-1-jayatheerthkulkarni2005@gmail.com>


* tc/last-modified-bloom (2026-08-07) 6 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: add Bloom check that includes parent directories
 - bloom: add helper to check if any key in a vector is present
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Waiting for response.
 cf. <xmqqtsp4a6c2.fsf@gitster.g>
 source: <20260807-toon-speed-up-last-modified-v2-0-7d87bbdeaf9b@iotcl.com>


* hn/bisect-reset-when-found (2026-08-02) 2 commits
  (merged to 'next' on 2026-08-11 at cad4ed37c6)
 + bisect: add --reset-when-found to leave when done
 + bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Will merge to 'master'.
 cf. <xmqqldajjgn3.fsf@gitster.g>
 source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-08-12) 12 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - reftable: handle block-writer initialization errors
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Will merge to 'next'?
 cf. <xmqq5x1fxn5u.fsf@gitster.g>
 cf. <20260812213438.GC152730@coredump.intra.peff.net>
 source: <pull.2179.v3.git.1786521801.gitgitgadget@gmail.com>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Expecting a reroll.
 cf. <fbb118df-7c82-49a5-90bb-4458b7e9a850@gmail.com>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-08-11) 12 commits
 - fast-import: remove useless from_stream argument
 - fast-import: use parse_options() for command line options
 - fast-import: use callbacks to parse some options
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: factor out option_*() functions
 - fast-import: use int for some bool flags
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Will merge to 'next'?
 cf. <CABPp-BE_gVtCF+Y0AAyXSXnJ2hUK0pJiWqEhkD8kVc4S8-y7kQ@mail.gmail.com>
 source: <20260811083314.2023489-1-christian.couder@gmail.com>


* ps/writev (2026-08-06) 5 commits
  (merged to 'next' on 2026-08-11 at bc2a935c92)
 + fast-import: use writev(3p) to send cat-blob responses
 + sideband: use writev(3p) to send pktlines
 + wrapper: properly handle MAX_IO_SIZE in writev(3p)
 + wrapper: introduce writev(3p) wrappers
 + compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Will merge to 'master'.
 cf. <xmqqcxvvhu6q.fsf@gitster.g>
 source: <20260807-pks-reintroduce-writev-v2-0-30fcff0e89c1@pks.im>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-26) 6 commits
  (merged to 'next' on 2026-08-08 at 44df3a3ec5)
 + fetch-pack: accept "pack" output for packfile URIs
 + http: permit unlinking partial packs on Windows
 + http: avoid concurrent appends to partial packs
 + http: accept HTTP 416 for complete partial packs
 + http: avoid closing index-pack input twice
 + http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP are
 safer by avoiding concurrent appends to the staging file.  Opening in
 read-write mode with separate file offsets prevents corruption and
 preserves resumability.  'fetch-pack' now tolerates pre-existing
 '.keep' files.

 Will merge to 'master'.
 cf. <20260801140255.GC2041176@coredump.intra.peff.net>
 source: <cover.1785111375.git.tnyman@openai.com>


* js/pack-objects-delta-size-t (2026-08-05) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Waiting for response.
 cf. <anQmffJEhKxttUjO@pks.im>
 cf. <xmqqcxvtd1rk.fsf@gitster.g>
 source: <pull.2175.v2.git.1785946479.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command can now configure how submodule fetch errors
 are handled via 'fetch.submoduleErrors' and '--submodule-errors',
 making them non-fatal.  A premature failure during recursive submodule
 fetches has been fixed by deferring the error until the OID-based
 retry phase fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.  This topic has been ejected due to conflicts with
 'pw/rebase-drop-notes-with-commit'.

 Expecting a reroll.
 cf. <DKJ2CZKJC6P0.VHLMCUDH6Z44@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 (a newer iteration v3 exists as <pull.2171.v3.git.1786583137.gitgitgadget@gmail.com>)
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
  (merged to 'next' on 2026-08-08 at ea8486f2a7)
 + t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Will merge to 'master'.
 cf. <xmqq8q6myl76.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.  This topic has been ejected for now, as it causes too
 many evil merges with other topics.

 Waiting for response, stalled.
 cf. <xmqqqzkx9t95.fsf@gitster.g>
 cf. <al6yCTDjBRn2HGq0@com-79390>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-08-07) 8 commits
 - history: support editing squashed commit messages
 - history: create squashed commits without editing
 - history: protect branches when squashing a range
 - history: validate squash revision ranges
 - history: add skeleton for squash subcommand
 - sequencer: share the squash message marker helpers and flags
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 source: <pull.2337.v13.git.git.1786088371.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* tc/replay-linearize (2026-07-28) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: resolve the replay base outside pick_regular_commit()
 - replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Waiting for response.
 cf. <anYLeQj4Sx2vZqvy@denethor>
 cf. <CABPp-BEFGku8msiJCcXburV+tcersr6uqEumKaPh-TguA1LjSg@mail.gmail.com>
 source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>


* mm/diff-process-hunks (2026-08-01) 11 commits
 - diff: consult oid-only hunk providers via diff.<driver>.process
 - userdiff: add diff.<driver>.process config
 - sub-process: add a gentle status read
 - sub-process: separate process lifecycle from hashmap management
 - blame: read precomputed hunks
 - diff: read precomputed hunks for stat output
 - diff: record precomputed hunks during stat output
 - diff-hunks: add the store format, library, and command
 - diff: introduce a hunk provider interface
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Waiting for response.
 cf. <1f8fe709-ef19-496e-9857-8c2d24b29c56@gmail.com>
 source: <20260801174156.2998808-1-mmontalbo@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-08-05) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <pattern>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Will merge to 'next'.
 cf. <10b22a6b-e028-469c-a117-8dc2ed5bed3b@gmail.com>
 source: <pull.2285.v25.git.git.1785939877.gitgitgadget@gmail.com>


* kk/merge-base-exhaustion (2026-08-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099: add side-exhaustion regression test
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Will merge to 'next'?
 cf. <CABPp-BHuh_8q6Hy2-Bk7H6Chdb4+eeW1f4LZU0szZ4zU9Eeo+w@mail.gmail.com>
 cf. <xmqqbjb7w1dq.fsf@gitster.g>
 source: <pull.2149.v8.git.1786440533.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 15%]

* What's cooking in git.git (Aug 2026, #04)
@ 2026-08-11  8:05 16% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-08-11  8:05 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The 12th batch of topics have now graduated to the 'master' branch.
We have 409 non-merge commits in 'master' since Git 2.55.  There
are 61 non-merge commits cooking in 'next' (note that some have
been reverted), and 261 non-merge commits, including those in and
out of 'next', in 'seen' as of this writing.

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]

* hn/send-email-missing-subject-error (2026-08-10) 1 commit
 - send-email: clarify missing subject error

 The error message given by 'git send-email' when a message file is
 missing a 'Subject:' header has been clarified, and the error string
 is now terminated with a newline so that Perl avoids appending its
 internal source location data.

 Will merge to 'next'?
 cf. <xmqqtsp165tj.fsf@gitster.g>
 source: <pull.2375.v2.git.git.1786384412423.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response for too long, stalled.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response for too long, stalled.
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Will discard.
 cf. <xmqq8q71clob.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response for too long, stalled.
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>

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

* ss/repack-drop-filtered (2026-08-10) 7 commits
 - Documentation/git-repack: document --drop-filtered and --dry-run
 - builtin/repack: add guards for --drop-filtered
 - builtin/repack: actually drop filtered promisor blobs
 - builtin/repack: enumerate promisor blobs for --drop-filtered
 - repack-promisor: allow excluding objects from the rebuilt promisor pack
 - list-objects-filter: add list_objects_filter__filter_oidset()
 - builtin/repack.c: add --drop-filtered and --dry-run options

 'git repack' has been taught '--drop-filtered' to delete local
 promisor blobs exceeding a limit (currently 'blob:limit=') in partial
 clones, reclaiming space.  Guards prevent running during other
 operations or if referenced by the index.

 Needs review.
 source: <20260810174047.6524-1-r.siddharth.shrimali@gmail.com>


* ty/repo-config-cleanups (2026-08-07) 3 commits
 - environment: remove inaccurate repo_config_values comments
 - environment: clarify repository config getter documentation
 - environment: drop redundant NULL checks in config getters

 Repository configuration getters in 'environment.c' have been
 simplified by removing redundant NULL checks.  The documentation for
 these getters in 'environment.h' has been clarified, and inaccurate
 section comments inside 'struct repo_config_values' have been removed.

 Needs review.
 cf. <anW7wHfUxYj9cj0P@pks.im>
 source: <20260807085932.3958759-1-cat@malon.dev>


* vm/complete-history (2026-08-06) 4 commits
 - completion: complete 'git history split' pathspecs
 - completion: complete 'git history --update-refs' values
 - completion: complete 'git history --empty' values
 - completion: add 'git history' subcommands

 The command line completion (in contrib/) has been taught to handle
 the experimental 'git history' command.

 Waiting for response.
 cf. <anV7cHblfmGvbl-e@pks.im>
 cf. <anWEcfhdzvNQfskU@pks.im>
 cf. <CALnO6CBThicX2x_acKoSvWMOkr4pa5bVMH=RNMXO+BjEAxKSHg@mail.gmail.com>
 cf. <CALnO6CAudrCCr-bZOt5TCo6ZbmxuwE48-Zj-pkcj8Rq2T1-1wg@mail.gmail.com>
 source: <20260806-history_autocompletion-v2-0-7e60f52a1c20@kernel.org>


* cc/lazy-fetch-trusted-bit (2026-08-07) 5 commits
 - builtin/upload-pack: set GIT_NO_LAZY_FETCH to 0 on trusted repo
 - upload-pack: read uploadpack.lazyFetchTrusted
 - setup: add 'allow_dot' arg to path_allowlist_apply()
 - setup: extract path_allowlist_apply()
 - promisor-remote: factor out lazy_fetch_objects()

 Needs review.
 source: <20260807135511.1818458-1-christian.couder@gmail.com>


* dk/use-nsec-runtime (2026-08-07) 3 commits
 - core: convert build-time USE_NSEC into runtime core.useNanosec
 - environment: align repo_config_values_init with struct declaration
 - meson: expose knob for xmlto relative links in manuals

 Expecting a reroll.
 cf. <CALnO6CBm4g27mWBvD9m6yL0e5YZu3M9_zcUeLZk7QwTgnxMLQA@mail.gmail.com>
 source: <cover.1786103607.git.ben.knoble@gmail.com>


* ps/t7900-deflake-maintenance (2026-08-07) 2 commits
 - t7900: fix flaky "maintenance.strategy" test
 - t7900: adapt some tests to use a throwaway repository

 Needs review.
 source: <20260807-pks-t7900-fix-flaky-test-v1-0-08d0ea0fbbc5@pks.im>


* ps/odb-streams (2026-08-05) 8 commits
 - odb/streaming: unify function names to create new streams
 - odb/streaming: rename `struct input_zstream_data`
 - odb/streaming: rename `struct read_object_fd_data`
 - odb/streaming: consolidate read and write streams
 - odb/streaming: rename `struct odb_read_stream`
 - odb/streaming: support streaming arbitrary object types
 - odb/streaming: drop `is_finished` field
 - odb/streaming: track write stream size in the structure

 The 'struct odb_read_stream' and 'struct odb_write_stream'
 structures have been consolidated into a single unified 'struct
 odb_stream' structure, simplifying object database streaming APIs
 and enabling streaming of arbitrary object types.

 Needs review.
 source: <20260805-pks-odb-stream-unification-v2-0-b8c369564641@pks.im>


* bc/restrict-hex-to-lowercase (2026-07-29) 6 commits
 - hex: allow only lowercase object IDs in breaking changes mode
 - object-name: use hexval
 - hex: label usages of hex parsing for object IDs
 - hex: make hex_to_bytes accept kind of hex to use
 - hex: allow specifying hex type with hex2chr
 - hex: add functionality for lowercase-only hex

 The parser for hex object names has been updated to reject uppercase
 hexadecimal characters when running in the breaking changes mode, in
 preparation for Git 3.0.

 Waiting for review.
 cf. <anJdvLV7-raJK67B@fruit.crustytoothpaste.net>
 source: <20260729233215.398654-1-sandals@crustytoothpaste.net>


* js/mingw-build-updates (2026-08-05) 12 commits
 - mingw: allow `git.exe` to be used instead of the "Git wrapper"
 - mingw: ensure valid CTYPE
 - mingw: always define `ETC_*` for MSYS2 environments
 - windows: skip linking `git-<command>` for built-ins
 - mingw: rely on MSYS2's metadata instead of hard-coding it
 - mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
 - mingw: set the prefix and HOST_CPU as per MSYS2's settings
 - mingw: avoid over-specifying `--pic-executable`
 - mingw: only use -Wl,--large-address-aware for 32-bit builds
 - mingw: drop the -D_USE_32BIT_TIME_T option
 - mingw: stop hard-coding `CC = gcc`
 - mingw: include the Python parts in the build

 A collection of patches from Git for Windows has been upstreamed,
 mostly focusing on simplifying and robustifying build configurations
 for MinGW/MSYS2, dropping obsolete compatibility options, and allowing
 the main 'git.exe' to be used directly without the extra wrapper
 process on Windows.

 Expecting a reroll.
 cf. <9f905100-003b-8ef2-3e2e-2f9ed57dda1b@gmx.de>
 source: <pull.2195.git.1785939999.gitgitgadget@gmail.com>


* yn/worktree-add-no-dwim-with-b (2026-08-05) 1 commit
  (merged to 'next' on 2026-08-08 at 9d682832cd)
 + worktree add: shouldn't dwim if -b or -B is given

 'git worktree add' did not prevent DWIM behavior when '-b' or '-B' was
 specified, which has been corrected.

 Will merge to 'master'.
 cf. <xmqqtsp8qzc4.fsf@gitster.g>
 source: <pull.2192.v3.git.1785934486496.gitgitgadget@gmail.com>


* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit
 - ci: cancel stale pull request workflow runs

 GitHub Actions CI workflow runs triggered by pull requests have
 been configured to cancel older runs when a new push is made to the
 same pull request.

 Needs review.
 source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>


* kh/doc-refs-migrate-limitations (2026-08-05) 2 commits
 - doc: refs: linkgit to git-maintenance(1)
 - doc: refs: put ref migration warning under the command

 The known limitations of the ref format migration in 'git refs' have
 been moved to be displayed as a warning admonition directly under the
 description of the 'migrate' subcommand, improving visibility.  A
 reference to 'git-maintenance' has also been corrected to use the
 'linkgit' macro.

 Will merge to 'next'.
 cf. <anQYWlv3UhpS3iE7@pks.im>
 cf. <CAOLa=ZQQnrRca60BAfnm6Azu=bHvnoVhcGwQ3KkDT7yqLDd8Dw@mail.gmail.com>
 source: <V3_CV_git_ref_migration_warning.b23@msgid.xyz>


* jc/complete-diff-tracked-paths (2026-08-07) 3 commits
 - completion: 'git diff' completes untracked paths as a last resort
 - completion: complete tracked paths for 'git diff'
 - completion: no-op refactoring of diff completion

 'git -C <dir> diff fi<TAB>' did not complete 'dir/file', which has
 been corrected.

 Will merge to 'next'?
 cf. <CABPp-BFdwxTvkcWKNP0-Lk+mqQLnULoYuLHZe0aot4VYfHnjSw@mail.gmail.com>
 source: <20260807161956.1004889-1-gitster@pobox.com>


* kh/trailers-no-urls (2026-08-02) 2 commits
 - trailers: stop recognizing URLs as trailers
 - Merge branch 'kh/doc-trailers' into kh/trailers-no-urls
 (this branch uses kh/doc-trailers.)

 The trailers code has been taught to avoid mistaking a line that has
 '<token>://' at the beginning as a trailer line.

 On hold, waiting for the base topic.
 cf. <20260803152025.GA189075@coredump.intra.peff.net>
 cf. <xmqqmrv42lrg.fsf@gitster.g>
 cf. <xmqqtspbz00x.fsf@gitster.g>
 source: <URLs_not_trailers.b13@msgid.xyz>


* kl/t7528-ssh-agent-for-csh-users (2026-08-02) 1 commit
  (merged to 'next' on 2026-08-08 at bb96050841)
 + t7528: fix failure under csh

 The 'ssh-agent' tests in 't7528' have been fixed to work when the
 user's login shell is csh-like, by explicitly passing '-s' to
 'ssh-agent' to force Bourne shell syntax.

 Will merge to 'master'.
 cf. <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>
 source: <20260803004105.36913-2-keni@his.com>


* kh/doc-trailers (2026-08-09) 11 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: rewrite new-trailers paragraphs
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822
 (this branch is used by kh/trailers-no-urls.)

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Will merge to 'next'?
 cf. <0687D60D-DF6B-4547-868C-FCFC5B27ECAF@gmail.com>
 source: <V5_CV_doc_int-tr_key_format.b26@msgid.xyz>


* kh/doc-replay-config (2026-07-30) 4 commits
  (merged to 'next' on 2026-08-03 at 5450adb2e1)
 + doc: replay: move “default” to the right-hand side
 + doc: replay: use a nested description list
 + doc: replay: improve config description
 + doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Will merge to 'master'.
 cf. <xmqq4ihfduxi.fsf@gitster.g>
 source: <V4_CV_doc_replay_config.af3@msgid.xyz>


* sk/test-commit-body-helper (2026-07-27) 2 commits
  (merged to 'next' on 2026-08-03 at ce42e63135)
 + t: use commit_body to extract commit message bodies
 + test-lib-functions: add commit_body helper

 A new test helper commit_body() has been introduced to print the
 message body of a commit, and various tests have been updated to use
 it instead of spelling out the command pipeline manually and losing
 the exit status of the 'git cat-file' command on the upstream of the
 pipe.

 Will merge to 'master'.
 cf. <xmqqpl05o5n7.fsf@gitster.g>
 source: <20260727095656.75496-1-diy2903@gmail.com>


* cl/regexec-macos-leak (2026-07-28) 2 commits
 - SQUASH???
 - regexec: work around macOS TRE leak on invalid UTF-8

 A compatibility workaround has been introduced for macOS to address
 a memory leak in the system regex engine when it encounters invalid
 multibyte sequences.  The workaround segments the input buffer at
 invalid byte boundaries and searches each valid segment separately
 using regexec(), avoiding the leaking path.

 Waiting for response.
 cf. <xmqqse52bpa9.fsf@gitster.g>
 cf. <anL7qL2-4h8ZlLcg@pks.im>
 source: <20260728052538.12429-1-chungmin@chungminlee.com>


* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
 - checkout -m: refine autostash fallback
 - sequencer: teach autostash apply to report conflicts

 The autostash fallback in 'git checkout -m' has been refined to only
 retry when there are local changes.  Additionally, a blank line now
 visually separates autostash conflict advice from the subsequent
 branch-switch message.

 Needs review.
 cf. <xmqqwluebuhb.fsf@gitster.g>
 source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>


* ns/merge-base-is-ancestor-tests (2026-07-29) 1 commit
  (merged to 'next' on 2026-08-03 at cf2c4e00eb)
 + merge-base: add tests for --is-ancestor

 Tests for 'git merge-base --is-ancestor' have been added to cover
 exit codes (0 for success, 1 for non-ancestor, 128 for errors) and
 to ensure it cannot be combined with '--all'.

 Will merge to 'master'.
 cf. <xmqq8q6slb2t.fsf@gitster.g>
 source: <pull.2186.v2.git.1785392350660.gitgitgadget@gmail.com>


* jc/add-resolved (2026-07-31) 4 commits
  (merged to 'next' on 2026-08-08 at 61afef3e37)
 + add: introduce '--resolved' option
 + read-cache: add remove_file_from_index_with_flags()
 + merge-ll: consolidate conflict marker scanning logic
 + read-cache: reindent

 'git add' has been taught a new '--resolved' option to stage
 conflict-resolved paths, while leaving unrelated local changes
 unstaged.  It scans the unmerged paths for leftover conflict
 markers and aborts if any are found.

 Will merge to 'master'.
 cf. <20260801141414.GD2041176@coredump.intra.peff.net>
 source: <20260731125605.3638938-1-gitster@pobox.com>


* tb/pack-with-duplicates (2026-07-24) 5 commits
 - pack-bitmap: handle duplicate pack entries during MIDX reuse
 - test-tool bitmap: reject packs with duplicate objects
 - midx: verify duplicate pack entries by OID and offset
 - packfile: recover delta cycles through duplicate entries
 - t5308: test reverse indexes with duplicate objects

 The handling of packfiles with duplicate object entries has been
 hardened.  Specifically, reverse index lookup, delta cycle
 recovery, multi-pack-index verification, and pack reuse paths have
 been updated to correctly handle or gracefully reject duplicate
 entries.

 Waiting for response.
 cf. <xmqqecgs3vg6.fsf@gitster.g>
 source: <cover.1784927134.git.ttaylorr@openai.com>


* ps/cat-file-remote-object-info-type (2026-08-07) 11 commits
 - cat-file: unify default format
 - serve: advertise type capability
 - fetch-object-info: parse type from server response
 - protocol-caps: add type support to object-info
 - transport: drop remote object-info fields from transport struct
 - fetch-object-info: die() on the remaining error path
 - fetch-object-info: use dedicated struct for the results
 - fetch-object-info: pass arguments directly instead of a struct
 - fetch-object-info: detect malformed server responses
 - t5701: use test_file_size() to get the size of a file
 - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type

 The 'remote-object-info' command for 'git cat-file --batch-command'
 has been extended to support the '%(objecttype)' placeholder.

 Will merge to 'next'?
 cf. <20260808074157.GA2915582@coredump.intra.peff.net>
 cf. <CA+J6zkR5ZkUc8c=xiXgKiAYmbgcoyGfwpgm6aaG0Gog8OVmOjw@mail.gmail.com>
 source: <20260808-objecttype-support-v6-0-e5cdaf27a49c@gmail.com>


* lo/mv-missing-dest-dir-check (2026-07-30) 2 commits
  (merged to 'next' on 2026-08-03 at 7643cf1c2a)
 + mv: reject a destination whose leading path is missing or a symlink
 + mv: name both source and destination when rename fails

 'git mv' has been updated to check for a missing destination
 leading directory during the checking phase, allowing 'git mv -n'
 to report the failure.  The error message when the rename(2)
 syscall fails has also been improved to name both the source and
 the destination.

 Will merge to 'master'.
 cf. <xmqqtspgjkwb.fsf@gitster.g>
 source: <pull.2356.v5.git.git.1785410884.gitgitgadget@gmail.com>


* ps/odb-make-creation-pluggable (2026-08-06) 6 commits
 - odb: make creation of on-disk structures pluggable
 - odb/source: introduce function to map source type to name
 - setup: defer object database creation
 - setup: handle ODB-related environment variables in `odb_new()`
 - setup: detangle loading of loose object maps
 - loose: load loose object map for the correct source

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Will merge to 'next'?
 cf. <87jyq24cxm.fsf@emacs.iotcl.com>
 source: <20260807-pks-odb-create-on-disk-v5-0-399da0b0b140@pks.im>


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for response.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 - fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Waiting for response.
 cf. <CAOTNsDy4pKbPHdK1T688Ax6Mgz15K-qfZR-8fAvTk48z3E43Rg@mail.gmail.com>
 cf. <anLtSOKqgcCrrNHo@pks.im>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response, stalled.
 cf. <1eba5fb2-ab76-41e9-955d-e283256ad25d@gmail.com>
 cf. <98682fa4-55d9-4829-97f1-02e244b35266@gmail.com>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
  (merged to 'next' on 2026-08-03 at c744bba04e)
 + doc: convert git-request-pull synopsis and options to new style
 + doc: convert git-send-email synopsis and options to new style
 + doc: convert git-format-patch synopsis and options to new style
 + doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Will merge to 'master'.
 cf. <xmqqldato56l.fsf@gitster.g>
 source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>


* kj/repo-info-more-path-keys (2026-08-06) 7 commits
 - repo: remove unused setup.h include
 - repo: add path.git-prefix
 - repo: add path.grafts with absolute and relative suffixes
 - repo: add path.index with absolute and relative suffixes
 - repo: add path.hooks with absolute and relative suffixes
 - repo: add path.superproject-root with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Needs review.
 source: <20260806101556.162940-1-jayatheerthkulkarni2005@gmail.com>


* tc/last-modified-bloom (2026-08-07) 6 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: add Bloom check that includes parent directories
 - bloom: add helper to check if any key in a vector is present
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Needs review.
 source: <20260807-toon-speed-up-last-modified-v2-0-7d87bbdeaf9b@iotcl.com>


* hn/bisect-reset-when-found (2026-08-02) 2 commits
 - bisect: add --reset-when-found to leave when done
 - bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Will merge to 'next'.
 cf. <xmqqldajjgn3.fsf@gitster.g>
 source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-08-05) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Waiting for response.
 cf. <20260806154103.GA1625706@coredump.intra.peff.net>
 cf. <xmqqse4sm4ss.fsf@gitster.g>
 source: <pull.2179.v2.git.1785954661.gitgitgadget@gmail.com>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Expecting a reroll.
 cf. <fbb118df-7c82-49a5-90bb-4458b7e9a850@gmail.com>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-08-04) 12 commits
 - fast-import: remove useless from_stream argument
 - fast-import: use parse_options() for command line options
 - fast-import: use callbacks to parse some options
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: factor out option_*() functions
 - fast-import: use int for some bool flags
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Waiting for response.
 cf. <CABPp-BGfeF1t+siEUuYgTtDG5LtfL5iskSHferbGwFj8axA+tA@mail.gmail.com>
 cf. <CABPp-BHoxLkYJmoJ1N5owJ5-S+yr-4JkuectxSVG8oa6PESkWA@mail.gmail.com>
 cf. <CABPp-BFfF+Vd6RY3pG=FVUH_93YZULfhcXdWCv6zcRSABfGBQQ@mail.gmail.com>
 cf. <CABPp-BE_gVtCF+Y0AAyXSXnJ2hUK0pJiWqEhkD8kVc4S8-y7kQ@mail.gmail.com>
 source: <20260804100355.1299498-1-christian.couder@gmail.com>


* ps/writev (2026-08-06) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Will merge to 'next'.
 cf. <xmqqcxvvhu6q.fsf@gitster.g>
 source: <20260807-pks-reintroduce-writev-v2-0-30fcff0e89c1@pks.im>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-26) 6 commits
  (merged to 'next' on 2026-08-08 at 44df3a3ec5)
 + fetch-pack: accept "pack" output for packfile URIs
 + http: permit unlinking partial packs on Windows
 + http: avoid concurrent appends to partial packs
 + http: accept HTTP 416 for complete partial packs
 + http: avoid closing index-pack input twice
 + http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP are
 safer by avoiding concurrent appends to the staging file.  Opening in
 read-write mode with separate file offsets prevents corruption and
 preserves resumability.  'fetch-pack' now tolerates pre-existing
 '.keep' files.

 Will merge to 'master'.
 cf. <20260801140255.GC2041176@coredump.intra.peff.net>
 source: <cover.1785111375.git.tnyman@openai.com>


* js/pack-objects-delta-size-t (2026-08-05) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Waiting for response.
 cf. <anQmffJEhKxttUjO@pks.im>
 cf. <xmqqcxvtd1rk.fsf@gitster.g>
 source: <pull.2175.v2.git.1785946479.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command can now configure how submodule fetch errors
 are handled via 'fetch.submoduleErrors' and '--submodule-errors',
 making them non-fatal.  A premature failure during recursive submodule
 fetches has been fixed by deferring the error until the OID-based
 retry phase fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.  This topic has been ejected due to conflicts with
 'pw/rebase-drop-notes-with-commit'.

 Expecting a reroll.
 cf. <DKJ2CZKJC6P0.VHLMCUDH6Z44@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Expecting a reroll.
 cf. <CAC2Qwm+Jni+xU=gaef1AWCMj9+GUQhMrCWX9DFpS3y757pxv=Q@mail.gmail.com>
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
  (merged to 'next' on 2026-08-08 at ea8486f2a7)
 + t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Will merge to 'master'.
 cf. <xmqq8q6myl76.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.  This topic has been ejected for now, as it causes too
 many evil merges with other topics.

 Waiting for response, stalled.
 cf. <xmqqqzkx9t95.fsf@gitster.g>
 cf. <al6yCTDjBRn2HGq0@com-79390>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-08-07) 8 commits
 - history: support editing squashed commit messages
 - history: create squashed commits without editing
 - history: protect branches when squashing a range
 - history: validate squash revision ranges
 - history: add skeleton for squash subcommand
 - sequencer: share the squash message marker helpers and flags
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 source: <pull.2337.v13.git.git.1786088371.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* tc/replay-linearize (2026-07-28) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: resolve the replay base outside pick_regular_commit()
 - replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Waiting for response.
 cf. <anYLeQj4Sx2vZqvy@denethor>
 cf. <CABPp-BEFGku8msiJCcXburV+tcersr6uqEumKaPh-TguA1LjSg@mail.gmail.com>
 source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>


* mm/diff-process-hunks (2026-08-01) 11 commits
 - diff: consult oid-only hunk providers via diff.<driver>.process
 - userdiff: add diff.<driver>.process config
 - sub-process: add a gentle status read
 - sub-process: separate process lifecycle from hashmap management
 - blame: read precomputed hunks
 - diff: read precomputed hunks for stat output
 - diff: record precomputed hunks during stat output
 - diff-hunks: add the store format, library, and command
 - diff: introduce a hunk provider interface
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Waiting for response.
 cf. <1f8fe709-ef19-496e-9857-8c2d24b29c56@gmail.com>
 source: <20260801174156.2998808-1-mmontalbo@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-08-05) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <pattern>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Will merge to 'next'?
 cf. <10b22a6b-e028-469c-a117-8dc2ed5bed3b@gmail.com>
 source: <pull.2285.v25.git.git.1785939877.gitgitgadget@gmail.com>


* kk/merge-base-exhaustion (2026-08-06) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Expecting a reroll.
 cf. <CAL71e4P1hRcDk0TiR_Gjapf=EScGNbeHqSQ6BqeiAkEvczNu4g@mail.gmail.com>
 source: <pull.2149.v7.git.1786013982.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 16%]

* Re: What's cooking in git.git (Aug 2026, #03)
  2026-08-08  1:55 16% What's cooking in git.git (Aug 2026, #03) Junio C Hamano
@ 2026-08-08  5:50 99% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-08-08  5:50 UTC (permalink / raw)
  To: git

Junio C Hamano <gitster@pobox.com> writes:

> Here are the topics that have been cooking in my tree.  Commits
> ...

Sorry but this part is stale.

> The 11th batch of topics have now graduated to the 'master' branch.
> We have 401 non-merge commits in 'master' since Git 2.55.  There
> are 55 non-merge commits cooking in 'next' (note that some have
> been reverted), and 235 non-merge commits, including those in and
> out of 'next', in 'seen' as of this writing.

We are now at 12th batch, with 409 non-merge commits in 'master', 48
non-merge commits in 'next' (went down as topics have graduated, but
there are reverted ones that will never graduate), and 261 commits
outside 'next' but in 'seen'.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Aug 2026, #03)
@ 2026-08-08  1:55 16% Junio C Hamano
  2026-08-08  5:50 99% ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-08-08  1:55 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The 11th batch of topics have now graduated to the 'master' branch.
We have 401 non-merge commits in 'master' since Git 2.55.  There
are 55 non-merge commits cooking in 'next' (note that some have
been reverted), and 235 non-merge commits, including those in and
out of 'next', in 'seen' as of this writing.

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

* dl/pack-bitmap-position-zero (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-31 at b200bed995)
 + pack-bitmap: handle objects at bitmap position zero

 A boundary case check in reachability bitmap traversal has been
 corrected to properly handle the object at position zero, which was
 previously skipped, leading to redundant bitmap loading.

 Graduated to 'master'.
 cf. <amk75SuhyHBbx-E8@com-79390>
 cf. <xmqq5x1yd968.fsf@gitster.g>
 source: <20260728135248.61304-1-davidlin@stripe.com>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
  (merged to 'next' on 2026-07-31 at 21b8a5bc05)
 + sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the 'sparse-index' collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Graduated to 'master'.
 cf. <xmqq33x1o465.fsf@gitster.g>
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* jk/cat-file-batch-wo-type-fix (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-31 at 2d67bd3ccf)
 + cat-file: handle content request for --batch-command without type

 'git cat-file --batch-command' that asked for 'contents' without
 'type' segfaults, which has been corrected.

 Graduated to 'master'.
 cf. <xmqqjyqfdnie.fsf@gitster.g>
 source: <20260728150031.GA41931@coredump.intra.peff.net>


* jk/diff-relative-cached-unmerged-more (2026-07-26) 3 commits
  (merged to 'next' on 2026-07-30 at d8636bd744)
 + diff-lib: skip paths outside prefix in oneway_diff()
 + diff-lib: drop stale comment about advancing o->pos
 + Merge branch 'jk/diff-relative-cached-unmerged' into jk/diff-relative-cached-unmerged-more

 The code path that deals with relative paths in the 'diff-lib' has
 been cleaned up.

 Graduated to 'master'.
 cf. <xmqqo6frdqy5.fsf@gitster.g>
 cf. <20260728171249.GA643101@coredump.intra.peff.net>
 source: <20260726084550.GC2366012@coredump.intra.peff.net>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-31 at ae6730749f)
 + revision: make get_commit_action() a pure predicate

 The get_commit_action() function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 simplify_commit().  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Graduated to 'master'.
 cf. <xmqq8q6wpmuy.fsf@gitster.g>
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* tc/merge-default-to-upstream-leakfix (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-31 at b10497d8a4)
 + merge: fix leak with merge.defaultToUpstream

 A memory leak in 'git merge' when run without arguments (which
 triggers the default-to-upstream path) has been fixed.  A test has
 been added to cover this case.

 Graduated to 'master'.
 cf. <20260728151959.GC41931@coredump.intra.peff.net>
 cf. <xmqqfr13dlv8.fsf@gitster.g>
 source: <20260728-toon-fix-merge-leak-v1-1-d6bd161a3acf@iotcl.com>

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

* ss/repack-drop-filtered (2026-08-06) 8 commits
 - SQUASH???
 - Documentation/git-repack: document --drop-filtered and --dry-run
 - builtin/repack: add guards for --drop-filtered
 - builtin/repack: actually drop filtered promisor blobs
 - builtin/repack: enumerate promisor blobs for --drop-filtered
 - repack-promisor: allow excluding objects from the rebuilt promisor pack
 - list-objects-filter: add list_objects_filter__filter_oidset()
 - builtin/repack.c: add --drop-filtered and --dry-run options

 'git repack' has been taught '--drop-filtered' to delete local
 promisor blobs exceeding a limit (currently 'blob:limit=') in partial
 clones, reclaiming space.  Guards prevent running during other
 operations or if referenced by the index.

 Expecting a reroll.
 cf. <CAGWgyh9sDrHb2nXw+mmgQg4-x_H-_mLcwtpAt7QFYHydWNDg+w@mail.gmail.com>
 source: <20260806112202.75067-1-r.siddharth.shrimali@gmail.com>


* ty/repo-config-cleanups (2026-08-07) 3 commits
 - environment: remove inaccurate repo_config_values comments
 - environment: clarify repository config getter documentation
 - environment: drop redundant NULL checks in config getters

 Repository configuration getters in 'environment.c' have been
 simplified by removing redundant NULL checks.  The documentation for
 these getters in 'environment.h' has been clarified, and inaccurate
 section comments inside 'struct repo_config_values' have been removed.

 Needs review.
 source: <20260807085932.3958759-1-cat@malon.dev>


* vm/complete-history (2026-08-06) 4 commits
 - completion: complete 'git history split' pathspecs
 - completion: complete 'git history --update-refs' values
 - completion: complete 'git history --empty' values
 - completion: add 'git history' subcommands

 The command line completion (in contrib/) has been taught to handle
 the experimental 'git history' command.

 Waiting for review.
 cf. <0ea2cce4-2174-4866-9619-d7f74ae5c91f@kernel.org>
 source: <20260806-history_autocompletion-v2-0-7e60f52a1c20@kernel.org>


* cc/lazy-fetch-trusted-bit (2026-08-07) 5 commits
 - builtin/upload-pack: set GIT_NO_LAZY_FETCH to 0 on trusted repo
 - upload-pack: read uploadpack.lazyFetchTrusted
 - setup: add 'allow_dot' arg to path_allowlist_apply()
 - setup: extract path_allowlist_apply()
 - promisor-remote: factor out lazy_fetch_objects()

 Expecting a reroll.
 cf. <CAP8UFD3txHujpg_NxZN9m4VbH2Yp5g38ZV3=HrXrDrFSHLpaQg@mail.gmail.com>
 source: <20260807135511.1818458-1-christian.couder@gmail.com>


* dk/use-nsec-runtime (2026-08-07) 3 commits
 - core: convert build-time USE_NSEC into runtime core.useNanosec
 - environment: align repo_config_values_init with struct declaration
 - meson: expose knob for xmlto relative links in manuals

 Waiting for response.
 cf. <xmqqv79ld40c.fsf@gitster.g>
 source: <cover.1786103607.git.ben.knoble@gmail.com>


* ps/t7900-deflake-maintenance (2026-08-07) 2 commits
 - t7900: fix flaky "maintenance.strategy" test
 - t7900: adapt some tests to use a throwaway repository

 Needs review.
 source: <20260807-pks-t7900-fix-flaky-test-v1-0-08d0ea0fbbc5@pks.im>

--------------------------------------------------
[Stalled]

* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response for too long, stalled.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response for too long, stalled.
 cf. <xmqqwlugo4nk.fsf@gitster.g>
 cf. <xmqqpl1d56dd.fsf@gitster.g>
 cf. <xmqqwlvl56vh.fsf@gitster.g>
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Will discard.
 cf. <xmqq8q71clob.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response for too long, stalled.
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>

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

* ps/odb-streams (2026-08-05) 8 commits
 - odb/streaming: unify function names to create new streams
 - odb/streaming: rename `struct input_zstream_data`
 - odb/streaming: rename `struct read_object_fd_data`
 - odb/streaming: consolidate read and write streams
 - odb/streaming: rename `struct odb_read_stream`
 - odb/streaming: support streaming arbitrary object types
 - odb/streaming: drop `is_finished` field
 - odb/streaming: track write stream size in the structure

 The 'struct odb_read_stream' and 'struct odb_write_stream'
 structures have been consolidated into a single unified 'struct
 odb_stream' structure, simplifying object database streaming APIs
 and enabling streaming of arbitrary object types.

 Needs review.
 source: <20260805-pks-odb-stream-unification-v2-0-b8c369564641@pks.im>


* bc/restrict-hex-to-lowercase (2026-07-29) 6 commits
 - hex: allow only lowercase object IDs in breaking changes mode
 - object-name: use hexval
 - hex: label usages of hex parsing for object IDs
 - hex: make hex_to_bytes accept kind of hex to use
 - hex: allow specifying hex type with hex2chr
 - hex: add functionality for lowercase-only hex

 The parser for hex object names has been updated to reject uppercase
 hexadecimal characters when running in the breaking changes mode, in
 preparation for Git 3.0.

 Waiting for review.
 cf. <xmqqldalvfzx.fsf@gitster.g>
 source: <20260729233215.398654-1-sandals@crustytoothpaste.net>


* js/mingw-build-updates (2026-08-05) 12 commits
 - mingw: allow `git.exe` to be used instead of the "Git wrapper"
 - mingw: ensure valid CTYPE
 - mingw: always define `ETC_*` for MSYS2 environments
 - windows: skip linking `git-<command>` for built-ins
 - mingw: rely on MSYS2's metadata instead of hard-coding it
 - mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
 - mingw: set the prefix and HOST_CPU as per MSYS2's settings
 - mingw: avoid over-specifying `--pic-executable`
 - mingw: only use -Wl,--large-address-aware for 32-bit builds
 - mingw: drop the -D_USE_32BIT_TIME_T option
 - mingw: stop hard-coding `CC = gcc`
 - mingw: include the Python parts in the build

 A collection of patches from Git for Windows has been upstreamed,
 mostly focusing on simplifying and robustifying build configurations
 for MinGW/MSYS2, dropping obsolete compatibility options, and allowing
 the main 'git.exe' to be used directly without the extra wrapper
 process on Windows.

 Expecting a reroll.
 cf. <9f905100-003b-8ef2-3e2e-2f9ed57dda1b@gmx.de>
 source: <pull.2195.git.1785939999.gitgitgadget@gmail.com>


* yn/worktree-add-no-dwim-with-b (2026-08-05) 1 commit
 - worktree add: shouldn't dwim if -b or -B is given

 'git worktree' add did not prevent DWIM behavior when '-b' or '-B'
 was specified, which has been corrected.

 Will merge to 'next'?
 cf. <xmqqtsp8qzc4.fsf@gitster.g>
 source: <pull.2192.v3.git.1785934486496.gitgitgadget@gmail.com>


* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit
 - ci: cancel stale pull request workflow runs

 GitHub Actions CI workflow runs triggered by pull requests have
 been configured to cancel older runs when a new push is made to the
 same pull request.

 Needs review.
 source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>


* kh/doc-refs-migrate-limitations (2026-08-05) 2 commits
 - doc: refs: linkgit to git-maintenance(1)
 - doc: refs: put ref migration warning under the command

 The known limitations of the ref format migration in 'git refs' have
 been moved to be displayed as a warning admonition directly under the
 description of the 'migrate' subcommand, improving visibility.  A
 reference to 'git-maintenance' has also been corrected to use the
 'linkgit' macro.

 Will merge to 'next'?
 cf. <anQYWlv3UhpS3iE7@pks.im>
 cf. <CAOLa=ZQQnrRca60BAfnm6Azu=bHvnoVhcGwQ3KkDT7yqLDd8Dw@mail.gmail.com>
 source: <V3_CV_git_ref_migration_warning.b23@msgid.xyz>


* jc/complete-diff-tracked-paths (2026-08-07) 3 commits
 - completion: 'git diff' completes untracked paths as a last resort
 - completion: complete tracked paths for 'git diff'
 - completion: no-op refactoring of diff completion

 'git -C <dir> diff fi<TAB>' did not complete 'dir/file', which has
 been corrected.

 Will merge to 'next'?
 cf. <CABPp-BFdwxTvkcWKNP0-Lk+mqQLnULoYuLHZe0aot4VYfHnjSw@mail.gmail.com>
 source: <20260807161956.1004889-1-gitster@pobox.com>


* kh/trailers-no-urls (2026-08-02) 2 commits
 - trailers: stop recognizing URLs as trailers
 - Merge branch 'kh/doc-trailers' into kh/trailers-no-urls
 (this branch uses kh/doc-trailers.)

 The trailers code has been taught to avoid mistaking a line that has
 '<token>://' at the beginning as a trailer line.

 On hold, waiting for the base topic.
 cf. <20260803152025.GA189075@coredump.intra.peff.net>
 cf. <xmqqmrv42lrg.fsf@gitster.g>
 cf. <xmqqtspbz00x.fsf@gitster.g>
 source: <URLs_not_trailers.b13@msgid.xyz>


* kl/t7528-ssh-agent-for-csh-users (2026-08-02) 1 commit
 - t7528: fix failure under csh

 The 'ssh-agent' tests in 't7528' have been fixed to work when the
 user's login shell is csh-like, by explicitly passing '-s' to
 'ssh-agent' to force Bourne shell syntax.

 Will merge to 'next'?
 cf. <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>
 source: <20260803004105.36913-2-keni@his.com>


* kh/doc-trailers (2026-07-30) 11 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: rewrite new-trailers paragraphs
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822
 (this branch is used by kh/trailers-no-urls.)

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Waiting for response.
 cf. <CALnO6CAmM4r2uiuBFJcciR_94KPRSJoCOsuNKeqTQ0Bt=Puvyw@mail.gmail.com>
 cf. <xmqqldajhv9q.fsf@gitster.g>
 source: <V4_CV_doc_int-tr_key_format.ae2@msgid.xyz>


* kh/doc-replay-config (2026-07-30) 4 commits
  (merged to 'next' on 2026-08-03 at 5450adb2e1)
 + doc: replay: move “default” to the right-hand side
 + doc: replay: use a nested description list
 + doc: replay: improve config description
 + doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Will merge to 'master'.
 cf. <xmqq4ihfduxi.fsf@gitster.g>
 source: <V4_CV_doc_replay_config.af3@msgid.xyz>


* sk/test-commit-body-helper (2026-07-27) 2 commits
  (merged to 'next' on 2026-08-03 at ce42e63135)
 + t: use commit_body to extract commit message bodies
 + test-lib-functions: add commit_body helper

 A new test helper commit_body() has been introduced to print the
 message body of a commit, and various tests have been updated to use
 it instead of spelling out the command pipeline manually and losing
 the exit status of the 'git cat-file' command on the upstream of the
 pipe.

 Will merge to 'master'.
 cf. <xmqqpl05o5n7.fsf@gitster.g>
 source: <20260727095656.75496-1-diy2903@gmail.com>


* cl/regexec-macos-leak (2026-07-28) 2 commits
 - SQUASH???
 - regexec: work around macOS TRE leak on invalid UTF-8

 A compatibility workaround has been introduced for macOS to address
 a memory leak in the system regex engine when it encounters invalid
 multibyte sequences.  The workaround segments the input buffer at
 invalid byte boundaries and searches each valid segment separately
 using regexec(), avoiding the leaking path.

 Waiting for response.
 cf. <xmqqse52bpa9.fsf@gitster.g>
 cf. <anL7qL2-4h8ZlLcg@pks.im>
 source: <20260728052538.12429-1-chungmin@chungminlee.com>


* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
 - checkout -m: refine autostash fallback
 - sequencer: teach autostash apply to report conflicts

 The autostash fallback in 'git checkout -m' has been refined to only
 retry when there are local changes.  Additionally, a blank line now
 visually separates autostash conflict advice from the subsequent
 branch-switch message.

 Needs review.
 cf. <xmqqwluebuhb.fsf@gitster.g>
 source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>


* ns/merge-base-is-ancestor-tests (2026-07-29) 1 commit
  (merged to 'next' on 2026-08-03 at cf2c4e00eb)
 + merge-base: add tests for --is-ancestor

 Tests for 'git merge-base --is-ancestor' have been added to cover
 exit codes (0 for success, 1 for non-ancestor, 128 for errors) and
 to ensure it cannot be combined with '--all'.

 Will merge to 'master'.
 cf. <xmqq8q6slb2t.fsf@gitster.g>
 source: <pull.2186.v2.git.1785392350660.gitgitgadget@gmail.com>


* jc/add-resolved (2026-07-31) 4 commits
 - add: introduce '--resolved' option
 - read-cache: add remove_file_from_index_with_flags()
 - merge-ll: consolidate conflict marker scanning logic
 - read-cache: reindent

 'git add' has been taught a new '--resolved' option to stage
 conflict-resolved paths, while leaving unrelated local changes
 unstaged.  It scans the unmerged paths for leftover conflict
 markers and aborts if any are found.

 Will merge to 'next'?
 cf. <20260801141414.GD2041176@coredump.intra.peff.net>
 source: <20260731125605.3638938-1-gitster@pobox.com>


* tb/pack-with-duplicates (2026-07-24) 5 commits
 - pack-bitmap: handle duplicate pack entries during MIDX reuse
 - test-tool bitmap: reject packs with duplicate objects
 - midx: verify duplicate pack entries by OID and offset
 - packfile: recover delta cycles through duplicate entries
 - t5308: test reverse indexes with duplicate objects

 The handling of packfiles with duplicate object entries has been
 hardened.  Specifically, reverse index lookup, delta cycle
 recovery, multi-pack-index verification, and pack reuse paths have
 been updated to correctly handle or gracefully reject duplicate
 entries.

 Needs review.
 cf. <xmqqecgs3vg6.fsf@gitster.g>
 source: <cover.1784927134.git.ttaylorr@openai.com>


* ps/cat-file-remote-object-info-type (2026-08-04) 10 commits
 - cat-file: unify default format
 - serve: advertise type capability
 - fetch-object-info: parse type from server response
 - protocol-caps: add type support to object-info
 - fetch-object-info: die() on the remaining error path
 - fetch-object-info: use dedicated struct for the results
 - fetch-object-info: pass arguments directly instead of a struct
 - fetch-object-info: detect malformed server responses
 - t5701: use test_file_size() to get the size of a file
 - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type

 The 'remote-object-info' command for 'git cat-file --batch-command'
 has been extended to support the '%(objecttype)' placeholder.

 Expecting a reroll.
 cf. <DKIADCID62IW.1MII8E3AYCI6F@gmail.com>
 source: <20260804-objecttype-support-v4-0-31511b0231be@gmail.com>


* lo/mv-missing-dest-dir-check (2026-07-30) 2 commits
  (merged to 'next' on 2026-08-03 at 7643cf1c2a)
 + mv: reject a destination whose leading path is missing or a symlink
 + mv: name both source and destination when rename fails

 'git mv' has been updated to check for a missing destination
 leading directory during the checking phase, allowing 'git mv -n'
 to report the failure.  The error message when the rename(2)
 syscall fails has also been improved to name both the source and
 the destination.

 Will merge to 'master'.
 cf. <xmqqtspgjkwb.fsf@gitster.g>
 source: <pull.2356.v5.git.git.1785410884.gitgitgadget@gmail.com>


* ps/odb-make-creation-pluggable (2026-08-06) 6 commits
 - odb: make creation of on-disk structures pluggable
 - odb/source: introduce function to map source type to name
 - setup: defer object database creation
 - setup: handle ODB-related environment variables in `odb_new()`
 - setup: detangle loading of loose object maps
 - loose: load loose object map for the correct source

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Will merge to 'next'?
 cf. <87jyq24cxm.fsf@emacs.iotcl.com>
 source: <20260807-pks-odb-create-on-disk-v5-0-399da0b0b140@pks.im> 


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for response.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 - fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Waiting for response.
 cf. <CAOTNsDy4pKbPHdK1T688Ax6Mgz15K-qfZR-8fAvTk48z3E43Rg@mail.gmail.com>
 cf. <anLtSOKqgcCrrNHo@pks.im>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response, stalled.
 cf. <1eba5fb2-ab76-41e9-955d-e283256ad25d@gmail.com>
 cf. <98682fa4-55d9-4829-97f1-02e244b35266@gmail.com>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
  (merged to 'next' on 2026-08-03 at c744bba04e)
 + doc: convert git-request-pull synopsis and options to new style
 + doc: convert git-send-email synopsis and options to new style
 + doc: convert git-format-patch synopsis and options to new style
 + doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Will merge to 'master'.
 cf. <xmqqldato56l.fsf@gitster.g>
 source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>


* kj/repo-info-more-path-keys (2026-08-06) 7 commits
 - repo: remove unused setup.h include
 - repo: add path.git-prefix
 - repo: add path.grafts with absolute and relative suffixes
 - repo: add path.index with absolute and relative suffixes
 - repo: add path.hooks with absolute and relative suffixes
 - repo: add path.superproject-root with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Needs review.
 source: <20260806101556.162940-1-jayatheerthkulkarni2005@gmail.com>


* tc/last-modified-bloom (2026-08-07) 6 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: add Bloom check that includes parent directories
 - bloom: add helper to check if any key in a vector is present
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Needs review.
 source: <20260807-toon-speed-up-last-modified-v2-0-7d87bbdeaf9b@iotcl.com>


* hn/bisect-reset-when-found (2026-08-02) 2 commits
 - bisect: add --reset-when-found to leave when done
 - bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Will merge to 'next'?
 cf. <xmqqldajjgn3.fsf@gitster.g>
 source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-08-05) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Waiting for response.
 cf. <20260806154103.GA1625706@coredump.intra.peff.net>
 cf. <xmqqse4sm4ss.fsf@gitster.g>
 source: <pull.2179.v2.git.1785954661.gitgitgadget@gmail.com>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Expecting a reroll.
 cf. <fbb118df-7c82-49a5-90bb-4458b7e9a850@gmail.com>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-08-04) 12 commits
 - fast-import: remove useless from_stream argument
 - fast-import: use parse_options() for command line options
 - fast-import: use callbacks to parse some options
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: factor out option_*() functions
 - fast-import: use int for some bool flags
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Needs review.
 source: <20260804100355.1299498-1-christian.couder@gmail.com>


* ps/writev (2026-08-06) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Will merge to 'next'?
 cf. <xmqqcxvvhu6q.fsf@gitster.g>
 source: <20260807-pks-reintroduce-writev-v2-0-30fcff0e89c1@pks.im>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-26) 6 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: permit unlinking partial packs on Windows
 - http: avoid concurrent appends to partial packs
 - http: accept HTTP 416 for complete partial packs
 - http: avoid closing index-pack input twice
 - http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP are
 safer by avoiding concurrent appends to the staging file.  Opening in
 read-write mode with separate file offsets prevents corruption and
 preserves resumability.  'fetch-pack' now tolerates pre-existing
 '.keep' files.

 Will merge to 'next'?
 cf. <20260801140255.GC2041176@coredump.intra.peff.net>
 source: <cover.1785111375.git.tnyman@openai.com>


* js/pack-objects-delta-size-t (2026-08-05) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Waiting for response.
 cf. <xmqqjyq1d2x7.fsf@gitster.g>
 cf. <anQmffJEhKxttUjO@pks.im>
 source: <pull.2175.v2.git.1785946479.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command can now configure how submodule fetch errors
 are handled via 'fetch.submoduleErrors' and '--submodule-errors',
 making them non-fatal.  A premature failure during recursive submodule
 fetches has been fixed by deferring the error until the OID-based
 retry phase fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 cf. <xmqq8q6to4em.fsf@gitster.g>
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.  This topic has been ejected due to conflicts with
 'pw/rebase-drop-notes-with-commit'.

 Waiting for response, stalled
 cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Expecting a reroll.
 cf. <CAC2QwmK=K3EqvZWKQpy8ag+A8kMghNB6N=0dW7pjY1xJup4_Xg@mail.gmail.com>
 cf. <CAC2Qwm+Jni+xU=gaef1AWCMj9+GUQhMrCWX9DFpS3y757pxv=Q@mail.gmail.com>
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Will merge to 'next'?
 cf. <xmqq8q6myl76.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.  This topic has been ejected for now, as it causes too
 many evil merges with other topics.

 Waiting for response, stalled.
 cf. <xmqqqzkx9t95.fsf@gitster.g>
 cf. <al6yCTDjBRn2HGq0@com-79390>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-08-07) 8 commits
 - history: support editing squashed commit messages
 - history: create squashed commits without editing
 - history: protect branches when squashing a range
 - history: validate squash revision ranges
 - history: add skeleton for squash subcommand
 - sequencer: share the squash message marker helpers and flags
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 source: <pull.2337.v13.git.git.1786088371.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* tc/replay-linearize (2026-07-28) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: resolve the replay base outside pick_regular_commit()
 - replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Waiting for response.
 cf. <anYLeQj4Sx2vZqvy@denethor>
 source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>


* mm/diff-process-hunks (2026-08-01) 11 commits
 - diff: consult oid-only hunk providers via diff.<driver>.process
 - userdiff: add diff.<driver>.process config
 - sub-process: add a gentle status read
 - sub-process: separate process lifecycle from hashmap management
 - blame: read precomputed hunks
 - diff: read precomputed hunks for stat output
 - diff: record precomputed hunks during stat output
 - diff-hunks: add the store format, library, and command
 - diff: introduce a hunk provider interface
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Waiting for response.
 cf. <1f8fe709-ef19-496e-9857-8c2d24b29c56@gmail.com>
 source: <20260801174156.2998808-1-mmontalbo@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-08-05) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <pattern>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Will merge to 'next'?
 cf. <xmqqcxvvjg5p.fsf@gitster.g>
 cf. <10b22a6b-e028-469c-a117-8dc2ed5bed3b@gmail.com>
 source: <pull.2285.v25.git.git.1785939877.gitgitgadget@gmail.com>


* kk/merge-base-exhaustion (2026-08-06) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Expecting a reroll.
 cf. <CAL71e4ONrNcOh82upp8YT0b_0nZhxtEv_zFDb_0Sknfc9_kJWA@mail.gmail.com>
 cf. <CAL71e4OTYDrbY-kjeJSa-iWtUN=96Q+2_vEB-_tScu_afPS6EA@mail.gmail.com>
 source: <pull.2149.v7.git.1786013982.gitgitgadget@gmail.com>



^ permalink raw reply	[relevance 16%]

* Re: What's cooking in git.git (Aug 2026, #02)
  @ 2026-08-06 17:08 95%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-08-06 17:08 UTC (permalink / raw)
  To: Pablo Sabater; +Cc: git

"Pablo Sabater" <pabloosabaterr@gmail.com> writes:

> On Thu Aug 6, 2026 at 12:48 AM CEST, Junio C Hamano wrote:
>>
>> * ps/cat-file-remote-object-info-type (2026-08-04) 10 commits
>>  - cat-file: unify default format
>>  - serve: advertise type capability
>>  - fetch-object-info: parse type from server response
>>  - protocol-caps: add type support to object-info
>>  - fetch-object-info: die() on the remaining error path
>>  - fetch-object-info: use dedicated struct for the results
>>  - fetch-object-info: pass arguments directly instead of a struct
>>  - fetch-object-info: detect malformed server responses
>>  - t5701: use test_file_size() to get the size of a file
>>  - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type
>>
>>  The 'remote-object-info' command for 'git cat-file --batch-command'
>>  has been extended to support the '%(objecttype)' placeholder.
>>
>>  Needs review.
>>  cf. <xmqqpkzxtyac.fsf@gitster.g>
>>  cf. <xmqqldalty3i.fsf@gitster.g>
>>  source: <20260804-objecttype-support-v4-0-31511b0231be@gmail.com>
>>
>
> Hi,
>
> The topic ps/cat-file-remote-object-info graduated to 'master' last
> What's cooking [1], so ps/cat-file-remote-object-info-type can go on top
> of 'master' as is and the merge requirement can be dropped.

Sorry, but what do you mean by a 'merge requirement'?

I generally keep the same base as before when there is no reason to
rebase.  It makes easier to view the differences between iterations.
'git diff @{1} @{0}' would work just fine, for example.  If you
rebase, you would need to guess from the output of the 'range-diff'
command, which, while much better than nothing, is still not easy to
read.

The above is kept on the same synthetic base, as I did not (and do
not) see any need to rebase, but perhaps you have reasons I missed?

By the way, I just noticed that the commit count includes the number
of synthetic bases, which may be a bit confusing, if not wrong.  The
tooling to maintain the 'What's cooking' report may rely on the
count exactly matching the number of lines below the headline, which
is the number of commits in the 'git log --first-parent master..'
chain.  I might look into changing it to show the number of
contributor patches in the series, but it may take some time before
I get to it.




^ permalink raw reply	[relevance 95%]

* What's cooking in git.git (Aug 2026, #02)
@ 2026-08-05 22:48 15% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-08-05 22:48 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The 11th batch of topics have now graduated to the 'master' branch.
We have 401 non-merge commits in 'master' since Git 2.55.  There
are 55 non-merge commits cooking in 'next' (note that some have
been reverted), and 235 non-merge commits, including those in and
out of 'next', in 'seen' as of this writing.

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

* jk/ci-static-analysis-image-bump (2026-07-26) 2 commits
  (merged to 'next' on 2026-07-29 at 457a175861)
 + ci: bump ubuntu image version for static-analysis job
 + bloom: silence CHECK_ASSERTION_SIDE_EFFECTS false positive

 The image version used by the static-analysis CI job has been bumped
 to ubuntu-latest (Ubuntu 24.04), which brings in a newer Coccinelle
 version that resolves a severe performance regression.  A false
 positive warning from the 'CHECK_ASSERTION_SIDE_EFFECTS' build with
 GCC 15 in the Bloom filter code has also been silenced to facilitate
 the image upgrade.

 Graduated to 'master'.
 cf. <xmqqo6ftvhed.fsf@gitster.g>
 source: <20260726083254.GA3528497@coredump.intra.peff.net>


* jk/diff-relative-cached-unmerged (2026-07-28) 2 commits
  (merged to 'next' on 2026-07-28 at 1ac873b5f9)
 + diff-lib: add idx/tree sanity check to oneway_diff
  (merged to 'next' on 2026-07-25 at 8829f9b348)
 + diff: ignore unmerged paths outside prefix with --relative --cached
 (this branch is used by jk/diff-relative-cached-unmerged-more.)

 'git diff --relative' running with '--cached' has been corrected to
 avoid a segfault when encountering unmerged paths outside the
 prefix.

 Graduated to 'master'.
 source: <20260728151458.GB41931@coredump.intra.peff.net>


* jk/t0014-dynamic-deprecated-cmds (2026-07-28) 2 commits
  (merged to 'next' on 2026-07-29 at 39a86632e6)
 + t0014: generate deprecated command names dynamically
 + t0014: factor out choice of deprecated commands

 The alias tests in 't/t0014-alias.sh' have been updated to dynamically
 query the list of deprecated commands using 'git
 --list-cmds=deprecated' to avoid test failures when running with
 'WITH_BREAKING_CHANGES' in a build directory that contains stale
 executables of formerly deprecated commands.

 Graduated to 'master'.
 source: <20260728143653.GB11894@coredump.intra.peff.net>


* js/mingw-symlink-net-share-leak (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-29 at 250fe7f194)
 + mingw: skip symlink type auto-detection for network share targets

 Git for Windows has been updated to avoid auto-detecting the symlink
 type if the target path starts with a slash, preventing NTLM
 credential leaks when checking out repositories with crafted
 symbolic links pointing to network shares.

 Graduated to 'master'.
 source: <pull.2189.git.1785239196007.gitgitgadget@gmail.com>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
  (merged to 'next' on 2026-07-28 at 1e622f0e29)
 + odb: make optimizations pluggable
 + builtin/gc: fix signedness issues in ODB-related functionality
 + builtin/gc: refactor ODB optimizations to operate on "files" source
 + builtin/gc: introduce `odb_optimize_required()`
 + builtin/gc: move geometric repacking into `odb_optimize()`
 + builtin/gc: introduce object database optimization options
 + builtin/gc: inline config values specific to the "files" backend
 + builtin/gc: make repack arguments self-contained
 + builtin/gc: extract object database optimizations into separate function
 + builtin/gc: move worktree and rerere tasks before object optimizations
 + odb: run "pre-auto-gc" hook for all maintenance tasks
 + t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend-specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Graduated to 'master'.
 cf. <xmqqh5m2yhkm.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* pw/rebase-fixup-fixes (2026-07-26) 2 commits
  (merged to 'next' on 2026-07-28 at 736307fae5)
 + rebase: remember fixup -c after skipping fixup/squash
 + rebase -i: fix counting of fixups after rebase --skip

 Two bugs in how 'git rebase' handles skipped 'fixup' and 'squash'
 commands have been fixed.  One bug caused an incorrect commit count to
 be shown in the template message when multiple commands were skipped,
 and another prevented the editor from opening when the final command
 in a chain containing 'fixup -c' was skipped.

 Graduated to 'master'.
 cf. <xmqqtspo3x31.fsf@gitster.g>
 cf. <xmqqse55tp1k.fsf@gitster.g>
 source: <cover.1785080337.git.phillip.wood@dunelm.org.uk>


* rs/branch-delete-bisect-warning (2026-07-25) 1 commit
  (merged to 'next' on 2026-07-28 at c0e15e73b6)
 + branch: report active bisect run when rejecting delete

 'git branch -d' has been taught to report when a branch cannot be
 deleted because it is being used in an active bisect run.

 Graduated to 'master'.
 cf. <xmqqbjbtyd80.fsf@gitster.g>
 cf. <871pcndynd.fsf@emacs.iotcl.com>
 source: <590382fb-731b-4e14-911e-ff68356d1082@web.de>

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

* ps/odb-streams (2026-08-05) 8 commits
 - odb/streaming: unify function names to create new streams
 - odb/streaming: rename `struct input_zstream_data`
 - odb/streaming: rename `struct read_object_fd_data`
 - odb/streaming: consolidate read and write streams
 - odb/streaming: rename `struct odb_read_stream`
 - odb/streaming: support streaming arbitrary object types
 - odb/streaming: drop `is_finished` field
 - odb/streaming: track write stream size in the structure

 The 'struct odb_read_stream' and 'struct odb_write_stream'
 structures have been consolidated into a single unified 'struct
 odb_stream' structure, simplifying object database streaming APIs
 and enabling streaming of arbitrary object types.

 Needs review.
 source: <20260805-pks-odb-stream-unification-v2-0-b8c369564641@pks.im>


* bc/restrict-hex-to-lowercase (2026-07-29) 6 commits
 - hex: allow only lowercase object IDs in breaking changes mode
 - object-name: use hexval
 - hex: label usages of hex parsing for object IDs
 - hex: make hex_to_bytes accept kind of hex to use
 - hex: allow specifying hex type with hex2chr
 - hex: add functionality for lowercase-only hex

 The parser for hex object names has been updated to reject uppercase
 hexadecimal characters when running in the breaking changes mode, in
 preparation for Git 3.0.

 Waiting for review.
 cf. <xmqqldalvfzx.fsf@gitster.g>
 source: <20260729233215.398654-1-sandals@crustytoothpaste.net>


* js/mingw-build-updates (2026-08-05) 12 commits
 - mingw: allow `git.exe` to be used instead of the "Git wrapper"
 - mingw: ensure valid CTYPE
 - mingw: always define `ETC_*` for MSYS2 environments
 - windows: skip linking `git-<command>` for built-ins
 - mingw: rely on MSYS2's metadata instead of hard-coding it
 - mingw: only enable the MSYS2-specific stuff when compiling in MSYS2
 - mingw: set the prefix and HOST_CPU as per MSYS2's settings
 - mingw: avoid over-specifying `--pic-executable`
 - mingw: only use -Wl,--large-address-aware for 32-bit builds
 - mingw: drop the -D_USE_32BIT_TIME_T option
 - mingw: stop hard-coding `CC = gcc`
 - mingw: include the Python parts in the build

 A collection of patches from Git for Windows has been upstreamed,
 mostly focusing on simplifying and robustifying build configurations
 for MinGW/MSYS2, dropping obsolete compatibility options, and
 allowing the main git.exe to be used directly without the extra
 wrapper process on Windows.

 Waiting for response.
 cf. <xmqq7bm4qxv6.fsf@gitster.g>
 cf. <xmqqik5oqyon.fsf@gitster.g>
 source: <pull.2195.git.1785939999.gitgitgadget@gmail.com>


* yn/worktree-add-no-dwim-with-b (2026-08-05) 1 commit
 - worktree add: shouldn't dwim if -b or -B is given

 'git worktree' add did not prevent DWIM behavior when '-b' or '-B'
 was specified, which has been corrected.

 Will merge to 'next'?
 cf. <xmqqtsp8qzc4.fsf@gitster.g>
 source: <pull.2192.v3.git.1785934486496.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response for too long, stalled.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response for too long, stalled.
 cf. <xmqqwlugo4nk.fsf@gitster.g>
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Will discard.
 cf. <xmqq8q71clob.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response for too long, stalled.
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>

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

* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit
 - ci: cancel stale pull request workflow runs

 GitHub Actions CI workflow runs triggered by pull requests have
 been configured to cancel older runs when a new push is made to the
 same pull request.

 Needs review.
 source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>


* kh/doc-refs-migrate-limitations (2026-08-05) 2 commits
 - doc: refs: linkgit to git-maintenance(1)
 - doc: refs: put ref migration warning under the command

 The known limitations of the ref format migration in 'git refs' have
 been moved to be displayed as a warning admonition directly under the
 description of the 'migrate' subcommand, improving visibility.  A
 reference to 'git-maintenance' has also been corrected to use the
 'linkgit' macro.

 Needs review.
 source: <V2_CV_git_ref_migration_warning.b20@msgid.xyz>


* jc/complete-diff-tracked-paths (2026-08-05) 3 commits
 - completion: 'git diff' completes untracked paths as a last resort
 - completion: complete tracked paths for 'git diff'
 - completion: no-op refactoring of diff completion

 'git -C <dir> diff fi<TAB>' did not complete 'dir/file', which has
 been corrected.

 Needs review.
 source: <20260805194250.3316220-1-gitster@pobox.com>


* kh/trailers-no-urls (2026-08-02) 2 commits
 - trailers: stop recognizing URLs as trailers
 - Merge branch 'kh/doc-trailers' into kh/trailers-no-urls
 (this branch uses kh/doc-trailers.)

 The trailers code has been taught to avoid mistaking a line that has
 <token>:// at the beginning as a trailer line.

 On hold, waiting for the base topic.
 cf. <20260803152025.GA189075@coredump.intra.peff.net>
 cf. <xmqqmrv42lrg.fsf@gitster.g>
 cf. <xmqqtspbz00x.fsf@gitster.g>
 source: <URLs_not_trailers.b13@msgid.xyz>


* kl/t7528-ssh-agent-for-csh-users (2026-08-02) 1 commit
 - t7528: fix failure under csh

 The 'ssh-agent' tests in 't7528' have been fixed to work when the
 user's login shell is csh-like, by explicitly passing '-s' to
 'ssh-agent' to force Bourne shell syntax.

 Will merge to 'next'?
 cf. <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>
 source: <20260803004105.36913-2-keni@his.com>


* kh/doc-trailers (2026-07-30) 11 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: rewrite new-trailers paragraphs
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822
 (this branch is used by kh/trailers-no-urls.)

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Needs review.
 source: <V4_CV_doc_int-tr_key_format.ae2@msgid.xyz>


* kh/doc-replay-config (2026-07-30) 4 commits
  (merged to 'next' on 2026-08-03 at 5450adb2e1)
 + doc: replay: move “default” to the right-hand side
 + doc: replay: use a nested description list
 + doc: replay: improve config description
 + doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Will merge to 'master'.
 cf. <xmqq4ihfduxi.fsf@gitster.g>
 source: <V4_CV_doc_replay_config.af3@msgid.xyz>


* sk/test-commit-body-helper (2026-07-27) 2 commits
  (merged to 'next' on 2026-08-03 at ce42e63135)
 + t: use commit_body to extract commit message bodies
 + test-lib-functions: add commit_body helper

 A new test helper commit_body() has been introduced to print the
 message body of a commit, and various tests have been updated to use
 it instead of spelling out the command pipeline manually and losing
 the exit status of the 'git cat-file' command on the upstream of the
 pipe.

 Will merge to 'master'.
 cf. <xmqqpl05o5n7.fsf@gitster.g>
 source: <20260727095656.75496-1-diy2903@gmail.com>


* jk/cat-file-batch-wo-type-fix (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-31 at 2d67bd3ccf)
 + cat-file: handle content request for --batch-command without type

 'git cat-file --batch-command' that asked for 'contents' without
 'type' segfaults, which has been corrected.

 Will merge to 'master'.
 cf. <xmqqjyqfdnie.fsf@gitster.g>
 source: <20260728150031.GA41931@coredump.intra.peff.net>


* tc/merge-default-to-upstream-leakfix (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-31 at b10497d8a4)
 + merge: fix leak with merge.defaultToUpstream

 A memory leak in 'git merge' when run without arguments (which
 triggers the default-to-upstream path) has been fixed.  A test has
 been added to cover this case.

 Will merge to 'master'.
 cf. <20260728151959.GC41931@coredump.intra.peff.net>
 cf. <xmqqfr13dlv8.fsf@gitster.g>
 source: <20260728-toon-fix-merge-leak-v1-1-d6bd161a3acf@iotcl.com>


* cl/regexec-macos-leak (2026-07-28) 2 commits
 - SQUASH???
 - regexec: work around macOS TRE leak on invalid UTF-8

 A compatibility workaround has been introduced for macOS to address
 a memory leak in the system regex engine when it encounters invalid
 multibyte sequences.  The workaround segments the input buffer at
 invalid byte boundaries and searches each valid segment separately
 using regexec(), avoiding the leaking path.

 Waiting for response.
 cf. <xmqqse52bpa9.fsf@gitster.g>
 cf. <anL7qL2-4h8ZlLcg@pks.im>
 source: <20260728052538.12429-1-chungmin@chungminlee.com>


* dl/pack-bitmap-position-zero (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-31 at b200bed995)
 + pack-bitmap: handle objects at bitmap position zero

 A boundary case check in reachability bitmap traversal has been
 corrected to properly handle the object at position zero, which was
 previously skipped, leading to redundant bitmap loading.

 Will merge to 'master'.
 cf. <amk75SuhyHBbx-E8@com-79390>
 cf. <xmqq5x1yd968.fsf@gitster.g>
 source: <20260728135248.61304-1-davidlin@stripe.com>


* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
 - checkout -m: refine autostash fallback
 - sequencer: teach autostash apply to report conflicts

 The autostash fallback in 'git checkout -m' has been refined to only
 retry when there are local changes.  Additionally, a blank line now
 visually separates autostash conflict advice from the subsequent
 branch-switch message.

 Needs review.
 cf. <xmqqwluebuhb.fsf@gitster.g>
 source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>


* ns/merge-base-is-ancestor-tests (2026-07-29) 1 commit
  (merged to 'next' on 2026-08-03 at cf2c4e00eb)
 + merge-base: add tests for --is-ancestor

 Tests for 'git merge-base --is-ancestor' have been added to cover
 exit codes (0 for success, 1 for non-ancestor, 128 for errors) and
 to ensure it cannot be combined with '--all'.

 Will merge to 'master'.
 cf. <xmqq8q6slb2t.fsf@gitster.g>
 source: <pull.2186.v2.git.1785392350660.gitgitgadget@gmail.com>


* jc/add-resolved (2026-07-31) 4 commits
 - add: introduce '--resolved' option
 - read-cache: add remove_file_from_index_with_flags()
 - merge-ll: consolidate conflict marker scanning logic
 - read-cache: reindent

 'git add' has been taught a new '--resolved' option to stage
 conflict-resolved paths, while leaving unrelated local changes
 unstaged.  It scans the unmerged paths for leftover conflict
 markers and aborts if any are found.

 Will merge to 'next'?
 cf. <20260801141414.GD2041176@coredump.intra.peff.net>
 source: <20260731125605.3638938-1-gitster@pobox.com>


* tb/pack-with-duplicates (2026-07-24) 5 commits
 - pack-bitmap: handle duplicate pack entries during MIDX reuse
 - test-tool bitmap: reject packs with duplicate objects
 - midx: verify duplicate pack entries by OID and offset
 - packfile: recover delta cycles through duplicate entries
 - t5308: test reverse indexes with duplicate objects

 The handling of packfiles with duplicate object entries has been
 hardened.  Specifically, reverse index lookup, delta cycle
 recovery, multi-pack-index verification, and pack reuse paths have
 been updated to correctly handle or gracefully reject duplicate
 entries.

 Needs review.
 cf. <xmqqecgs3vg6.fsf@gitster.g>
 source: <cover.1784927134.git.ttaylorr@openai.com>


* ps/cat-file-remote-object-info-type (2026-08-04) 10 commits
 - cat-file: unify default format
 - serve: advertise type capability
 - fetch-object-info: parse type from server response
 - protocol-caps: add type support to object-info
 - fetch-object-info: die() on the remaining error path
 - fetch-object-info: use dedicated struct for the results
 - fetch-object-info: pass arguments directly instead of a struct
 - fetch-object-info: detect malformed server responses
 - t5701: use test_file_size() to get the size of a file
 - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type

 The 'remote-object-info' command for 'git cat-file --batch-command'
 has been extended to support the '%(objecttype)' placeholder.

 Needs review.
 cf. <xmqqpkzxtyac.fsf@gitster.g>
 cf. <xmqqldalty3i.fsf@gitster.g>
 source: <20260804-objecttype-support-v4-0-31511b0231be@gmail.com>


* jk/diff-relative-cached-unmerged-more (2026-07-26) 3 commits
  (merged to 'next' on 2026-07-30 at d8636bd744)
 + diff-lib: skip paths outside prefix in oneway_diff()
 + diff-lib: drop stale comment about advancing o->pos
 + Merge branch 'jk/diff-relative-cached-unmerged' into jk/diff-relative-cached-unmerged-more

 The code path that deals with relative paths in the diff-lib has
 been cleaned up.

 Will merge to 'master'.
 cf. <xmqqo6frdqy5.fsf@gitster.g>
 cf. <20260728171249.GA643101@coredump.intra.peff.net>
 source: <20260726084550.GC2366012@coredump.intra.peff.net>


* lo/mv-missing-dest-dir-check (2026-07-30) 2 commits
  (merged to 'next' on 2026-08-03 at 7643cf1c2a)
 + mv: reject a destination whose leading path is missing or a symlink
 + mv: name both source and destination when rename fails

 'git mv' has been updated to check for a missing destination
 leading directory during the checking phase, allowing 'git mv -n'
 to report the failure.  The error message when the rename(2)
 syscall fails has also been improved to name both the source and
 the destination.

 Will merge to 'master'.
 cf. <xmqqtspgjkwb.fsf@gitster.g>
 source: <pull.2356.v5.git.git.1785410884.gitgitgadget@gmail.com>


* ps/odb-make-creation-pluggable (2026-08-05) 6 commits
 - odb: make creation of on-disk structures pluggable
 - odb/source: introduce function to map source type to name
 - setup: defer object database creation
 - setup: handle ODB-related environment variables in `odb_new()`
 - setup: detangle loading of loose object maps
 - loose: load loose object map for the correct source

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Waiting for response.
 cf. <87zez04l1x.fsf@emacs.iotcl.com>
 cf. <8733ws6424.fsf@emacs.iotcl.com>
 cf. <878q6k66ha.fsf@emacs.iotcl.com>
 source: <20260805-pks-odb-create-on-disk-v3-0-c0ee3ac5141f@pks.im>


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for response.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 - fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Waiting for response.
 cf. <CAOTNsDy4pKbPHdK1T688Ax6Mgz15K-qfZR-8fAvTk48z3E43Rg@mail.gmail.com>
 cf. <xmqq4ih9ttyc.fsf@gitster.g>
 cf. <anLtSOKqgcCrrNHo@pks.im>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response.
 cf. <0844b4e0-679b-4c0a-bea1-5779b4d0489d@gmail.com>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
  (merged to 'next' on 2026-08-03 at c744bba04e)
 + doc: convert git-request-pull synopsis and options to new style
 + doc: convert git-send-email synopsis and options to new style
 + doc: convert git-format-patch synopsis and options to new style
 + doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Will merge to 'master'.
 cf. <xmqqldato56l.fsf@gitster.g>
 source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>


* kj/repo-info-more-path-keys (2026-07-26) 7 commits
 - repo: add path.git-prefix path key
 - repo: add path.grafts with absolute and relative suffix formatting
 - repo: add path.index with absolute and relative suffix formatting
 - repo: add path.hooks with absolute and relative suffix formatting
 - repo: add path.objects with absolute and relative suffix formatting
 - repo: add path.superproject-working-tree with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Expecting a reroll.
 cf. <CA+rGoLfJ5Kc_HV7YfJ-y5SpMjb7t7f5ifUKcd=39eTjqzzQF5w@mail.gmail.com>
 source: <20260726104343.16933-1-jayatheerthkulkarni2005@gmail.com>


* tc/last-modified-bloom (2026-07-17) 4 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Expecting a reroll.
 cf. <alq1Q55ezuN9ZI9j@com-79390>
 cf. <20260718081407.GC22588@coredump.intra.peff.net>
 cf. <87wlu44bv3.fsf@emacs.iotcl.com>
 source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>


* hn/bisect-reset-when-found (2026-08-02) 2 commits
 - bisect: add --reset-when-found to leave when done
 - bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Waiting for response.
 cf. <xmqqjyq812wr.fsf@gitster.g>
 source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-08-05) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Needs review.
 source: <pull.2179.v2.git.1785954661.gitgitgadget@gmail.com>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Expecting a reroll.
 cf. <alpXW5U6sndZtgqV@com-79390>
 cf. <fbb118df-7c82-49a5-90bb-4458b7e9a850@gmail.com>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-31 at ae6730749f)
 + revision: make get_commit_action() a pure predicate

 The get_commit_action() function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 simplify_commit().  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Will merge to 'master'.
 cf. <xmqq8q6wpmuy.fsf@gitster.g>
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-08-04) 12 commits
 - fast-import: remove useless from_stream argument
 - fast-import: use parse_options() for command line options
 - fast-import: use callbacks to parse some options
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: factor out option_*() functions
 - fast-import: use int for some bool flags
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Needs review.
 source: <20260804100355.1299498-1-christian.couder@gmail.com>


* ps/writev (2026-07-16) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Waiting for response.
 cf. <8ff3c3ea-2604-4d65-8a7d-6acd6218b7c2@kdbg.org>
 source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-26) 6 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: permit unlinking partial packs on Windows
 - http: avoid concurrent appends to partial packs
 - http: accept HTTP 416 for complete partial packs
 - http: avoid closing index-pack input twice
 - http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP have
 been made safer by avoiding concurrent appends to the staging file.
 Opening the file in read-write mode and maintaining separate file
 offsets prevent corruption while preserving resumability.  The
 'fetch-pack' command has also been updated to tolerate pre-existing
 '.keep' files.

 Will merge to 'next'?
 cf. <20260801140255.GC2041176@coredump.intra.peff.net>
 source: <cover.1785111375.git.tnyman@openai.com>


* js/pack-objects-delta-size-t (2026-08-05) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.v2.git.1785946479.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 cf. <xmqq8q6to4em.fsf@gitster.g>
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Ejected due to conflicts with 'pw/rebase-drop-notes-with-commit'.

 Waiting for response.
 cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
 cf. <xmqqh5m494yh.fsf@gitster.g>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Waiting for response.
 cf. <anGcwAZgbarxi6_k@pks.im>
 cf. <anGcx4lRyy3jyS1D@pks.im>
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
  (merged to 'next' on 2026-07-31 at 21b8a5bc05)
 + sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the 'sparse-index' collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Will merge to 'master'.
 cf. <xmqq33x1o465.fsf@gitster.g>
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Will merge to 'next'?
 cf. <xmqq8q6myl76.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Ejected for now, as it causes too many evil merges with other topics.

 Waiting for response, stalled.
 cf. <xmqqqzkx9t95.fsf@gitster.g>
 cf. <al6yCTDjBRn2HGq0@com-79390>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-08-04) 4 commits
 - history: add squash subcommand to fold a range
 - sequencer: share the squash message marker helpers and flags
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 source: <pull.2337.v12.git.git.1785832251.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* tc/replay-linearize (2026-07-28) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: resolve the replay base outside pick_regular_commit()
 - replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Needs review.
 source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>


* mm/diff-process-hunks (2026-08-01) 11 commits
 - diff: consult oid-only hunk providers via diff.<driver>.process
 - userdiff: add diff.<driver>.process config
 - sub-process: add a gentle status read
 - sub-process: separate process lifecycle from hashmap management
 - blame: read precomputed hunks
 - diff: read precomputed hunks for stat output
 - diff: record precomputed hunks during stat output
 - diff-hunks: add the store format, library, and command
 - diff: introduce a hunk provider interface
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Waiting for response.
 cf. <1f8fe709-ef19-496e-9857-8c2d24b29c56@gmail.com>
 source: <20260801174156.2998808-1-mmontalbo@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-08-05) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <pattern>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Will merge to 'next'?
 source: <pull.2285.v25.git.git.1785939877.gitgitgadget@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Expecting a reroll.
 cf. <CABPp-BGATrNJyT7trzUzAMB_v-1ssVe_SRqp+281X5GzU=2eow@mail.gmail.com>
 cf. <CAL71e4Mve9EbTkuWoGdtNTJJC5oj_W9enfSceMvH0FFm4T8ALA@mail.gmail.com>
 cf. <CAL71e4Mc5b8rqD_x=0XPvrF9NtNw6Y_twrdwJAF5vE3sWtkzOA@mail.gmail.com>
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 15%]

* Re: What's cooking in git.git (Jul 2026, #12)
  @ 2026-08-05 17:03 99%           ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-08-05 17:03 UTC (permalink / raw)
  To: Phillip Wood; +Cc: git, Harald Nordgren

Phillip Wood <phillip.wood123@gmail.com> writes:

> Hi Junio
>
> On 29/07/2026 18:48, Junio C Hamano wrote:
>> 
>> Perhaps the sensible thing for me to do is to stop taking any new
>> topics into 'seen', even if I've spotted them, until I see somebody
>> give them a real review.
>> 
>> Otherwise, it becomes too tempting for me to jump in, give them a
>> superficial read after seeing them linger in the "What's Cooking"
>> draft in the "Needs review" state for too long, and, believing I've
>> seen enough, mark them for 'next'.  If I don't queue a patch that
>> nobody seems to have read carefully, I won't succumb to such
>> temptation.
>
> Maybe, though I do find having the patches in seen makes it easier to do 
> an in-depth review as it means I don't have to apply them myself.

Yes, that is a very good point.  And if the authors are paying
attention, it would hopefully also help them how well their changes
play with others' changes.

OK, then I will keep picking them up, but under these conditions:

 (1) They will not leave 'seen' without anyone commenting on them;

 (2) They will automatically be discarded after four weeks without
     positive feedback; and

 (3) I will not feel obligated to review them even if no one steps up.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Aug 2026, #01)
@ 2026-08-03 19:09 14% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-08-03 19:09 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The 10th batch of topics have now graduated to the 'master' branch.

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]

* hn/ci-cancel-stale-pr-runs (2026-07-31) 1 commit
 - ci: cancel stale pull request workflow runs

 GitHub Actions CI workflow runs triggered by pull requests have
 been configured to cancel older runs when a new push is made to the
 same pull request.

 Needs review.
 source: <pull.2369.git.git.1785492641983.gitgitgadget@gmail.com>


* kh/doc-refs-migrate-limitations (2026-07-31) 2 commits
 - doc: refs: linkgit to git-maintenance(1)
 - doc: refs: put ref migration warning under the command

 The known limitations of the ref format migration in 'git refs' have
 been moved to be displayed as a caution admonition directly under the
 description of the 'migrate' subcommand, improving visibility.  A
 reference to 'git-maintenance' has also been corrected to use the
 'linkgit' macro.

 Will merge to 'next'?
 cf. <xmqqbjbncdv5.fsf@gitster.g>
 source: <CV_git_ref_migration_warning.b09@msgid.xyz>


* jc/complete-diff-tracked-paths (2026-08-02) 1 commit
 - completion: complete tracked paths for git diff

 "git -C <dir> diff fi<TAB>" did not complete dir/file, which has
 been corrected.

 Will merge to 'next'?
 cf. <anAqfqcEueSKmAH+@szeder.dev>
 cf. <xmqqpkzzyzq4.fsf@gitster.g>
 source: <xmqqcxw010me.fsf@gitster.g>


* kh/trailers-no-urls (2026-08-02) 2 commits
 - trailers: stop recognizing URLs as trailers
 - Merge branch 'kh/doc-trailers' into kh/trailers-no-urls
 (this branch uses kh/doc-trailers.)

 The trailers code has been taught to avoid mistaking a line that has
 <token>:// at the beginning as a trailer line.

 Will merge to 'next'?
 cf. <20260803152025.GA189075@coredump.intra.peff.net>
 cf. <xmqqmrv42lrg.fsf@gitster.g>
 cf. <xmqqtspbz00x.fsf@gitster.g>
 source: <URLs_not_trailers.b13@msgid.xyz>


* kl/t7528-ssh-agent-for-csh-users (2026-08-02) 1 commit
 - t7528: fix failure under csh

 The 'ssh-agent' tests in 't7528' have been fixed to work when the
 user's login shell is csh-like, by explicitly passing '-s' to
 'ssh-agent' to force Bourne shell syntax.

 Will merge to 'next'?
 cf. <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>
 cf. <xmqqy0enz2o4.fsf@gitster.g>
 source: <20260803004105.36913-2-keni@his.com>

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

* af/clone-revision-v0-segfault-fix (2026-07-24) 1 commit
  (merged to 'next' on 2026-07-27 at 57c0e98bfb)
 + builtin/clone: fix segfault when using --revision with protocol v0

 A segfault when 'git clone --revision' talks to a server that does not
 support protocol v2 (falling back to protocol v0) has been corrected.

 Graduated to 'master'.
 cf. <xmqqldb08jcd.fsf@gitster.g>
 source: <20260724124138.666877-1-adrian.friedli@mt.com>


* en/submodule-insteadof-remote-match (2026-07-22) 1 commit
  (merged to 'next' on 2026-07-27 at a1cbd7aa11)
 + submodule: resolve insteadOf aliases when matching remote

 The remote-matching logic for submodules has been corrected to resolve
 'url.*.insteadOf' aliases before comparing the inventoried URL from
 '.gitmodules' with the URLs of configured remotes.

 Graduated to 'master'.
 cf. <xmqqldb05dlo.fsf@gitster.g>
 source: <20260723002132.3989727-1-ccjmne@gmail.com>


* hn/url-push-tracking (2026-07-22) 2 commits
  (merged to 'next' on 2026-07-25 at 9b776656fc)
 + remote: find tracking branches for URL push destinations
 + remote: pass repository to push tracking helper

 When the push remote is specified as a URL, the fetch refspec of a
 uniquely matching configured remote is now used to find and update
 the remote-tracking branch (e.g., '@{push}').

 Graduated to 'master'.
 cf. <xmqqpl0eoniz.fsf@gitster.g>
 source: <pull.2358.v4.git.git.1784743738.gitgitgadget@gmail.com>


* jc/exclude-first-parent-seen (2026-07-22) 1 commit
  (merged to 'next' on 2026-07-25 at 85755d1d45)
 + revision: honor --exclude-first-parent-only with SEEN first parent

 Traversals with '--exclude-first-parent-only' have been corrected
 to properly stop after the first parent even when it has already
 been marked as 'SEEN'.

 Graduated to 'master'.
 source: <xmqqbjbzq7n2.fsf@gitster.g>


* jc/remote-insteadof-leakfix (2026-07-25) 1 commit
  (merged to 'next' on 2026-07-27 at 8cf88af88b)
 + remote: plug memory leaks

 rewrites_release() in 'remote.c' has been updated to free 'struct
 rewrite' instances, their '.instead_of' arrays, and their contents.

 Graduated to 'master'.
 cf. <20260725161819.GA2343104@coredump.intra.peff.net>
 source: <xmqqpl0b12gj.fsf@gitster.g>


* jt/config-lock-timeout (2026-05-17) 1 commit
  (merged to 'next' on 2026-07-24 at 3cb8da6b6a)
 + config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Graduated to 'master'.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 cf. <xmqqzf1xbl4i.fsf@gitster.g>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* ps/cat-file-remote-object-info (2026-07-24) 13 commits
  (merged to 'next' on 2026-07-24 at e436a42272)
 + cat-file: make remote-object-info allow-list adapt to the server
 + cat-file: add remote-object-info to batch-command
 + transport: add client support for object-info
 + serve: advertise object-info feature
 + protocol-caps: check object existence regardless of the attributes requested
 + fetch-pack: move fetch initialization
 + connect: make write_fetch_command_and_capabilities() more generic
 + fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 + fetch-pack: use unsigned int for hash_algo variable
 + fetch-pack: drop the static advertise_sid variable
 + t1006: extract helper functions into new 'lib-cat-file.sh'
 + cat-file: declare loop counter inside for()
 + transport-helper: fix memory leak of helper on disconnect
 (this branch is used by ps/cat-file-remote-object-info-type.)

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.  Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Graduated to 'master'.
 source: <20260724-ps-eric-work-rebase-v21-0-ba67f024fdff@gmail.com>


* ps/odb-move-loose-object-writing (2026-07-17) 10 commits
  (merged to 'next' on 2026-07-25 at 244d577d93)
 + object-file: move logic to write loose objects
 + object-file: move `force_object_loose()`
 + object-file: force objects loose via generic interface
 + object-file: fix memory leak in `force_object_loose()`
 + odb: support setting mtime when writing objects
 + odb: lift object existence check out of the "loose" backend
 + odb: compute object hash in `odb_write_object_ext()`
 + t/u-odb-inmemory: implement wrapper for writing objects
 + odb: compute compat object ID in `odb_write_object_ext()`
 + Merge branch 'jt/receive-pack-use-odb-transactions' into HEAD

 The logic to write loose objects has been refactored and moved from
 'object-file.c' to the loose backend source file 'odb/source-loose.c',
 making the loose backend more self-contained.  This is achieved by
 first refactoring force_object_loose() to use generic ODB write
 interfaces instead of loose-backend internals.

 Graduated to 'master'.
 cf. <xmqqecgzpm0y.fsf@gitster.g>
 source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
  (merged to 'next' on 2026-07-22 at 968a116891)
 + use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
 + tempfile: stop using the_repository
 + lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
 + refs/packed: use repo_create_tempfile()
 + tempfile: add repo_create_tempfile{,_mode}()

 The tempfile and lockfile APIs have been refactored to stop depending
 on the 'the_repository' global variable, and their callers have been
 updated to use the repository-aware variants.

 Graduated to 'master'.
 cf. <xmqq8q7ds3ld.fsf@gitster.g>
 cf. <xmqqmrvmn6a5.fsf@gitster.g>
 source: <20260714175956.54601-1-l.s.r@web.de>


* sk/userdiff-swift (2026-07-20) 1 commit
  (merged to 'next' on 2026-07-23 at 45dbcc6307)
 + userdiff: add support for Swift

 Userdiff patterns for Swift have been added, with support for
 Swift-specific constructs such as attributes, modifiers, failable
 initializers, and generics.

 Graduated to 'master'.
 cf. <2a3a73c5-5e90-44a3-bf6a-6e98ce5e5a59@kdbg.org>
 cf. <7b541cd5-bd66-4675-818d-8e23eb1c9530@kdbg.org>
 source: <20260721065736.8747-1-diy2903@gmail.com>


* tl/gitweb-shorten-hashes-with-modes (2026-07-17) 1 commit
  (merged to 'next' on 2026-07-25 at 5b92e8a325)
 + gitweb: shorten index hashes with trailing file modes

 The object ID shortening and linking in the 'commitdiff' view of
 'gitweb' has been corrected to work even when the index line carries
 a trailing file mode.

 Graduated to 'master'.
 cf. <xmqqjyqu6u7i.fsf@gitster.g>
 source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>


* tn/stash-avoid-sparse-index-expansion (2026-07-20) 2 commits
  (merged to 'next' on 2026-07-23 at 8ccf28493e)
 + stash: avoid sparse-index expansion for in-cone paths
 + pathspec: use match for sparse-index expansion checks

 The 'git stash push' command has been optimized to avoid
 unnecessary sparse index expansion when pathspecs are wholly inside
 the sparse-checkout cone.  Also, a potential out-of-bounds read in
 the sparse-index expansion check helper
 pathspec_needs_expanded_index() has been fixed by consistently
 using the parsed, prefixed path.

 Graduated to 'master'.
 cf. <al61UTM0aK9j9eiP@com-79390>
 cf. <al61ERa3fS2MerHp@com-79390>
 source: <20260720223118.62821-4-tnyman@openai.com>


* ty/migrate-excludes-file (2026-07-13) 10 commits
  (merged to 'next' on 2026-07-23 at 749560a29c)
 + repository: adjust the comment of config_values_private_
 + environment: move object_creation_mode into repo_config_values
 + environment: move autorebase into repo_config_values
 + environment: move push_default into repo_config_values
 + environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 + environment: move askpass_program into repo_config_values
 + environment: move pager_program into repo_config_values
 + environment: move editor_program into repo_config_values
 + environment: move excludes_file into repo_config_values
 + repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Graduated to 'master'.
 cf. <xmqqa4ruyhbh.fsf@gitster.g>
 source: <20260714032525.1611141-1-cat@malon.dev>


* ty/migrate-trust-executable-bit (2026-07-20) 4 commits
  (merged to 'next' on 2026-07-23 at 4873f289dd)
 + environment: move has_symlinks into repo_config_values
 + environment: move trust_executable_bit into repo_config_values
 + read-cache: pass 'repo' to 'ce_mode_from_stat()'
 + read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from the 'core.filemode'
 configuration) has been migrated into 'struct repo_config_values' to
 tie it to a specific repository instance.

 Graduated to 'master'.
 cf. <alvNq8rXF/jofqUc@szeder.dev>
 cf. <xmqq8q7961xe.fsf@gitster.g>
 source: <20260720105335.3202013-1-cat@malon.dev>

--------------------------------------------------
[Stalled]

* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response for too long, stalled.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 cf. <xmqqik60o22y.fsf@gitster.g>
 source: <20260630020220.1559190-1-bblima@usp.br>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response for too long, stalled.
 cf. <xmqqwlugo4nk.fsf@gitster.g>
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Will discard.
 cf. <xmqq8q71clob.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response for too long, stalled.
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 cf. <xmqq4ihpclo8.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>

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

* kh/doc-trailers (2026-07-30) 11 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: rewrite new-trailers paragraphs
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822
 (this branch is used by kh/trailers-no-urls.)

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Needs review.
 source: <V4_CV_doc_int-tr_key_format.ae2@msgid.xyz>


* kh/doc-replay-config (2026-07-30) 4 commits
  (merged to 'next' on 2026-08-03 at 5450adb2e1)
 + doc: replay: move “default” to the right-hand side
 + doc: replay: use a nested description list
 + doc: replay: improve config description
 + doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Will merge to 'master'.
 cf. <xmqq4ihfduxi.fsf@gitster.g>
 source: <V4_CV_doc_replay_config.af3@msgid.xyz>


* sk/test-commit-body-helper (2026-07-27) 2 commits
  (merged to 'next' on 2026-08-03 at ce42e63135)
 + t: use commit_body to extract commit message bodies
 + test-lib-functions: add commit_body helper

 A new test helper commit_body() has been introduced to print the
 message body of a commit, and various tests have been updated to use
 it instead of spelling out the command pipeline manually and losing
 the exit status of the 'git cat-file' command on the upstream of the
 pipe.

 Will merge to 'master'.
 cf. <xmqqpl05o5n7.fsf@gitster.g>
 source: <20260727095656.75496-1-diy2903@gmail.com>


* jk/cat-file-batch-wo-type-fix (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-31 at 2d67bd3ccf)
 + cat-file: handle content request for --batch-command without type

 'git cat-file --batch-command' that asked for 'contents' without
 'type' segfaults, which has been corrected.

 Will merge to 'master'.
 cf. <xmqqjyqfdnie.fsf@gitster.g>
 source: <20260728150031.GA41931@coredump.intra.peff.net>


* tc/merge-default-to-upstream-leakfix (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-31 at b10497d8a4)
 + merge: fix leak with merge.defaultToUpstream

 A memory leak in 'git merge' when run without arguments (which
 triggers the default-to-upstream path) has been fixed.  A test has
 been added to cover this case.

 Will merge to 'master'.
 cf. <20260728151959.GC41931@coredump.intra.peff.net>
 cf. <xmqqfr13dlv8.fsf@gitster.g>
 source: <20260728-toon-fix-merge-leak-v1-1-d6bd161a3acf@iotcl.com>


* cl/regexec-macos-leak (2026-07-28) 2 commits
 - SQUASH???
 - regexec: work around macOS TRE leak on invalid UTF-8

 A compatibility workaround has been introduced for macOS to address
 a memory leak in the system regex engine when it encounters invalid
 multibyte sequences.  The workaround segments the input buffer at
 invalid byte boundaries and searches each valid segment separately
 using regexec(), avoiding the leaking path.

 Waiting for response.
 cf. <xmqqse52bpa9.fsf@gitster.g>
 source: <20260728052538.12429-1-chungmin@chungminlee.com>


* dl/pack-bitmap-position-zero (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-31 at b200bed995)
 + pack-bitmap: handle objects at bitmap position zero

 A boundary case check in reachability bitmap traversal has been
 corrected to properly handle the object at position zero, which was
 previously skipped, leading to redundant bitmap loading.

 Will merge to 'master'.
 cf. <amk75SuhyHBbx-E8@com-79390>
 cf. <xmqq5x1yd968.fsf@gitster.g>
 source: <20260728135248.61304-1-davidlin@stripe.com>


* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
 - checkout -m: refine autostash fallback
 - sequencer: teach autostash apply to report conflicts

 The autostash fallback in 'git checkout -m' has been refined to only
 retry when there are local changes.  Additionally, a blank line now
 visually separates autostash conflict advice from the subsequent
 branch-switch message.

 Needs review.
 cf. <xmqqwluebuhb.fsf@gitster.g>
 source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>


* jk/t0014-dynamic-deprecated-cmds (2026-07-28) 2 commits
  (merged to 'next' on 2026-07-29 at 39a86632e6)
 + t0014: generate deprecated command names dynamically
 + t0014: factor out choice of deprecated commands

 The alias tests in 't/t0014-alias.sh' have been updated to dynamically
 query the list of deprecated commands using 'git
 --list-cmds=deprecated' to avoid test failures when running with
 'WITH_BREAKING_CHANGES' in a build directory that contains stale
 executables of formerly deprecated commands.

 Will merge to 'master'.
 source: <20260728143653.GB11894@coredump.intra.peff.net>


* js/mingw-symlink-net-share-leak (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-29 at 250fe7f194)
 + mingw: skip symlink type auto-detection for network share targets

 Git for Windows has been updated to avoid auto-detecting the symlink
 type if the target path starts with a slash, preventing NTLM
 credential leaks when checking out repositories with crafted
 symbolic links pointing to network shares.

 Will merge to 'master'.
 source: <pull.2189.git.1785239196007.gitgitgadget@gmail.com>


* ns/merge-base-is-ancestor-tests (2026-07-29) 1 commit
  (merged to 'next' on 2026-08-03 at cf2c4e00eb)
 + merge-base: add tests for --is-ancestor

 Tests for 'git merge-base --is-ancestor' have been added to cover
 exit codes (0 for success, 1 for non-ancestor, 128 for errors) and
 to ensure it cannot be combined with '--all'.

 Will merge to 'master'.
 cf. <xmqq8q6slb2t.fsf@gitster.g>
 source: <pull.2186.v2.git.1785392350660.gitgitgadget@gmail.com>


* jc/add-resolved (2026-07-31) 4 commits
 - add: introduce '--resolved' option
 - read-cache: add remove_file_from_index_with_flags()
 - merge-ll: consolidate conflict marker scanning logic
 - read-cache: reindent

 'git add' has been taught a new '--resolved' option to stage
 conflict-resolved paths, while leaving unrelated local changes
 unstaged.  It scans the unmerged paths for leftover conflict
 markers and aborts if any are found.

 Will merge to 'next'?
 cf. <20260801141414.GD2041176@coredump.intra.peff.net>
 source: <20260731125605.3638938-1-gitster@pobox.com>


* tb/pack-with-duplicates (2026-07-24) 5 commits
 - pack-bitmap: handle duplicate pack entries during MIDX reuse
 - test-tool bitmap: reject packs with duplicate objects
 - midx: verify duplicate pack entries by OID and offset
 - packfile: recover delta cycles through duplicate entries
 - t5308: test reverse indexes with duplicate objects

 The handling of packfiles with duplicate object entries has been
 hardened.  Specifically, reverse index lookup, delta cycle
 recovery, multi-pack-index verification, and pack reuse paths have
 been updated to correctly handle or gracefully reject duplicate
 entries.

 Needs review.
 cf. <xmqqecgs3vg6.fsf@gitster.g>
 source: <cover.1784927134.git.ttaylorr@openai.com>


* ps/cat-file-remote-object-info-type (2026-08-03) 9 commits
 - cat-file: unify default format
 - serve: advertise type capability
 - fetch-object-info: parse type from server response
 - protocol-caps: add type support to object-info
 - fetch-object-info: use dedicated struct for the results
 - fetch-object-info: pass arguments directly instead of a struct
 - fetch-object-info: detect truncated server responses
 - t5701: use test_file_size() to get the size of a file
 - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type

 The 'remote-object-info' command for 'git cat-file --batch-command'
 has been extended to support the '%(objecttype)' placeholder.

 Needs review.
 source: <20260803-objecttype-support-v3-0-7176fecf7950@gmail.com>


* rs/branch-delete-bisect-warning (2026-07-25) 1 commit
  (merged to 'next' on 2026-07-28 at c0e15e73b6)
 + branch: report active bisect run when rejecting delete

 'git branch -d' has been taught to report when a branch cannot be
 deleted because it is being used in an active bisect run.

 Will merge to 'master'.
 cf. <xmqqbjbtyd80.fsf@gitster.g>
 cf. <871pcndynd.fsf@emacs.iotcl.com>
 source: <590382fb-731b-4e14-911e-ff68356d1082@web.de>


* jk/ci-static-analysis-image-bump (2026-07-26) 2 commits
  (merged to 'next' on 2026-07-29 at 457a175861)
 + ci: bump ubuntu image version for static-analysis job
 + bloom: silence CHECK_ASSERTION_SIDE_EFFECTS false positive

 The image version used by the static-analysis CI job has been bumped
 to ubuntu-latest (Ubuntu 24.04), which brings in a newer Coccinelle
 version that resolves a severe performance regression.  A false
 positive warning from the 'CHECK_ASSERTION_SIDE_EFFECTS' build with
 GCC 15 in the Bloom filter code has also been silenced to facilitate
 the image upgrade.

 Will merge to 'master'.
 cf. <xmqqo6ftvhed.fsf@gitster.g>
 source: <20260726083254.GA3528497@coredump.intra.peff.net>


* jk/diff-relative-cached-unmerged-more (2026-07-26) 3 commits
  (merged to 'next' on 2026-07-30 at d8636bd744)
 + diff-lib: skip paths outside prefix in oneway_diff()
 + diff-lib: drop stale comment about advancing o->pos
 + Merge branch 'jk/diff-relative-cached-unmerged' into jk/diff-relative-cached-unmerged-more
 (this branch uses jk/diff-relative-cached-unmerged.)

 The code path that deals with relative paths in the diff-lib has
 been cleaned up.

 Will merge to 'master'.
 cf. <xmqqo6frdqy5.fsf@gitster.g>
 cf. <20260728171249.GA643101@coredump.intra.peff.net>
 source: <20260726084550.GC2366012@coredump.intra.peff.net>


* lo/mv-missing-dest-dir-check (2026-07-30) 2 commits
  (merged to 'next' on 2026-08-03 at 7643cf1c2a)
 + mv: reject a destination whose leading path is missing or a symlink
 + mv: name both source and destination when rename fails

 'git mv' has been updated to check for a missing destination
 leading directory during the checking phase, allowing 'git mv -n'
 to report the failure.  The error message when the rename(2)
 syscall fails has also been improved to name both the source and
 the destination.

 Will merge to 'master'.
 cf. <xmqqtspgjkwb.fsf@gitster.g>
 source: <pull.2356.v5.git.git.1785410884.gitgitgadget@gmail.com>


* ps/odb-make-creation-pluggable (2026-07-23) 5 commits
 - odb: make creation of on-disk structures pluggable
 - odb/source: introduce function to map source type to name
 - setup: defer object database creation
 - setup: detangle loading of loose object maps
 - loose: load loose object map for the correct source

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Waiting for response.
 cf. <87pl04d03q.fsf@emacs.iotcl.com>
 source: <20260724-pks-odb-create-on-disk-v1-0-3b3d265d979b@pks.im>


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for a response.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 - fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Waiting for response.
 cf. <CAOTNsDy4pKbPHdK1T688Ax6Mgz15K-qfZR-8fAvTk48z3E43Rg@mail.gmail.com>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response.
 cf. <0844b4e0-679b-4c0a-bea1-5779b4d0489d@gmail.com>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
  (merged to 'next' on 2026-08-03 at c744bba04e)
 + doc: convert git-request-pull synopsis and options to new style
 + doc: convert git-send-email synopsis and options to new style
 + doc: convert git-format-patch synopsis and options to new style
 + doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Will merge to 'master'.
 cf. <xmqqldato56l.fsf@gitster.g>
 source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>


* kj/repo-info-more-path-keys (2026-07-26) 7 commits
 - repo: add path.git-prefix path key
 - repo: add path.grafts with absolute and relative suffix formatting
 - repo: add path.index with absolute and relative suffix formatting
 - repo: add path.hooks with absolute and relative suffix formatting
 - repo: add path.objects with absolute and relative suffix formatting
 - repo: add path.superproject-working-tree with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Expecting a reroll.
 cf. <CA+rGoLfJ5Kc_HV7YfJ-y5SpMjb7t7f5ifUKcd=39eTjqzzQF5w@mail.gmail.com>
 source: <20260726104343.16933-1-jayatheerthkulkarni2005@gmail.com>


* pw/rebase-fixup-fixes (2026-07-26) 2 commits
  (merged to 'next' on 2026-07-28 at 736307fae5)
 + rebase: remember fixup -c after skipping fixup/squash
 + rebase -i: fix counting of fixups after rebase --skip

 Two bugs in how 'git rebase' handles skipped 'fixup' and 'squash'
 commands have been fixed.  One bug caused an incorrect commit count to
 be shown in the template message when multiple commands were skipped,
 and another prevented the editor from opening when the final command
 in a chain containing 'fixup -c' was skipped.

 Will merge to 'master'.
 cf. <xmqqtspo3x31.fsf@gitster.g>
 cf. <xmqqse55tp1k.fsf@gitster.g>
 source: <cover.1785080337.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-bloom (2026-07-17) 4 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Expecting a reroll.
 cf. <87cxwl1lb4.fsf@emacs.iotcl.com>
 source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>


* hn/bisect-reset-when-found (2026-08-02) 2 commits
 - bisect: add --reset-when-found to leave when done
 - bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Waiting for a response.
 cf. <xmqqjyq812wr.fsf@gitster.g>
 source: <pull.2335.v6.git.git.1785705860.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-07-14) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Waiting for response.
 cf. <xmqqh5lui6wg.fsf@gitster.g>
 cf. <xmqqcxwii6wd.fsf@gitster.g>
 cf. <alcvnm0xiOv5W0w_@pks.im>
 source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>


* jk/diff-relative-cached-unmerged (2026-07-28) 2 commits
  (merged to 'next' on 2026-07-28 at 1ac873b5f9)
 + diff-lib: add idx/tree sanity check to oneway_diff
  (merged to 'next' on 2026-07-25 at 8829f9b348)
 + diff: ignore unmerged paths outside prefix with --relative --cached
 (this branch is used by jk/diff-relative-cached-unmerged-more.)

 'git diff --relative' running with '--cached' has been corrected to
 avoid a segfault when encountering unmerged paths outside the
 prefix.

 Will merge to 'master'.
 source: <20260728151458.GB41931@coredump.intra.peff.net>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Expecting a reroll.
 cf. <alpXW5U6sndZtgqV@com-79390>
 cf. <fbb118df-7c82-49a5-90bb-4458b7e9a850@gmail.com>
 cf. <xmqqpl03cfua.fsf@gitster.g>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-31 at ae6730749f)
 + revision: make get_commit_action() a pure predicate

 The get_commit_action() function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 simplify_commit().  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Will merge to 'master'.
 cf. <xmqq8q6wpmuy.fsf@gitster.g>
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-07-16) 7 commits
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Waiting for response.
 cf. <xmqq4ihyehyb.fsf@gitster.g>
 source: <20260716165517.433849-1-christian.couder@gmail.com>


* ps/writev (2026-07-16) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Waiting for response.
 cf. <f8050598-392f-44c9-8d66-0454740a7a12@kdbg.org>
 cf. <xmqqo6fso2s8.fsf@gitster.g>
 source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-26) 6 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: permit unlinking partial packs on Windows
 - http: avoid concurrent appends to partial packs
 - http: accept HTTP 416 for complete partial packs
 - http: avoid closing index-pack input twice
 - http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP have
 been made safer by avoiding concurrent appends to the staging file.
 Opening the file in read-write mode and maintaining separate file
 offsets prevents corruption while preserving resumability.  The
 'fetch-pack' command has also been updated to tolerate pre-existing
 '.keep' files.

 Will merge to 'next'?
 cf. <20260801135313.GA2041176@coredump.intra.peff.net>
 source: <cover.1785111375.git.tnyman@openai.com>


* js/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 cf. <xmqq7bmwm5g6.fsf@gitster.g>
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 cf. <xmqq8q6to4em.fsf@gitster.g>
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Ejected due to conflicts with 'pw/rebase-drop-notes-with-commit'.

 Waiting for response.
 cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
 cf. <xmqqh5m494yh.fsf@gitster.g>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 cf. <CAC2QwmLWkk4JS2XKLdj4i4CAtr7zZo=9tV_=pPQ77zR+R=pGUw@mail.gmail.com>
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
  (merged to 'next' on 2026-07-28 at 1e622f0e29)
 + odb: make optimizations pluggable
 + builtin/gc: fix signedness issues in ODB-related functionality
 + builtin/gc: refactor ODB optimizations to operate on "files" source
 + builtin/gc: introduce `odb_optimize_required()`
 + builtin/gc: move geometric repacking into `odb_optimize()`
 + builtin/gc: introduce object database optimization options
 + builtin/gc: inline config values specific to the "files" backend
 + builtin/gc: make repack arguments self-contained
 + builtin/gc: extract object database optimizations into separate function
 + builtin/gc: move worktree and rerere tasks before object optimizations
 + odb: run "pre-auto-gc" hook for all maintenance tasks
 + t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend-specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Will merge to 'master'.
 cf. <xmqqh5m2yhkm.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
  (merged to 'next' on 2026-07-31 at 21b8a5bc05)
 + sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the 'sparse-index' collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Will merge to 'master'.
 cf. <xmqq33x1o465.fsf@gitster.g>
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 cf. <xmqq33xcz2i7.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Ejected for now, as it causes too many evil merges with other topics.

 Waiting for response, stalled.
 cf. <xmqqqzkx9t95.fsf@gitster.g>
 cf. <al6yCTDjBRn2HGq0@com-79390>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-31) 4 commits
 - history: add squash subcommand to fold a range
 - sequencer: share the squash message marker helpers and flags
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 source: <pull.2337.v11.git.git.1785567209.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* tc/replay-linearize (2026-07-28) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: resolve the replay base outside pick_regular_commit()
 - replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Needs review.
 cf. <xmqqy0evc6n9.fsf@gitster.g>
 source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>


* mm/diff-process-hunks (2026-08-01) 11 commits
 - diff: consult oid-only hunk providers via diff.<driver>.process
 - userdiff: add diff.<driver>.process config
 - sub-process: add a gentle status read
 - sub-process: separate process lifecycle from hashmap management
 - blame: read precomputed hunks
 - diff: read precomputed hunks for stat output
 - diff: record precomputed hunks during stat output
 - diff-hunks: add the store format, library, and command
 - diff: introduce a hunk provider interface
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Needs review.
 source: <20260801174156.2998808-1-mmontalbo@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-07-30) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <pattern>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Needs review.
 cf. <2574f79a-f04e-449f-aeb4-10d68cdc9437@gmail.com>
 source: <pull.2285.v24.git.git.1785419916.gitgitgadget@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Waiting for review.
 cf. <CAL71e4PwoJ4fxKBNuf3HB3Po92WRaV4yDBUDcuEYiggiDD=+Ew@mail.gmail.com>
 cf. <CABPp-BGATrNJyT7trzUzAMB_v-1ssVe_SRqp+281X5GzU=2eow@mail.gmail.com>
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 14%]

* Re: What's cooking in git.git (Jul 2026, #12)
  @ 2026-08-03 16:02 99%         ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-08-03 16:02 UTC (permalink / raw)
  To: Phillip Wood; +Cc: Matt Hunter, Harald Nordgren, phillip.wood, git

Phillip Wood <phillip.wood123@gmail.com> writes:

> If you raise a point and it is dismissed without a convincing 
> explanation then its fine to raise it again asking for more details so 
> that you can understand the reason behind the decision. That often leads 
> to a productive discussion and an improved design.

True.  But because "convincing" is not black and white, we need to
be careful a bit.

> That precedent is unfortunate, "--reedit-message" makes sense for the 
> "fixup" subcommand because we are reediting an existing message but 
> that's not the case with the "squash" subcommand where we're 
> constructing a new message from several commits. Given how new the 
> "fixup" subcommand is I'm tempted to add an "--edit" option and 
> deprecate "--reedit-message".

As "git history" is marked experimental, we can afford to tweak the
UI for the better ;-).

> Having thought about it a bit over the weekend I wonder if the best 
> solution when squashing is to default to looking at the commits being 
> squashed before deciding whether to open the editor or not and allow the 
> user to override that on the commandline like "git commit". If we're 
> squashing a bunch of "fixup!" and/or "amend!" commits into a single 
> target then I'm not sure its worth opening the editor...

Hmph, a base commit with an "amend!" (tells the machinery to use the
message from the "amend!" commit only, discarding the existing one)
is clear to me that there is no need for further editing, but if
there is any "fixup!" (code change, for which need for associating
log message change is unknown) or if there are multiple "amend!", I
am not so sure.  It does make it confusing, I suspect.



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Jul 2026, #12)
  @ 2026-07-31 15:36 99%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-31 15:36 UTC (permalink / raw)
  To: Matt Hunter; +Cc: Phillip Wood, git, Harald Nordgren

"Matt Hunter" <m@lfurio.us> writes:

> Sorry for any hassle - though I don't expect you "blame" reviewers for
> this sort of thing.  It's a lot harder to demonstrate correctness than
> point out some potential problem.

Yes, I agree that giving positive reviews is a lot harder to do.



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jul 2026, #13)
@ 2026-07-29 19:07 13% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-29 19:07 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The 8th batch of topics have now graduated to the 'master' branch.

I realized that in the past few issues of this report, I was too
careless or aggressive (depending on how you look at it) in
prematurely moving topics that were still receiving review comments
to 'next', so I moved a few from 'next' back to 'seen', and will be
more conservative in the future.  This may result in more topics
getting discarded after receiving no reviews and no interest, but to
address this, more people need to step in to review others' patches.

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

* bc/rust-hash-cleanups (2026-07-18) 2 commits
  (merged to 'next' on 2026-07-21 at 51627468a0)
 + rust: discard hash context when finished
 + hash: initialize context before cloning

 A few memory problems in the Rust interface to C hash functions have
 been corrected.  The 'Clone' implementation of 'CryptoHasher' now
 properly initializes the context before cloning, and its 'Drop'
 implementation now discards the context to prevent leaks.

 Graduated to 'master'.
 cf. <20260719080754.GA429688@coredump.intra.peff.net>
 source: <20260719010842.17991-1-sandals@crustytoothpaste.net>


* jc/submodule-helper-avoid-zu (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-19 at b12d5d76f5)
 + submodule--helper: avoid use of %zu for now

 An accidental use of the '%zu' format specifier in 'git
 submodule--helper' has been corrected to use 'PRIuMAX' and cast the
 value to 'uintmax_t' to avoid portability issues.

 Graduated to 'master'.
 source: <xmqq4ii0ko9t.fsf@gitster.g>


* ps/copy-wo-the-repository (2026-07-16) 1 commit
  (merged to 'next' on 2026-07-20 at 9e38da0efc)
 + copy: drop dependency on `the_repository`

 The copy_file() and copy_file_with_time() functions have been
 refactored to take a repository parameter, allowing the removal of the
 implicit dependency on the global 'the_repository' variable in
 'copy.c'.

 Graduated to 'master'.
 cf. <b0df688a-3b26-48f6-8b1c-98530483885e@gmail.com>
 cf. <xmqqo6g54k7m.fsf@gitster.g>
 source: <20260716-pks-copy-wo-the-repository-v2-1-8f5e32942929@pks.im>


* ps/refs-wo-the-repository (2026-07-15) 7 commits
  (merged to 'next' on 2026-07-19 at 12685f410c)
 + refs: remove remaining uses of `the_repository`
 + worktree: pass repository to public functions
 + worktree: pass repository to file-local functions
 + worktree: refactor code to use available repositories
 + refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 + refs/packed: de-globalize handling of "core.packedRefsTimeout"
 + Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository

 The ref subsystem and the worktree API have been refactored to pass a
 repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable.  As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Graduated to 'master'.
 source: <20260716-pks-refs-wo-the-repository-v3-0-db0a804e0224@pks.im>


* ps/refspec-wo-the-repository (2026-07-16) 3 commits
  (merged to 'next' on 2026-07-20 at 31044c3fc9)
 + refspec: stop depending on `the_repository`
 + refspec: let callers pass in hash algorithm when parsing items
 + refspec: group related structures and functions

 The dependency on the global 'the_repository' variable in the
 'refspec.c' API has been removed by passing the hash algorithm
 explicitly to refspec-parsing functions and storing it in 'struct
 refspec'.

 Graduated to 'master'.
 source: <20260716-pks-refspec-wo-the-repository-v1-0-aa40844d067f@pks.im>


* ps/shift-root-in-graph (2026-07-14) 7 commits
  (merged to 'next' on 2026-07-19 at bebf13a239)
 + graph: add --[no-]graph-indent and log.graphIndent
 + graph: move config reading into graph_read_config()
 + graph: wrap cascading commits after 4 columns
 + graph: indent visual root in graph
 + graph: add a 2 commit buffer for lookahead
 + revision: add next_commit_to_show()
 + lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Graduated to 'master'.
 cf. <CA+J6zkQNzEAhhY74qDrOwfFVrshEF7YFxWRRkwE3ttJo15ZbAg@mail.gmail.com>
 source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>


* pw/rebase-drop-notes-with-commit (2026-07-15) 9 commits
  (merged to 'next' on 2026-07-20 at 5475c9f935)
 + sequencer: do not record dropped commits as rewritten
 + sequencer: use an enum to represent result of picking a commit
 + sequencer: simplify pick_one_commit()
 + sequencer: remove unnecessary condition in pick_one_commit()
 + sequencer: simplify handling of fixup with conflicts
 + sequencer: remove unnecessary "or" in pick_one_commit()
 + sequencer: never reschedule on failed commit
 + sequencer: be more careful with external merge
 + t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected.  When
 a commit is dropped during rebase (e.g., because its changes are
 already upstream), it is no longer recorded as rewritten, preventing
 its notes from being copied to an unrelated commit.

 Graduated to 'master'.
 cf. <xmqqy0f5d25g.fsf@gitster.g>
 source: <cover.1784128921.git.phillip.wood@dunelm.org.uk>


* rs/remote-curl-simplify-push-specs (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-19 at ff1b5528ba)
 + remote-curl: simplify passing of push specs

 The passing of push destination specifications in the 'remote-curl'
 helper has been simplified by removing the explicit 'count' parameter
 and relying on the NULL-termination of the array.

 Graduated to 'master'.
 source: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de>


* sc/wt-status-avoid-quadratic-insertion (2026-07-18) 1 commit
  (merged to 'next' on 2026-07-20 at 9330d42a4a)
 + wt-status: avoid repeated insertion for untracked paths

 The enumeration of untracked and ignored files in 'git status' has
 been optimized by avoiding quadratic complexity when inserting into
 string lists, reducing the construction cost from O(n^2) to O(n log
 n).

 Graduated to 'master'.
 cf. <20260718083828.GE22588@coredump.intra.peff.net>
 source: <20260718081449.26747-1-sahityajb@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
  (merged to 'next' on 2026-07-19 at 5b640e33a1)
 + commit-reach: die on contains walk errors
 + ref-filter: memoize --contains with generations
 + commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have been
 optimized to use the memoized commit traversal previously used only by
 'git tag --contains', significantly speeding up connectivity checks
 across many candidate refs with shared history.

 Graduated to 'master'.
 cf. <20260716091924.GB1212956@coredump.intra.peff.net>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>

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

* sk/test-commit-body-helper (2026-07-27) 2 commits
 - t: use commit_body to extract commit message bodies
 - test-lib-functions: add commit_body helper

 A new test helper commit_body() has been introduced to print the
 message body of a commit, and various tests have been updated to use
 it instead of spelling out the command pipeline manually and losing
 the exit status of the 'git cat-file' command on the upstream of the
 pipe.

 Needs review.
 cf. <xmqqldawq24y.fsf@gitster.g>
 source: <20260727095656.75496-1-diy2903@gmail.com>


* jk/cat-file-batch-wo-type-fix (2026-07-28) 1 commit
 - cat-file: handle content request for --batch-command without type

 "git cat-file --batch-command" that asked for 'contents' without
 'type' segfaults, which has been corrected.

 Will merge to 'next'?
 cf. <xmqqjyqfdnie.fsf@gitster.g>
 source: <20260728150031.GA41931@coredump.intra.peff.net>


* tc/merge-default-to-upstream-leakfix (2026-07-28) 1 commit
 - merge: fix leak with merge.defaultToUpstream

 Leakfix.

 Will merge to 'next'?
 cf. <20260728151959.GC41931@coredump.intra.peff.net>
 cf. <xmqqfr13dlv8.fsf@gitster.g>
 source: <20260728-toon-fix-merge-leak-v1-1-d6bd161a3acf@iotcl.com>


* cl/regexec-macos-leak (2026-07-28) 2 commits
 - SQUASH???
 - regexec: work around macOS TRE leak on invalid UTF-8

 A compatibility workaround has been introduced for macOS to address
 a memory leak in the system regex engine when it encounters invalid
 multibyte sequences.  The workaround segments the input buffer at
 invalid byte boundaries and searches each valid segment separately
 using regexec(), avoiding the leaking path.

 Waiting for response.
 cf. <xmqqse52bpa9.fsf@gitster.g>
 source: <20260728052538.12429-1-chungmin@chungminlee.com>


* dl/pack-bitmap-position-zero (2026-07-28) 1 commit
 - pack-bitmap: handle objects at bitmap position zero

 A boundary case check in reachability bitmap traversal has been
 corrected to properly handle the object at position zero, which was
 previously skipped, leading to redundant bitmap loading.

 Will merge to 'next'?
 cf. <amk75SuhyHBbx-E8@com-79390>
 cf. <xmqq5x1yd968.fsf@gitster.g>
 source: <20260728135248.61304-1-davidlin@stripe.com>


* hn/checkout-m-autostash-refine (2026-07-25) 2 commits
 - checkout -m: refine autostash fallback
 - sequencer: teach autostash apply to report conflicts

 The autostash fallback in 'git checkout -m' has been refined to only
 retry when there are local changes.  Additionally, a blank line now
 visually separates autostash conflict advice from the subsequent
 branch-switch message.

 Needs review.
 cf. <xmqqwluebuhb.fsf@gitster.g>
 source: <pull.2364.git.git.1784993669.gitgitgadget@gmail.com>


* jk/t0014-dynamic-deprecated-cmds (2026-07-28) 2 commits
  (merged to 'next' on 2026-07-29 at 39a86632e6)
 + t0014: generate deprecated command names dynamically
 + t0014: factor out choice of deprecated commands

 The alias tests in t/t0014-alias.sh have been updated to dynamically
 query the list of deprecated commands using 'git
 --list-cmds=deprecated' to avoid test failures when running with
 WITH_BREAKING_CHANGES in a build directory that contains stale
 executables of formerly deprecated commands.

 Will merge to 'master'.
 source: <20260728143653.GB11894@coredump.intra.peff.net>


* js/mingw-symlink-net-share-leak (2026-07-28) 1 commit
  (merged to 'next' on 2026-07-29 at 250fe7f194)
 + mingw: skip symlink type auto-detection for network share targets

 Git for Windows has been updated to avoid auto-detecting the symlink
 type if the target path starts with a slash, preventing NTLM
 credential leaks when checking out repositories with crafted
 symbolic links pointing to network shares.

 Will merge to 'master'.
 source: <pull.2189.git.1785239196007.gitgitgadget@gmail.com>


* ns/merge-base-is-ancestor-tests (2026-07-25) 1 commit
 - merge-base: add tests for --is-ancestor

 Tests for 'git merge-base --is-ancestor' have been added to cover
 exit codes (0 for success, 1 for non-ancestor, 128 for errors) and
 to ensure it cannot be combined with '--all'.

 Waiting for response.
 cf. <9a47d529-6195-435b-90a6-e511856f128e@gmail.com>
 source: <pull.2186.git.1784998828879.gitgitgadget@gmail.com>


* jc/add-resolved (2026-07-29) 4 commits
 - add: introduce '--resolved' option
 - read-cache: add remove_file_from_index_with_flags()
 - merge-ll: consolidate conflict marker scanning logic
 - read-cache: reindent

 'git add' has been taught a new '--resolved' option to stage
 conflict-resolved paths, while leaving unrelated local changes
 unstaged. It scans the unmerged paths for leftover conflict markers
 and aborts if any are found.

 Will merge to 'next'?
 cf. <xmqqse51algy.fsf@gitster.g>
 source: <20260729172524.4022621-1-gitster@pobox.com>

--------------------------------------------------
[Stalled]

* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response.
 cf. <xmqqwlugo4nk.fsf@gitster.g>
 cf. <e3d2e46443d0b32ce29215563dde04ebcf850679.1782500507.git.me@ttaylorr.com>
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Will discard.
 cf. <xmqqtsr0tvci.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response, stalled.
 cf. <xmqq4ihpclo8.fsf@gitster.g>
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Will discard.
 cf. <xmqq1pedthkv.fsf@gitster.g>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Will discard.
 cf. <xmqqv7a5b6n7.fsf@gitster.g>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>

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

* jc/remote-insteadof-leakfix (2026-07-25) 1 commit
  (merged to 'next' on 2026-07-27 at 8cf88af88b)
 + remote: plug memory leaks

 rewrites_release() in 'remote.c' has been updated to free 'struct
 rewrite' instances, their '.instead_of' arrays, and their contents.

 Will merge to 'master'.
 cf. <20260725161819.GA2343104@coredump.intra.peff.net>
 source: <xmqqpl0b12gj.fsf@gitster.g>


* tb/pack-with-duplicates (2026-07-24) 5 commits
 - pack-bitmap: handle duplicate pack entries during MIDX reuse
 - test-tool bitmap: reject packs with duplicate objects
 - midx: verify duplicate pack entries by OID and offset
 - packfile: recover delta cycles through duplicate entries
 - t5308: test reverse indexes with duplicate objects

 The handling of packfiles with duplicate object entries has been
 hardened.  Specifically, reverse index lookup, delta cycle
 recovery, multi-pack-index verification, and pack reuse paths have
 been updated to correctly handle or gracefully reject duplicate
 entries.

 Needs review.
 cf. <xmqqecgs3vg6.fsf@gitster.g>
 source: <cover.1784927134.git.ttaylorr@openai.com>


* ps/cat-file-remote-object-info-type (2026-07-25) 6 commits
 - cat-file: unify default format
 - serve: advertise type capability
 - fetch-object-info: request all supported options dynamically
 - fetch-object-info: parse type from server response
 - protocol-caps: add type support to object-info
 - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type
 (this branch uses ps/cat-file-remote-object-info.)

 The 'remote-object-info' command for 'git cat-file --batch-command'
 has been extended to support the '%(objecttype)' placeholder.

 Needs review.
 cf. <xmqqecglajnj.fsf@gitster.g>
 source: <20260725-objecttype-support-v1-0-2d4ca3bbabf1@gmail.com>


* rs/branch-delete-bisect-warning (2026-07-25) 1 commit
  (merged to 'next' on 2026-07-28 at c0e15e73b6)
 + branch: report active bisect run when rejecting delete

 'git branch -d' has been taught to report when a branch cannot be
 deleted because it is being used in an active bisect run.

 Will merge to 'master'.
 cf. <xmqqbjbtyd80.fsf@gitster.g>
 cf. <871pcndynd.fsf@emacs.iotcl.com>
 source: <590382fb-731b-4e14-911e-ff68356d1082@web.de>


* jk/ci-static-analysis-image-bump (2026-07-26) 2 commits
  (merged to 'next' on 2026-07-29 at 457a175861)
 + ci: bump ubuntu image version for static-analysis job
 + bloom: silence CHECK_ASSERTION_SIDE_EFFECTS false positive

 The image version used by the static-analysis CI job has been bumped
 to ubuntu-latest (Ubuntu 24.04), which brings in a newer Coccinelle
 version that resolves a severe performance regression.  A false
 positive warning from the CHECK_ASSERTION_SIDE_EFFECTS build with
 GCC 15 in the Bloom filter code has also been silenced to facilitate
 the image upgrade.

 Will merge to 'master'.
 cf. <xmqqo6ftvhed.fsf@gitster.g>
 source: <20260726083254.GA3528497@coredump.intra.peff.net>


* jk/diff-relative-cached-unmerged-more (2026-07-26) 3 commits
 - diff-lib: skip paths outside prefix in oneway_diff()
 - diff-lib: drop stale comment about advancing o->pos
 - Merge branch 'jk/diff-relative-cached-unmerged' into jk/diff-relative-cached-unmerged-more
 (this branch uses jk/diff-relative-cached-unmerged.)

 The code path that deals with relative paths in the diff-lib has
 been cleaned up.

 Waiting for review.
 cf. <xmqqo6frdqy5.fsf@gitster.g>
 cf. <20260728171249.GA643101@coredump.intra.peff.net>
 source: <20260726084550.GC2366012@coredump.intra.peff.net>


* af/clone-revision-v0-segfault-fix (2026-07-24) 1 commit
  (merged to 'next' on 2026-07-27 at 57c0e98bfb)
 + builtin/clone: fix segfault when using --revision with protocol v0

 A segfault when 'git clone --revision' talks to a server that does not
 support protocol v2 (falling back to protocol v0) has been corrected.

 Will merge to 'master'.
 cf. <xmqqldb08jcd.fsf@gitster.g>
 source: <20260724124138.666877-1-adrian.friedli@mt.com>


* lo/mv-missing-dest-dir-check (2026-07-26) 2 commits
 - mv: reject a destination whose leading path is missing or a symlink
 - mv: name both source and destination when rename fails

 'git mv' has been updated to check for a missing destination
 leading directory during the checking phase, allowing 'git mv -n'
 to report the failure.  The error message when the rename(2)
 syscall fails has also been improved to name both the source and
 the destination.

 Waiting for response.
 cf. <xmqqbjbsgjfu.fsf@gitster.g>
 source: <pull.2356.v4.git.git.1785097071.gitgitgadget@gmail.com>


* ps/odb-make-creation-pluggable (2026-07-23) 5 commits
 - odb: make creation of on-disk structures pluggable
 - odb/source: introduce function to map source type to name
 - setup: defer object database creation
 - setup: detangle loading of loose object maps
 - loose: load loose object map for the correct source

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Waiting for response.
 cf. <amkcNhMTKqWdLXwX@denethor>
 cf. <amkXcmwzbBYsMgjc@denethor>
 cf. <amkOb3rvWFUpnT28@denethor>
 cf. <amkMipjGA_7cwpOR@denethor>
 source: <20260724-pks-odb-create-on-disk-v1-0-3b3d265d979b@pks.im>


* jt/config-lock-timeout (2026-05-17) 1 commit
  (merged to 'next' on 2026-07-24 at 3cb8da6b6a)
 + config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Will merge to 'master'.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 cf. <xmqqzf1xbl4i.fsf@gitster.g>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for a response.
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 cf. <xmqqse5brq8s.fsf@gitster.g>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* tn/stash-avoid-sparse-index-expansion (2026-07-20) 2 commits
  (merged to 'next' on 2026-07-23 at 8ccf28493e)
 + stash: avoid sparse-index expansion for in-cone paths
 + pathspec: use match for sparse-index expansion checks

 The 'git stash push' command has been optimized to avoid unnecessary
 sparse index expansion when pathspecs are wholly inside the
 sparse-checkout cone.  Also, a potential out-of-bounds read in the
 sparse-index expansion check helper pathspec_needs_expanded_index()
 has been fixed by consistently using the parsed, prefixed path.

 Will merge to 'master'.
 cf. <al61UTM0aK9j9eiP@com-79390>
 cf. <al61ERa3fS2MerHp@com-79390>
 source: <20260720223118.62821-4-tnyman@openai.com>


* en/submodule-insteadof-remote-match (2026-07-22) 1 commit
  (merged to 'next' on 2026-07-27 at a1cbd7aa11)
 + submodule: resolve insteadOf aliases when matching remote

 The remote-matching logic for submodules has been corrected to
 resolve 'url.*.insteadOf' aliases before comparing the inventoried
 URL from '.gitmodules' with the URLs of configured remotes.

 Will merge to 'master'.
 cf. <xmqqldb05dlo.fsf@gitster.g>
 source: <20260723002132.3989727-1-ccjmne@gmail.com>


* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 - fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Waiting for response.
 cf. <CAOTNsDy4pKbPHdK1T688Ax6Mgz15K-qfZR-8fAvTk48z3E43Rg@mail.gmail.com>
 cf. <xmqqh5lo5dib.fsf@gitster.g>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* jc/exclude-first-parent-seen (2026-07-22) 1 commit
  (merged to 'next' on 2026-07-25 at 85755d1d45)
 + revision: honor --exclude-first-parent-only with SEEN first parent

 Traversals with '--exclude-first-parent-only' have been corrected to
 properly stop after the first parent even when it has already been
 marked as SEEN.

 Will merge to 'master'.
 source: <xmqqbjbzq7n2.fsf@gitster.g>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response.
 cf. <61291144-60da-4e37-83ef-fe09e91c4f51@gmail.com>
 cf. <xmqqwludan2m.fsf@gitster.g>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
 - doc: convert git-request-pull synopsis and options to new style
 - doc: convert git-send-email synopsis and options to new style
 - doc: convert git-format-patch synopsis and options to new style
 - doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Needs review.
 cf. <740b24631de2c2aff01dcb461f60121fbd11bfe1.1784841567.git.gitgitgadget@gmail.com>
 source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>


* hn/url-push-tracking (2026-07-22) 2 commits
  (merged to 'next' on 2026-07-25 at 9b776656fc)
 + remote: find tracking branches for URL push destinations
 + remote: pass repository to push tracking helper

 When the push remote is specified as a URL, the fetch refspec of a
 uniquely matching configured remote is now used to find and update
 the remote-tracking branch (e.g., '@{push}').

 Will merge to 'master'.
 cf. <xmqqpl0eoniz.fsf@gitster.g>
 source: <pull.2358.v4.git.git.1784743738.gitgitgadget@gmail.com>


* tl/gitweb-shorten-hashes-with-modes (2026-07-17) 1 commit
  (merged to 'next' on 2026-07-25 at 5b92e8a325)
 + gitweb: shorten index hashes with trailing file modes

 The object ID shortening and linking in the 'commitdiff' view of
 'gitweb' has been corrected to work even when the index line carries
 a trailing file mode.

 Will merge to 'master'.
 cf. <xmqqjyqu6u7i.fsf@gitster.g>
 source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>


* kj/repo-info-more-path-keys (2026-07-26) 7 commits
 - repo: add path.git-prefix path key
 - repo: add path.grafts with absolute and relative suffix formatting
 - repo: add path.index with absolute and relative suffix formatting
 - repo: add path.hooks with absolute and relative suffix formatting
 - repo: add path.objects with absolute and relative suffix formatting
 - repo: add path.superproject-working-tree with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Waiting for review.
 cf. <amjUPEgenletgbp5@denethor>
 cf. <CA+rGoLfJ5Kc_HV7YfJ-y5SpMjb7t7f5ifUKcd=39eTjqzzQF5w@mail.gmail.com>
 source: <20260726104343.16933-1-jayatheerthkulkarni2005@gmail.com>


* sk/userdiff-swift (2026-07-20) 1 commit
  (merged to 'next' on 2026-07-23 at 45dbcc6307)
 + userdiff: add support for Swift

 Userdiff patterns for Swift have been added, with support for
 Swift-specific constructs such as attributes, modifiers, failable
 initializers, and generics.

 Will merge to 'master'.
 cf. <2a3a73c5-5e90-44a3-bf6a-6e98ce5e5a59@kdbg.org>
 cf. <7b541cd5-bd66-4675-818d-8e23eb1c9530@kdbg.org>
 source: <20260721065736.8747-1-diy2903@gmail.com>


* ps/odb-move-loose-object-writing (2026-07-17) 10 commits
  (merged to 'next' on 2026-07-25 at 244d577d93)
 + object-file: move logic to write loose objects
 + object-file: move `force_object_loose()`
 + object-file: force objects loose via generic interface
 + object-file: fix memory leak in `force_object_loose()`
 + odb: support setting mtime when writing objects
 + odb: lift object existence check out of the "loose" backend
 + odb: compute object hash in `odb_write_object_ext()`
 + t/u-odb-inmemory: implement wrapper for writing objects
 + odb: compute compat object ID in `odb_write_object_ext()`
 + Merge branch 'jt/receive-pack-use-odb-transactions' into HEAD

 The logic to write loose objects has been refactored and moved from
 'object-file.c' to the loose backend source file 'odb/source-loose.c',
 making the loose backend more self-contained.  This is achieved by
 first refactoring force_object_loose() to use generic ODB write
 interfaces instead of loose-backend internals.

 Will merge to 'master'.
 cf. <xmqqecgzpm0y.fsf@gitster.g>
 source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>


* pw/rebase-fixup-fixes (2026-07-26) 2 commits
  (merged to 'next' on 2026-07-28 at 736307fae5)
 + rebase: remember fixup -c after skipping fixup/squash
 + rebase -i: fix counting of fixups after rebase --skip

 Two bugs in how 'git rebase' handles skipped 'fixup' and 'squash'
 commands have been fixed.  One bug caused an incorrect commit count to
 be shown in the template message when multiple commands were skipped,
 and another prevented the editor from opening when the final command
 in a chain containing 'fixup -c' was skipped.

 Will merge to 'master'.
 cf. <xmqqtspo3x31.fsf@gitster.g>
 cf. <xmqqse55tp1k.fsf@gitster.g>
 source: <cover.1785080337.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-bloom (2026-07-17) 4 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Waiting for a response.
 cf. <20260718083757.GD22588@coredump.intra.peff.net>
 cf. <xmqqwlut1gzc.fsf@gitster.g>
 source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>


* hn/bisect-reset-when-found (2026-07-20) 2 commits
 - bisect: add --reset-when-found to leave when done
 - bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Waiting for response.
 cf. <faa22968-54ac-4e4f-8324-3326ffb00c5b@kdbg.org>
 source: <pull.2335.v3.git.git.1784538619.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-07-14) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Waiting for response.
 cf. <xmqqcxwii6wd.fsf@gitster.g>
 cf. <alcvnm0xiOv5W0w_@pks.im>
 source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>


* jk/diff-relative-cached-unmerged (2026-07-28) 2 commits
  (merged to 'next' on 2026-07-28 at 1ac873b5f9)
 + diff-lib: add idx/tree sanity check to oneway_diff
  (merged to 'next' on 2026-07-25 at 8829f9b348)
 + diff: ignore unmerged paths outside prefix with --relative --cached
 (this branch is used by jk/diff-relative-cached-unmerged-more.)

 'git diff --relative' running with '--cached' has been corrected to
 avoid a segfault when encountering unmerged paths outside the
 prefix.

 Will merge to 'master'.
 source: <20260728151458.GB41931@coredump.intra.peff.net>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Waiting for response.
 cf. <xmqqzezlhgyo.fsf@gitster.g>
 cf. <al4yrXXoZiHLwSvE@com-79390>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
 - revision: make get_commit_action() a pure predicate

 The get_commit_action() function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 simplify_commit().  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Will merge to 'next'?
 cf. <xmqq8q6wpmuy.fsf@gitster.g>
 cf. <xmqqcxw8pnsa.fsf@gitster.g>
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-07-16) 7 commits
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Waiting for response.
 cf. <xmqq4ihyehyb.fsf@gitster.g>
 source: <20260716165517.433849-1-christian.couder@gmail.com>


* ps/writev (2026-07-16) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Waiting for response.
 cf. <f8050598-392f-44c9-8d66-0454740a7a12@kdbg.org>
 cf. <xmqqo6fso2s8.fsf@gitster.g>
 source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 cf. <alQ7WKITYDXfiVn9@com-79390>
 source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-26) 6 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: permit unlinking partial packs on Windows
 - http: avoid concurrent appends to partial packs
 - http: accept HTTP 416 for complete partial packs
 - http: avoid closing index-pack input twice
 - http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP have
 been made safer by avoiding concurrent appends to the staging file.
 Opening the file in read-write mode and maintaining separate file
 offsets prevents corruption while preserving resumability.  The
 'fetch-pack' command has also been updated to tolerate pre-existing
 '.keep' files.

 Needs review.
 cf. <cover.1785047139.git.tnyman@openai.com>
 source: <cover.1785111375.git.tnyman@openai.com>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
  (merged to 'next' on 2026-07-22 at 968a116891)
 + use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
 + tempfile: stop using the_repository
 + lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
 + refs/packed: use repo_create_tempfile()
 + tempfile: add repo_create_tempfile{,_mode}()

 The tempfile and lockfile APIs have been refactored to stop depending
 on the 'the_repository' global variable, and their callers have been
 updated to use the repository-aware variants.

 Will merge to 'master'.
 cf. <xmqq8q7ds3ld.fsf@gitster.g>
 cf. <xmqqmrvmn6a5.fsf@gitster.g>
 source: <20260714175956.54601-1-l.s.r@web.de>


* js/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 cf. <pull.2175.git.1783615780.gitgitgadget@gmail.com>
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 cf. <20260716140956.1023740-1-paulius.zaleckas@gmail.com>
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 cf. <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Ejected due to conflicts with 'pw/rebase-drop-notes-with-commit'.

 Waiting for response.
 cf. <b4cf8f14-1ffa-4395-bc3e-936538574665@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 cf. <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
  (merged to 'next' on 2026-07-28 at 1e622f0e29)
 + odb: make optimizations pluggable
 + builtin/gc: fix signedness issues in ODB-related functionality
 + builtin/gc: refactor ODB optimizations to operate on "files" source
 + builtin/gc: introduce `odb_optimize_required()`
 + builtin/gc: move geometric repacking into `odb_optimize()`
 + builtin/gc: introduce object database optimization options
 + builtin/gc: inline config values specific to the "files" backend
 + builtin/gc: make repack arguments self-contained
 + builtin/gc: extract object database optimizations into separate function
 + builtin/gc: move worktree and rerere tasks before object optimizations
 + odb: run "pre-auto-gc" hook for all maintenance tasks
 + t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend-specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Will merge to 'master'.
 cf. <xmqqh5m2yhkm.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the 'sparse-index' collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 cf. <pull.2167.git.1783345853272.gitgitgadget@gmail.com>
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 cf. <xmqq33xcz2i7.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 cf. <20260702041759.51572-1-zhihao.yao@njit.edu>
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response for too long, stalled.
 cf. <xmqqik60o22y.fsf@gitster.g>
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* ty/migrate-excludes-file (2026-07-13) 10 commits
  (merged to 'next' on 2026-07-23 at 749560a29c)
 + repository: adjust the comment of config_values_private_
 + environment: move object_creation_mode into repo_config_values
 + environment: move autorebase into repo_config_values
 + environment: move push_default into repo_config_values
 + environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 + environment: move askpass_program into repo_config_values
 + environment: move pager_program into repo_config_values
 + environment: move editor_program into repo_config_values
 + environment: move excludes_file into repo_config_values
 + repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Will merge to 'master'.
 cf. <xmqqa4ruyhbh.fsf@gitster.g>
 source: <20260714032525.1611141-1-cat@malon.dev>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Ejected for now, as it causes too many evil merges with other topics.

 Waiting for response.
 cf. <xmqqcxxi3eov.fsf@gitster.g>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-20) 5 commits
 - history: re-edit a squash with every message
 - sequencer: share the squash message marker helpers and flags
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 cf. <f5f7af53-df3e-4902-b350-8fcf8ccb02ad@gmail.com>
 source: <pull.2337.v10.git.git.1784536024.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 cf. <cover.1781294771.git.me@ttaylorr.com>
 source: <cover.1781294771.git.me@ttaylorr.com>


* tc/replay-linearize (2026-07-28) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: resolve the replay base outside pick_regular_commit()
 - replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Needs review.
 Kicked back to 'seen'.
 cf. <xmqqy0evc6n9.fsf@gitster.g>
 source: <20260728-toon-git-replay-drop-merges-v8-0-ced11dffe749@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-24) 13 commits
  (merged to 'next' on 2026-07-24 at e436a42272)
 + cat-file: make remote-object-info allow-list adapt to the server
 + cat-file: add remote-object-info to batch-command
 + transport: add client support for object-info
 + serve: advertise object-info feature
 + protocol-caps: check object existence regardless of the attributes requested
 + fetch-pack: move fetch initialization
 + connect: make write_fetch_command_and_capabilities() more generic
 + fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 + fetch-pack: use unsigned int for hash_algo variable
 + fetch-pack: drop the static advertise_sid variable
 + t1006: extract helper functions into new 'lib-cat-file.sh'
 + cat-file: declare loop counter inside for()
 + transport-helper: fix memory leak of helper on disconnect
 (this branch is used by ps/cat-file-remote-object-info-type.)

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.  Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Will merge to 'master'.
 source: <20260724-ps-eric-work-rebase-v21-0-ba67f024fdff@gmail.com>


* mm/diff-process-hunks (2026-07-26) 10 commits
 - line-log: consult diff process for range tracking
 - diff: consult diff process for --stat counts
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Needs review.
 source: <pull.2120.v6.git.1785091889.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-07-20) 4 commits
  (merged to 'next' on 2026-07-23 at 4873f289dd)
 + environment: move has_symlinks into repo_config_values
 + environment: move trust_executable_bit into repo_config_values
 + read-cache: pass 'repo' to 'ce_mode_from_stat()'
 + read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from the 'core.filemode'
 configuration) has been migrated into 'struct repo_config_values' to
 tie it to a specific repository instance.

 Will merge to 'master'.
 cf. <alvNq8rXF/jofqUc@szeder.dev>
 cf. <xmqq8q7961xe.fsf@gitster.g>
 source: <20260720105335.3202013-1-cat@malon.dev>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 cf. <cover.1779792311.git.erik@cervined.in>
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-07-25) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Needs review.
 cf. <1f282ad4-9937-4c95-89d4-70f7a1c883a8@gmail.com>
 source: <pull.2285.v23.git.git.1784979136.gitgitgadget@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 cf. <CABPp-BGATrNJyT7trzUzAMB_v-1ssVe_SRqp+281X5GzU=2eow@mail.gmail.com>
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 13%]

* Re: What's cooking in git.git (Jul 2026, #12)
  @ 2026-07-29 17:48 99%       ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-07-29 17:48 UTC (permalink / raw)
  To: Phillip Wood; +Cc: git, Harald Nordgren

Phillip Wood <phillip.wood123@gmail.com> writes:

>> Perhaps I should re-evaluate the "What's Cooking" report and eject
>> other topics from 'next' as well.  There are indeed topics I did not
>> personally read, relying instead on impressions from busy exchanges
>> (including earlier iterations read by others X-<).
>> 
>> Are there other topics in 'next' that do not deserve to be there
>> yet?
>
> There aren't any others that I'm aware of, but I've not looked at most 
> of them so that probably does not mean much.
>
>> I cannot, of course, afford to be the sole serious reviewer and
>> merge only those I have carefully read through, given that there are
>> only 24 hours in a day and I have other obligations.  So either our
>> quality criteria must suffer, like this episode showed us, or more
>> topics must be ignored.
>
> Yes, we could really do with more reviewers

Perhaps the sensible thing for me to do is to stop taking any new
topics into 'seen', even if I've spotted them, until I see somebody
give them a real review.

Otherwise, it becomes too tempting for me to jump in, give them a
superficial read after seeing them linger in the "What's Cooking"
draft in the "Needs review" state for too long, and, believing I've
seen enough, mark them for 'next'.  If I don't queue a patch that
nobody seems to have read carefully, I won't succumb to such
temptation.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Jul 2026, #12)
  @ 2026-07-29 15:52 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-29 15:52 UTC (permalink / raw)
  To: Phillip Wood; +Cc: git

Phillip Wood <phillip.wood123@gmail.com> writes:

> On 27/07/2026 04:09, Junio C Hamano wrote:
>> 
>> * hn/branch-delete-merged (2026-07-25) 7 commits
>>   - branch: add --dry-run for --delete-merged
>>   - branch: add branch.<name>.deleteMerged opt-out
>>   - branch: add --delete-merged <branch>
>>   - branch: prepare delete_branches for a bulk caller
>>   - branch: let delete_branches skip unmerged branches on bulk refusal
>>   - branch: convert delete_branches() to a flags argument
>>   - branch: add --forked filter for --list mode
>> 
>>   The 'git branch' command has been taught the '--delete-merged' option
>>   to remove local branches that are already merged into their tracked
>>   remote-tracking branches.
>> 
>>   Will merge to 'next'?
>>   cf. <xmqqy0ez14s9.fsf@gitster.g>
>>   source: <pull.2285.v23.git.git.1784979136.gitgitgadget@gmail.com>
>
> I've just left some comments on this. It is almost there, but the way it 
> checks if pushing a branch updates its upstream looks dodgy to me. The 
> behavior wrt branches that are merged but are upstreams of other 
> branches has changed so that the entire hierarchy is now preseved. I 
> preferred it when we only kept the branch that was the upstream of the 
> unmerged branch and deleted everything underneath but I'm happy enough 
> if others prefer this new behavior.

I don't particularly favor the behavior in the latest round myself,
but I doubt I am the primary target audience, so I'll let the list
figure out how much we collectively care ;-).

Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Jul 2026, #12)
  @ 2026-07-29 14:18 99%   ` Junio C Hamano
        1 sibling, 2 replies; 200+ results
From: Junio C Hamano @ 2026-07-29 14:18 UTC (permalink / raw)
  To: Phillip Wood; +Cc: git, Harald Nordgren

Phillip Wood <phillip.wood123@gmail.com> writes:

>>   The experimental 'git history' command has been taught a new 'squash'
>>   subcommand to fold a range of commits into a single commit, with any
>>   descendants replayed on top.
>> 
>>   Will merge to 'master'.
>>   cf. <DK1KIF2OI8IF.11188A3YEQV1C@lfurio.us>
>>   cf. <DK1KIH6CXW0X.1U2V3GU8L6HB7@lfurio.us>
>>   source: <pull.2337.v10.git.git.1784536024.gitgitgadget@gmail.com>
>
> Oh, I'd missed this going into master. Has the implementation received 
> any serious review? I've seen messages from a couple of people trying it 
> out but I can't see anybody reading the code.

Thanks for stopping me.  I am happy to immediately revert the merge
of this topic into 'next'.

Perhaps I should re-evaluate the "What's Cooking" report and eject
other topics from 'next' as well.  There are indeed topics I did not
personally read, relying instead on impressions from busy exchanges
(including earlier iterations read by others X-<).

Are there other topics in 'next' that do not deserve to be there
yet?

I cannot, of course, afford to be the sole serious reviewer and
merge only those I have carefully read through, given that there are
only 24 hours in a day and I have other obligations.  So either our
quality criteria must suffer, like this episode showed us, or more
topics must be ignored.

> Having a quick look 
> through it assumes the presence of an UNINTERESTING commit means we have 
> a BOTTOM commit. It then assumes that UNINTERESTING commit means we 
> cannot reach any root commits. Both of those assumptions are false I 
> think.

Very true.

> ... I'll try and go through the patches and produce some fixups, 
> though that may not be until next week.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jul 2026, #12)
@ 2026-07-27  3:09 14% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-07-27  3:09 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The seventh batch of topics have now graduated to the 'master' branch.

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]

* jc/remote-insteadof-leakfix (2026-07-25) 1 commit
 - remote: plug memory leaks

 rewrites_release() in 'remote.c' has been updated to free 'struct
 rewrite' instances and their '.instead_of' arrays, and their contents.

 Will merge to 'next'.
 cf. <20260725161819.GA2343104@coredump.intra.peff.net>
 source: <xmqqpl0b12gj.fsf@gitster.g>


* tb/pack-with-duplicates (2026-07-24) 5 commits
 - pack-bitmap: handle duplicate pack entries during MIDX reuse
 - test-tool bitmap: reject packs with duplicate objects
 - midx: verify duplicate pack entries by OID and offset
 - packfile: recover delta cycles through duplicate entries
 - t5308: test reverse indexes with duplicate objects

 The handling of packfiles with duplicate object entries has been
 hardened.  Specifically, reverse index lookup, delta cycle
 recovery, multi-pack-index verification, and pack reuse paths have
 been updated to correctly handle or gracefully reject duplicate
 entries.

 Needs review.
 cf. <xmqqecgs3vg6.fsf@gitster.g>
 source: <cover.1784927134.git.ttaylorr@openai.com>


* ps/cat-file-remote-object-info-type (2026-07-25) 6 commits
 - cat-file: unify default format
 - serve: advertise type capability
 - fetch-object-info: request all supported options dynamically
 - fetch-object-info: parse type from server response
 - protocol-caps: add type support to object-info
 - Merge branch 'ps/cat-file-remote-object-info' into ps/cat-file-remote-object-info-type
 (this branch uses ps/cat-file-remote-object-info.)

 The 'remote-object-info' command for 'git cat-file --batch-command'
 has been extended to support the '%(objecttype)' placeholder.

 Needs review.
 source: <20260725-objecttype-support-v1-0-2d4ca3bbabf1@gmail.com>


* rs/branch-delete-bisect-warning (2026-07-25) 1 commit
 - branch: report active bisect run when rejecting delete

 'git branch -d' learned to report when a branch cannot be deleted
 because it is being used in an active bisect run.

 Will merge to 'next'?
 cf. <xmqqbjbtyd80.fsf@gitster.g>
 source: <590382fb-731b-4e14-911e-ff68356d1082@web.de>


* jk/ci-static-analysis-image-bump (2026-07-26) 2 commits
 - ci: bump ubuntu image version for static-analysis job
 - bloom: silence CHECK_ASSERTION_SIDE_EFFECTS false positive

 The image version used by the static-analysis CI job has been bumped
 to ubuntu-latest (Ubuntu 24.04), which brings in a newer Coccinelle
 version that resolves a severe performance regression.  A false
 positive warning from the CHECK_ASSERTION_SIDE_EFFECTS build with
 GCC 15 in the Bloom filter code has also been silenced to facilitate
 the image upgrade.

 Will merge to 'next'?
 cf. <xmqqo6ftvhed.fsf@gitster.g>
 source: <20260726083254.GA3528497@coredump.intra.peff.net>


* jk/diff-relative-cached-unmerged-more (2026-07-26) 3 commits
 - diff-lib: skip paths outside prefix in oneway_diff()
 - diff-lib: drop stale comment about advancing o->pos
 - Merge branch 'jk/diff-relative-cached-unmerged' into jk/diff-relative-cached-unmerged-more
 (this branch uses jk/diff-relative-cached-unmerged.)

 The code path that deals with relative paths in the diff-lib has
 been cleaned up.

 Will merge to 'next'?
 cf. <xmqqjyqhv7s7.fsf@gitster.g>
 source: <20260726084550.GC2366012@coredump.intra.peff.net>

--------------------------------------------------
[Stalled]

* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response for too long, stalled.
 cf. <aj8cvDCMcw+RayyO@nand.local>
 cf. <aj8cOhH6hGVZIFft@nand.local>
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Will be discarded.
 cf. <xmqq5x37h6fj.fsf@gitster.g>
 cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
 cf. <xmqq8q71clob.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response, stalled.
 cf. <xmqqbjd37i4y.fsf@gitster.g>
 cf. <xmqq4ihpclo8.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll for too long, stalled.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Waiting for response for too long, stalled.
 cf. <87cxwxofgv.fsf@emacs.iotcl.com>
 cf. <xmqqv7a5b6n7.fsf@gitster.g>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>

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

* af/clone-revision-v0-segfault-fix (2026-07-24) 1 commit
 - builtin/clone: fix segfault when using --revision with protocol v0

 'git clone --revision' talking to a server that does not support
 protocol v2 (falling back to protocol v0) segfaulted, which has
 been corrected.

 Will merge to 'next'.
 cf. <xmqqldb08jcd.fsf@gitster.g>
 source: <20260724124138.666877-1-adrian.friedli@mt.com>


* lo/mv-missing-dest-dir-check (2026-07-26) 2 commits
 - mv: reject a destination whose leading path is missing or a symlink
 - mv: name both source and destination when rename fails

 'git mv' has been updated to check for a missing destination
 leading directory during the checking phase, allowing 'git mv -n'
 to report the failure.  The error message when the rename(2)
 syscall fails has also been improved to name both the source and
 the destination.

 Needs review.
 source: <pull.2356.v4.git.git.1785097071.gitgitgadget@gmail.com>


* ps/odb-make-creation-pluggable (2026-07-23) 5 commits
 - odb: make creation of on-disk structures pluggable
 - odb/source: introduce function to map source type to name
 - setup: defer object database creation
 - setup: detangle loading of loose object maps
 - loose: load loose object map for the correct source

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Waiting for response.
 cf. <xmqq5x248fk9.fsf@gitster.g>
 cf. <xmqqh5lo6xi2.fsf@gitster.g>
 cf. <xmqq5x246x35.fsf@gitster.g>
 cf. <xmqqfr15v6ba.fsf@gitster.g>
 cf. <xmqqbjbtv5y6.fsf@gitster.g>
 source: <20260724-pks-odb-create-on-disk-v1-0-3b3d265d979b@pks.im>


* jt/config-lock-timeout (2026-05-17) 1 commit
  (merged to 'next' on 2026-07-24 at 3cb8da6b6a)
 + config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Will merge to 'master'.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 cf. <xmqqzf1xbl4i.fsf@gitster.g>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for a response.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* tn/stash-avoid-sparse-index-expansion (2026-07-20) 2 commits
  (merged to 'next' on 2026-07-23 at 8ccf28493e)
 + stash: avoid sparse-index expansion for in-cone paths
 + pathspec: use match for sparse-index expansion checks

 The 'git stash push' command has been optimized to avoid unnecessary
 sparse index expansion when pathspecs are wholly inside the
 sparse-checkout cone.  Also, a potential out-of-bounds read in the
 sparse-index expansion check helper pathspec_needs_expanded_index()
 has been fixed by consistently using the parsed, prefixed path.

 Will merge to 'master'.
 cf. <al61UTM0aK9j9eiP@com-79390>
 cf. <al61ERa3fS2MerHp@com-79390>
 source: <20260720223118.62821-4-tnyman@openai.com>


* en/submodule-insteadof-remote-match (2026-07-22) 1 commit
 - submodule: resolve insteadOf aliases when matching remote

 The remote-matching logic for submodules has been corrected to
 resolve 'url.*.insteadOf' aliases before comparing the inventoried
 URL from '.gitmodules' with the URLs of configured remotes.

 Will merge to 'next'.
 cf. <xmqqldb05dlo.fsf@gitster.g>
 source: <20260723002132.3989727-1-ccjmne@gmail.com>


* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 - fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Waiting for response.
 cf. <CAOTNsDy4pKbPHdK1T688Ax6Mgz15K-qfZR-8fAvTk48z3E43Rg@mail.gmail.com>
 cf. <xmqqh5lo5dib.fsf@gitster.g>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* jc/exclude-first-parent-seen (2026-07-22) 1 commit
  (merged to 'next' on 2026-07-25 at 85755d1d45)
 + revision: honor --exclude-first-parent-only with SEEN first parent

 Traversals with '--exclude-first-parent-only' have been corrected to
 properly stop after the first parent even when it has already been
 marked as SEEN.

 Will merge to 'master'.
 source: <xmqqbjbzq7n2.fsf@gitster.g>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response.
 cf. <5bece313-6ffb-450b-add1-29652b64de10@gmail.com>
 cf. <00e529b6-7ae7-463f-a4b3-0991e9411aba@gmail.com>
 cf. <amSSYagL0jTgzElD@mbp>
 cf. <xmqq7bmhycxq.fsf@gitster.g>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* bc/rust-hash-cleanups (2026-07-18) 2 commits
  (merged to 'next' on 2026-07-21 at 51627468a0)
 + rust: discard hash context when finished
 + hash: initialize context before cloning

 A few memory problems in the Rust interface to C hash functions have
 been corrected.  The 'Clone' implementation of 'CryptoHasher' now
 properly initializes the context before cloning, and its 'Drop'
 implementation now discards the context to prevent leaks.

 Will merge to 'master'.
 cf. <20260719080754.GA429688@coredump.intra.peff.net>
 source: <20260719010842.17991-1-sandals@crustytoothpaste.net>


* ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
 - doc: convert git-request-pull synopsis and options to new style
 - doc: convert git-send-email synopsis and options to new style
 - doc: convert git-format-patch synopsis and options to new style
 - doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Needs review.
 source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>


* hn/url-push-tracking (2026-07-22) 2 commits
  (merged to 'next' on 2026-07-25 at 9b776656fc)
 + remote: find tracking branches for URL push destinations
 + remote: pass repository to push tracking helper

 When the push remote is specified as a URL, the fetch refspec of a
 uniquely matching configured remote is now used to find and update
 the remote-tracking branch (e.g., '@{push}').

 Will merge to 'master'.
 cf. <xmqqpl0eoniz.fsf@gitster.g>
 source: <pull.2358.v4.git.git.1784743738.gitgitgadget@gmail.com>


* tl/gitweb-shorten-hashes-with-modes (2026-07-17) 1 commit
  (merged to 'next' on 2026-07-25 at 5b92e8a325)
 + gitweb: shorten index hashes with trailing file modes

 The object ID shortening and linking in the 'commitdiff' view of
 'gitweb' has been corrected to work even when the index line carries
 a trailing file mode.

 Will merge to 'master'.
 cf. <xmqqjyqu6u7i.fsf@gitster.g>
 source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>


* kj/repo-info-more-path-keys (2026-07-26) 7 commits
 - repo: add path.git-prefix path key
 - repo: add path.grafts with absolute and relative suffix formatting
 - repo: add path.index with absolute and relative suffix formatting
 - repo: add path.hooks with absolute and relative suffix formatting
 - repo: add path.objects with absolute and relative suffix formatting
 - repo: add path.superproject-working-tree with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Needs review.
 source: <20260726104343.16933-1-jayatheerthkulkarni2005@gmail.com>


* sk/userdiff-swift (2026-07-20) 1 commit
  (merged to 'next' on 2026-07-23 at 45dbcc6307)
 + userdiff: add support for Swift

 Userdiff patterns for Swift have been added, with support for
 Swift-specific constructs such as attributes, modifiers, failable
 initializers, and generics.

 Will merge to 'master'.
 cf. <2a3a73c5-5e90-44a3-bf6a-6e98ce5e5a59@kdbg.org>
 cf. <7b541cd5-bd66-4675-818d-8e23eb1c9530@kdbg.org>
 source: <20260721065736.8747-1-diy2903@gmail.com>


* ps/odb-move-loose-object-writing (2026-07-17) 10 commits
  (merged to 'next' on 2026-07-25 at 244d577d93)
 + object-file: move logic to write loose objects
 + object-file: move `force_object_loose()`
 + object-file: force objects loose via generic interface
 + object-file: fix memory leak in `force_object_loose()`
 + odb: support setting mtime when writing objects
 + odb: lift object existence check out of the "loose" backend
 + odb: compute object hash in `odb_write_object_ext()`
 + t/u-odb-inmemory: implement wrapper for writing objects
 + odb: compute compat object ID in `odb_write_object_ext()`
 + Merge branch 'jt/receive-pack-use-odb-transactions' into HEAD

 The logic to write loose objects has been refactored and moved from
 'object-file.c' to the loose backend source file 'odb/source-loose.c',
 making the loose backend more self-contained.  This is achieved by
 first refactoring force_object_loose() to use generic ODB write
 interfaces instead of loose-backend internals.

 Will merge to 'master'.
 cf. <xmqqecgzpm0y.fsf@gitster.g>
 source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>


* pw/rebase-fixup-fixes (2026-07-26) 2 commits
 - rebase: remember fixup -c after skipping fixup/squash
 - rebase -i: fix counting of fixups after rebase --skip

 Two bugs in how 'git rebase' handles skipped 'fixup' and 'squash'
 commands have been fixed.  One bug caused an incorrect commit count to
 be shown in the template message when multiple commands were skipped,
 and another prevented the editor from opening when the final command
 in a chain containing 'fixup -c' was skipped.

 Will merge to 'next'?
 cf. <xmqqse55tp1k.fsf@gitster.g>
 source: <cover.1785080337.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-bloom (2026-07-17) 4 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Waiting for a response.
 cf. <20260720094218.GA681989@coredump.intra.peff.net>
 cf. <alvulw2fk67duo8n@com-79390>
 source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>


* hn/bisect-reset-when-found (2026-07-20) 2 commits
  (merged to 'next' on 2026-07-22 at 1dc394ad9b)
 + bisect: add --reset-when-found to leave when done
 + bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Will merge to 'master'.
 cf. <xmqqldb5d1d9.fsf@gitster.g>
 source: <pull.2335.v3.git.git.1784538619.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-07-14) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Waiting for response.
 cf. <alcvmX3b6y92KE4y@pks.im>
 cf. <alcvnm0xiOv5W0w_@pks.im>
 cf. <xmqqldbdqciy.fsf@gitster.g>
 cf. <xmqqh5m1qcfh.fsf@gitster.g>
 cf. <xmqqh5lui6wg.fsf@gitster.g>
 cf. <xmqqcxwii6wd.fsf@gitster.g>
 source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>


* jk/diff-relative-cached-unmerged (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-25 at 8829f9b348)
 + diff: ignore unmerged paths outside prefix with --relative --cached
 (this branch is used by jk/diff-relative-cached-unmerged-more.)

 'git diff --relative' running with '--cached' has been corrected to
 avoid a segfault when encountering unmerged paths outside the
 prefix.

 Will merge to 'master'.
 cf. <xmqqjyqwp9jh.fsf@gitster.g>
 source: <20260715060523.GA517940@coredump.intra.peff.net>


* jc/submodule-helper-avoid-zu (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-19 at b12d5d76f5)
 + submodule--helper: avoid use of %zu for now

 An accidental use of the '%zu' format specifier in 'git
 submodule--helper' has been corrected to use 'PRIuMAX' and cast the
 value to 'uintmax_t' to avoid portability issues.

 Will merge to 'master'.
 source: <xmqq4ii0ko9t.fsf@gitster.g>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Waiting for response.
 cf. <alpXW5U6sndZtgqV@com-79390>
 cf. <c8d443a5-3cfb-4752-8716-cf0d8fadd9d3@gmail.com>
 cf. <xmqqzezlhgyo.fsf@gitster.g>
 cf. <al4yrXXoZiHLwSvE@com-79390>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
 - revision: make get_commit_action() a pure predicate

 The get_commit_action() function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 simplify_commit().  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Waiting for review.
 cf. <xmqqjyqk3w7d.fsf@gitster.g>
 cf. <CAC2QwmKP16cyw0get3hEWP8GjcFkUHB3uXxcQi9hBCCM-B+ECw@mail.gmail.com>
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* rs/remote-curl-simplify-push-specs (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-19 at ff1b5528ba)
 + remote-curl: simplify passing of push specs

 The passing of push destination specifications in the 'remote-curl'
 helper has been simplified by removing the explicit 'count' parameter
 and relying on the NULL-termination of the array.

 Will merge to 'master'.
 source: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de>


* cc/fast-import-usage (2026-07-16) 7 commits
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Waiting for response.
 cf. <xmqq4ihyehyb.fsf@gitster.g>
 cf. <xmqqcxwmeiwq.fsf@gitster.g>
 source: <20260716165517.433849-1-christian.couder@gmail.com>


* ps/copy-wo-the-repository (2026-07-16) 1 commit
  (merged to 'next' on 2026-07-20 at 9e38da0efc)
 + copy: drop dependency on `the_repository`

 The copy_file() and copy_file_with_time() functions have been
 refactored to take a repository parameter, allowing the removal of the
 implicit dependency on the global 'the_repository' variable in
 'copy.c'.

 Will merge to 'master'.
 cf. <b0df688a-3b26-48f6-8b1c-98530483885e@gmail.com>
 cf. <xmqqo6g54k7m.fsf@gitster.g>
 source: <20260716-pks-copy-wo-the-repository-v2-1-8f5e32942929@pks.im>


* ps/refspec-wo-the-repository (2026-07-16) 3 commits
  (merged to 'next' on 2026-07-20 at 31044c3fc9)
 + refspec: stop depending on `the_repository`
 + refspec: let callers pass in hash algorithm when parsing items
 + refspec: group related structures and functions

 The dependency on the global 'the_repository' variable in the
 'refspec.c' API has been removed by passing the hash algorithm
 explicitly to refspec-parsing functions and storing it in 'struct
 refspec'.

 Will merge to 'master'.
 source: <20260716-pks-refspec-wo-the-repository-v1-0-aa40844d067f@pks.im>


* ps/writev (2026-07-16) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Waiting for response.
 cf. <f8050598-392f-44c9-8d66-0454740a7a12@kdbg.org>
 cf. <a2676ec6-39d5-4220-8549-10a17daec668@hogyros.de>
 cf. <xmqqwluuekbh.fsf@gitster.g>
 source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


* sc/wt-status-avoid-quadratic-insertion (2026-07-18) 1 commit
  (merged to 'next' on 2026-07-20 at 9330d42a4a)
 + wt-status: avoid repeated insertion for untracked paths

 The enumeration of untracked and ignored files in 'git status' has
 been optimized by avoiding quadratic complexity when inserting into
 string lists, reducing the construction cost from O(n^2) to O(n log
 n).

 Will merge to 'master'.
 cf. <20260718083828.GE22588@coredump.intra.peff.net>
 source: <20260718081449.26747-1-sahityajb@gmail.com>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-25) 3 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: avoid concurrent appends to partial packs
 - http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP have
 been made safer by avoiding concurrent appends to the staging file.
 Opening the file in read-write mode and maintaining separate file
 offsets prevents corruption while preserving resumability.  The
 'fetch-pack' command has also been updated to tolerate pre-existing
 '.keep' files.

 Expecting a reroll.
 cf. <20260726092027.GA3529827@coredump.intra.peff.net>
 cf. <20260726102712.GA3535709@coredump.intra.peff.net>
 cf. <20260726100421.12648-1-tnyman@openai.com>
 source: <cover.1785047139.git.tnyman@openai.com>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
  (merged to 'next' on 2026-07-22 at 968a116891)
 + use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
 + tempfile: stop using the_repository
 + lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
 + refs/packed: use repo_create_tempfile()
 + tempfile: add repo_create_tempfile{,_mode}()

 The tempfile and lockfile APIs have been refactored to stop depending
 on the 'the_repository' global variable, and their callers have been
 updated to use the repository-aware variants.

 Will merge to 'master'.
 cf. <xmqq8q7ds3ld.fsf@gitster.g>
 cf. <xmqqmrvmn6a5.fsf@gitster.g>
 source: <20260714175956.54601-1-l.s.r@web.de>


* js/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 cf. <xmqqechab03t.fsf@gitster.g>
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Ejected due to conflicts with 'pw/rebase-drop-notes-with-commit'.

 Waiting for response.
 cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
 cf. <xmqqh5m494yh.fsf@gitster.g>
 cf. <b4cf8f14-1ffa-4395-bc3e-936538574665@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
 - odb: make optimizations pluggable
 - builtin/gc: fix signedness issues in ODB-related functionality
 - builtin/gc: refactor ODB optimizations to operate on "files" source
 - builtin/gc: introduce `odb_optimize_required()`
 - builtin/gc: move geometric repacking into `odb_optimize()`
 - builtin/gc: introduce object database optimization options
 - builtin/gc: inline config values specific to the "files" backend
 - builtin/gc: make repack arguments self-contained
 - builtin/gc: extract object database optimizations into separate function
 - builtin/gc: move worktree and rerere tasks before object optimizations
 - odb: run "pre-auto-gc" hook for all maintenance tasks
 - t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend-specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Waiting for response.
 cf. <xmqqh5m2yhkm.fsf@gitster.g>
 cf. <xmqqwluyyhv1.fsf@gitster.g>
 cf. <amCmwKjbq2aNt8mZ@pks.im>
 cf. <xmqqwluhvhtu.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* ps/refs-wo-the-repository (2026-07-15) 7 commits
  (merged to 'next' on 2026-07-19 at 12685f410c)
 + refs: remove remaining uses of `the_repository`
 + worktree: pass repository to public functions
 + worktree: pass repository to file-local functions
 + worktree: refactor code to use available repositories
 + refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 + refs/packed: de-globalize handling of "core.packedRefsTimeout"
 + Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository

 The ref subsystem and the worktree API have been refactored to pass a
 repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable.  As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Will merge to 'master'.
 source: <20260716-pks-refs-wo-the-repository-v3-0-db0a804e0224@pks.im>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the 'sparse-index' collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 cf. <xmqq33xcz2i7.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response, stalled.
 cf. <xmqqmrwbsybn.fsf@gitster.g>
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* pw/rebase-drop-notes-with-commit (2026-07-15) 9 commits
  (merged to 'next' on 2026-07-20 at 5475c9f935)
 + sequencer: do not record dropped commits as rewritten
 + sequencer: use an enum to represent result of picking a commit
 + sequencer: simplify pick_one_commit()
 + sequencer: remove unnecessary condition in pick_one_commit()
 + sequencer: simplify handling of fixup with conflicts
 + sequencer: remove unnecessary "or" in pick_one_commit()
 + sequencer: never reschedule on failed commit
 + sequencer: be more careful with external merge
 + t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected.  When
 a commit is dropped during rebase (e.g., because its changes are
 already upstream), it is no longer recorded as rewritten, preventing
 its notes from being copied to an unrelated commit.

 Will merge to 'master'.
 cf. <xmqqy0f5d25g.fsf@gitster.g>
 source: <cover.1784128921.git.phillip.wood@dunelm.org.uk>


* ty/migrate-excludes-file (2026-07-13) 10 commits
  (merged to 'next' on 2026-07-23 at 749560a29c)
 + repository: adjust the comment of config_values_private_
 + environment: move object_creation_mode into repo_config_values
 + environment: move autorebase into repo_config_values
 + environment: move push_default into repo_config_values
 + environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 + environment: move askpass_program into repo_config_values
 + environment: move pager_program into repo_config_values
 + environment: move editor_program into repo_config_values
 + environment: move excludes_file into repo_config_values
 + repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Will merge to 'master'.
 cf. <xmqqa4ruyhbh.fsf@gitster.g>
 source: <20260714032525.1611141-1-cat@malon.dev>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Ejected for now, as it causes too many evil merges with other topics.

 Waiting for response.
 cf. <xmqqqzkx9t95.fsf@gitster.g>
 cf. <xmqqjyqpb96n.fsf@gitster.g>
 cf. <al6Yz_QMlyU1GETv@fruit.crustytoothpaste.net>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity
 (this branch is used by mm/diff-process-hunks.)

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 cf. <xmqq8q8bpl03.fsf@gitster.g>
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-20) 5 commits
  (merged to 'next' on 2026-07-23 at 2790c83e45)
 + history: re-edit a squash with every message
 + sequencer: share the squash message marker helpers and flags
 + history: add squash subcommand to fold a range
 + history: give commit_tree_ext a message template
 + history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Will merge to 'master'.
 cf. <DK1KIF2OI8IF.11188A3YEQV1C@lfurio.us>
 cf. <DK1KIH6CXW0X.1U2V3GU8L6HB7@lfurio.us>
 source: <pull.2337.v10.git.git.1784536024.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
  (merged to 'next' on 2026-07-19 at 5b640e33a1)
 + commit-reach: die on contains walk errors
 + ref-filter: memoize --contains with generations
 + commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have been
 optimized to use the memoized commit traversal previously used only by
 'git tag --contains', significantly speeding up connectivity checks
 across many candidate refs with shared history.

 Will merge to 'master'.
 cf. <20260716091924.GB1212956@coredump.intra.peff.net>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-09 at 371c2e9c3b)
 + replay: offer an option to linearize the commit topology
 + replay: resolve the replay base outside pick_regular_commit()
 + replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 On hold, waiting for response from the author.
 cf. <xmqq5x2qz42z.fsf@gitster.g>
 cf. <CABPp-BGzU9KHGF1nipi2HZaa1AiikMKGGaapQzHVH06wO4V1ww@mail.gmail.com>
 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-24) 13 commits
  (merged to 'next' on 2026-07-24 at e436a42272)
 + cat-file: make remote-object-info allow-list adapt to the server
 + cat-file: add remote-object-info to batch-command
 + transport: add client support for object-info
 + serve: advertise object-info feature
 + protocol-caps: check object existence regardless of the attributes requested
 + fetch-pack: move fetch initialization
 + connect: make write_fetch_command_and_capabilities() more generic
 + fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 + fetch-pack: use unsigned int for hash_algo variable
 + fetch-pack: drop the static advertise_sid variable
 + t1006: extract helper functions into new 'lib-cat-file.sh'
 + cat-file: declare loop counter inside for()
 + transport-helper: fix memory leak of helper on disconnect
 (this branch is used by ps/cat-file-remote-object-info-type.)

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.  Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Will merge to 'master'.
 source: <20260724-ps-eric-work-rebase-v21-0-ba67f024fdff@gmail.com>


* mm/diff-process-hunks (2026-07-26) 10 commits
 - line-log: consult diff process for range tracking
 - diff: consult diff process for --stat counts
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t
 - gitattributes: document how external diff drivers relate to diff features
 - Merge branch 'mm/line-log-limited-ops' into mm/diff-process-hunks
 (this branch uses mm/line-log-limited-ops.)

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Ejected for now, as it conflicts badly with 'mm/line-log-limited-ops'.

 Needs review.
 source: <pull.2120.v6.git.1785091889.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-07-20) 4 commits
  (merged to 'next' on 2026-07-23 at 4873f289dd)
 + environment: move has_symlinks into repo_config_values
 + environment: move trust_executable_bit into repo_config_values
 + read-cache: pass 'repo' to 'ce_mode_from_stat()'
 + read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from the 'core.filemode'
 configuration) has been migrated into 'struct repo_config_values' to
 tie it to a specific repository instance.

 Will merge to 'master'.
 cf. <alvNq8rXF/jofqUc@szeder.dev>
 cf. <xmqq8q7961xe.fsf@gitster.g>
 source: <20260720105335.3202013-1-cat@malon.dev>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-07-25) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Will merge to 'next'?
 cf. <xmqqy0ez14s9.fsf@gitster.g>
 source: <pull.2285.v23.git.git.1784979136.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-14) 7 commits
  (merged to 'next' on 2026-07-19 at bebf13a239)
 + graph: add --[no-]graph-indent and log.graphIndent
 + graph: move config reading into graph_read_config()
 + graph: wrap cascading commits after 4 columns
 + graph: indent visual root in graph
 + graph: add a 2 commit buffer for lookahead
 + revision: add next_commit_to_show()
 + lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Will merge to 'master'.
 cf. <CA+J6zkQNzEAhhY74qDrOwfFVrshEF7YFxWRRkwE3ttJo15ZbAg@mail.gmail.com>
 source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 cf. <CABPp-BGATrNJyT7trzUzAMB_v-1ssVe_SRqp+281X5GzU=2eow@mail.gmail.com>
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 14%]

* What's cooking in git.git (Jul 2026, #11)
@ 2026-07-25  0:19 15% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-25  0:19 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The seventh batch of topics have now graduated to the 'master' branch.

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]

* af/clone-revision-v0-segfault-fix (2026-07-24) 1 commit
 - builtin/clone: fix segfault when using --revision with protocol v0

 'git clone --revision' talking to a server that does not support
 protocol v2 (falling back to protocol v0) segfaulted, which has
 been corrected.

 Will merge to 'next'?
 cf. <xmqqldb08jcd.fsf@gitster.g>
 source: <20260724124138.666877-1-adrian.friedli@mt.com>


* lo/mv-missing-dest-dir-check (2026-07-23) 2 commits
 - mv: check for missing destination directory before renaming
 - mv: name both source and destination when rename fails

 'git mv' has been updated to check for a missing destination
 leading directory during the checking phase, allowing 'git mv -n'
 to report the failure.  The error message when the rename(2)
 syscall fails has also been improved to name both the source and
 the destination.

 Waiting for response.
 cf. <xmqq8q71k3fy.fsf@gitster.g>
 cf. <xmqqh5lpk3r3.fsf@gitster.g>
 source: <pull.2356.v2.git.git.1784812390.gitgitgadget@gmail.com>


* ps/odb-make-creation-pluggable (2026-07-23) 5 commits
 - odb: make creation of on-disk structures pluggable
 - odb/source: introduce function to map source type to name
 - setup: defer object database creation
 - setup: detangle loading of loose object maps
 - loose: load loose object map for the correct source

 The creation of the on-disk data structures for the object database
 has been made pluggable, allowing future backends to customize their
 setup.  As part of this, the initialization of the object database
 has been deferred, and the loading of the loose-object map has been
 detangled from repository initialization.

 Needs review.
 cf. <xmqq5x248fk9.fsf@gitster.g>
 cf. <xmqqh5lo6xi2.fsf@gitster.g>
 cf. <xmqq5x246x35.fsf@gitster.g>
 source: <20260724-pks-odb-create-on-disk-v1-0-3b3d265d979b@pks.im>

--------------------------------------------------
[Stalled]

* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response for too long, stalled.
 cf. <xmqqpl1d56dd.fsf@gitster.g>
 cf. <xmqqwlvl56vh.fsf@gitster.g>
 source: <cover.1782500507.git.me@ttaylorr.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Waiting for response for too long, stalled.
 cf. <xmqq5x37h6fj.fsf@gitster.g>
 cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response, stalled.
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll for too long, stalled.
 cf. <xmqq1pedthkv.fsf@gitster.g>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Waiting for response for too long, stalled.
 cf. <87cxwxofgv.fsf@emacs.iotcl.com>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>

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

* jt/config-lock-timeout (2026-05-17) 1 commit
  (merged to 'next' on 2026-07-24 at 3cb8da6b6a)
 + config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Will merge to 'master'.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 cf. <xmqqzf1xbl4i.fsf@gitster.g>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Waiting for a response.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 source: <20260721140443.1809379-2-hugo@hsal.es>


* tn/stash-avoid-sparse-index-expansion (2026-07-20) 2 commits
  (merged to 'next' on 2026-07-23 at 8ccf28493e)
 + stash: avoid sparse-index expansion for in-cone paths
 + pathspec: use match for sparse-index expansion checks

 The 'git stash push' command has been optimized to avoid unnecessary
 sparse index expansion when pathspecs are wholly inside the
 sparse-checkout cone.  Also, a potential out-of-bounds read in the
 sparse-index expansion check helper pathspec_needs_expanded_index()
 has been fixed by consistently using the parsed, prefixed path.

 Will merge to 'master'.
 cf. <al61UTM0aK9j9eiP@com-79390>
 cf. <al61ERa3fS2MerHp@com-79390>
 source: <20260720223118.62821-4-tnyman@openai.com>


* en/submodule-insteadof-remote-match (2026-07-22) 1 commit
 - submodule: resolve insteadOf aliases when matching remote

 The remote-matching logic for submodules has been corrected to
 resolve 'url.*.insteadOf' aliases before comparing the inventoried
 URL from '.gitmodules' with the URLs of configured remotes.

 Will merge to 'next'?
 cf. <xmqqbjbyole1.fsf@gitster.g>
 source: <20260723002132.3989727-1-ccjmne@gmail.com>


* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 - fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Waiting for a resposne.
 cf. <CAOTNsDy4pKbPHdK1T688Ax6Mgz15K-qfZR-8fAvTk48z3E43Rg@mail.gmail.com>
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* jc/exclude-first-parent-seen (2026-07-22) 1 commit
 - revision: honor --exclude-first-parent-only with SEEN first parent

 Traversals with '--exclude-first-parent-only' have been corrected to
 properly stop after the first parent even when it has already been
 marked as SEEN.

 Will merge to 'next'.
 source: <xmqqbjbzq7n2.fsf@gitster.g>


* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for a response.
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 cf. <00e529b6-7ae7-463f-a4b3-0991e9411aba@gmail.com>
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* bc/rust-hash-cleanups (2026-07-18) 2 commits
  (merged to 'next' on 2026-07-21 at 51627468a0)
 + rust: discard hash context when finished
 + hash: initialize context before cloning

 A few memory problems in the Rust interface to C hash functions have
 been corrected.  The 'Clone' implementation of 'CryptoHasher' now
 properly initializes the context before cloning, and its 'Drop'
 implementation now discards the context to prevent leaks.

 Will merge to 'master'.
 cf. <20260719080754.GA429688@coredump.intra.peff.net>
 source: <20260719010842.17991-1-sandals@crustytoothpaste.net>


* ja/doc-synopsis-style-yet-more (2026-07-23) 4 commits
 - doc: convert git-request-pull synopsis and options to new style
 - doc: convert git-send-email synopsis and options to new style
 - doc: convert git-format-patch synopsis and options to new style
 - doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Needs review.
 source: <pull.2185.v2.git.1784841567.gitgitgadget@gmail.com>


* hn/url-push-tracking (2026-07-22) 2 commits
 - remote: find tracking branches for URL push destinations
 - remote: pass repository to push tracking helper

 When the push remote is specified as a URL, the fetch refspec of a
 uniquely matching configured remote is now used to find and update
 the remote-tracking branch (e.g., '@{push}').

 Will merge to 'next'.
 cf. <xmqqpl0eoniz.fsf@gitster.g>
 source: <pull.2358.v4.git.git.1784743738.gitgitgadget@gmail.com>


* tl/gitweb-shorten-hashes-with-modes (2026-07-17) 1 commit
 - gitweb: shorten index hashes with trailing file modes

 The object ID shortening and linking in the 'commitdiff' view of
 'gitweb' has been corrected to work even when the index line carries
 a trailing file mode.

 Will merge to 'next'?
 cf. <xmqqjyqu6u7i.fsf@gitster.g>
 source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>


* kj/repo-info-more-path-keys (2026-07-17) 7 commits
 - repo: add path.git-prefix path key
 - repo: add path.grafts with absolute and relative suffix formatting
 - repo: add path.index with absolute and relative suffix formatting
 - repo: add path.hooks with absolute and relative suffix formatting
 - repo: add path.objects with absolute and relative suffix formatting
 - repo: add path.superproject-working-tree with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Waiting for response.
 cf. <845D6852-98F5-4168-82CD-90B3B476BCF5@gmail.com>
 cf. <xmqq33xejomv.fsf@gitster.g>
 source: <20260717133015.32040-1-jayatheerthkulkarni2005@gmail.com>


* sk/userdiff-swift (2026-07-20) 1 commit
  (merged to 'next' on 2026-07-23 at 45dbcc6307)
 + userdiff: add support for Swift

 Userdiff patterns for Swift have been added, with support for
 Swift-specific constructs such as attributes, modifiers, failable
 initializers, and generics.

 Will merge to 'master'.
 cf. <2a3a73c5-5e90-44a3-bf6a-6e98ce5e5a59@kdbg.org>
 cf. <7b541cd5-bd66-4675-818d-8e23eb1c9530@kdbg.org>
 source: <20260721065736.8747-1-diy2903@gmail.com>


* ps/odb-move-loose-object-writing (2026-07-17) 10 commits
 - object-file: move logic to write loose objects
 - object-file: move `force_object_loose()`
 - object-file: force objects loose via generic interface
 - object-file: fix memory leak in `force_object_loose()`
 - odb: support setting mtime when writing objects
 - odb: lift object existence check out of the "loose" backend
 - odb: compute object hash in `odb_write_object_ext()`
 - t/u-odb-inmemory: implement wrapper for writing objects
 - odb: compute compat object ID in `odb_write_object_ext()`
 - Merge branch 'jt/receive-pack-use-odb-transactions' into HEAD

 The logic to write loose objects has been refactored and moved from
 'object-file.c' to the loose backend source file 'odb/source-loose.c',
 making the loose backend more self-contained.  This is achieved by
 first refactoring force_object_loose() to use generic ODB write
 interfaces instead of loose-backend internals.

 Will merge to 'next'?
 cf. <87jyqnp365.fsf@emacs.iotcl.com>
 cf. <87fr1bp0bi.fsf@emacs.iotcl.com>
 source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>


* pw/rebase-fixup-fixes (2026-07-17) 2 commits
 - rebase: remember fixup -c after skipping fixup/squash
 - rebase -i: fix counting of fixups after rebase --skip

 Two bugs in how 'git rebase' handles skipped 'fixup' and 'squash'
 commands have been fixed.  One bug caused an incorrect commit count to
 be shown in the template message when multiple commands were skipped,
 and another prevented the editor from opening when the final command
 in a chain containing 'fixup -c' was skipped.

 Needs review.
 source: <cover.1784304378.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-bloom (2026-07-17) 4 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Waiting for a response.
 cf. <87cxwl1lb4.fsf@emacs.iotcl.com>
 cf. <20260720094218.GA681989@coredump.intra.peff.net>
 source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>


* hn/bisect-reset-when-found (2026-07-20) 2 commits
  (merged to 'next' on 2026-07-22 at 1dc394ad9b)
 + bisect: add --reset-when-found to leave when done
 + bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Will merge to 'master'.
 cf. <xmqqldb5d1d9.fsf@gitster.g>
 source: <pull.2335.v3.git.git.1784538619.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-07-14) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Waiting for response.
 cf. <xmqqldbdqciy.fsf@gitster.g>
 cf. <xmqqh5m1qcfh.fsf@gitster.g>
 cf. <alcvnm0xiOv5W0w_@pks.im>
 source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>


* jk/diff-relative-cached-unmerged (2026-07-14) 1 commit
 - diff: ignore unmerged paths outside prefix with --relative --cached

 'git diff --relative' running with '--cached' has been corrected to
 avoid a segfault when encountering unmerged paths outside the
 prefix.

 Will merge to 'next'?
 source: <20260715060523.GA517940@coredump.intra.peff.net>


* jc/submodule-helper-avoid-zu (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-19 at b12d5d76f5)
 + submodule--helper: avoid use of %zu for now

 An accidental use of the '%zu' format specifier in 'git
 submodule--helper' has been corrected to use 'PRIuMAX' and cast the
 value to 'uintmax_t' to avoid portability issues.

 Will merge to 'master'.
 source: <xmqq4ii0ko9t.fsf@gitster.g>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Waiting for response.
 cf. <xmqqzezlhgyo.fsf@gitster.g>
 cf. <al4yrXXoZiHLwSvE@com-79390>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
 - revision: make get_commit_action() a pure predicate

 The get_commit_action() function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 simplify_commit().  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Needs review.
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* rs/remote-curl-simplify-push-specs (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-19 at ff1b5528ba)
 + remote-curl: simplify passing of push specs

 The passing of push destination specifications in the 'remote-curl'
 helper has been simplified by removing the explicit 'count' parameter
 and relying on the NULL-termination of the array.

 Will merge to 'master'.
 source: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de>


* cc/fast-import-usage (2026-07-16) 7 commits
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Waiting for response.
 cf. <xmqq4ihyehyb.fsf@gitster.g>
 cf. <xmqqcxwmeiwq.fsf@gitster.g>
 source: <20260716165517.433849-1-christian.couder@gmail.com>


* ps/copy-wo-the-repository (2026-07-16) 1 commit
  (merged to 'next' on 2026-07-20 at 9e38da0efc)
 + copy: drop dependency on `the_repository`

 The copy_file() and copy_file_with_time() functions have been
 refactored to take a repository parameter, allowing the removal of the
 implicit dependency on the global 'the_repository' variable in
 'copy.c'.

 Will merge to 'master'.
 cf. <b0df688a-3b26-48f6-8b1c-98530483885e@gmail.com>
 cf. <xmqqo6g54k7m.fsf@gitster.g>
 source: <20260716-pks-copy-wo-the-repository-v2-1-8f5e32942929@pks.im>


* ps/refspec-wo-the-repository (2026-07-16) 3 commits
  (merged to 'next' on 2026-07-20 at 31044c3fc9)
 + refspec: stop depending on `the_repository`
 + refspec: let callers pass in hash algorithm when parsing items
 + refspec: group related structures and functions

 The dependency on the global 'the_repository' variable in the
 'refspec.c' API has been removed by passing the hash algorithm
 explicitly to refspec-parsing functions and storing it in 'struct
 refspec'.

 Will merge to 'master'.
 source: <20260716-pks-refspec-wo-the-repository-v1-0-aa40844d067f@pks.im>


* ps/writev (2026-07-16) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Waiting for response.
 cf. <f8050598-392f-44c9-8d66-0454740a7a12@kdbg.org>
 cf. <xmqqwluuekbh.fsf@gitster.g>
 source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


* sc/wt-status-avoid-quadratic-insertion (2026-07-18) 1 commit
  (merged to 'next' on 2026-07-20 at 9330d42a4a)
 + wt-status: avoid repeated insertion for untracked paths

 The enumeration of untracked and ignored files in 'git status' has
 been optimized by avoiding quadratic complexity when inserting into
 string lists, reducing the construction cost from O(n^2) to O(n log
 n).

 Will merge to 'master'.
 cf. <20260718083828.GE22588@coredump.intra.peff.net>
 source: <20260718081449.26747-1-sahityajb@gmail.com>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-24) 3 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: avoid concurrent appends to partial packs
 - http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP have
 been made safer by avoiding concurrent appends to the staging file.
 Opening the file in read-write mode and maintaining separate file
 offsets prevents corruption while preserving resumability.  The
 'fetch-pack' command has also been updated to tolerate pre-existing
 '.keep' files.

 Needs review.
 cf. <xmqqldb19evx.fsf@gitster.g>
 source: <cover.1784874850.git.tnyman@openai.com>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
  (merged to 'next' on 2026-07-22 at 968a116891)
 + use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
 + tempfile: stop using the_repository
 + lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
 + refs/packed: use repo_create_tempfile()
 + tempfile: add repo_create_tempfile{,_mode}()

 The tempfile and lockfile APIs have been refactored to stop depending
 on the 'the_repository' global variable, and their callers have been
 updated to use the repository-aware variants.

 Will merge to 'master'.
 cf. <xmqq8q7ds3ld.fsf@gitster.g>
 cf. <xmqqmrvmn6a5.fsf@gitster.g>
 source: <20260714175956.54601-1-l.s.r@web.de>


* js/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 cf. <xmqqechab03t.fsf@gitster.g>
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Ejected due to conflicts with 'pw/rebase-drop-notes-with-commit'.

 Waiting for response.
 cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
 - odb: make optimizations pluggable
 - builtin/gc: fix signedness issues in ODB-related functionality
 - builtin/gc: refactor ODB optimizations to operate on "files" source
 - builtin/gc: introduce `odb_optimize_required()`
 - builtin/gc: move geometric repacking into `odb_optimize()`
 - builtin/gc: introduce object database optimization options
 - builtin/gc: inline config values specific to the "files" backend
 - builtin/gc: make repack arguments self-contained
 - builtin/gc: extract object database optimizations into separate function
 - builtin/gc: move worktree and rerere tasks before object optimizations
 - odb: run "pre-auto-gc" hook for all maintenance tasks
 - t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend-specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Waiting for response.
 cf. <xmqqwluyyhv1.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* ps/refs-wo-the-repository (2026-07-15) 7 commits
  (merged to 'next' on 2026-07-19 at 12685f410c)
 + refs: remove remaining uses of `the_repository`
 + worktree: pass repository to public functions
 + worktree: pass repository to file-local functions
 + worktree: refactor code to use available repositories
 + refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 + refs/packed: de-globalize handling of "core.packedRefsTimeout"
 + Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository

 The ref subsystem and the worktree API have been refactored to pass a
 repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable.  As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Will merge to 'master'.
 source: <20260716-pks-refs-wo-the-repository-v3-0-db0a804e0224@pks.im>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the 'sparse-index' collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27215.27575.968985.583226@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 cf. <xmqq33xcz2i7.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* pw/rebase-drop-notes-with-commit (2026-07-15) 9 commits
  (merged to 'next' on 2026-07-20 at 5475c9f935)
 + sequencer: do not record dropped commits as rewritten
 + sequencer: use an enum to represent result of picking a commit
 + sequencer: simplify pick_one_commit()
 + sequencer: remove unnecessary condition in pick_one_commit()
 + sequencer: simplify handling of fixup with conflicts
 + sequencer: remove unnecessary "or" in pick_one_commit()
 + sequencer: never reschedule on failed commit
 + sequencer: be more careful with external merge
 + t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected.  When
 a commit is dropped during rebase (e.g., because its changes are
 already upstream), it is no longer recorded as rewritten, preventing
 its notes from being copied to an unrelated commit.

 Will merge to 'master'.
 cf. <xmqqy0f5d25g.fsf@gitster.g>
 source: <cover.1784128921.git.phillip.wood@dunelm.org.uk>


* ty/migrate-excludes-file (2026-07-13) 10 commits
  (merged to 'next' on 2026-07-23 at 749560a29c)
 + repository: adjust the comment of config_values_private_
 + environment: move object_creation_mode into repo_config_values
 + environment: move autorebase into repo_config_values
 + environment: move push_default into repo_config_values
 + environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 + environment: move askpass_program into repo_config_values
 + environment: move pager_program into repo_config_values
 + environment: move editor_program into repo_config_values
 + environment: move excludes_file into repo_config_values
 + repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Will merge to 'master'.
 cf. <xmqqa4ruyhbh.fsf@gitster.g>
 source: <20260714032525.1611141-1-cat@malon.dev>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Ejected for now, as it causes too many evil merges with other topics.

 Needs review.
 cf. <alR9GDNTbdjWB4dq@szeder.dev>
 cf. <2d455ecf-972e-e3ce-54bc-683050c04282@gmx.de>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 cf. <xmqq8q8bpl03.fsf@gitster.g>
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-20) 5 commits
  (merged to 'next' on 2026-07-23 at 2790c83e45)
 + history: re-edit a squash with every message
 + sequencer: share the squash message marker helpers and flags
 + history: add squash subcommand to fold a range
 + history: give commit_tree_ext a message template
 + history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Will merge to 'master'.
 cf. <DK1KIF2OI8IF.11188A3YEQV1C@lfurio.us>
 cf. <DK1KIH6CXW0X.1U2V3GU8L6HB7@lfurio.us>
 source: <pull.2337.v10.git.git.1784536024.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
  (merged to 'next' on 2026-07-19 at 5b640e33a1)
 + commit-reach: die on contains walk errors
 + ref-filter: memoize --contains with generations
 + commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have been
 optimized to use the memoized commit traversal previously used only by
 'git tag --contains', significantly speeding up connectivity checks
 across many candidate refs with shared history.

 Will merge to 'master'.
 cf. <20260716091924.GB1212956@coredump.intra.peff.net>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-09 at 371c2e9c3b)
 + replay: offer an option to linearize the commit topology
 + replay: resolve the replay base outside pick_regular_commit()
 + replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 On hold, waiting for response from the author.
 cf. <xmqq5x2qz42z.fsf@gitster.g>
 cf. <CABPp-BGzU9KHGF1nipi2HZaa1AiikMKGGaapQzHVH06wO4V1ww@mail.gmail.com>
 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-24) 13 commits
  (merged to 'next' on 2026-07-24 at e436a42272)
 + cat-file: make remote-object-info allow-list adapt to the server
 + cat-file: add remote-object-info to batch-command
 + transport: add client support for object-info
 + serve: advertise object-info feature
 + protocol-caps: check object existence regardless of the attributes requested
 + fetch-pack: move fetch initialization
 + connect: make write_fetch_command_and_capabilities() more generic
 + fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 + fetch-pack: use unsigned int for hash_algo variable
 + fetch-pack: drop the static advertise_sid variable
 + t1006: extract helper functions into new 'lib-cat-file.sh'
 + cat-file: declare loop counter inside for()
 + transport-helper: fix memory leak of helper on disconnect

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.  Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Will merge to 'master'.
 source: <20260724-ps-eric-work-rebase-v21-0-ba67f024fdff@gmail.com>


* mm/diff-process-hunks (2026-07-15) 9 commits
 . line-log: consult diff process for range tracking
 . diff: consult diff process for --stat counts
 . blame: consult diff process for no-hunk detection
 . diff: bypass diff process with --no-ext-diff and in format-patch
 . diff: add long-running diff process via diff.<driver>.process
 . sub-process: separate process lifecycle from hashmap management
 . userdiff: add diff.<driver>.process config
 . xdiff: support external hunks via xpparam_t
 . gitattributes: document how external diff drivers relate to diff features

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Ejected for now, as it conflicts badly with 'mm/line-log-limited-ops'.

 Expecting a reroll.
 cf. <CAC2QwmKRp90hmBAckug9PPvvD53Pi53q5csZhi15LRhzdQasQg@mail.gmail.com>
 source: <pull.2120.v5.git.1784149323.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-07-20) 4 commits
  (merged to 'next' on 2026-07-23 at 4873f289dd)
 + environment: move has_symlinks into repo_config_values
 + environment: move trust_executable_bit into repo_config_values
 + read-cache: pass 'repo' to 'ce_mode_from_stat()'
 + read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from the 'core.filemode'
 configuration) has been migrated into 'struct repo_config_values' to
 tie it to a specific repository instance.

 Will merge to 'master'.
 cf. <alvNq8rXF/jofqUc@szeder.dev>
 cf. <xmqq8q7961xe.fsf@gitster.g>
 source: <20260720105335.3202013-1-cat@malon.dev>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* hn/branch-delete-merged (2026-07-24) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Will merge to 'next'?
 cf. <9b9b9a2c-dd0f-44f8-b80e-565eed9a55a8@gmail.com>
 cf. <xmqqik6an5t3.fsf@gitster.g>
 source: <pull.2285.v21.git.git.1784889377.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-14) 7 commits
  (merged to 'next' on 2026-07-19 at bebf13a239)
 + graph: add --[no-]graph-indent and log.graphIndent
 + graph: move config reading into graph_read_config()
 + graph: wrap cascading commits after 4 columns
 + graph: indent visual root in graph
 + graph: add a 2 commit buffer for lookahead
 + revision: add next_commit_to_show()
 + lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Will merge to 'master'.
 cf. <CA+J6zkQNzEAhhY74qDrOwfFVrshEF7YFxWRRkwE3ttJo15ZbAg@mail.gmail.com>
 source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 cf. <xmqqse5en8wz.fsf@gitster.g>
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 15%]

* Re: What's cooking in git.git (Jul 2026, #10)
  @ 2026-07-24  0:33 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-24  0:33 UTC (permalink / raw)
  To: Pablo Sabater; +Cc: git

"Pablo Sabater" <pabloosabaterr@gmail.com> writes:

> On Thu Jul 23, 2026 at 4:38 AM CEST, Junio C Hamano wrote:
>>
>> * ps/cat-file-remote-object-info (2026-07-18) 13 commits
>>  - cat-file: make remote-object-info allow-list adapt to the server
>>  - cat-file: add remote-object-info to batch-command
>>  - transport: add client support for object-info
>>  - serve: advertise object-info feature
>>  - protocol-caps: check object existence regardless of the attributes requested
>>  - fetch-pack: move fetch initialization
>>  - connect: make write_fetch_command_and_capabilities() more generic
>>  - fetch-pack: move write_fetch_command_and_capabilities() to connect.c
>>  - fetch-pack: use unsigned int for hash_algo variable
>>  - fetch-pack: drop the static advertise_sid variable
>>  - t1006: extract helper functions into new 'lib-cat-file.sh'
>>  - cat-file: declare loop counter inside for()
>>  - transport-helper: fix memory leak of helper on disconnect
>>
>>  The 'remote-object-info' command has been added to 'git cat-file
>>  --batch-command', allowing clients to request object metadata
>>  (currently size) from a remote server via protocol v2 without
>>  downloading the entire object.  Format placeholders are dynamically
>>  filtered on the client based on server-advertised capabilities,
>>  returning empty strings for inapplicable or unsupported fields.
>>
>>  Needs review.
>>  source: <20260718-ps-eric-work-rebase-v20-0-0c13962ac532@gmail.com>
>>
>
> Hi,
>
> Karthik reviewed it a few days ago [1] and it looked good to him. Two tiny
> nits came up, which don't seem worth a reroll on their own.
>
> I think the series is good unless further issues come up.
>
> [1]: https://lore.kernel.org/git/CAOLa=ZS8J4t12ab1=3-LRYNuZOwqSHG861iYm97JjF3mGprvJA@mail.gmail.com/

I was silently hoping that you would fix these two nits, saying that
one of the alone might not warrant reroll but if we have multiple,
we would better get them right for the final version, or something
;-)



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jul 2026, #10)
@ 2026-07-23  2:38 14% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-07-23  2:38 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The seventh batch of topics have now graduated to the 'master' branch.

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

* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit
  (merged to 'next' on 2026-07-16 at b1dbc0cb3f)
 + fast-export: standardize usage string and SYNOPSIS

 The usage string and SYNOPSIS for 'git fast-export' have been
 standardized to make them consistent with each other and with other
 commands.

 Graduated to 'master'.
 cf. <alX5Nl8uX4ctVqo3@pks.im>
 cf. <xmqq4ii228dd.fsf@gitster.g>
 source: <20260713124153.245268-1-christian.couder@gmail.com>


* cl/b4-cover-change-id (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at 15c7ad9a3f)
 + b4: include change-id in cover template

 The in-tree 'b4' cover letter template has been updated to include the
 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
 the required tracking information for subsequent runs.

 Graduated to 'master'.
 source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>


* cl/conditional-config-on-worktree-path (2026-07-09) 2 commits
  (merged to 'next' on 2026-07-15 at 86ca33c437)
 + config: add "worktree" and "worktree/i" includeIf conditions
 + config: refactor include_by_gitdir() into include_by_path()

 The '[includeIf "condition"]' conditional inclusion facility for
 configuration files has been taught to use the location of the
 worktree in its condition.

 Graduated to 'master'.
 cf. <alTJCTKR9jOWfgbk@pks.im>
 source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>


* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
  (merged to 'next' on 2026-07-15 at 55ef0fb748)
 + submodule--helper: accept '-i' shorthand for update --init

 The '-i' shorthand for the '--init' option, which was accepted by the
 'git submodule update' command until it was broken in a modernization
 of the option-parsing code, has been restored.

 Graduated to 'master'.
 cf. <xmqq8q7ltf51.fsf@gitster.g>
 source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>


* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
  (merged to 'next' on 2026-07-15 at aba57e3365)
 + builtin/receive-pack: stage incoming objects via ODB transactions
 + builtin/receive-pack: drop redundant tmpdir env
 + odb/transaction: introduce ODB transaction flags
 + odb/transaction: add transaction env interface
 + odb/transaction: propagate commit errors
 + odb/transaction: propagate begin errors
 + object-file: propagate files transaction errors
 + object-file: drop check for inflight transactions
 + object-file: embed transaction flush logic in commit function
 + object-file: rename files transaction fsync function
 + object-file: rename files transaction prepare function
 (this branch is used by ps/odb-move-loose-object-writing.)

 'git receive-pack' has been refactored to use ODB transaction
 interfaces instead of directly managing 'tmp_objdir' for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Graduated to 'master'.
 cf. <alR1P-RGZNmjyiUE@pks.im>
 source: <20260710163722.2962278-1-jltobler@gmail.com>


* kk/no-walk-pathspec-fix (2026-07-16) 2 commits
  (merged to 'next' on 2026-07-16 at 4dd6fb0e7e)
 + revision: fix --no-walk path filtering regression
 + Merge branch 'kk/streaming-walk-pqueue' into kk/no-walk-pathspec-fix

 The 'git rev-list --no-walk' command has been corrected to restore
 pathspec filtering, which was lost when the streaming walk was
 refactored.

 Graduated to 'master'.
 source: <pull.2181.git.1784198879711.gitgitgadget@gmail.com>


* ml/t9811-replace-test-f (2026-07-11) 2 commits
  (merged to 'next' on 2026-07-15 at ffb7fcad15)
 + t9811: replace 'test -f' and '! test -f' with 'test_path_*'
 + t9811: break long && chains into multiple lines

 The test script 't/t9811-git-p4-label-import.sh' has been
 modernized to use 'test_path_is_file' and 'test_path_is_missing'
 instead of raw 'test -f' and '! test -f' calls.

 Graduated to 'master'.
 cf. <alTHrUEh4_O5ROeu@pks.im>
 source: <20260711160447.99708-1-marcelomlage@usp.br>


* ps/odb-for-each-object-filter (2026-07-14) 10 commits
  (merged to 'next' on 2026-07-16 at 8f30e80d33)
 + builtin/cat-file: filter objects via object database
 + odb: introduce object filters to `odb_for_each_object()`
 + pack-bitmap: introduce function to open bitmap for a single source
 + pack-bitmap: drop `_1` suffix from functions that open bitmaps
 + pack-bitmap: iterate object sources when opening bitmaps
 + pack-bitmap: allow aborting iteration of bitmapped objects
 + pack-objects: drop unused return value from add_object_entry()
 + pack-bitmap: mark object filter as `const`
 + odb/source-packed: improve lookup when enumerating objects
 + Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter

 The object database enumeration interface odb_for_each_object() has
 been taught to accept object filters, allowing the underlying backends
 to optimize the traversal by using reachability bitmaps when
 available.  'git cat-file --batch-all-objects' has been updated to use
 this generic interface, simplifying its code and avoiding direct
 access to ODB backend internals.

 Graduated to 'master'.
 cf. <874ii0h2uf.fsf@emacs.iotcl.com>
 source: <20260715-pks-odb-for-each-object-filter-v4-0-616d7adf7fb7@pks.im>


* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at dd2c5795b7)
 + object-file: fix closing object stream twice

 The stream-based object signature verification path has been
 corrected to avoid double-closing the stream on read errors.

 Graduated to 'master'.
 source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>


* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-16 at f258ce38ba)
 + strbuf: avoid redundant reset in strbuf_getwholeline()

 A redundant strbuf_reset() call in the 'HAVE_GETDELIM' path of
 strbuf_getwholeline() has been removed, as getdelim() overwrites the
 buffer and the length is updated afterward.

 Graduated to 'master'.
 cf. <xmqq8q7dv82b.fsf@gitster.g>
 cf. <20260714214941.GB4095533@coredump.intra.peff.net>
 source: <d4ffe7fb-f782-4f06-9e3b-f72729d1e225@web.de>


* sk/t1100-modernize (2026-07-14) 2 commits
  (merged to 'next' on 2026-07-16 at 621ca4ca5f)
 + t1100: move creation of expected output into setup test
 + t1100: modernize test style

 The test script 't/t1100-commit-tree-options.sh' has been modernized
 by converting test cases to the modern style (using single quotes and
 tab indentation) and moving the creation of the expected file inside
 the setup test so it runs under the protection of the test harness.

 Graduated to 'master'.
 cf. <xmqq4ii1v7x0.fsf@gitster.g>
 source: <20260714122033.61947-1-diy2903@gmail.com>


* sk/t7614-do-not-hide-git-exit-status (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-16 at 0d143986e7)
 + t7614: avoid hiding git's exit code in a pipe

 The test script 't/t7614-merge-signoff.sh' has been updated to avoid
 suppressing the exit code of 'git' commands in a pipe.

 Graduated to 'master'.
 cf. <xmqq1pd4m4ea.fsf@gitster.g>
 source: <20260715113344.3490-1-diy2903@gmail.com>

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

* hs/rebase-continue-edit (2026-07-21) 1 commit
 - rebase: add --[no-]edit to --continue

 Support for skipping the editor when continuing a rebase after
 conflict resolution has been added with the '--no-edit' option, and
 forcing it with '--edit'.  A new configuration variable
 'rebase.noEdit' can be used to set the default behavior.

 Needs review.
 source: <20260721140443.1809379-2-hugo@hsal.es>


* tn/stash-avoid-sparse-index-expansion (2026-07-20) 2 commits
 - stash: avoid sparse-index expansion for in-cone paths
 - pathspec: use match for sparse-index expansion checks

 The 'git stash push' command has been optimized to avoid unnecessary
 sparse index expansion when pathspecs are wholly inside the
 sparse-checkout cone.  Also, a potential out-of-bounds read in the
 sparse-index expansion check helper pathspec_needs_expanded_index()
 has been fixed by consistently using the parsed, prefixed path.

 Will merge to 'next'.
 cf. <al61UTM0aK9j9eiP@com-79390>
 cf. <al61ERa3fS2MerHp@com-79390>
 source: <20260720223118.62821-4-tnyman@openai.com>


* en/submodule-insteadof-remote-match (2026-07-21) 1 commit
 - submodule: resolve insteadof-aliases when matching remote

 The remote-matching logic for submodules has been corrected to
 resolve 'url.*.insteadOf' aliases before comparing the inventoried
 URL from '.gitmodules' with the URLs of configured remotes.

 Needs review.
 source: <20260721213042.3357346-1-ccjmne@gmail.com>


* td/fsmonitor-darwin-cookie-flush (2026-07-21) 1 commit
 - fsmonitor: flush pending FSEvents before cookie wait

 The 'fsmonitor' daemon on macOS has been updated to flush pending
 FSEvents before waiting for the cookie file, to avoid premature
 timeouts on busy systems.

 Needs review.
 source: <20260721-fsmonitor-darwin-cookie-flush-v1-1-357dc5e32040@gmail.com>


* jc/exclude-first-parent-seen (2026-07-22) 1 commit
 - revision: honor --exclude-first-parent-only with SEEN first parent

 Traversals with '--exclude-first-parent-only' have been corrected to
 properly stop after the first parent even when it has already been
 marked as SEEN.

 Needs review.
 source: <xmqqbjbzq7n2.fsf@gitster.g>

--------------------------------------------------
[Stalled]

* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll for too long, stalled.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 cf. <xmqqcxxyt4op.fsf@gitster.g>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Waiting for response for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* sn/rebase-update-refs-symrefs (2026-07-22) 2 commits
 - rebase: guard non-branch symref targets
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Needs review.
 source: <pull.2126.v3.git.1784708107.gitgitgadget@gmail.com>


* bc/rust-hash-cleanups (2026-07-18) 2 commits
  (merged to 'next' on 2026-07-21 at 51627468a0)
 + rust: discard hash context when finished
 + hash: initialize context before cloning

 A few memory problems in the Rust interface to C hash functions have
 been corrected.  The 'Clone' implementation of 'CryptoHasher' now
 properly initializes the context before cloning, and its 'Drop'
 implementation now discards the context to prevent leaks.

 Will merge to 'master'.
 cf. <20260719080754.GA429688@coredump.intra.peff.net>
 source: <20260719010842.17991-1-sandals@crustytoothpaste.net>


* ja/doc-synopsis-style-yet-more (2026-07-19) 4 commits
 - doc: convert git-request-pull synopsis and options to new style
 - doc: convert git-send-email synopsis and options to new style
 - doc: convert git-format-patch synopsis and options to new style
 - doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Expecting a reroll.
 cf. <23179740.EfDdHjke4D@piment-oiseau>
 cf. <2418232.ElGaqSPkdT@piment-oiseau>
 source: <pull.2185.git.1784490878.gitgitgadget@gmail.com>


* hn/url-push-tracking (2026-07-22) 2 commits
 - remote: find tracking branches for URL push destinations
 - remote: pass repository to push tracking helper

 When the push remote is specified as a URL, the fetch refspec of a
 uniquely matching configured remote is now used to find and update
 the remote-tracking branch (e.g., '@{push}').

 Will merge to 'next'?
 cf. <xmqqpl0eoniz.fsf@gitster.g>
 cf. <3FE12592-B663-438C-B33E-A251AE08E146@gmail.com>
 source: <pull.2358.v4.git.git.1784743738.gitgitgadget@gmail.com>


* tl/gitweb-shorten-hashes-with-modes (2026-07-17) 1 commit
 - gitweb: shorten index hashes with trailing file modes

 The object ID shortening and linking in the 'commitdiff' view of
 'gitweb' has been corrected to work even when the index line carries
 a trailing file mode.

 Needs review.
 source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>


* kj/repo-info-more-path-keys (2026-07-17) 7 commits
 - repo: add path.git-prefix path key
 - repo: add path.grafts with absolute and relative suffix formatting
 - repo: add path.index with absolute and relative suffix formatting
 - repo: add path.hooks with absolute and relative suffix formatting
 - repo: add path.objects with absolute and relative suffix formatting
 - repo: add path.superproject-working-tree with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Waiting for response.
 cf. <845D6852-98F5-4168-82CD-90B3B476BCF5@gmail.com>
 source: <20260717133015.32040-1-jayatheerthkulkarni2005@gmail.com>


* sk/userdiff-swift (2026-07-20) 1 commit
 - userdiff: add support for Swift

 Userdiff patterns for Swift have been added, with support for
 Swift-specific constructs such as attributes, modifiers, failable
 initializers, and generics.

 Will merge to 'next'?
 cf. <7b541cd5-bd66-4675-818d-8e23eb1c9530@kdbg.org>
 source: <20260721065736.8747-1-diy2903@gmail.com>


* ps/odb-move-loose-object-writing (2026-07-17) 10 commits
 - object-file: move logic to write loose objects
 - object-file: move `force_object_loose()`
 - object-file: force objects loose via generic interface
 - object-file: fix memory leak in `force_object_loose()`
 - odb: support setting mtime when writing objects
 - odb: lift object existence check out of the "loose" backend
 - odb: compute object hash in `odb_write_object_ext()`
 - t/u-odb-inmemory: implement wrapper for writing objects
 - odb: compute compat object ID in `odb_write_object_ext()`
 - Merge branch 'jt/receive-pack-use-odb-transactions' into HEAD

 The logic to write loose objects has been refactored and moved from
 'object-file.c' to the loose backend source file 'odb/source-loose.c',
 making the loose backend more self-contained.  This is achieved by
 first refactoring force_object_loose() to use generic ODB write
 interfaces instead of loose-backend internals.

 Needs review.
 source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>


* pw/rebase-fixup-fixes (2026-07-17) 2 commits
 - rebase: remember fixup -c after skipping fixup/squash
 - rebase -i: fix counting of fixups after rebase --skip

 Two bugs in how 'git rebase' handles skipped 'fixup' and 'squash'
 commands have been fixed.  One bug caused an incorrect commit count to
 be shown in the template message when multiple commands were skipped,
 and another prevented the editor from opening when the final command
 in a chain containing 'fixup -c' was skipped.

 Needs review.
 source: <cover.1784304378.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-bloom (2026-07-17) 4 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Expecting a reroll.
 cf. <87cxwl1lb4.fsf@emacs.iotcl.com>
 source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>


* hn/bisect-reset-when-found (2026-07-20) 2 commits
  (merged to 'next' on 2026-07-22 at 1dc394ad9b)
 + bisect: add --reset-when-found to leave when done
 + bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Will merge to 'master'.
 cf. <xmqqldb5d1d9.fsf@gitster.g>
 source: <pull.2335.v3.git.git.1784538619.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-07-14) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like curl_easy_duphandle(), deflateInit(), lseek(),
 dup(), and strbuf_getline_lf(), resolving several Coverity warnings
 about unchecked returns.

 Waiting for response.
 cf. <xmqqldbdqciy.fsf@gitster.g>
 cf. <xmqqh5m1qcfh.fsf@gitster.g>
 cf. <alcvmX3b6y92KE4y@pks.im>
 cf. <alcvnm0xiOv5W0w_@pks.im>
 source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>


* jk/diff-relative-cached-unmerged (2026-07-14) 1 commit
 - diff: ignore unmerged paths outside prefix with --relative --cached

 'git diff --relative' running with '--cached' has been corrected to
 avoid a segfault when encountering unmerged paths outside the
 prefix.

 Needs review.
 source: <20260715060523.GA517940@coredump.intra.peff.net>


* jc/submodule-helper-avoid-zu (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-19 at b12d5d76f5)
 + submodule--helper: avoid use of %zu for now

 An accidental use of the '%zu' format specifier in 'git
 submodule--helper' has been corrected to use 'PRIuMAX' and cast the
 value to 'uintmax_t' to avoid portability issues.

 Will merge to 'master'.
 source: <xmqq4ii0ko9t.fsf@gitster.g>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like gettimeofday() and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Waiting for response.
 cf. <xmqqzezlhgyo.fsf@gitster.g>
 cf. <al4yrXXoZiHLwSvE@com-79390>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
 - revision: make get_commit_action() a pure predicate

 The get_commit_action() function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 simplify_commit().  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Needs review.
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* rs/remote-curl-simplify-push-specs (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-19 at ff1b5528ba)
 + remote-curl: simplify passing of push specs

 The passing of push destination specifications in the 'remote-curl'
 helper has been simplified by removing the explicit 'count' parameter
 and relying on the NULL-termination of the array.

 Will merge to 'master'.
 source: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de>


* cc/fast-import-usage (2026-07-16) 7 commits
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 parse_options() API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Waiting for response.
 cf. <xmqq4ihyehyb.fsf@gitster.g>
 cf. <xmqqcxwmeiwq.fsf@gitster.g>
 source: <20260716165517.433849-1-christian.couder@gmail.com>


* ps/copy-wo-the-repository (2026-07-16) 1 commit
  (merged to 'next' on 2026-07-20 at 9e38da0efc)
 + copy: drop dependency on `the_repository`

 The copy_file() and copy_file_with_time() functions have been
 refactored to take a repository parameter, allowing the removal of the
 implicit dependency on the global 'the_repository' variable in
 'copy.c'.

 Will merge to 'master'.
 cf. <b0df688a-3b26-48f6-8b1c-98530483885e@gmail.com>
 cf. <xmqqo6g54k7m.fsf@gitster.g>
 source: <20260716-pks-copy-wo-the-repository-v2-1-8f5e32942929@pks.im>


* ps/refspec-wo-the-repository (2026-07-16) 3 commits
  (merged to 'next' on 2026-07-20 at 31044c3fc9)
 + refspec: stop depending on `the_repository`
 + refspec: let callers pass in hash algorithm when parsing items
 + refspec: group related structures and functions

 The dependency on the global 'the_repository' variable in the
 'refspec.c' API has been removed by passing the hash algorithm
 explicitly to refspec-parsing functions and storing it in 'struct
 refspec'.

 Will merge to 'master'.
 source: <20260716-pks-refspec-wo-the-repository-v1-0-aa40844d067f@pks.im>


* ps/writev (2026-07-16) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for writev(3p) has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to write(3p) in send_sideband() and cat_blob() have been
 refactored to use writev(3p) wrappers to reduce syscall overhead.

 Waiting for response.
 cf. <f8050598-392f-44c9-8d66-0454740a7a12@kdbg.org>
 cf. <a2676ec6-39d5-4220-8549-10a17daec668@hogyros.de>
 cf. <xmqqfr1ig0hv.fsf@gitster.g>
 source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


* sc/wt-status-avoid-quadratic-insertion (2026-07-18) 1 commit
  (merged to 'next' on 2026-07-20 at 9330d42a4a)
 + wt-status: avoid repeated insertion for untracked paths

 The enumeration of untracked and ignored files in 'git status' has
 been optimized by avoiding quadratic complexity when inserting into
 string lists, reducing the construction cost from O(n^2) to O(n log
 n).

 Will merge to 'master'.
 cf. <20260718083828.GE22588@coredump.intra.peff.net>
 source: <20260718081449.26747-1-sahityajb@gmail.com>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* tn/packfile-uri-concurrency (2026-07-21) 3 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: avoid concurrent appends to partial packs
 - http-fetch: correct --index-pack-arg documentation

 Concurrent downloads of packfiles via packfile URIs and dumb HTTP have
 been made safer by avoiding concurrent appends to the staging file.
 Opening the file in read-write mode and maintaining separate file
 offsets prevents corruption while preserving resumability.  The
 'fetch-pack' command has also been updated to tolerate pre-existing
 '.keep' files.

 Needs review.
 source: <cover.1784676106.git.tnyman@openai.com>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
  (merged to 'next' on 2026-07-22 at 968a116891)
 + use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
 + tempfile: stop using the_repository
 + lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
 + refs/packed: use repo_create_tempfile()
 + tempfile: add repo_create_tempfile{,_mode}()

 The tempfile and lockfile APIs have been refactored to stop depending
 on the 'the_repository' global variable, and their callers have been
 updated to use the repository-aware variants.

 Will merge to 'master'.
 cf. <xmqq8q7ds3ld.fsf@gitster.g>
 cf. <xmqqmrvmn6a5.fsf@gitster.g>
 source: <20260714175956.54601-1-l.s.r@web.de>


* js/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Ejected due to conflicts with 'pw/rebase-drop-notes-with-commit'.

 Waiting for response.
 cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
 - odb: make optimizations pluggable
 - builtin/gc: fix signedness issues in ODB-related functionality
 - builtin/gc: refactor ODB optimizations to operate on "files" source
 - builtin/gc: introduce `odb_optimize_required()`
 - builtin/gc: move geometric repacking into `odb_optimize()`
 - builtin/gc: introduce object database optimization options
 - builtin/gc: inline config values specific to the "files" backend
 - builtin/gc: make repack arguments self-contained
 - builtin/gc: extract object database optimizations into separate function
 - builtin/gc: move worktree and rerere tasks before object optimizations
 - odb: run "pre-auto-gc" hook for all maintenance tasks
 - t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend-specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Waiting for response.
 cf. <xmqqwluyyhv1.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* ps/refs-wo-the-repository (2026-07-15) 7 commits
  (merged to 'next' on 2026-07-19 at 12685f410c)
 + refs: remove remaining uses of `the_repository`
 + worktree: pass repository to public functions
 + worktree: pass repository to file-local functions
 + worktree: refactor code to use available repositories
 + refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 + refs/packed: de-globalize handling of "core.packedRefsTimeout"
 + Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository

 The ref subsystem and the worktree API have been refactored to pass a
 repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable.  As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Will merge to 'master'.
 source: <20260716-pks-refs-wo-the-repository-v3-0-db0a804e0224@pks.im>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the 'sparse-index' collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 cf. <xmqq33xcz2i7.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use test_path_is_file(), test_path_is_dir(), and
 test_path_is_missing() helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* pw/rebase-drop-notes-with-commit (2026-07-15) 9 commits
  (merged to 'next' on 2026-07-20 at 5475c9f935)
 + sequencer: do not record dropped commits as rewritten
 + sequencer: use an enum to represent result of picking a commit
 + sequencer: simplify pick_one_commit()
 + sequencer: remove unnecessary condition in pick_one_commit()
 + sequencer: simplify handling of fixup with conflicts
 + sequencer: remove unnecessary "or" in pick_one_commit()
 + sequencer: never reschedule on failed commit
 + sequencer: be more careful with external merge
 + t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected.  When
 a commit is dropped during rebase (e.g., because its changes are
 already upstream), it is no longer recorded as rewritten, preventing
 its notes from being copied to an unrelated commit.

 Will merge to 'master'.
 cf. <xmqqy0f5d25g.fsf@gitster.g>
 source: <cover.1784128921.git.phillip.wood@dunelm.org.uk>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response.
 cf. <xmqqpl1d56dd.fsf@gitster.g>
 cf. <xmqqwlvl56vh.fsf@gitster.g>
 source: <cover.1782500507.git.me@ttaylorr.com>


* ty/migrate-excludes-file (2026-07-13) 10 commits
 - repository: adjust the comment of config_values_private_
 - environment: move object_creation_mode into repo_config_values
 - environment: move autorebase into repo_config_values
 - environment: move push_default into repo_config_values
 - environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 - environment: move askpass_program into repo_config_values
 - environment: move pager_program into repo_config_values
 - environment: move editor_program into repo_config_values
 - environment: move excludes_file into repo_config_values
 - repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Will merge to 'next'.
 cf. <xmqqa4ruyhbh.fsf@gitster.g>
 source: <20260714032525.1611141-1-cat@malon.dev>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Ejected for now, as it causes too many evil merges with other topics.

 Needs review.
 cf. <alR9GDNTbdjWB4dq@szeder.dev>
 cf. <2d455ecf-972e-e3ce-54bc-683050c04282@gmx.de>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-20) 5 commits
 - history: re-edit a squash with every message
 - sequencer: share the squash message marker helpers and flags
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Will merge to 'next'.
 cf. <DK1KIF2OI8IF.11188A3YEQV1C@lfurio.us>
 cf. <DK1KIH6CXW0X.1U2V3GU8L6HB7@lfurio.us>
 source: <pull.2337.v10.git.git.1784536024.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
  (merged to 'next' on 2026-07-19 at 5b640e33a1)
 + commit-reach: die on contains walk errors
 + ref-filter: memoize --contains with generations
 + commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have been
 optimized to use the memoized commit traversal previously used only by
 'git tag --contains', significantly speeding up connectivity checks
 across many candidate refs with shared history.

 Will merge to 'master'.
 cf. <20260716091924.GB1212956@coredump.intra.peff.net>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-09 at 371c2e9c3b)
 + replay: offer an option to linearize the commit topology
 + replay: resolve the replay base outside pick_regular_commit()
 + replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 On hold, waiting for response from the author.
 cf. <xmqq5x2qz42z.fsf@gitster.g>
 cf. <CABPp-BGzU9KHGF1nipi2HZaa1AiikMKGGaapQzHVH06wO4V1ww@mail.gmail.com>
 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-18) 13 commits
 - cat-file: make remote-object-info allow-list adapt to the server
 - cat-file: add remote-object-info to batch-command
 - transport: add client support for object-info
 - serve: advertise object-info feature
 - protocol-caps: check object existence regardless of the attributes requested
 - fetch-pack: move fetch initialization
 - connect: make write_fetch_command_and_capabilities() more generic
 - fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 - fetch-pack: use unsigned int for hash_algo variable
 - fetch-pack: drop the static advertise_sid variable
 - t1006: extract helper functions into new 'lib-cat-file.sh'
 - cat-file: declare loop counter inside for()
 - transport-helper: fix memory leak of helper on disconnect

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.  Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Needs review.
 source: <20260718-ps-eric-work-rebase-v20-0-0c13962ac532@gmail.com>


* mm/diff-process-hunks (2026-07-15) 9 commits
 . line-log: consult diff process for range tracking
 . diff: consult diff process for --stat counts
 . blame: consult diff process for no-hunk detection
 . diff: bypass diff process with --no-ext-diff and in format-patch
 . diff: add long-running diff process via diff.<driver>.process
 . sub-process: separate process lifecycle from hashmap management
 . userdiff: add diff.<driver>.process config
 . xdiff: support external hunks via xpparam_t
 . gitattributes: document how external diff drivers relate to diff features

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Ejected for now, as it conflicts badly with 'mm/line-log-limited-ops'.

 Expecting a reroll.
 cf. <xmqq8q7aj3b0.fsf@gitster.g>
 cf. <CAC2QwmKRp90hmBAckug9PPvvD53Pi53q5csZhi15LRhzdQasQg@mail.gmail.com>
 source: <pull.2120.v5.git.1784149323.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-07-20) 4 commits
 - environment: move has_symlinks into repo_config_values
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: pass 'repo' to 'ce_mode_from_stat()'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from the 'core.filemode'
 configuration) has been migrated into 'struct repo_config_values' to
 tie it to a specific repository instance.

 Will merge to 'next'.
 cf. <alvNq8rXF/jofqUc@szeder.dev>
 cf. <xmqq8q7961xe.fsf@gitster.g>
 source: <20260720105335.3202013-1-cat@malon.dev>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response, stalled.
 cf. <xmqqik71t3nr.fsf@gitster.g>
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Waiting for response for too long, stalled.
 cf. <87cxwxofgv.fsf@emacs.iotcl.com>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-07-22) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Needs review.
 cf. <9b9b9a2c-dd0f-44f8-b80e-565eed9a55a8@gmail.com>
 cf. <xmqqik6an5t3.fsf@gitster.g>
 source: <pull.2285.v20.git.git.1784704238.gitgitgadget@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Waiting for response for too long, stalled.
 cf. <xmqq5x37h6fj.fsf@gitster.g>
 cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-14) 7 commits
  (merged to 'next' on 2026-07-19 at bebf13a239)
 + graph: add --[no-]graph-indent and log.graphIndent
 + graph: move config reading into graph_read_config()
 + graph: wrap cascading commits after 4 columns
 + graph: indent visual root in graph
 + graph: add a 2 commit buffer for lookahead
 + revision: add next_commit_to_show()
 + lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Will merge to 'master'.
 cf. <CA+J6zkQNzEAhhY74qDrOwfFVrshEF7YFxWRRkwE3ttJo15ZbAg@mail.gmail.com>
 source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 cf. <xmqqse5en8wz.fsf@gitster.g>
 cf. <xmqqv7al9rbj.fsf@gitster.g>
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 14%]

* Re: What's cooking in git.git (Jul 2026, #09)
  @ 2026-07-22 18:27 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-22 18:27 UTC (permalink / raw)
  To: Christian Couder; +Cc: git

Christian Couder <christian.couder@gmail.com> writes:

>> * cc/fast-import-usage (2026-07-16) 7 commits
>>  - fast-import: use struct option for usage string
>>  - fast-import: move command state globals into 'struct fast_import_state'
>>  - fast-import: introduce 'struct fast_import_state'
>>  - fast-import: localize 'i' into the 'for' loops using it
>>  - api-parse-options.adoc: document hidden and OPT_*_F option macros
>>  - api-parse-options.adoc: document per-option flags
>>  - parse-options: introduce OPT_HIDDEN_GROUP
>>
>>  The usage string of 'git fast-import' has been updated to use the
>>  'parse_options' API for displaying help, and its SYNOPSIS in the
>>  documentation has been standardized to match.
>>
>>  Waiting for response.
>>  cf. <xmqq4ihyehyb.fsf@gitster.g>
>>  source: <20260716165517.433849-1-christian.couder@gmail.com>
>
> I am having a vacation, so I will likely not be able to reply soon.
> Feel free to discard in the meantime.

I'll leave it as-is (unless somebody else comes in and crashes with
the changes in the topic badly, in which case I may eject one or the
other from my tree).  Enjoy your vacation.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jul 2026, #09)
@ 2026-07-21  2:19 12% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-07-21  2:19 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The fifth batch of topics have now graduated to the 'master' branch.

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]

* bc/rust-hash-cleanups (2026-07-18) 2 commits
 - rust: discard hash context when finished
 - hash: initialize context before cloning

 A few memory problems in the Rust interface to C hash functions have
 been corrected.  The 'Clone' implementation of 'CryptoHasher' now
 properly initializes the context before cloning, and its 'Drop'
 implementation now discards the context to prevent leaks.

 Will merge to 'next'.
 cf. <20260719080754.GA429688@coredump.intra.peff.net>
 source: <20260719010842.17991-1-sandals@crustytoothpaste.net>


* ja/doc-synopsis-style-yet-more (2026-07-19) 4 commits
 - doc: convert git-request-pull synopsis and options to new style
 - doc: convert git-send-email synopsis and options to new style
 - doc: convert git-format-patch synopsis and options to new style
 - doc: convert git-imap-send synopsis and options to new style

 Synopsis and options in the documentation for 'git format-patch',
 'git imap-send', 'git send-email', and 'git request-pull' have been
 updated to the modern style.

 Expecting a reroll.
 cf. <23179740.EfDdHjke4D@piment-oiseau>
 cf. <2418232.ElGaqSPkdT@piment-oiseau>
 source: <pull.2185.git.1784490878.gitgitgadget@gmail.com>


* hn/url-push-tracking (2026-07-20) 2 commits
 - remote: resolve URL-valued push tracking remotes
 - remote: pass repository to push tracking helper

 When the push remote is specified as a URL, the fetch refspec of a
 uniquely matching configured remote is now used to find and update
 the remote-tracking branch (e.g., '@{push}').

 Waiting for response.
 cf. <xmqq4ihtcx8g.fsf@gitster.g>
 cf. <xmqqfr1dcygh.fsf@gitster.g>
 source: <pull.2358.git.git.1784538618.gitgitgadget@gmail.com>

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

* bc/parse-options-exit-0-on-help (2026-07-07) 4 commits
  (merged to 'next' on 2026-07-10 at 775654e447)
 + parse-options: exit 0 on -h
 + rev-parse: have --parseopt callers exit 0 on --help
 + parse-options: add a separate case for help output on error
 + t1517: skip svn tests if svn is not installed

 Option parsing with 'git rev-parse --parseopt' and in most 'git'
 subcommands has been updated to exit with 0 (instead of 129) when the
 help option ('-h' or '--help') is requested directly by the user,
 aligning with standard Unix convention.

 Graduated to 'master'.
 cf. <20260708035930.GB41684@coredump.intra.peff.net>
 source: <20260708001557.3581080-1-sandals@crustytoothpaste.net>


* gr/t1410-reflog-exit-code (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at d0cf55ea54)
 + t1410-reflog.sh: avoid suppressing git's exit code in pipelines

 The pipelines in 't1410-reflog.sh' have been replaced with the
 'test_stdout_line_count' helper to avoid suppressing the exit code of
 'git' commands, ensuring failures are not hidden from the test suite.

 Graduated to 'master'.
 cf. <xmqqtsq8p18x.fsf@gitster.g>
 source: <20260709051229.40363-1-gatlavishweshwarreddy26@gmail.com>


* hf/unpack-trees-quadratic-scan (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-12 at 744f1aede4)
 + unpack-trees: avoid quadratic index scan in next_cache_entry()

 The cache-scanning loop in 'next_cache_entry()' has been optimized
 to avoid rescanning already-unpacked index entries, preventing a
 quadratic performance slow-down when diffing the working tree
 against a commit with a pathspec matching early index entries.

 Graduated to 'master'.
 cf. <xmqqpl0xqh3n.fsf@gitster.g>
 source: <pull.2353.v2.git.git.1783546933992.gitgitgadget@gmail.com>


* jc/relnotes-2.55-rust-fix (2026-07-07) 1 commit
  (merged to 'next' on 2026-07-10 at 444d202a75)
 + Rust: fix description in Release Notes to 2.55

 A description in the release notes for Git 2.55.0 has been
 retroactively updated to clarify that Rust support is enabled by
 default, but still optional, and will become mandatory in Git 3.0.

 Graduated to 'master'.
 source: <xmqqpl0y4rpg.fsf@gitster.g>


* jc/submitting-patches-abandoning (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at 41b9b65b23)
 + SubmittingPatches: document how to retract a topic

 The 'SubmittingPatches' document has been updated to explicitly
 describe the expectation for contributors to retract or abandon their
 patch series when they are no longer pursuing it.

 Graduated to 'master'.
 cf. <ak6U07K1dQPlXxIp@nixos>
 source: <xmqqpl0xv25e.fsf@gitster.g>


* js/coverity-fixes-null-safety (2026-07-10) 12 commits
  (merged to 'next' on 2026-07-12 at 8d093f411d)
 + shallow: give write_one_shallow() its own hex buffer
 + shallow: fix NULL dereference
 + bisect: ensure non-NULL `head` before using it
 + pack-bitmap: handle missing bitmap for base MIDX
 + revision: avoid dereferencing NULL in `add_parents_only()`
 + replay: die when --onto does not peel to a commit
 + bisect: handle NULL commit in `bisect_successful()`
 + mailsplit: move NULL check before first use of file handle
 + reftable/stack: guard against NULL list_file in stack_destroy
 + remote: guard `remote_tracking()` against NULL remote
 + diff: handle NULL return from repo_get_commit_tree()
 + diffcore-break: guard against NULLed queue entries in merge loop

 Various code paths have been hardened against potential NULL-pointer
 dereferences and invalid file descriptor accesses flagged by
 Coverity.

 Graduated to 'master'.
 cf. <xmqqa4ryg84e.fsf@gitster.g>
 source: <pull.2174.v2.git.1783683577.gitgitgadget@gmail.com>


* kk/commit-graph-topo-levels-fix (2026-07-09) 2 commits
  (merged to 'next' on 2026-07-12 at 295a5f9b34)
 + commit-graph: propagate topo_levels slab to all chain layers
 + commit-graph: add trace2 instrumentation for generation DFS

 The 'topo_levels' slab was propagated only to the topmost layer of a
 split commit-graph chain, causing topological levels for commits in
 base layers to be recomputed during incremental writes.  This has been
 corrected.

 Graduated to 'master'.
 cf. <alFu8gZURKhYr1VE@com-79390>
 source: <pull.2170.v2.git.1783609382.gitgitgadget@gmail.com>


* kk/commit-reach-find-all-fix (2026-06-29) 2 commits
  (merged to 'next' on 2026-07-10 at 0444c74d81)
 + commit-reach: guard !FIND_ALL early exit with generation ordering check
 + t6600: add test for merge-base early exit with clock skew
 (this branch is used by kk/merge-base-exhaustion.)

 The early-exit optimization in 'paint_down_to_common()' has been
 gated on the queue being generation-ordered, fixing a bug where
 'git merge-base' (without '--all') could return incorrect results
 on repositories with v1 commit graphs and clock skew.

 Graduated to 'master'.
 cf. <xmqqjyr5v1gu.fsf@gitster.g>
 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>


* kk/reftable-tombstone-quadratic-fix (2026-07-10) 2 commits
  (merged to 'next' on 2026-07-12 at 4e60bb0027)
 + reftable: fix quadratic behavior in the presence of tombstones
 + t/perf: add perf test for ref tombstone scenarios

 The performance of ref updates and reads using the 'reftable' backend
 in the presence of many deletion tombstone records has been optimized
 by removing the tombstone suppression flag from the merged iterator
 and instead skipping tombstones at higher-level call sites where
 iteration bounds are known.

 Graduated to 'master'.
 cf. <alECc90WZ9RPqMaA@pks.im>
 source: <pull.2166.v3.git.1783679767.gitgitgadget@gmail.com>


* mm/test-grep-lint (2026-07-05) 6 commits
  (merged to 'next' on 2026-07-10 at 1916c07bf5)
 + t: add greplint to detect bare grep assertions
 + t: convert grep assertions to test_grep
 + t: fix Lexer line count for $() inside double-quoted strings
 + t: extract chainlint's parser into shared module
 + t: fix grep assertions missing file arguments
 + t/README: document test_grep helper

 The test suite has been updated to use the 'test_grep' helper instead
 of bare 'grep' for test assertions, allowing file contents to be
 printed on failure for easier debugging.  A new 'greplint' linter has
 been introduced to detect and prevent new bare 'grep' assertions from
 being added to the test suite.

 Graduated to 'master'.
 cf. <xmqqtsqedxmt.fsf@gitster.g>
 source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>


* ps/reftable-hardening (2026-07-03) 12 commits
  (merged to 'next' on 2026-07-10 at b8f4dd0ab9)
 + reftable/table: fix OOB read on truncated table
 + reftable/table: fix NULL pointer access when seeking to bogus offsets
 + reftable/block: fix OOB read with bogus restart offset
 + reftable/block: fix use of uninitialized memory when binsearch fails
 + reftable/block: fix OOB read with bogus restart count
 + reftable/block: fix OOB read with bogus block size
 + reftable/block: fix OOB write with bogus inflated log size
 + t/unit-tests: introduce test helper to write reftable blocks
 + reftable/record: don't abort when decoding invalid ref value type
 + reftable/basics: fix OOB read on binary search of empty range
 + oss-fuzz: add fuzzer for parsing reftables
 + meson: support building fuzzers with libFuzzer

 The 'reftable' code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Graduated to 'master'.
 cf. <877bn5obz9.fsf@emacs.iotcl.com>
 source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>


* ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
  (merged to 'next' on 2026-07-10 at 1691a942ab)
 + setup: mark `set_git_work_tree()` as file-local
 + setup: pass worktree to `init_db()`
 + setup: drop redundant configuration of `startup_info->have_repository`
 + setup: make repository discovery self-contained
 + setup: propagate prefix via repository discovery
 + setup: drop static `cwd` variable
 + setup: move prefix into repository
 + setup: embed repository format in discovery
 + setup: introduce explicit repository discovery
 + setup: split up concerns of `setup_git_env_internal()`
 + setup: unify setup of shallow file
 + setup: mark bogus worktree in `apply_repository_format()`
 + setup: rename `check_repository_format_gently()`
 + Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup

 The repository discovery and repository configuration phases, which
 were previously intertwined in 'setup.c', have been split.  Repository
 discovery has been updated to populate a 'struct repo_discovery'
 without modifying the repository state, which is then taken by
 repository configuration to initialize the repository, paving the way
 for clean unification of repository configuration.

 Graduated to 'master'.
 cf. <87h5m9om0j.fsf@emacs.iotcl.com>
 source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>


* sn/osxkeychain-rust-universal (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-10 at fe82b5d188)
 + contrib: wire up osxkeychain in contrib/Makefile on macOS
 + Makefile: support universal macOS builds via RUST_TARGETS
 + Makefile: add $(RUST_LIB) prerequisite to osxkeychain

 The build system has been updated to support building universal macOS
 binaries when 'Rust' is enabled, by compiling separate static archives
 for each target triple listed in 'RUST_TARGETS' and combining them
 using the macOS 'lipo' tool.  The 'git-credential-osxkeychain' helper
 has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.

 Graduated to 'master'.
 cf. <xmqq4ii9teym.fsf@gitster.g>
 source: <pull.2288.v8.git.git.1783480879.gitgitgadget@gmail.com>


* tc/bundle-uri-empty-fix (2026-07-08) 2 commits
  (merged to 'next' on 2026-07-12 at 9da32fdaf7)
 + bundle-uri: stop sending invalid bundle configuration
 + bundle-uri: drain remaining response on invalid bundle-uri lines

 The client-side parser of the server-advertised bundle-URI list has
 been updated to drain the remaining response in order to avoid
 protocol desynchronization when the server sends a misconfigured list.
 Also, the server-side has been taught to omit empty configuration
 values instead of sending invalid key-value lines.

 Graduated to 'master'.
 cf. <xmqqtsq9qj5k.fsf@gitster.g>
 source: <20260708-toon-bundle-uri-no-uri-v2-0-09a03d8db556@iotcl.com>


* ty/migrate-ignorecase (2026-06-19) 2 commits
  (merged to 'next' on 2026-07-12 at 39e9fdb93f)
 + config: use repo_ignore_case() to access core.ignorecase
 + environment: move ignore_case into repo_config_values

 The global configuration variable 'ignore_case' (representing the
 'core.ignorecase' configuration) has been migrated into 'struct
 repo_config_values' to tie it to a specific repository instance.

 Graduated to 'master'.
 cf. <xmqqechaga7p.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
  (merged to 'next' on 2026-07-12 at adeaa999b6)
 + MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Graduated to 'master'.
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>

--------------------------------------------------
[Stalled]

* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll for too long, stalled.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response for too long, stalled.
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Waiting for response for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* tl/gitweb-shorten-hashes-with-modes (2026-07-17) 1 commit
 - gitweb: shorten index hashes with trailing file modes

 The object ID shortening and linking in the 'commitdiff' view of
 'gitweb' has been corrected to work even when the index line carries
 a trailing file mode.

 Needs review.
 source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>


* kj/repo-info-more-path-keys (2026-07-17) 7 commits
 - repo: add path.git-prefix path key
 - repo: add path.grafts with absolute and relative suffix formatting
 - repo: add path.index with absolute and relative suffix formatting
 - repo: add path.hooks with absolute and relative suffix formatting
 - repo: add path.objects with absolute and relative suffix formatting
 - repo: add path.superproject-working-tree with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Waiting for response.
 cf. <845D6852-98F5-4168-82CD-90B3B476BCF5@gmail.com>
 cf. <DB49CF15-4980-4213-8463-4C0FE2EC8438@gmail.com>
 source: <20260717133015.32040-1-jayatheerthkulkarni2005@gmail.com>


* sk/userdiff-swift (2026-07-17) 1 commit
 - userdiff: add support for Swift

 Userdiff patterns for Swift have been added, with support for
 Swift-specific constructs such as attributes, modifiers, failable
 initializers, and generics.

 Expecting a reroll.
 cf. <20260720095335.66241-1-diy2903@gmail.com>
 source: <20260717140232.6722-1-diy2903@gmail.com>


* ps/odb-move-loose-object-writing (2026-07-17) 10 commits
 - object-file: move logic to write loose objects
 - object-file: move `force_object_loose()`
 - object-file: force objects loose via generic interface
 - object-file: fix memory leak in `force_object_loose()`
 - odb: support setting mtime when writing objects
 - odb: lift object existence check out of the "loose" backend
 - odb: compute object hash in `odb_write_object_ext()`
 - t/u-odb-inmemory: implement wrapper for writing objects
 - odb: compute compat object ID in `odb_write_object_ext()`
 - Merge branch 'jt/receive-pack-use-odb-transactions' into HEAD
 (this branch uses jt/receive-pack-use-odb-transactions.)

 The logic to write loose objects has been refactored and moved from
 'object-file.c' to the loose backend source file 'odb/source-loose.c',
 making the loose backend more self-contained.  This is achieved by
 first refactoring 'force_object_loose()' to use generic ODB write
 interfaces instead of loose-backend internals.

 Needs review.
 source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>


* pw/rebase-fixup-fixes (2026-07-17) 2 commits
 - rebase: remember fixup -c after skipping fixup/squash
 - rebase -i: fix counting of fixups after rebase --skip

 Two bugs in how 'git rebase' handles skipped 'fixup' and 'squash'
 commands have been fixed.  One bug caused an incorrect commit count to
 be shown in the template message when multiple commands were skipped,
 and another caused the editor not to be opened when the final command
 in a chain containing 'fixup -c' was skipped.

 Needs review.
 source: <cover.1784304378.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-bloom (2026-07-17) 4 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters.  It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even when
 wildcard pathspecs are used.

 Expecting a reroll.
 cf. <87cxwl1lb4.fsf@emacs.iotcl.com>
 source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>


* hn/bisect-reset-when-found (2026-07-20) 2 commits
 - bisect: add --reset-when-found to leave when done
 - bisect: let bisect_reset() optionally check out quietly

 The 'git bisect' command has been taught a
 '--reset-when-found[=<where>]' option that tells the command to
 automatically run 'git bisect reset' to jump back to the original
 state or to the found culprit.

 Will merge to 'next'?
 cf. <xmqqldb5d1d9.fsf@gitster.g>
 source: <pull.2335.v3.git.git.1784538619.gitgitgadget@gmail.com>


* js/coverity-unchecked-returns-fix (2026-07-14) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like 'curl_easy_duphandle()', 'deflateInit()',
 'lseek()', 'dup()', and 'strbuf_getline_lf()', resolving several
 Coverity warnings about unchecked returns.

 Waiting for response.
 cf. <xmqqldbdqciy.fsf@gitster.g>
 cf. <xmqqh5m1qcfh.fsf@gitster.g>
 cf. <alcvmX3b6y92KE4y@pks.im>
 cf. <alcvnm0xiOv5W0w_@pks.im>
 source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>


* jk/diff-relative-cached-unmerged (2026-07-14) 1 commit
 - diff: ignore unmerged paths outside prefix with --relative --cached

 'git diff --relative' running with '--cached' has been corrected to
 avoid a segfault when encountering unmerged paths outside the
 prefix.

 Needs review.
 source: <20260715060523.GA517940@coredump.intra.peff.net>


* jc/submodule-helper-avoid-zu (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-19 at b12d5d76f5)
 + submodule--helper: avoid use of %zu for now

 An accidental use of the '%zu' format specifier in 'git
 submodule--helper' has been corrected to use 'PRIuMAX' and cast the
 value to 'uintmax_t' to avoid portability issues.

 Will merge to 'master'.
 source: <xmqq4ii0ko9t.fsf@gitster.g>


* sk/t7614-do-not-hide-git-exit-status (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-16 at 0d143986e7)
 + t7614: avoid hiding git's exit code in a pipe

 The test script 't/t7614-merge-signoff.sh' has been updated to avoid
 suppressing the exit code of 'git' commands in a pipe.

 Will merge to 'master'.
 cf. <xmqq1pd4m4ea.fsf@gitster.g>
 source: <20260715113344.3490-1-diy2903@gmail.com>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like 'gettimeofday()' and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Waiting for response.
 cf. <xmqqzezlhgyo.fsf@gitster.g>
 cf. <al4yrXXoZiHLwSvE@com-79390>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
 - revision: make get_commit_action() a pure predicate

 The 'get_commit_action()' function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 'simplify_commit()'.  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Needs review.
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* rs/remote-curl-simplify-push-specs (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-19 at ff1b5528ba)
 + remote-curl: simplify passing of push specs

 The passing of push destination specifications in the 'remote-curl'
 helper has been simplified by removing the explicit 'count' parameter
 and relying on the NULL-termination of the array.

 Will merge to 'master'.
 source: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de>


* kk/no-walk-pathspec-fix (2026-07-16) 2 commits
  (merged to 'next' on 2026-07-16 at 4dd6fb0e7e)
 + revision: fix --no-walk path filtering regression
 + Merge branch 'kk/streaming-walk-pqueue' into kk/no-walk-pathspec-fix

 The 'git rev-list --no-walk' command has been corrected to restore
 pathspec filtering, which was lost when the streaming walk was
 refactored.

 Will merge to 'master'.
 source: <pull.2181.git.1784198879711.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-07-16) 7 commits
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 'parse_options' API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Waiting for response.
 cf. <xmqq4ihyehyb.fsf@gitster.g>
 source: <20260716165517.433849-1-christian.couder@gmail.com>


* ps/copy-wo-the-repository (2026-07-16) 1 commit
  (merged to 'next' on 2026-07-20 at 9e38da0efc)
 + copy: drop dependency on `the_repository`

 The 'copy_file()' and 'copy_file_with_time()' functions have been
 refactored to take a repository parameter, allowing the removal of the
 implicit dependency on the global 'the_repository' variable in
 'copy.c'.

 Will merge to 'master'.
 cf. <b0df688a-3b26-48f6-8b1c-98530483885e@gmail.com>
 cf. <xmqqo6g54k7m.fsf@gitster.g>
 source: <20260716-pks-copy-wo-the-repository-v2-1-8f5e32942929@pks.im>


* ps/refspec-wo-the-repository (2026-07-16) 3 commits
  (merged to 'next' on 2026-07-20 at 31044c3fc9)
 + refspec: stop depending on `the_repository`
 + refspec: let callers pass in hash algorithm when parsing items
 + refspec: group related structures and functions

 The dependency on the global 'the_repository' variable in the
 'refspec.c' API has been removed by passing the hash algorithm
 explicitly to refspec-parsing functions and storing it in 'struct
 refspec'.

 Will merge to 'master'.
 source: <20260716-pks-refspec-wo-the-repository-v1-0-aa40844d067f@pks.im>


* ps/writev (2026-07-16) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for 'writev(3p)' has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to 'write(3p)' in 'send_sideband()' and 'cat_blob()' have been
 refactored to use 'writev(3p)' wrappers to reduce syscall overhead.

 Waiting for response.
 cf. <f8050598-392f-44c9-8d66-0454740a7a12@kdbg.org>
 cf. <a2676ec6-39d5-4220-8549-10a17daec668@hogyros.de>
 cf. <xmqqfr1ig0hv.fsf@gitster.g>
 source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


* sc/wt-status-avoid-quadratic-insertion (2026-07-18) 1 commit
  (merged to 'next' on 2026-07-20 at 9330d42a4a)
 + wt-status: avoid repeated insertion for untracked paths

 The enumeration of untracked and ignored files in 'git status' has
 been optimized by avoiding quadratic complexity insertion into string
 lists, reducing the construction cost from O(n^2) to O(n log n).

 Will merge to 'master'.
 cf. <20260718083828.GE22588@coredump.intra.peff.net>
 source: <20260718081449.26747-1-sahityajb@gmail.com>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit
  (merged to 'next' on 2026-07-16 at b1dbc0cb3f)
 + fast-export: standardize usage string and SYNOPSIS

 The usage string and SYNOPSIS for 'git fast-export' have been
 standardized to make them consistent with each other and with other
 commands.

 Will merge to 'master'.
 cf. <alX5Nl8uX4ctVqo3@pks.im>
 cf. <xmqq4ii228dd.fsf@gitster.g>
 source: <20260713124153.245268-1-christian.couder@gmail.com>


* sk/t1100-modernize (2026-07-14) 2 commits
  (merged to 'next' on 2026-07-16 at 621ca4ca5f)
 + t1100: move creation of expected output into setup test
 + t1100: modernize test style

 The test script 't/t1100-commit-tree-options.sh' has been modernized
 by converting test cases to the modern style (using single quotes and
 tab indentation) and moving the creation of the expected file inside
 the setup test so it runs under the protection of the test harness.

 Will merge to 'master'.
 cf. <xmqq4ii1v7x0.fsf@gitster.g>
 source: <20260714122033.61947-1-diy2903@gmail.com>


* tn/packfile-uri-concurrency (2026-07-13) 2 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: use unique tempfiles for packfile URI downloads

 Concurrent downloads of packfiles via packfile URIs have been
 supported by using unique temporary files, preventing corruption when
 multiple processes fetch the same pack.  The 'fetch-pack' command has
 also been updated to tolerate pre-existing '.keep' files.

 Expecting a reroll.
 cf. <alaAi4vNwi-KabYV@com-76773>
 source: <alVn-QmK3K91_tkH@com-76773>


* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-16 at f258ce38ba)
 + strbuf: avoid redundant reset in strbuf_getwholeline()

 A redundant 'strbuf_reset()' call in the 'HAVE_GETDELIM' path of
 'strbuf_getwholeline()' has been removed, as 'getdelim()' overwrites
 the buffer and the length is updated afterward.

 Will merge to 'master'.
 cf. <xmqq8q7dv82b.fsf@gitster.g>
 cf. <20260714214941.GB4095533@coredump.intra.peff.net>
 source: <d4ffe7fb-f782-4f06-9e3b-f72729d1e225@web.de>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
 - use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
 - tempfile: stop using the_repository
 - lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
 - refs/packed: use repo_create_tempfile()
 - tempfile: add repo_create_tempfile{,_mode}()

 The tempfile and lockfile APIs have been refactored to stop depending
 on the 'the_repository' global variable, and their callers have been
 updated to use the repository-aware variants.

 Will merge to 'next'?
 cf. <aldYW4TPUqgDMRcf@pks.im>
 cf. <3c0a8031-7082-422a-b474-938418682b60@web.de>
 cf. <xmqqmrvmn6a5.fsf@gitster.g>
 source: <20260714175956.54601-1-l.s.r@web.de>


* js/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* cl/b4-cover-change-id (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at 15c7ad9a3f)
 + b4: include change-id in cover template

 The in-tree 'b4' cover letter template has been updated to include the
 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
 the required tracking information for subsequent runs.

 Will merge to 'master'.
 source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>


* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at dd2c5795b7)
 + object-file: fix closing object stream twice

 The stream-based object signature verification path has been
 corrected to avoid double-closing the stream on read errors.

 Will merge to 'master'.
 source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Ejected due to conflicts with 'pw/rebase-drop-notes-with-commit'.

 Waiting for response.
 cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
  (merged to 'next' on 2026-07-15 at 55ef0fb748)
 + submodule--helper: accept '-i' shorthand for update --init

 The '-i' shorthand for the '--init' option, which was accepted by the
 'git submodule update' command until it was broken in a modernization
 of the option-parsing code, has been restored.

 Will merge to 'master'.
 cf. <xmqq8q7ltf51.fsf@gitster.g>
 source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
 - odb: make optimizations pluggable
 - builtin/gc: fix signedness issues in ODB-related functionality
 - builtin/gc: refactor ODB optimizations to operate on "files" source
 - builtin/gc: introduce `odb_optimize_required()`
 - builtin/gc: move geometric repacking into `odb_optimize()`
 - builtin/gc: introduce object database optimization options
 - builtin/gc: inline config values specific to the "files" backend
 - builtin/gc: make repack arguments self-contained
 - builtin/gc: extract object database optimizations into separate function
 - builtin/gc: move worktree and rerere tasks before object optimizations
 - odb: run "pre-auto-gc" hook for all maintenance tasks
 - t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Waiting for response.
 cf. <xmqqwluyyhv1.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* ps/odb-for-each-object-filter (2026-07-14) 10 commits
  (merged to 'next' on 2026-07-16 at 8f30e80d33)
 + builtin/cat-file: filter objects via object database
 + odb: introduce object filters to `odb_for_each_object()`
 + pack-bitmap: introduce function to open bitmap for a single source
 + pack-bitmap: drop `_1` suffix from functions that open bitmaps
 + pack-bitmap: iterate object sources when opening bitmaps
 + pack-bitmap: allow aborting iteration of bitmapped objects
 + pack-objects: drop unused return value from add_object_entry()
 + pack-bitmap: mark object filter as `const`
 + odb/source-packed: improve lookup when enumerating objects
 + Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter

 The object database enumeration interface 'odb_for_each_object()'
 has been taught to accept object filters, allowing the underlying
 backends to optimize the traversal by using reachability bitmaps
 when available.  'git cat-file --batch-all-objects' has been updated
 to use this generic interface, simplifying its code and avoiding
 direct access to ODB backend internals.

 Will merge to 'master'.
 cf. <874ii0h2uf.fsf@emacs.iotcl.com>
 source: <20260715-pks-odb-for-each-object-filter-v4-0-616d7adf7fb7@pks.im>


* ps/refs-wo-the-repository (2026-07-15) 7 commits
  (merged to 'next' on 2026-07-19 at 12685f410c)
 + refs: remove remaining uses of `the_repository`
 + worktree: pass repository to public functions
 + worktree: pass repository to file-local functions
 + worktree: refactor code to use available repositories
 + refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 + refs/packed: de-globalize handling of "core.packedRefsTimeout"
 + Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository

 The ref subsystem and the worktree API have been refactored to pass a
 repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable.  As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Will merge to 'master'.
 source: <20260716-pks-refs-wo-the-repository-v3-0-db0a804e0224@pks.im>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the 'sparse-index' collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation, by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Will merge to 'next'.
 cf. <xmqqa4s38rbe.fsf@gitster.g>
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* ml/t9811-replace-test-f (2026-07-11) 2 commits
  (merged to 'next' on 2026-07-15 at ffb7fcad15)
 + t9811: replace 'test -f' and '! test -f' with 'test_path_*'
 + t9811: break long && chains into multiple lines

 The test script 't/t9811-git-p4-label-import.sh' has been
 modernized to use 'test_path_is_file' and 'test_path_is_missing'
 instead of raw 'test -f' and '! test -f' calls.

 Will merge to 'master'.
 cf. <alTHrUEh4_O5ROeu@pks.im>
 source: <20260711160447.99708-1-marcelomlage@usp.br>


* cl/conditional-config-on-worktree-path (2026-07-09) 2 commits
  (merged to 'next' on 2026-07-15 at 86ca33c437)
 + config: add "worktree" and "worktree/i" includeIf conditions
 + config: refactor include_by_gitdir() into include_by_path()

 The '[includeIf "condition"]' conditional inclusion facility for
 configuration files has been taught to use the location of the
 worktree in its condition.

 Will merge to 'master'.
 cf. <alTJCTKR9jOWfgbk@pks.im>
 source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use 'test_path_is_file', 'test_path_is_dir', and
 'test_path_is_missing' helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* pw/rebase-drop-notes-with-commit (2026-07-15) 9 commits
  (merged to 'next' on 2026-07-20 at 5475c9f935)
 + sequencer: do not record dropped commits as rewritten
 + sequencer: use an enum to represent result of picking a commit
 + sequencer: simplify pick_one_commit()
 + sequencer: remove unnecessary condition in pick_one_commit()
 + sequencer: simplify handling of fixup with conflicts
 + sequencer: remove unnecessary "or" in pick_one_commit()
 + sequencer: never reschedule on failed commit
 + sequencer: be more careful with external merge
 + t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected.  When
 a commit is dropped during rebase (e.g., because its changes are
 already upstream), it is no longer recorded as rewritten, preventing
 its notes from being copied to an unrelated commit.

 Will merge to 'master'.
 cf. <xmqqy0f5d25g.fsf@gitster.g>
 source: <cover.1784128921.git.phillip.wood@dunelm.org.uk>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response.
 cf. <xmqq8q8068f7.fsf@gitster.g>
 cf. <xmqqpl1d56dd.fsf@gitster.g>
 source: <cover.1782500507.git.me@ttaylorr.com>


* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
  (merged to 'next' on 2026-07-15 at aba57e3365)
 + builtin/receive-pack: stage incoming objects via ODB transactions
 + builtin/receive-pack: drop redundant tmpdir env
 + odb/transaction: introduce ODB transaction flags
 + odb/transaction: add transaction env interface
 + odb/transaction: propagate commit errors
 + odb/transaction: propagate begin errors
 + object-file: propagate files transaction errors
 + object-file: drop check for inflight transactions
 + object-file: embed transaction flush logic in commit function
 + object-file: rename files transaction fsync function
 + object-file: rename files transaction prepare function
 (this branch is used by ps/odb-move-loose-object-writing.)

 'git receive-pack' has been refactored to use ODB transaction
 interfaces instead of directly managing 'tmp_objdir' for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Will merge to 'master'.
 cf. <alR1P-RGZNmjyiUE@pks.im>
 source: <20260710163722.2962278-1-jltobler@gmail.com>


* ty/migrate-excludes-file (2026-07-13) 10 commits
 - repository: adjust the comment of config_values_private_
 - environment: move object_creation_mode into repo_config_values
 - environment: move autorebase into repo_config_values
 - environment: move push_default into repo_config_values
 - environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 - environment: move askpass_program into repo_config_values
 - environment: move pager_program into repo_config_values
 - environment: move editor_program into repo_config_values
 - environment: move excludes_file into repo_config_values
 - repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Needs review.
 cf. <xmqq8q7961xe.fsf@gitster.g>
 source: <20260714032525.1611141-1-cat@malon.dev>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Ejected for now, as it causes too many evil merges with other topics.

 Needs review.
 cf. <alR9GDNTbdjWB4dq@szeder.dev>
 cf. <2d455ecf-972e-e3ce-54bc-683050c04282@gmx.de>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-20) 5 commits
 - history: re-edit a squash with every message
 - sequencer: share the squash message marker helpers and flags
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 source: <pull.2337.v10.git.git.1784536024.gitgitgadget@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
  (merged to 'next' on 2026-07-19 at 5b640e33a1)
 + commit-reach: die on contains walk errors
 + ref-filter: memoize --contains with generations
 + commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have been
 optimized to use the memoized commit traversal previously used only by
 'git tag --contains', significantly speeding up connectivity checks
 across many candidate refs with shared history.

 Will merge to 'master'.
 cf. <20260716091924.GB1212956@coredump.intra.peff.net>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-09 at 371c2e9c3b)
 + replay: offer an option to linearize the commit topology
 + replay: resolve the replay base outside pick_regular_commit()
 + replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 On hold, waiting for response from the author.
 cf. <xmqq5x2qz42z.fsf@gitster.g>
 cf. <CABPp-BGzU9KHGF1nipi2HZaa1AiikMKGGaapQzHVH06wO4V1ww@mail.gmail.com>
 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-18) 13 commits
 - cat-file: make remote-object-info allow-list adapt to the server
 - cat-file: add remote-object-info to batch-command
 - transport: add client support for object-info
 - serve: advertise object-info feature
 - protocol-caps: check object existence regardless of the attributes requested
 - fetch-pack: move fetch initialization
 - connect: make write_fetch_command_and_capabilities() more generic
 - fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 - fetch-pack: use unsigned int for hash_algo variable
 - fetch-pack: drop the static advertise_sid variable
 - t1006: extract helper functions into new 'lib-cat-file.sh'
 - cat-file: declare loop counter inside for()
 - transport-helper: fix memory leak of helper on disconnect

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.  Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Needs review.
 source: <20260718-ps-eric-work-rebase-v20-0-0c13962ac532@gmail.com>


* mm/diff-process-hunks (2026-07-15) 9 commits
 . line-log: consult diff process for range tracking
 . diff: consult diff process for --stat counts
 . blame: consult diff process for no-hunk detection
 . diff: bypass diff process with --no-ext-diff and in format-patch
 . diff: add long-running diff process via diff.<driver>.process
 . sub-process: separate process lifecycle from hashmap management
 . userdiff: add diff.<driver>.process config
 . xdiff: support external hunks via xpparam_t
 . gitattributes: document how external diff drivers relate to diff features

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Ejected for now, as it conflicts badly with 'mm/line-log-limited-ops'.

 Expecting a reroll.
 cf. <xmqq8q7aj3b0.fsf@gitster.g>
 cf. <CAC2QwmKRp90hmBAckug9PPvvD53Pi53q5csZhi15LRhzdQasQg@mail.gmail.com>
 source: <pull.2120.v5.git.1784149323.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-07-20) 4 commits
 - environment: move has_symlinks into repo_config_values
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: pass 'repo' to 'ce_mode_from_stat()'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from the 'core.filemode'
 configuration) has been migrated into 'struct repo_config_values' to
 tie it to a specific repository instance.

 Needs review.
 source: <20260720105335.3202013-1-cat@malon.dev>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response, stalled.
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Waiting for response for too long, stalled.
 cf. <87cxwxofgv.fsf@emacs.iotcl.com>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-07-14) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Expecting a reroll.
 cf. <xmqqtspvptqc.fsf@gitster.g>
 cf. <CAHwyqnXdaPeO12+p=_+_ttrknV0-VqTMnH-suS66yZ4stsBKnQ@mail.gmail.com>
 source: <pull.2285.v19.git.git.1784053493.gitgitgadget@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Waiting for response for too long, stalled.
 cf. <xmqq5x37h6fj.fsf@gitster.g>
 cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-14) 7 commits
  (merged to 'next' on 2026-07-19 at bebf13a239)
 + graph: add --[no-]graph-indent and log.graphIndent
 + graph: move config reading into graph_read_config()
 + graph: wrap cascading commits after 4 columns
 + graph: indent visual root in graph
 + graph: add a 2 commit buffer for lookahead
 + revision: add next_commit_to_show()
 + lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Will merge to 'master'.
 cf. <CA+J6zkQNzEAhhY74qDrOwfFVrshEF7YFxWRRkwE3ttJo15ZbAg@mail.gmail.com>
 source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 cf. <xmqqse5en8wz.fsf@gitster.g>
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 12%]

* What's cooking in git.git (Jul 2026, #08)
@ 2026-07-19  7:49 11% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-19  7:49 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The fourth batch of topics have now graduated to the 'master'
branch.

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]

* tl/gitweb-shorten-hashes-with-modes (2026-07-17) 1 commit
 - gitweb: shorten index hashes with trailing file modes

 The object ID shortening and linking in the 'commitdiff' view of
 'gitweb' has been corrected to work even when the index line carries
 a trailing file mode.

 Needs review.
 source: <SA1PR10MB9977150C823C0751E53B150D5AF1C62@SA1PR10MB997715.namprd10.prod.outlook.com>


* kj/repo-info-more-path-keys (2026-07-17) 7 commits
 - repo: add path.git-prefix path key
 - repo: add path.grafts with absolute and relative suffix formatting
 - repo: add path.index with absolute and relative suffix formatting
 - repo: add path.hooks with absolute and relative suffix formatting
 - repo: add path.objects with absolute and relative suffix formatting
 - repo: add path.superproject-working-tree with absolute and relative suffixes
 - repo: add path.toplevel with absolute and relative suffix formatting

 The 'git repo info' command has been taught more keys to output
 paths of various repository components (such as the working tree
 root, superproject working tree, object database, etc.), supporting
 both absolute and relative path formats.

 Needs review.
 source: <20260717133015.32040-1-jayatheerthkulkarni2005@gmail.com>


* sk/userdiff-swift (2026-07-17) 1 commit
 - userdiff: add support for Swift

 Userdiff patterns for Swift have been added, with support for
 Swift-specific constructs such as attributes, modifiers, failable
 initializers, and generics.

 Waiting for response.
 cf. <2a3a73c5-5e90-44a3-bf6a-6e98ce5e5a59@kdbg.org>
 source: <20260717140232.6722-1-diy2903@gmail.com>


* ps/odb-move-loose-object-writing (2026-07-17) 10 commits
 - object-file: move logic to write loose objects
 - object-file: move `force_object_loose()`
 - object-file: force objects loose via generic interface
 - object-file: fix memory leak in `force_object_loose()`
 - odb: support setting mtime when writing objects
 - odb: lift object existence check out of the "loose" backend
 - odb: compute object hash in `odb_write_object_ext()`
 - t/u-odb-inmemory: implement wrapper for writing objects
 - odb: compute compat object ID in `odb_write_object_ext()`
 - Merge branch 'jt/receive-pack-use-odb-transactions' into HEAD
 (this branch uses jt/receive-pack-use-odb-transactions.)

 The logic to write loose objects has been refactored and moved from
 'object-file.c' to the loose backend source file 'odb/source-loose.c',
 making the loose backend more self-contained. This is achieved by
 first refactoring 'force_object_loose()' to use generic ODB write
 interfaces instead of loose-backend internals.

 Needs review.
 source: <20260717-pks-odb-move-loose-object-writing-v1-0-46446a3cb5b7@pks.im>


* pw/rebase-fixup-fixes (2026-07-17) 2 commits
 - rebase: remember fixup -c after skipping fixup/squash
 - rebase -i: fix counting of fixups after rebase --skip

 Two bugs in how 'git rebase' handles skipped 'fixup' and 'squash'
 commands have been fixed. One bug caused an incorrect commit count
 to be shown in the template message when multiple commands were
 skipped, and another caused the editor not to be opened when the
 final command in a chain containing 'fixup -c' was skipped.

 Needs review.
 source: <cover.1784304378.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-bloom (2026-07-17) 4 commits
 - last-modified: keep per-path Bloom filters for wildcard pathspecs
 - last-modified: check pathspec against Bloom filter first
 - revision: expose check for paths maybe changed in Bloom filter
 - revision: move bloom keyvec precondition into function

 The 'git last-modified' command has been optimized by using Bloom
 filters. It now reuses revision walk filtering logic from 'git log'
 to pre-filter commits, and maintains per-path Bloom filters even
 when wildcard pathspecs are used.

 Expecting a reroll.
 cf. <20260718083757.GD22588@coredump.intra.peff.net>
 cf. <20260718081407.GC22588@coredump.intra.peff.net>
 cf. <20260718075700.GB22588@coredump.intra.peff.net>
 cf. <87cxwl1lb4.fsf@emacs.iotcl.com>
 source: <20260717-toon-speed-up-last-modified-v1-0-410418f18614@iotcl.com>


* hn/bisect-auto-reset (2026-07-17) 3 commits
 - bisect: add --auto-reset to leave when done
 - bisect: let bisect_reset() optionally check out quietly
 - bisect: read run output from the open descriptor

 The 'git bisect' command has been taught a '--auto-reset[=<where>]'
 option that tells the command to automatically run 'git bisect reset'
 to jump back to the original state or to the found culprit.

 Waiting for response.
 cf. <1139ae20-f08b-4cf2-b779-42328831e13e@kdbg.org>
 cf. <b79a479b-d279-4ac9-a368-6eb8edfed937@kdbg.org>
 source: <pull.2335.v2.git.git.1784312854.gitgitgadget@gmail.com>

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

* ih/precompose-flex-array (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at 737a87f65e)
 + precompose_utf8: use a flex array for d_name

 The UTF-8 precomposition wrapper on macOS has been updated to use a
 flexible array member to represent the name of a directory entry,
 preventing fortified libc checks from failing when the name is
 reallocated to be larger than 'NAME_MAX' bytes.

 Graduated to 'master'.
 cf. <20260703050800.GA29216@tb-raspi4>
 source: <20260704233724.16928-1-ihar.hrachyshka@gmail.com>


* jk/git-hash-cleanups (2026-07-07) 8 commits
  (merged to 'next' on 2026-07-09 at 12a4856545)
 + hash: check ctx->active flag in all wrapper functions
 + http: use idempotent git_hash_discard()
 + csum-file: use idempotent git_hash_discard()
 + hash: make git_hash_discard() idempotent
 + hash: document function pointers and wrappers
 + hash: convert remaining direct function calls
 + hash: use git_hash_init() consistently
 + Merge branch 'jk/hash-algo-leak-fixes' into jk/git-hash-cleanups
 (this branch uses jk/hash-algo-leak-fixes.)

 The 'git_hash_*()' wrappers have been updated to be used consistently
 across the codebase instead of direct calls to members of 'struct
 git_hash_algo', and 'git_hash_discard()' has been made idempotent to
 simplify cleanups.

 Graduated to 'master'.
 cf. <ak4E4-jmgYFSI75O@pks.im>
 source: <20260708035235.GA41491@coredump.intra.peff.net>


* jk/hash-algo-leak-fixes (2026-07-02) 9 commits
  (merged to 'next' on 2026-07-09 at 7db7b74972)
 + hash: add platform-specific discard functions
 + hash: fix memory leak copying sha256 gcrypt handles
 + http: discard hash in dumb-http http_object_request
 + check_stream_oid(): discard hash on read error
 + patch-id: discard hash when done
 + csum-file: provide a function to release checkpoints
 + csum-file: always finalize or discard hash
 + hash: add discard primitive
 + csum-file: drop discard_hashfile()
 (this branch is used by jk/git-hash-cleanups.)

 Various code paths that initialize a cryptographic hash context but
 bail out or finish without calling 'git_hash_final()' have been taught
 to call 'git_hash_discard()' to release allocated resources, fixing
 memory leaks when Git is built with non-default backends like
 'OpenSSL' or 'libgcrypt'.

 Graduated to 'master'.
 cf. <aktIIKuReMxJmDsi@pks.im>
 source: <20260702075234.GA1548258@coredump.intra.peff.net>


* js/ci-dockerized-pid-limit (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at cd80e673a5)
 + ci(dockerized): raise the PID limit for private repositories

 Dockerized CI jobs running in private GitHub repositories have been
 adjusted to use explicit process and file limits, preventing resource
 exhaustion errors on private runners.

 Graduated to 'master'.
 cf. <xmqqh5medmzh.fsf@gitster.g>
 source: <pull.2164.v2.git.1783155124926.gitgitgadget@gmail.com>


* js/coverity-fixes (2026-07-05) 12 commits
  (merged to 'next' on 2026-07-09 at 1823fe297c)
 + mingw: make `exit_process()` own the process handle on all paths
 + fsmonitor: plug token-data leak on early daemon-startup failures
 + reftable/table: release filter on error path
 + imap-send: avoid leaking the IMAP upload buffer
 + worktree: fix resource leaks when branch creation fails
 + submodule: fix cwd leak in `get_superproject_working_tree()`
 + dir: free allocations on parse-error paths in `read_one_dir()`
 + line-log: avoid redundant copy that leaks in process_ranges
 + run-command: avoid `close(-1)` in `start_command()` error paths
 + download_https_uri_to_file(): do not leak fd upon failure
 + loose: avoid closing invalid fd on error path
 + load_one_loose_object_map(): fix resource leak

 Various resource leaks, invalid file descriptor closures, and process
 handle ownership issues flagged by Coverity have been fixed.

 Graduated to 'master'.
 cf. <xmqqa4s238lg.fsf@gitster.g>
 source: <pull.2163.v2.git.1783239870.gitgitgadget@gmail.com>


* js/wincred-fixes (2026-07-16) 2 commits
  (merged to 'next' on 2026-07-16 at 8c5927f06f)
 + wincred: prevent silent credential loss when storing OAuth tokens
 + wincred: avoid memory corruption when erasing a credential

 The 'wincred' credential helper has been updated to avoid memory
 corruption when erasing credentials and to prevent silent credential
 loss when storing OAuth tokens, by correcting buffer allocations and
 arguments passed to safe-CRT APIs.

 Graduated to 'master'.
 source: <pull.2182.git.1784212072.gitgitgadget@gmail.com>


* mm/sideband-ansi-sgr-colon-fix (2026-05-13) 1 commit
  (merged to 'next' on 2026-07-09 at fd2b979b73)
 + sideband: allow ANSI SGR with colon-separated subfields

 The sideband demultiplexer has been updated to recognize ANSI SGR
 escape sequences that use colon-separated subfields (e.g., for
 256-color or true-color codes).

 Graduated to 'master'.
 cf. <8addf7c0-ae39-f1c0-20ab-52114702aaf6@gmx.de>
 source: <20260513070803.163546-1-grawity@nullroute.lt>


* ps/t-fixes-for-git-test-long (2026-07-05) 9 commits
  (merged to 'next' on 2026-07-09 at c5b13248c8)
 + gitlab-ci: enable "GIT_TEST_LONG"
 + gitlab-ci: disable RAM disk on macOS jobs
 + t: use `test_bool_env` to parse GIT_TEST_LONG
 + t7900: clean up large EXPENSIVE repository
 + t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + t5608: reduce maximum disk usage
 + t4141: fix inefficient use of dd(1)
 + t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + README: add GitLab CI badge to make it more discoverable

 Various test scripts have been updated to clean up large temporary
 files and repositories, reducing peak disk usage during testing.
 Also, expensive tests have been disabled on platforms that lack
 sufficient resources (like 32-bit platforms and Windows CI runners),
 and the long test suite has been enabled in GitLab CI.

 Graduated to 'master'.
 cf. <20260707043026.GB677056@coredump.intra.peff.net>
 source: <20260706-b4-pks-t-fixes-for-GIT-TEST-LONG-v3-0-4f6c5a37fd1f@pks.im>

--------------------------------------------------
[Stalled]

* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll for too long, stalled.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response for too long, stalled.
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Waiting for response for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* js/coverity-unchecked-returns-fix (2026-07-14) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like 'curl_easy_duphandle()', 'deflateInit()',
 'lseek()', 'dup()', and 'strbuf_getline_lf()', resolving several
 Coverity warnings about unchecked returns.

 Waiting for response.
 cf. <xmqqldbdqciy.fsf@gitster.g>
 cf. <xmqqh5m1qcfh.fsf@gitster.g>
 cf. <alcvmX3b6y92KE4y@pks.im>
 cf. <alcvnm0xiOv5W0w_@pks.im>
 source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>


* jk/diff-relative-cached-unmerged (2026-07-14) 1 commit
 - diff: ignore unmerged paths outside prefix with --relative --cached

 'git diff --relative' running with '--cached' has been corrected to
 avoid a segfault when encountering unmerged paths outside the
 prefix.

 Needs review.
 source: <20260715060523.GA517940@coredump.intra.peff.net>


* jc/submodule-helper-avoid-zu (2026-07-15) 1 commit
 - submodule--helper: avoid use of %zu for now

 An accidental use of '%zu' format flag in 'git submodule--helper'
 has been corrected to use 'PRIuMAX' and cast the value to
 'uintmax_t', to avoid portability issues.

 Will merge to 'next'.
 source: <xmqq4ii0ko9t.fsf@gitster.g>


* sk/t7614-do-not-hide-git-exit-status (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-16 at 0d143986e7)
 + t7614: avoid hiding git's exit code in a pipe

 The test script 't/t7614-merge-signoff.sh' has been updated to avoid
 suppressing the exit code of 'git' commands in a pipe.

 Will merge to 'master'.
 cf. <xmqq1pd4m4ea.fsf@gitster.g>
 source: <20260715113344.3490-1-diy2903@gmail.com>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The 'trace2' telemetry library has been updated to tolerate failures
 from system calls like 'gettimeofday()' and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Waiting for response.
 cf. <alpXW5U6sndZtgqV@com-79390>
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
 - revision: make get_commit_action() a pure predicate

 The 'get_commit_action()' function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 'simplify_commit()'.  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Needs review.
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* rs/remote-curl-simplify-push-specs (2026-07-14) 1 commit
 - remote-curl: simplify passing of push specs

 The passing of push destination specifications in the 'remote-curl'
 helper has been simplified by removing the explicit 'count' parameter
 and relying on the NULL-termination of the array.

 Will merge to 'next'.
 source: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de>


* kk/no-walk-pathspec-fix (2026-07-16) 2 commits
  (merged to 'next' on 2026-07-16 at 4dd6fb0e7e)
 + revision: fix --no-walk path filtering regression
 + Merge branch 'kk/streaming-walk-pqueue' into kk/no-walk-pathspec-fix

 The 'git rev-list --no-walk' command lost pathspec filtering when the
 streaming walk was refactored, which has been corrected.

 Will merge to 'master'.
 source: <pull.2181.git.1784198879711.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-07-16) 7 commits
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 'parse_options' API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Waiting for response.
 cf. <xmqq4ihyehyb.fsf@gitster.g>
 cf. <xmqqcxwmeiwq.fsf@gitster.g>
 source: <20260716165517.433849-1-christian.couder@gmail.com>


* ps/copy-wo-the-repository (2026-07-16) 1 commit
 - copy: drop dependency on `the_repository`

 The 'copy_file()' and 'copy_file_with_time()' functions have been
 refactored to take a repository parameter, allowing the removal of the
 implicit dependency on the global 'the_repository' variable in
 'copy.c'.

 Will merge to 'next'?
 cf. <b0df688a-3b26-48f6-8b1c-98530483885e@gmail.com>
 cf. <xmqqo6g54k7m.fsf@gitster.g>
 source: <20260716-pks-copy-wo-the-repository-v2-1-8f5e32942929@pks.im>


* ps/refspec-wo-the-repository (2026-07-16) 3 commits
 - refspec: stop depending on `the_repository`
 - refspec: let callers pass in hash algorithm when parsing items
 - refspec: group related structures and functions

 The dependency on the global 'the_repository' variable in the
 'refspec.c' API has been removed by passing the hash algorithm
 explicitly to refspec-parsing functions and storing it in 'struct
 refspec'.

 Will merge to 'next'.
 source: <20260716-pks-refspec-wo-the-repository-v1-0-aa40844d067f@pks.im>


* ps/writev (2026-07-16) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for 'writev(3p)' has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to 'write(3p)' in 'send_sideband()' and 'cat_blob()' have been
 refactored to use 'writev(3p)' wrappers to reduce syscall overhead.

 Waiting for response.
 cf. <f8050598-392f-44c9-8d66-0454740a7a12@kdbg.org>
 cf. <a2676ec6-39d5-4220-8549-10a17daec668@hogyros.de>
 cf. <xmqqfr1ig0hv.fsf@gitster.g>
 source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


* sc/wt-status-avoid-quadratic-insertion (2026-07-17) 1 commit
 - wt-status: avoid repeated insertion for untracked paths

 The enumeration of untracked and ignored files in 'git status' has
 been optimized by avoiding quadratic complexity insertion into string
 lists, reducing the construction cost from O(n^2) to O(n log n).

 Will merge to 'next'.
 (a newer iteration v3 exists as <20260718081449.26747-1-sahityajb@gmail.com>)
 cf. <20260718083828.GE22588@coredump.intra.peff.net>
 source: <20260717144620.259031-1-sahityajb@gmail.com>


* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit
  (merged to 'next' on 2026-07-16 at b1dbc0cb3f)
 + fast-export: standardize usage string and SYNOPSIS

 The usage string and SYNOPSIS for 'git fast-export' have been
 standardized to make them consistent with each other and with other
 commands.

 Will merge to 'master'.
 cf. <alX5Nl8uX4ctVqo3@pks.im>
 cf. <xmqq4ii228dd.fsf@gitster.g>
 source: <20260713124153.245268-1-christian.couder@gmail.com>


* sk/t1100-modernize (2026-07-14) 2 commits
  (merged to 'next' on 2026-07-16 at 621ca4ca5f)
 + t1100: move creation of expected output into setup test
 + t1100: modernize test style

 The test script 't/t1100-commit-tree-options.sh' has been modernized
 by converting test cases to the modern style (using single quotes and
 tab indentation) and moving the creation of the expected file inside
 the setup test so it runs under the protection of the test harness.

 Will merge to 'master'.
 cf. <xmqq4ii1v7x0.fsf@gitster.g>
 source: <20260714122033.61947-1-diy2903@gmail.com>


* tn/packfile-uri-concurrency (2026-07-13) 2 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: use unique tempfiles for packfile URI downloads

 Concurrent downloads of packfiles via packfile URIs have been
 supported by using unique temporary files, preventing corruption when
 multiple processes fetch the same pack.  The 'fetch-pack' command has
 also been updated to tolerate pre-existing '.keep' files.

 Expecting a reroll.
 cf. <alaAi4vNwi-KabYV@com-76773>
 source: <alVn-QmK3K91_tkH@com-76773>


* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-16 at f258ce38ba)
 + strbuf: avoid redundant reset in strbuf_getwholeline()

 A redundant 'strbuf_reset()' call in the 'HAVE_GETDELIM' path of
 'strbuf_getwholeline()' has been removed, as 'getdelim()' overwrites
 the buffer and the length is updated afterward.

 Will merge to 'master'.
 cf. <xmqq8q7dv82b.fsf@gitster.g>
 cf. <20260714214941.GB4095533@coredump.intra.peff.net>
 source: <d4ffe7fb-f782-4f06-9e3b-f72729d1e225@web.de>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
 - use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
 - tempfile: stop using the_repository
 - lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
 - refs/packed: use repo_create_tempfile()
 - tempfile: add repo_create_tempfile{,_mode}()

 The tempfile and lockfile APIs have been refactored to stop depending
 on the 'the_repository' global variable, and their callers have been
 updated to use the repository-aware variants.

 Waiting for response.
 cf. <aldYVPyMl40-Myp0@pks.im>
 cf. <aldYTuMvN-8EMvYK@pks.im>
 cf. <3c0a8031-7082-422a-b474-938418682b60@web.de>
 source: <20260714175956.54601-1-l.s.r@web.de>


* js/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* cl/b4-cover-change-id (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at 15c7ad9a3f)
 + b4: include change-id in cover template

 The in-tree 'b4' cover letter template has been updated to include the
 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
 the required tracking information for subsequent runs.

 Will merge to 'master'.
 source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>


* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at dd2c5795b7)
 + object-file: fix closing object stream twice

 The stream-based object signature verification path has been
 corrected to avoid double-closing the stream on read errors.

 Will merge to 'master'.
 source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Waiting for response.
 cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
  (merged to 'next' on 2026-07-15 at 55ef0fb748)
 + submodule--helper: accept '-i' shorthand for update --init

 The '-i' shorthand for the '--init' option, which was accepted by the
 'git submodule update' command until it was broken in a modernization
 of the option-parsing code, has been restored.

 Will merge to 'master'.
 cf. <xmqq8q7ltf51.fsf@gitster.g>
 source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>


* hf/unpack-trees-quadratic-scan (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-12 at 744f1aede4)
 + unpack-trees: avoid quadratic index scan in next_cache_entry()

 The cache-scanning loop in 'next_cache_entry()' has been optimized
 to avoid rescanning already-unpacked index entries, preventing a
 quadratic performance slow-down when diffing the working tree
 against a commit with a pathspec matching early index entries.

 Will merge to 'master'.
 cf. <xmqqpl0xqh3n.fsf@gitster.g>
 source: <pull.2353.v2.git.git.1783546933992.gitgitgadget@gmail.com>


* jc/relnotes-2.55-rust-fix (2026-07-07) 1 commit
  (merged to 'next' on 2026-07-10 at 444d202a75)
 + Rust: fix description in Release Notes to 2.55

 A description in the release notes for Git 2.55.0 has been
 retroactively updated to clarify that Rust support is enabled by
 default, but still optional, and will become mandatory in Git 3.0.

 Will merge to 'master'.
 source: <xmqqpl0y4rpg.fsf@gitster.g>


* jc/submitting-patches-abandoning (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at 41b9b65b23)
 + SubmittingPatches: document how to retract a topic

 The 'SubmittingPatches' document has been updated to explicitly
 describe the expectation for contributors to retract or abandon their
 patch series when they are no longer pursuing it.

 Will merge to 'master'.
 cf. <ak6U07K1dQPlXxIp@nixos>
 source: <xmqqpl0xv25e.fsf@gitster.g>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
 - odb: make optimizations pluggable
 - builtin/gc: fix signedness issues in ODB-related functionality
 - builtin/gc: refactor ODB optimizations to operate on "files" source
 - builtin/gc: introduce `odb_optimize_required()`
 - builtin/gc: move geometric repacking into `odb_optimize()`
 - builtin/gc: introduce object database optimization options
 - builtin/gc: inline config values specific to the "files" backend
 - builtin/gc: make repack arguments self-contained
 - builtin/gc: extract object database optimizations into separate function
 - builtin/gc: move worktree and rerere tasks before object optimizations
 - odb: run "pre-auto-gc" hook for all maintenance tasks
 - t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Waiting for response.
 cf. <xmqqwluyyhv1.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* tc/bundle-uri-empty-fix (2026-07-08) 2 commits
  (merged to 'next' on 2026-07-12 at 9da32fdaf7)
 + bundle-uri: stop sending invalid bundle configuration
 + bundle-uri: drain remaining response on invalid bundle-uri lines

 The client-side parser of the server-advertised bundle-URI list has
 been updated to drain the remaining response in order to avoid
 protocol desynchronization when the server sends a misconfigured list.
 Also, the server-side has been taught to omit empty configuration
 values instead of sending invalid key-value lines.

 Will merge to 'master'.
 cf. <xmqqtsq9qj5k.fsf@gitster.g>
 source: <20260708-toon-bundle-uri-no-uri-v2-0-09a03d8db556@iotcl.com>


* gr/t1410-reflog-exit-code (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at d0cf55ea54)
 + t1410-reflog.sh: avoid suppressing git's exit code in pipelines

 The pipelines in 't1410-reflog.sh' have been replaced with the
 'test_stdout_line_count' helper to avoid suppressing the exit code of
 'git' commands, ensuring failures are not hidden from the test suite.

 Will merge to 'master'.
 cf. <xmqqtsq8p18x.fsf@gitster.g>
 source: <20260709051229.40363-1-gatlavishweshwarreddy26@gmail.com>


* js/coverity-fixes-null-safety (2026-07-10) 12 commits
  (merged to 'next' on 2026-07-12 at 8d093f411d)
 + shallow: give write_one_shallow() its own hex buffer
 + shallow: fix NULL dereference
 + bisect: ensure non-NULL `head` before using it
 + pack-bitmap: handle missing bitmap for base MIDX
 + revision: avoid dereferencing NULL in `add_parents_only()`
 + replay: die when --onto does not peel to a commit
 + bisect: handle NULL commit in `bisect_successful()`
 + mailsplit: move NULL check before first use of file handle
 + reftable/stack: guard against NULL list_file in stack_destroy
 + remote: guard `remote_tracking()` against NULL remote
 + diff: handle NULL return from repo_get_commit_tree()
 + diffcore-break: guard against NULLed queue entries in merge loop

 Various code paths have been hardened against potential NULL-pointer
 dereferences and invalid file descriptor accesses flagged by
 Coverity.

 Will merge to 'master'.
 cf. <xmqqa4ryg84e.fsf@gitster.g>
 source: <pull.2174.v2.git.1783683577.gitgitgadget@gmail.com>


* ps/odb-for-each-object-filter (2026-07-14) 10 commits
  (merged to 'next' on 2026-07-16 at 8f30e80d33)
 + builtin/cat-file: filter objects via object database
 + odb: introduce object filters to `odb_for_each_object()`
 + pack-bitmap: introduce function to open bitmap for a single source
 + pack-bitmap: drop `_1` suffix from functions that open bitmaps
 + pack-bitmap: iterate object sources when opening bitmaps
 + pack-bitmap: allow aborting iteration of bitmapped objects
 + pack-objects: drop unused return value from add_object_entry()
 + pack-bitmap: mark object filter as `const`
 + odb/source-packed: improve lookup when enumerating objects
 + Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter

 The object database enumeration interface 'odb_for_each_object()'
 has been taught to accept object filters, allowing the underlying
 backends to optimize the traversal by using reachability bitmaps
 when available.  'git cat-file --batch-all-objects' has been updated
 to use this generic interface, simplifying its code and avoiding
 direct access to ODB backend internals.

 Will merge to 'master'.
 cf. <874ii0h2uf.fsf@emacs.iotcl.com>
 source: <20260715-pks-odb-for-each-object-filter-v4-0-616d7adf7fb7@pks.im>


* ps/refs-wo-the-repository (2026-07-15) 7 commits
 - refs: remove remaining uses of `the_repository`
 - worktree: pass repository to public functions
 - worktree: pass repository to file-local functions
 - worktree: refactor code to use available repositories
 - refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 - refs/packed: de-globalize handling of "core.packedRefsTimeout"
 - Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository

 The ref subsystem and the worktree API have been refactored to pass a
 repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable.  As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Will merge to 'next'.
 source: <20260716-pks-refs-wo-the-repository-v3-0-db0a804e0224@pks.im>


* kk/commit-graph-topo-levels-fix (2026-07-09) 2 commits
  (merged to 'next' on 2026-07-12 at 295a5f9b34)
 + commit-graph: propagate topo_levels slab to all chain layers
 + commit-graph: add trace2 instrumentation for generation DFS

 The 'topo_levels' slab was propagated only to the topmost layer of a
 split commit-graph chain, causing topological levels for commits in
 base layers to be recomputed during incremental writes.  This has been
 corrected.

 Will merge to 'master'.
 cf. <alFu8gZURKhYr1VE@com-79390>
 source: <pull.2170.v2.git.1783609382.gitgitgadget@gmail.com>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the 'sparse-index' collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* kk/reftable-tombstone-quadratic-fix (2026-07-10) 2 commits
  (merged to 'next' on 2026-07-12 at 4e60bb0027)
 + reftable: fix quadratic behavior in the presence of tombstones
 + t/perf: add perf test for ref tombstone scenarios

 The performance of ref updates and reads using the 'reftable' backend
 in the presence of many deletion tombstone records has been optimized
 by removing the tombstone suppression flag from the merged iterator
 and instead skipping tombstones at higher-level call sites where
 iteration bounds are known.

 Will merge to 'master'.
 cf. <alECc90WZ9RPqMaA@pks.im>
 source: <pull.2166.v3.git.1783679767.gitgitgadget@gmail.com>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation, by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* bc/parse-options-exit-0-on-help (2026-07-07) 4 commits
  (merged to 'next' on 2026-07-10 at 775654e447)
 + parse-options: exit 0 on -h
 + rev-parse: have --parseopt callers exit 0 on --help
 + parse-options: add a separate case for help output on error
 + t1517: skip svn tests if svn is not installed

 Option parsing with 'git rev-parse --parseopt' and in most 'git'
 subcommands has been updated to exit with 0 (instead of 129) when the
 help option ('-h' or '--help') is requested directly by the user,
 aligning with standard Unix convention.

 Will merge to 'master'.
 cf. <20260708035930.GB41684@coredump.intra.peff.net>
 source: <20260708001557.3581080-1-sandals@crustytoothpaste.net>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* ml/t9811-replace-test-f (2026-07-11) 2 commits
  (merged to 'next' on 2026-07-15 at ffb7fcad15)
 + t9811: replace 'test -f' and '! test -f' with 'test_path_*'
 + t9811: break long && chains into multiple lines

 The test script 't/t9811-git-p4-label-import.sh' has been
 modernized to use 'test_path_is_file' and 'test_path_is_missing'
 instead of raw 'test -f' and '! test -f' calls.

 Will merge to 'master'.
 cf. <alTHrUEh4_O5ROeu@pks.im>
 source: <20260711160447.99708-1-marcelomlage@usp.br>


* sn/osxkeychain-rust-universal (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-10 at fe82b5d188)
 + contrib: wire up osxkeychain in contrib/Makefile on macOS
 + Makefile: support universal macOS builds via RUST_TARGETS
 + Makefile: add $(RUST_LIB) prerequisite to osxkeychain

 The build system has been updated to support building universal macOS
 binaries when 'Rust' is enabled, by compiling separate static archives
 for each target triple listed in 'RUST_TARGETS' and combining them
 using the macOS 'lipo' tool.  The 'git-credential-osxkeychain' helper
 has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.

 Will merge to 'master'.
 cf. <xmqq4ii9teym.fsf@gitster.g>
 source: <pull.2288.v8.git.git.1783480879.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-07-09) 2 commits
  (merged to 'next' on 2026-07-15 at 86ca33c437)
 + config: add "worktree" and "worktree/i" includeIf conditions
 + config: refactor include_by_gitdir() into include_by_path()

 The '[includeIf "condition"]' conditional inclusion facility for
 configuration files has been taught to use the location of the
 worktree in its condition.

 Will merge to 'master'.
 cf. <alTJCTKR9jOWfgbk@pks.im>
 source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>


* kk/commit-reach-find-all-fix (2026-06-29) 2 commits
  (merged to 'next' on 2026-07-10 at 0444c74d81)
 + commit-reach: guard !FIND_ALL early exit with generation ordering check
 + t6600: add test for merge-base early exit with clock skew
 (this branch is used by kk/merge-base-exhaustion.)

 The early-exit optimization in 'paint_down_to_common()' has been
 gated on the queue being generation-ordered, fixing a bug where
 'git merge-base' (without '--all') could return incorrect results
 on repositories with v1 commit graphs and clock skew.

 Will merge to 'master'.
 cf. <xmqqjyr5v1gu.fsf@gitster.g>
 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use 'test_path_is_file', 'test_path_is_dir', and
 'test_path_is_missing' helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
  (merged to 'next' on 2026-07-10 at 1691a942ab)
 + setup: mark `set_git_work_tree()` as file-local
 + setup: pass worktree to `init_db()`
 + setup: drop redundant configuration of `startup_info->have_repository`
 + setup: make repository discovery self-contained
 + setup: propagate prefix via repository discovery
 + setup: drop static `cwd` variable
 + setup: move prefix into repository
 + setup: embed repository format in discovery
 + setup: introduce explicit repository discovery
 + setup: split up concerns of `setup_git_env_internal()`
 + setup: unify setup of shallow file
 + setup: mark bogus worktree in `apply_repository_format()`
 + setup: rename `check_repository_format_gently()`
 + Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup

 The repository discovery and repository configuration phases, which
 were previously intertwined in 'setup.c', have been split.  Repository
 discovery has been updated to populate a 'struct repo_discovery'
 without modifying the repository state, which is then taken by
 repository configuration to initialize the repository, paving the way
 for clean unification of repository configuration.

 Will merge to 'master'.
 cf. <87h5m9om0j.fsf@emacs.iotcl.com>
 source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>


* pw/rebase-drop-notes-with-commit (2026-07-15) 9 commits
 - sequencer: do not record dropped commits as rewritten
 - sequencer: use an enum to represent result of picking a commit
 - sequencer: simplify pick_one_commit()
 - sequencer: remove unnecessary condition in pick_one_commit()
 - sequencer: simplify handling of fixup with conflicts
 - sequencer: remove unnecessary "or" in pick_one_commit()
 - sequencer: never reschedule on failed commit
 - sequencer: be more careful with external merge
 - t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected.  When
 a commit is dropped during rebase (e.g., because its changes are
 already upstream), it is no longer recorded as rewritten, preventing
 its notes from being copied to an unrelated commit.

 Needs review.
 source: <cover.1784128921.git.phillip.wood@dunelm.org.uk>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response.
 cf. <xmqq8q8068f7.fsf@gitster.g>
 cf. <xmqqpl1d56dd.fsf@gitster.g>
 source: <cover.1782500507.git.me@ttaylorr.com>


* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
  (merged to 'next' on 2026-07-15 at aba57e3365)
 + builtin/receive-pack: stage incoming objects via ODB transactions
 + builtin/receive-pack: drop redundant tmpdir env
 + odb/transaction: introduce ODB transaction flags
 + odb/transaction: add transaction env interface
 + odb/transaction: propagate commit errors
 + odb/transaction: propagate begin errors
 + object-file: propagate files transaction errors
 + object-file: drop check for inflight transactions
 + object-file: embed transaction flush logic in commit function
 + object-file: rename files transaction fsync function
 + object-file: rename files transaction prepare function
 (this branch is used by ps/odb-move-loose-object-writing.)

 'git receive-pack' has been refactored to use ODB transaction
 interfaces instead of directly managing 'tmp_objdir' for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Will merge to 'master'.
 cf. <alR1P-RGZNmjyiUE@pks.im>
 source: <20260710163722.2962278-1-jltobler@gmail.com>


* ps/reftable-hardening (2026-07-03) 12 commits
  (merged to 'next' on 2026-07-10 at b8f4dd0ab9)
 + reftable/table: fix OOB read on truncated table
 + reftable/table: fix NULL pointer access when seeking to bogus offsets
 + reftable/block: fix OOB read with bogus restart offset
 + reftable/block: fix use of uninitialized memory when binsearch fails
 + reftable/block: fix OOB read with bogus restart count
 + reftable/block: fix OOB read with bogus block size
 + reftable/block: fix OOB write with bogus inflated log size
 + t/unit-tests: introduce test helper to write reftable blocks
 + reftable/record: don't abort when decoding invalid ref value type
 + reftable/basics: fix OOB read on binary search of empty range
 + oss-fuzz: add fuzzer for parsing reftables
 + meson: support building fuzzers with libFuzzer

 The 'reftable' code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Will merge to 'master'.
 cf. <877bn5obz9.fsf@emacs.iotcl.com>
 source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>


* ty/migrate-excludes-file (2026-07-13) 10 commits
 - repository: adjust the comment of config_values_private_
 - environment: move object_creation_mode into repo_config_values
 - environment: move autorebase into repo_config_values
 - environment: move push_default into repo_config_values
 - environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 - environment: move askpass_program into repo_config_values
 - environment: move pager_program into repo_config_values
 - environment: move editor_program into repo_config_values
 - environment: move excludes_file into repo_config_values
 - repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Needs review.
 cf. <xmqq8q7961xe.fsf@gitster.g>
 source: <20260714032525.1611141-1-cat@malon.dev>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Ejected for now, as it causes too many evil merges with other topics.

 Waiting for response.
 cf. <alR9GDNTbdjWB4dq@szeder.dev>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* ty/migrate-ignorecase (2026-06-19) 2 commits
  (merged to 'next' on 2026-07-12 at 39e9fdb93f)
 + config: use repo_ignore_case() to access core.ignorecase
 + environment: move ignore_case into repo_config_values

 The global configuration variable 'ignore_case' (representing the
 'core.ignorecase' configuration) has been migrated into 'struct
 repo_config_values' to tie it to a specific repository instance.

 Will merge to 'master'.
 cf. <xmqqechaga7p.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-15) 5 commits
 - history: re-edit a squash with every message
 - sequencer: share the squash message marker helpers and flags
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 source: <pull.2337.v9.git.git.1784128573.gitgitgadget@gmail.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
  (merged to 'next' on 2026-07-12 at adeaa999b6)
 + MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Will merge to 'master'.
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-07-05) 6 commits
  (merged to 'next' on 2026-07-10 at 1916c07bf5)
 + t: add greplint to detect bare grep assertions
 + t: convert grep assertions to test_grep
 + t: fix Lexer line count for $() inside double-quoted strings
 + t: extract chainlint's parser into shared module
 + t: fix grep assertions missing file arguments
 + t/README: document test_grep helper

 The test suite has been updated to use the 'test_grep' helper instead
 of bare 'grep' for test assertions, allowing file contents to be
 printed on failure for easier debugging.  A new 'greplint' linter has
 been introduced to detect and prevent new bare 'grep' assertions from
 being added to the test suite.

 Will merge to 'master'.
 cf. <xmqqtsqedxmt.fsf@gitster.g>
 source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have been
 optimized to use the memoized commit traversal previously used only by
 'git tag --contains', significantly speeding up connectivity checks
 across many candidate refs with shared history.

 Will merge to 'next'.
 cf. <20260716091924.GB1212956@coredump.intra.peff.net>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-09 at 371c2e9c3b)
 + replay: offer an option to linearize the commit topology
 + replay: resolve the replay base outside pick_regular_commit()
 + replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 On hold, waiting for response from the author.
 cf. <xmqq5x2qz42z.fsf@gitster.g>
 cf. <CABPp-BGzU9KHGF1nipi2HZaa1AiikMKGGaapQzHVH06wO4V1ww@mail.gmail.com>
 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-18) 13 commits
 - cat-file: make remote-object-info allow-list adapt to the server
 - cat-file: add remote-object-info to batch-command
 - transport: add client support for object-info
 - serve: advertise object-info feature
 - protocol-caps: check object existence regardless of the attributes requested
 - fetch-pack: move fetch initialization
 - connect: make write_fetch_command_and_capabilities() more generic
 - fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 - fetch-pack: use unsigned int for hash_algo variable
 - fetch-pack: drop the static advertise_sid variable
 - t1006: extract helper functions into new 'lib-cat-file.sh'
 - cat-file: declare loop counter inside for()
 - transport-helper: fix memory leak of helper on disconnect

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.  Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Needs review.
 source: <20260718-ps-eric-work-rebase-v20-0-0c13962ac532@gmail.com>


* mm/diff-process-hunks (2026-07-15) 9 commits
 . line-log: consult diff process for range tracking
 . diff: consult diff process for --stat counts
 . blame: consult diff process for no-hunk detection
 . diff: bypass diff process with --no-ext-diff and in format-patch
 . diff: add long-running diff process via diff.<driver>.process
 . sub-process: separate process lifecycle from hashmap management
 . userdiff: add diff.<driver>.process config
 . xdiff: support external hunks via xpparam_t
 . gitattributes: document how external diff drivers relate to diff features

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Ejected for now, as it conflicts badly with 'mm/line-log-limited-ops'.

 Expecting a reroll.
 cf. <xmqq8q7aj3b0.fsf@gitster.g>
 cf. <CAC2QwmKRp90hmBAckug9PPvvD53Pi53q5csZhi15LRhzdQasQg@mail.gmail.com>
 source: <pull.2120.v5.git.1784149323.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-07-16) 4 commits
 - environment: move has_symlinks into repo_config_values
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: pass 'repo' to 'ce_mode_from_stat()'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from the 'core.filemode'
 configuration) has been migrated into 'struct repo_config_values' to
 tie it to a specific repository instance.

 Waiting for response.
 cf. <xmqq8q7961xe.fsf@gitster.g>
 source: <20260717063559.1633567-1-cat@malon.dev>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response, stalled.
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Waiting for response for too long, stalled.
 cf. <87cxwxofgv.fsf@emacs.iotcl.com>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-07-14) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged into their tracked
 remote-tracking branches.

 Needs review.
 cf. <xmqqtspvptqc.fsf@gitster.g>
 source: <pull.2285.v19.git.git.1784053493.gitgitgadget@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote that the new branch will work with.

 Waiting for response for too long, stalled.
 cf. <xmqq5x37h6fj.fsf@gitster.g>
 cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-14) 7 commits
 - graph: add --[no-]graph-indent and log.graphIndent
 - graph: move config reading into graph_read_config()
 - graph: wrap cascading commits after 4 columns
 - graph: indent visual root in graph
 - graph: add a 2 commit buffer for lookahead
 - revision: add next_commit_to_show()
 - lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Will merge to 'next'.
 cf. <CA+J6zkQNzEAhhY74qDrOwfFVrshEF7YFxWRRkwE3ttJo15ZbAg@mail.gmail.com>
 source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion
 (this branch uses kk/commit-reach-find-all-fix.)

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* kk/prio-queue-cascade-sift (2026-07-08) 3 commits
 . prio-queue: use cascade for unfused gets
 . prio-queue: extract sift_up() from prio_queue_put()
 . Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift

 'prio_queue_get()' has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), whereby the number of comparisons per
 extract-min operation is halved in the common case.

 Retracted.
 cf. <CAL71e4PRVYfUWc-c+6XHTwtADqrbub9ykbo+rPyramDhJw=Rfg@mail.gmail.com>
 source: <pull.2132.v3.git.1783532989.gitgitgadget@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 . http: preserve wwwauth_headers across redirects

 When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
 the redirect target were lost because 'credential_from_url()' cleared
 the credential state.  This has been fixed by preserving the collected
 headers across the redirect update.

 Discarded.
 cf. <xmqqmrw2zavx.fsf@gitster.g>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 . meson: wire up USE_NSEC build knob

 The 'USE_NSEC' build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Discarded.
 cf. <xmqqa4rx9mb5.fsf@gitster.g>
 cf. <45F2C180-1DE1-4371-869B-BF605B64E01A@gmail.com>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


^ permalink raw reply	[relevance 11%]

* What's cooking in git.git (Jul 2026, #07)
@ 2026-07-16 23:30 11% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-16 23:30 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The second batch of topics have now graduated to the 'master'
branch.

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

* jc/history-message-prep-fix (2026-06-29) 1 commit
  (merged to 'next' on 2026-07-06 at 00534a21ce)
 + history: streamline message preparation and plug file stream leak

 A write file stream resource leak has been fixed as part of a code
 cleanup.

 Graduated to 'master'.
 cf. <akO1mhi2u2PntLbt@pks.im>
 source: <xmqqmrwdxrat.fsf@gitster.g>


* jk/bloom-leak-fixes (2026-06-30) 3 commits
  (merged to 'next' on 2026-07-08 at 3b9a1cda3f)
 + line-log: drop extra copy of range with bloom filters
 + revision: avoid leaking bloom keyvecs with multiple traversals
 + bloom: make bloom-filter slab initialization idempotent

 Various memory leaks in the Bloom-filter code paths that are exposed
 when running tests with the 'GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1'
 environment variable have been plugged.

 Graduated to 'master'.
 cf. <b641aed4-ad52-477b-b1d8-9d8e470be46f@gmail.com>
 cf. <xmqqo6gqobrt.fsf@gitster.g>
 source: <20260701063538.GA2579765@coredump.intra.peff.net>


* mg/meson-hook-list-buildfix (2026-07-01) 1 commit
  (merged to 'next' on 2026-07-08 at 10763a0ebc)
 + meson: restore hook-list.h to builtin_sources

 A racy build failure under Meson has been corrected by ensuring that
 the generated header file 'hook-list.h' is built before compiling
 files in 'builtin_sources' that depend on it.

 Graduated to 'master'.
 cf. <akZGJP1kVtjBFN_e@pks.im>
 source: <20260701193928.358825-1-floppym@gentoo.org>


* ps/history-drop (2026-07-01) 11 commits
  (merged to 'next' on 2026-07-08 at 6fb84708a4)
 + builtin/history: implement "drop" subcommand
 + builtin/history: split handling of ref updates into two phases
 + replay: expose `replay_result_queue_update()`
 + reset: stop assuming that the caller passes in a clean index
 + reset: allow the caller to specify the current HEAD object
 + reset: introduce ability to skip updating HEAD
 + reset: introduce dry-run mode
 + reset: modernize flags passed to `reset_working_tree()`
 + reset: rename `reset_head()`
 + reset: drop `USE_THE_REPOSITORY_VARIABLE`
 + read-cache: split out function to drop unmerged entries to stage 0

 The experimental 'git history' command has been taught a new 'drop'
 subcommand to remove a commit, with its descendants replayed onto its
 parent.

 Graduated to 'master'.
 cf. <xmqq1pdmprbk.fsf@gitster.g>
 cf. <CAP8UFD3OAktVQsLuqBNFH2uhEO31PH8ZF3ZT1ZW8k++XE8YLPw@mail.gmail.com>
 source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im>


* ps/odb-drop-whence (2026-07-02) 7 commits
  (merged to 'next' on 2026-07-08 at f43ee51cc3)
 + odb: document object info fields
 + odb: drop `whence` field from object info
 + treewide: convert users of `whence` to the new source field
 + odb: add `source` field to struct object_info_source
 + odb: make backend-specific fields optional
 + packfile: thread odb_source_packed through packed_object_info()
 + Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
 (this branch is used by ps/odb-for-each-object-filter.)

 The 'whence' field in 'struct object_info' has been removed.  The
 backend-specific object information retrieval has been refactored into
 an opt-in 'struct object_info_source' structure.

 Graduated to 'master'.
 cf. <xmqqv7b0rmt6.fsf@gitster.g>
 source: <20260702-b4-pks-odb-drop-whence-v2-0-b0af7468ad95@pks.im>


* ps/refs-writing-subcommands (2026-07-06) 5 commits
  (merged to 'next' on 2026-07-08 at f001147283)
 + builtin/refs: add "rename" subcommand
 + builtin/refs: add "create" subcommand
 + builtin/refs: add "update" subcommand
 + builtin/refs: add "delete" subcommand
 + builtin/refs: drop `the_repository`
 (this branch is used by ps/refs-wo-the-repository.)

 The 'git refs' toolbox has been extended with new 'create', 'delete',
 'update', and 'rename' subcommands to create, delete, update, and
 rename references, respectively.

 Graduated to 'master'.
 source: <20260706-pks-refs-writing-subcommands-v4-0-d51f6ce7f830@pks.im>


* rs/blame-abbrev-marks (2026-07-06) 1 commit
  (merged to 'next' on 2026-07-08 at e4962bd3d5)
 + blame: reserve mark column only if necessary

 The alignment of commit object name abbreviations in 'git blame'
 output has been optimized to reserve a column for marks (caret,
 question mark, or asterisk) only when such marks are actually shown.

 Graduated to 'master'.
 cf. <xmqqzf0397u1.fsf@gitster.g>
 source: <92991b5e-0667-4315-89d5-1514a5499297@web.de>

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

* js/coverity-unchecked-returns-fix (2026-07-14) 11 commits
 - bisect: handle dup() failure when redirecting stdout
 - bisect: check get_terms return at all call sites
 - bisect: check strbuf_getline_lf return when reading terms
 - transport-helper: warn when export-marks file cannot be finalized
 - transport-helper: check dup() return in get_exporter
 - compat/pread: check initial lseek for errors
 - last-modified: handle repo_parse_commit() failures
 - reftable tests: check reftable_table_init_ref_iterator() return
 - reftable/block: check deflateInit() return value
 - config: propagate launch_editor() failure in show_editor()
 - http: die on curl_easy_duphandle failure in get_active_slot

 A handful of code paths have been corrected to check return values
 from functions like 'curl_easy_duphandle()', 'deflateInit()',
 'lseek()', 'dup()', and 'strbuf_getline_lf()', resolving several
 Coverity warnings about unchecked returns.

 Waiting for response.
 cf. <xmqqldbdqciy.fsf@gitster.g>
 cf. <xmqqh5m1qcfh.fsf@gitster.g>
 cf. <alcvmX3b6y92KE4y@pks.im>
 cf. <alcvnm0xiOv5W0w_@pks.im>
 source: <pull.2179.git.1784069325.gitgitgadget@gmail.com>


* jk/diff-relative-cached-unmerged (2026-07-14) 1 commit
 - diff: ignore unmerged paths outside prefix with --relative --cached

 'git diff --relative' running with '--cached' has been corrected to
 avoid a segfault when encountering unmerged paths outside the
 prefix.

 Needs review.
 source: <20260715060523.GA517940@coredump.intra.peff.net>


* jc/submodule-helper-avoid-zu (2026-07-15) 1 commit
 - submodule--helper: avoid use of %zu for now

 An accidental use of '%zu' format flag in 'git submodule--helper'
 has been corrected to use 'PRIuMAX' and cast the value to
 'uintmax_t', to avoid portability issues.

 Will merge to 'next'?
 cf. <87a4rrxg3r.fsf@gentoo.mail-host-address-is-not-set>
 source: <xmqq4ii0ko9t.fsf@gitster.g>


* sk/t7614-do-not-hide-git-exit-status (2026-07-15) 1 commit
  (merged to 'next' on 2026-07-16 at 0d143986e7)
 + t7614: avoid hiding git's exit code in a pipe

 The test script 't/t7614-merge-signoff.sh' has been updated to avoid
 suppressing the exit code of 'git' commands in a pipe.

 Will merge to 'master'.
 cf. <xmqq1pd4m4ea.fsf@gitster.g>
 source: <20260715113344.3490-1-diy2903@gmail.com>


* ds/trace2-tolerate-failed-timestamp (2026-07-15) 1 commit
 - trace2: tolerate failed timestamp formatting

 The trace2 telemetry library has been updated to tolerate failures
 from system calls like 'gettimeofday()' and datetime formatting
 functions, replacing potential program crashes with blank placeholder
 timestamps in the traces.

 Needs review.
 source: <pull.2178.git.1784131932489.gitgitgadget@gmail.com>


* mm/revision-pure-get-commit-action (2026-07-15) 1 commit
 - revision: make get_commit_action() a pure predicate

 The 'get_commit_action()' function has been refactored to be a pure
 predicate by moving the side-effecting line-level log range folding to
 'simplify_commit()'.  This ensures that evaluating a commit's action
 before the walk reaches it does not prematurely mutate its tracked
 line ranges, making it safer for potential lookahead evaluations.

 Needs review.
 source: <pull.2169.git.1784143793613.gitgitgadget@gmail.com>


* rs/remote-curl-simplify-push-specs (2026-07-14) 1 commit
 - remote-curl: simplify passing of push specs

 The passing of push destination specifications in the 'remote-curl'
 helper has been simplified by removing the explicit 'count' parameter
 and relying on the NULL-termination of the array.

 Will merge to 'next'?
 cf. <alhr2bb0lUTHtvjO@pks.im>
 cf. <xmqqpl0nhutx.fsf@gitster.g>
 source: <935883f3-3be4-4c51-9711-5208b9ef9ca1@web.de>


* js/wincred-fixes (2026-07-16) 2 commits
  (merged to 'next' on 2026-07-16 at 8c5927f06f)
 + wincred: prevent silent credential loss when storing OAuth tokens
 + wincred: avoid memory corruption when erasing a credential

 The wincred credential helper has been updated to avoid memory
 corruption when erasing credentials and to prevent silent
 credential loss when storing OAuth tokens, by correcting buffer
 allocations and arguments passed to safe-CRT APIs.

 Will merge to 'master'.
 source: <pull.2182.git.1784212072.gitgitgadget@gmail.com>


* kk/no-walk-pathspec-fix (2026-07-16) 2 commits
 - revision: fix --no-walk path filtering regression
 - Merge branch 'kk/streaming-walk-pqueue' into kk/no-walk-pathspec-fix

 The 'git rev-list --no-walk' command lost pathspec filtering when the
 streaming walk was refactored, which has been corrected.

 Will merge to 'next'.
 source: <pull.2181.git.1784198879711.gitgitgadget@gmail.com>


* cc/fast-import-usage (2026-07-16) 7 commits
 - fast-import: use struct option for usage string
 - fast-import: move command state globals into 'struct fast_import_state'
 - fast-import: introduce 'struct fast_import_state'
 - fast-import: localize 'i' into the 'for' loops using it
 - api-parse-options.adoc: document hidden and OPT_*_F option macros
 - api-parse-options.adoc: document per-option flags
 - parse-options: introduce OPT_HIDDEN_GROUP

 The usage string of 'git fast-import' has been updated to use the
 'parse_options' API for displaying help, and its SYNOPSIS in the
 documentation has been standardized to match.

 Needs review.
 cf. <xmqq4ihyehyb.fsf@gitster.g>
 cf. <xmqqcxwmeiwq.fsf@gitster.g>
 source: <20260716165517.433849-1-christian.couder@gmail.com>


* ps/copy-wo-the-repository (2026-07-16) 1 commit
 - copy: drop dependency on `the_repository`

 The 'copy_file()' and 'copy_file_with_time()' functions have been
 refactored to take a repository parameter, allowing the removal of the
 implicit dependency on the global 'the_repository' variable in
 'copy.c'.

 Needs review.
 source: <20260716-pks-copy-wo-the-repository-v2-1-8f5e32942929@pks.im>


* ps/refspec-wo-the-repository (2026-07-16) 3 commits
 - refspec: stop depending on `the_repository`
 - refspec: let callers pass in hash algorithm when parsing items
 - refspec: group related structures and functions

 The dependency on the global 'the_repository' variable in the
 'refspec.c' API has been removed by passing the hash algorithm
 explicitly to refspec-parsing functions and storing it in 'struct
 refspec'.

 Needs review.
 source: <20260716-pks-refspec-wo-the-repository-v1-0-aa40844d067f@pks.im>


* ps/writev (2026-07-16) 5 commits
 - fast-import: use writev(3p) to send cat-blob responses
 - sideband: use writev(3p) to send pktlines
 - wrapper: properly handle MAX_IO_SIZE in writev(3p)
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper

 A compatibility wrapper for 'writev(3p)' has been reintroduced,
 including fixes for CMake build and 'MAX_IO_SIZE' limits on NonStop.
 Calls to 'write(3p)' in 'send_sideband()' and 'cat_blob()' have been
 refactored to use 'writev(3p)' wrappers to reduce syscall overhead.

 Needs review.
 cf. <f8050598-392f-44c9-8d66-0454740a7a12@kdbg.org>
 cf. <a2676ec6-39d5-4220-8549-10a17daec668@hogyros.de>
 source: <20260716-pks-reintroduce-writev-v1-0-ea9038c884bc@pks.im>


* sc/wt-status-avoid-quadratic-insertion (2026-07-16) 1 commit
 - wt-status: avoid quadratic insertion for untracked paths

 The enumeration of untracked and ignored files in 'git status' has
 been optimized by avoiding quadratic complexity insertion into string
 lists, reducing the construction cost from O(n^2) to O(n log n).

 Needs review.
 source: <20260716185045.229320-1-sahityajb@gmail.com>

--------------------------------------------------
[Stalled]

* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll for too long, stalled.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response for too long, stalled.
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
 the redirect target were lost because 'credential_from_url()' cleared
 the credential state.  This has been fixed by preserving the collected
 headers across the redirect update.

 Will discard.
 cf. <xmqqmrw2zavx.fsf@gitster.g>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Waiting for response for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit
  (merged to 'next' on 2026-07-16 at b1dbc0cb3f)
 + fast-export: standardize usage string and SYNOPSIS

 The usage string and SYNOPSIS for 'git fast-export' have been
 standardized to make them consistent with each other and with other
 commands.

 Will merge to 'master'.
 cf. <alX5Nl8uX4ctVqo3@pks.im>
 cf. <xmqq4ii228dd.fsf@gitster.g>
 source: <20260713124153.245268-1-christian.couder@gmail.com>


* sk/t1100-modernize (2026-07-14) 2 commits
  (merged to 'next' on 2026-07-16 at 621ca4ca5f)
 + t1100: move creation of expected output into setup test
 + t1100: modernize test style

 The test script 't/t1100-commit-tree-options.sh' has been modernized
 by converting test cases to the modern style (using single quotes and
 tab indentation) and moving the creation of the expected file inside
 the setup test so it runs under the protection of the test harness.

 Will merge to 'master'.
 cf. <xmqq4ii1v7x0.fsf@gitster.g>
 source: <20260714122033.61947-1-diy2903@gmail.com>


* tn/packfile-uri-concurrency (2026-07-13) 2 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: use unique tempfiles for packfile URI downloads

 Concurrent downloads of packfiles via packfile URIs have been
 supported by using unique temporary files, preventing corruption when
 multiple processes fetch the same pack.  The 'fetch-pack' command has
 also been updated to tolerate pre-existing '.keep' files.

 Expecting a reroll.
 cf. <alaAi4vNwi-KabYV@com-76773>
 source: <alVn-QmK3K91_tkH@com-76773>


* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit
  (merged to 'next' on 2026-07-16 at f258ce38ba)
 + strbuf: avoid redundant reset in strbuf_getwholeline()

 A redundant 'strbuf_reset()' call in the 'HAVE_GETDELIM' path of
 'strbuf_getwholeline()' has been removed, as 'getdelim()' overwrites
 the buffer and the length is updated afterward.

 Will merge to 'master'.
 cf. <xmqq8q7dv82b.fsf@gitster.g>
 cf. <20260714214941.GB4095533@coredump.intra.peff.net>
 source: <d4ffe7fb-f782-4f06-9e3b-f72729d1e225@web.de>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
 - use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
 - tempfile: stop using the_repository
 - lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
 - refs/packed: use repo_create_tempfile()
 - tempfile: add repo_create_tempfile{,_mode}()

 The tempfile and lockfile APIs have been refactored to stop depending
 on the 'the_repository' global variable, and their callers have been
 updated to use the repository-aware variants.

 Waiting for response.
 cf. <aldYW4TPUqgDMRcf@pks.im>
 source: <20260714175956.54601-1-l.s.r@web.de>


* js/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The 'pack-objects' and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* cl/b4-cover-change-id (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at 15c7ad9a3f)
 + b4: include change-id in cover template

 The in-tree 'b4' cover letter template has been updated to include the
 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
 the required tracking information for subsequent runs.

 Will merge to 'master'.
 source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>


* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at dd2c5795b7)
 + object-file: fix closing object stream twice

 The stream-based object signature verification path has been
 corrected to avoid double-closing the stream on read errors.

 Will merge to 'master'.
 source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>


* pz/fetch-submodule-errors-config (2026-07-16) 2 commits
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 source: <20260716140956.1023740-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Waiting for response.
 cf. <690b965e-5f07-4aa4-a64c-96e60a86d73b@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
  (merged to 'next' on 2026-07-15 at 55ef0fb748)
 + submodule--helper: accept '-i' shorthand for update --init

 The '-i' shorthand for the '--init' option, which was accepted by the
 'git submodule update' command until it was broken in a modernization
 of the option-parsing code, has been restored.

 Will merge to 'master'.
 cf. <xmqq8q7ltf51.fsf@gitster.g>
 source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>


* hf/unpack-trees-quadratic-scan (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-12 at 744f1aede4)
 + unpack-trees: avoid quadratic index scan in next_cache_entry()

 The cache-scanning loop in 'next_cache_entry()' has been optimized
 to avoid rescanning already-unpacked index entries, preventing a
 quadratic performance slow-down when diffing the working tree
 against a commit with a pathspec matching early index entries.

 Will merge to 'master'.
 cf. <xmqqpl0xqh3n.fsf@gitster.g>
 source: <pull.2353.v2.git.git.1783546933992.gitgitgadget@gmail.com>


* jc/relnotes-2.55-rust-fix (2026-07-07) 1 commit
  (merged to 'next' on 2026-07-10 at 444d202a75)
 + Rust: fix description in Release Notes to 2.55

 A description in the release notes for Git 2.55.0 has been
 retroactively updated to clarify that Rust support is enabled by
 default, but still optional, and will become mandatory in Git 3.0.

 Will merge to 'master'.
 source: <xmqqpl0y4rpg.fsf@gitster.g>


* jc/submitting-patches-abandoning (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at 41b9b65b23)
 + SubmittingPatches: document how to retract a topic

 The 'SubmittingPatches' document has been updated to explicitly
 describe the expectation for contributors to retract or abandon their
 patch series when they are no longer pursuing it.

 Will merge to 'master'.
 cf. <ak6U07K1dQPlXxIp@nixos>
 source: <xmqqpl0xv25e.fsf@gitster.g>


* jk/git-hash-cleanups (2026-07-07) 8 commits
  (merged to 'next' on 2026-07-09 at 12a4856545)
 + hash: check ctx->active flag in all wrapper functions
 + http: use idempotent git_hash_discard()
 + csum-file: use idempotent git_hash_discard()
 + hash: make git_hash_discard() idempotent
 + hash: document function pointers and wrappers
 + hash: convert remaining direct function calls
 + hash: use git_hash_init() consistently
 + Merge branch 'jk/hash-algo-leak-fixes' into jk/git-hash-cleanups
 (this branch uses jk/hash-algo-leak-fixes.)

 The 'git_hash_*()' wrappers have been updated to be used consistently
 across the codebase instead of direct calls to members of 'struct
 git_hash_algo', and 'git_hash_discard()' has been made idempotent to
 simplify cleanups.

 Will merge to 'master'.
 cf. <ak4E4-jmgYFSI75O@pks.im>
 source: <20260708035235.GA41491@coredump.intra.peff.net>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* mm/sideband-ansi-sgr-colon-fix (2026-05-13) 1 commit
  (merged to 'next' on 2026-07-09 at fd2b979b73)
 + sideband: allow ANSI SGR with colon-separated subfields

 The sideband demultiplexer has been updated to recognize ANSI SGR
 escape sequences that use colon-separated subfields (e.g., for
 256-color or true-color codes).

 Will merge to 'master'.
 cf. <8addf7c0-ae39-f1c0-20ab-52114702aaf6@gmx.de>
 source: <20260513070803.163546-1-grawity@nullroute.lt>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
 - odb: make optimizations pluggable
 - builtin/gc: fix signedness issues in ODB-related functionality
 - builtin/gc: refactor ODB optimizations to operate on "files" source
 - builtin/gc: introduce `odb_optimize_required()`
 - builtin/gc: move geometric repacking into `odb_optimize()`
 - builtin/gc: introduce object database optimization options
 - builtin/gc: inline config values specific to the "files" backend
 - builtin/gc: make repack arguments self-contained
 - builtin/gc: extract object database optimizations into separate function
 - builtin/gc: move worktree and rerere tasks before object optimizations
 - odb: run "pre-auto-gc" hook for all maintenance tasks
 - t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Waiting for response.
 cf. <xmqqwluyyhv1.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* tc/bundle-uri-empty-fix (2026-07-08) 2 commits
  (merged to 'next' on 2026-07-12 at 9da32fdaf7)
 + bundle-uri: stop sending invalid bundle configuration
 + bundle-uri: drain remaining response on invalid bundle-uri lines

 The client-side parser of the server-advertised bundle-URI list has
 been updated to drain the remaining response in order to avoid
 protocol desynchronization when the server sends a misconfigured list.
 Also, the server-side has been taught to omit empty configuration
 values instead of sending invalid key-value lines.

 Will merge to 'master'.
 cf. <xmqqtsq9qj5k.fsf@gitster.g>
 source: <20260708-toon-bundle-uri-no-uri-v2-0-09a03d8db556@iotcl.com>


* gr/t1410-reflog-exit-code (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at d0cf55ea54)
 + t1410-reflog.sh: avoid suppressing git's exit code in pipelines

 The pipelines in 't1410-reflog.sh' have been replaced with the
 'test_stdout_line_count' helper to avoid suppressing the exit code of
 'git' commands, ensuring failures are not hidden from the test suite.

 Will merge to 'master'.
 cf. <xmqqtsq8p18x.fsf@gitster.g>
 source: <20260709051229.40363-1-gatlavishweshwarreddy26@gmail.com>


* js/coverity-fixes-null-safety (2026-07-10) 12 commits
  (merged to 'next' on 2026-07-12 at 8d093f411d)
 + shallow: give write_one_shallow() its own hex buffer
 + shallow: fix NULL dereference
 + bisect: ensure non-NULL `head` before using it
 + pack-bitmap: handle missing bitmap for base MIDX
 + revision: avoid dereferencing NULL in `add_parents_only()`
 + replay: die when --onto does not peel to a commit
 + bisect: handle NULL commit in `bisect_successful()`
 + mailsplit: move NULL check before first use of file handle
 + reftable/stack: guard against NULL list_file in stack_destroy
 + remote: guard `remote_tracking()` against NULL remote
 + diff: handle NULL return from repo_get_commit_tree()
 + diffcore-break: guard against NULLed queue entries in merge loop

 Various code paths have been hardened against potential NULL-pointer
 dereferences and invalid file descriptor accesses flagged by
 Coverity.

 Will merge to 'master'.
 cf. <xmqqa4ryg84e.fsf@gitster.g>
 source: <pull.2174.v2.git.1783683577.gitgitgadget@gmail.com>


* ps/odb-for-each-object-filter (2026-07-14) 10 commits
  (merged to 'next' on 2026-07-16 at 8f30e80d33)
 + builtin/cat-file: filter objects via object database
 + odb: introduce object filters to `odb_for_each_object()`
 + pack-bitmap: introduce function to open bitmap for a single source
 + pack-bitmap: drop `_1` suffix from functions that open bitmaps
 + pack-bitmap: iterate object sources when opening bitmaps
 + pack-bitmap: allow aborting iteration of bitmapped objects
 + pack-objects: drop unused return value from add_object_entry()
 + pack-bitmap: mark object filter as `const`
 + odb/source-packed: improve lookup when enumerating objects
 + Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter

 The object database enumeration interface 'odb_for_each_object()'
 has been taught to accept object filters, allowing the underlying
 backends to optimize the traversal by using reachability bitmaps
 when available.  'git cat-file --batch-all-objects' has been updated
 to use this generic interface, simplifying its code and avoiding
 direct access to ODB backend internals.

 Will merge to 'master'.
 cf. <874ii0h2uf.fsf@emacs.iotcl.com>
 source: <20260715-pks-odb-for-each-object-filter-v4-0-616d7adf7fb7@pks.im>


* ps/refs-wo-the-repository (2026-07-15) 7 commits
 - refs: remove remaining uses of `the_repository`
 - worktree: pass repository to public functions
 - worktree: pass repository to file-local functions
 - worktree: refactor code to use available repositories
 - refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 - refs/packed: de-globalize handling of "core.packedRefsTimeout"
 - Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository

 The ref subsystem and the worktree API have been refactored to pass a
 repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable.  As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Will merge to 'next'?
 cf. <xmqqldbbhuh0.fsf@gitster.g>
 source: <20260716-pks-refs-wo-the-repository-v3-0-db0a804e0224@pks.im>


* kk/commit-graph-topo-levels-fix (2026-07-09) 2 commits
  (merged to 'next' on 2026-07-12 at 295a5f9b34)
 + commit-graph: propagate topo_levels slab to all chain layers
 + commit-graph: add trace2 instrumentation for generation DFS

 The 'topo_levels' slab was propagated only to the topmost layer of a
 split commit-graph chain, causing topological levels for commits in
 base layers to be recomputed during incremental writes.  This has been
 corrected.

 Will merge to 'master'.
 cf. <alFu8gZURKhYr1VE@com-79390>
 source: <pull.2170.v2.git.1783609382.gitgitgadget@gmail.com>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the sparse-index collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* kk/reftable-tombstone-quadratic-fix (2026-07-10) 2 commits
  (merged to 'next' on 2026-07-12 at 4e60bb0027)
 + reftable: fix quadratic behavior in the presence of tombstones
 + t/perf: add perf test for ref tombstone scenarios

 The performance of ref updates and reads using the 'reftable' backend
 in the presence of many deletion tombstone records has been optimized
 by removing the tombstone suppression flag from the merged iterator
 and instead skipping tombstones at higher-level call sites where
 iteration bounds are known.

 Will merge to 'master'.
 cf. <alECc90WZ9RPqMaA@pks.im>
 source: <pull.2166.v3.git.1783679767.gitgitgadget@gmail.com>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation, by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* bc/parse-options-exit-0-on-help (2026-07-07) 4 commits
  (merged to 'next' on 2026-07-10 at 775654e447)
 + parse-options: exit 0 on -h
 + rev-parse: have --parseopt callers exit 0 on --help
 + parse-options: add a separate case for help output on error
 + t1517: skip svn tests if svn is not installed

 Option parsing with 'git rev-parse --parseopt' and in most 'git'
 subcommands has been updated to exit with 0 (instead of 129) when the
 help option ('-h' or '--help') is requested directly by the user,
 aligning with standard Unix convention.

 Will merge to 'master'.
 cf. <20260708035930.GB41684@coredump.intra.peff.net>
 source: <20260708001557.3581080-1-sandals@crustytoothpaste.net>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* jk/hash-algo-leak-fixes (2026-07-02) 9 commits
  (merged to 'next' on 2026-07-09 at 7db7b74972)
 + hash: add platform-specific discard functions
 + hash: fix memory leak copying sha256 gcrypt handles
 + http: discard hash in dumb-http http_object_request
 + check_stream_oid(): discard hash on read error
 + patch-id: discard hash when done
 + csum-file: provide a function to release checkpoints
 + csum-file: always finalize or discard hash
 + hash: add discard primitive
 + csum-file: drop discard_hashfile()
 (this branch is used by jk/git-hash-cleanups.)

 Various code paths that initialize a cryptographic hash context but
 bail out or finish without calling 'git_hash_final()' have been taught
 to call 'git_hash_discard()' to release allocated resources, fixing
 memory leaks when Git is built with non-default backends like
 'OpenSSL' or 'libgcrypt'.

 Will merge to 'master'.
 cf. <aktIIKuReMxJmDsi@pks.im>
 source: <20260702075234.GA1548258@coredump.intra.peff.net>


* ml/t9811-replace-test-f (2026-07-11) 2 commits
  (merged to 'next' on 2026-07-15 at ffb7fcad15)
 + t9811: replace 'test -f' and '! test -f' with 'test_path_*'
 + t9811: break long && chains into multiple lines

 The test script 't/t9811-git-p4-label-import.sh' has been
 modernized to use 'test_path_is_file' and 'test_path_is_missing'
 instead of raw 'test -f' and '! test -f' calls.

 Will merge to 'master'.
 cf. <alTHrUEh4_O5ROeu@pks.im>
 source: <20260711160447.99708-1-marcelomlage@usp.br>


* ps/t-fixes-for-git-test-long (2026-07-05) 9 commits
  (merged to 'next' on 2026-07-09 at c5b13248c8)
 + gitlab-ci: enable "GIT_TEST_LONG"
 + gitlab-ci: disable RAM disk on macOS jobs
 + t: use `test_bool_env` to parse GIT_TEST_LONG
 + t7900: clean up large EXPENSIVE repository
 + t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + t5608: reduce maximum disk usage
 + t4141: fix inefficient use of dd(1)
 + t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + README: add GitLab CI badge to make it more discoverable

 Various test scripts have been updated to clean up large temporary
 files and repositories, reducing peak disk usage during testing.
 Also, expensive tests have been disabled on platforms that lack
 sufficient resources (like 32-bit platforms and Windows CI runners),
 and the long test suite has been enabled in GitLab CI.

 Will merge to 'master'.
 cf. <20260707043026.GB677056@coredump.intra.peff.net>
 source: <20260706-b4-pks-t-fixes-for-GIT-TEST-LONG-v3-0-4f6c5a37fd1f@pks.im>


* ih/precompose-flex-array (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at 737a87f65e)
 + precompose_utf8: use a flex array for d_name

 The UTF-8 precomposition wrapper on macOS has been updated to use a
 flexible array member to represent the name of a directory entry,
 preventing fortified libc checks from failing when the name is
 reallocated to be larger than 'NAME_MAX' bytes.

 Will merge to 'master'.
 cf. <20260703050800.GA29216@tb-raspi4>
 source: <20260704233724.16928-1-ihar.hrachyshka@gmail.com>


* sn/osxkeychain-rust-universal (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-10 at fe82b5d188)
 + contrib: wire up osxkeychain in contrib/Makefile on macOS
 + Makefile: support universal macOS builds via RUST_TARGETS
 + Makefile: add $(RUST_LIB) prerequisite to osxkeychain

 The build system has been updated to support building universal macOS
 binaries when 'Rust' is enabled, by compiling separate static archives
 for each target triple listed in 'RUST_TARGETS' and combining them
 using the macOS 'lipo' tool.  The 'git-credential-osxkeychain' helper
 has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.

 Will merge to 'master'.
 cf. <xmqq4ii9teym.fsf@gitster.g>
 source: <pull.2288.v8.git.git.1783480879.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-07-09) 2 commits
  (merged to 'next' on 2026-07-15 at 86ca33c437)
 + config: add "worktree" and "worktree/i" includeIf conditions
 + config: refactor include_by_gitdir() into include_by_path()

 The '[includeIf "condition"]' conditional inclusion facility for
 configuration files has been taught to use the location of the
 worktree in its condition.

 Will merge to 'master'.
 cf. <alTJCTKR9jOWfgbk@pks.im>
 source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>


* kk/commit-reach-find-all-fix (2026-06-29) 2 commits
  (merged to 'next' on 2026-07-10 at 0444c74d81)
 + commit-reach: guard !FIND_ALL early exit with generation ordering check
 + t6600: add test for merge-base early exit with clock skew
 (this branch is used by kk/merge-base-exhaustion.)

 The early-exit optimization in 'paint_down_to_common()' has been
 gated on the queue being generation-ordered, fixing a bug where
 'git merge-base' (without '--all') could return incorrect results
 on repositories with v1 commit graphs and clock skew.

 Will merge to 'master'.
 cf. <xmqqjyr5v1gu.fsf@gitster.g>
 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use 'test_path_is_file', 'test_path_is_dir', and
 'test_path_is_missing' helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response.
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
  (merged to 'next' on 2026-07-10 at 1691a942ab)
 + setup: mark `set_git_work_tree()` as file-local
 + setup: pass worktree to `init_db()`
 + setup: drop redundant configuration of `startup_info->have_repository`
 + setup: make repository discovery self-contained
 + setup: propagate prefix via repository discovery
 + setup: drop static `cwd` variable
 + setup: move prefix into repository
 + setup: embed repository format in discovery
 + setup: introduce explicit repository discovery
 + setup: split up concerns of `setup_git_env_internal()`
 + setup: unify setup of shallow file
 + setup: mark bogus worktree in `apply_repository_format()`
 + setup: rename `check_repository_format_gently()`
 + Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup

 The repository discovery and repository configuration phases, which
 were previously intertwined in 'setup.c', have been split.  Repository
 discovery has been updated to populate a 'struct repo_discovery'
 without modifying the repository state, which is then taken by
 repository configuration to initialize the repository, paving the way
 for clean unification of repository configuration.

 Will merge to 'master'.
 cf. <87h5m9om0j.fsf@emacs.iotcl.com>
 source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>


* pw/rebase-drop-notes-with-commit (2026-07-15) 9 commits
 - sequencer: do not record dropped commits as rewritten
 - sequencer: use an enum to represent result of picking a commit
 - sequencer: simplify pick_one_commit()
 - sequencer: remove unnecessary condition in pick_one_commit()
 - sequencer: simplify handling of fixup with conflicts
 - sequencer: remove unnecessary "or" in pick_one_commit()
 - sequencer: never reschedule on failed commit
 - sequencer: be more careful with external merge
 - t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected.  When
 a commit is dropped during rebase (e.g., because its changes are
 already upstream), it is no longer recorded as rewritten, preventing
 its notes from being copied to an unrelated commit.

 Needs review.
 source: <cover.1784128921.git.phillip.wood@dunelm.org.uk>


* js/ci-dockerized-pid-limit (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at cd80e673a5)
 + ci(dockerized): raise the PID limit for private repositories

 Dockerized CI jobs running in private GitHub repositories have been
 adjusted to use explicit process and file limits, preventing resource
 exhaustion errors on private runners.

 Will merge to 'master'.
 cf. <xmqqh5medmzh.fsf@gitster.g>
 source: <pull.2164.v2.git.1783155124926.gitgitgadget@gmail.com>


* js/coverity-fixes (2026-07-05) 12 commits
  (merged to 'next' on 2026-07-09 at 1823fe297c)
 + mingw: make `exit_process()` own the process handle on all paths
 + fsmonitor: plug token-data leak on early daemon-startup failures
 + reftable/table: release filter on error path
 + imap-send: avoid leaking the IMAP upload buffer
 + worktree: fix resource leaks when branch creation fails
 + submodule: fix cwd leak in `get_superproject_working_tree()`
 + dir: free allocations on parse-error paths in `read_one_dir()`
 + line-log: avoid redundant copy that leaks in process_ranges
 + run-command: avoid `close(-1)` in `start_command()` error paths
 + download_https_uri_to_file(): do not leak fd upon failure
 + loose: avoid closing invalid fd on error path
 + load_one_loose_object_map(): fix resource leak

 Various resource leaks, invalid file descriptor closures, and process
 handle ownership issues flagged by Coverity have been fixed.

 Will merge to 'master'.
 cf. <xmqqa4s238lg.fsf@gitster.g>
 source: <pull.2163.v2.git.1783239870.gitgitgadget@gmail.com>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response.
 cf. <aj8cOhH6hGVZIFft@nand.local>
 source: <cover.1782500507.git.me@ttaylorr.com>


* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
  (merged to 'next' on 2026-07-15 at aba57e3365)
 + builtin/receive-pack: stage incoming objects via ODB transactions
 + builtin/receive-pack: drop redundant tmpdir env
 + odb/transaction: introduce ODB transaction flags
 + odb/transaction: add transaction env interface
 + odb/transaction: propagate commit errors
 + odb/transaction: propagate begin errors
 + object-file: propagate files transaction errors
 + object-file: drop check for inflight transactions
 + object-file: embed transaction flush logic in commit function
 + object-file: rename files transaction fsync function
 + object-file: rename files transaction prepare function

 'git receive-pack' has been refactored to use ODB transaction
 interfaces instead of directly managing 'tmp_objdir' for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Will merge to 'master'.
 cf. <alR1P-RGZNmjyiUE@pks.im>
 source: <20260710163722.2962278-1-jltobler@gmail.com>


* ps/reftable-hardening (2026-07-03) 12 commits
  (merged to 'next' on 2026-07-10 at b8f4dd0ab9)
 + reftable/table: fix OOB read on truncated table
 + reftable/table: fix NULL pointer access when seeking to bogus offsets
 + reftable/block: fix OOB read with bogus restart offset
 + reftable/block: fix use of uninitialized memory when binsearch fails
 + reftable/block: fix OOB read with bogus restart count
 + reftable/block: fix OOB read with bogus block size
 + reftable/block: fix OOB write with bogus inflated log size
 + t/unit-tests: introduce test helper to write reftable blocks
 + reftable/record: don't abort when decoding invalid ref value type
 + reftable/basics: fix OOB read on binary search of empty range
 + oss-fuzz: add fuzzer for parsing reftables
 + meson: support building fuzzers with libFuzzer

 The reftable code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Will merge to 'master'.
 cf. <877bn5obz9.fsf@emacs.iotcl.com>
 source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>


* ty/migrate-excludes-file (2026-07-13) 10 commits
 - repository: adjust the comment of config_values_private_
 - environment: move object_creation_mode into repo_config_values
 - environment: move autorebase into repo_config_values
 - environment: move push_default into repo_config_values
 - environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 - environment: move askpass_program into repo_config_values
 - environment: move pager_program into repo_config_values
 - environment: move editor_program into repo_config_values
 - environment: move excludes_file into repo_config_values
 - repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Needs review.
 source: <20260714032525.1611141-1-cat@malon.dev>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The 'USE_NSEC' build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Will discard.
 cf. <45F2C180-1DE1-4371-869B-BF605B64E01A@gmail.com>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 . Move libgit.a sources into separate "lib/" directory
 . t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 . Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Ejected for now, as it causes too many evil merges with other topics.

 Waiting for response.
 cf. <alR9GDNTbdjWB4dq@szeder.dev>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* ty/migrate-ignorecase (2026-06-19) 2 commits
  (merged to 'next' on 2026-07-12 at 39e9fdb93f)
 + config: use repo_ignore_case() to access core.ignorecase
 + environment: move ignore_case into repo_config_values

 The global configuration variable 'ignore_case' (representing the
 'core.ignorecase' configuration) has been migrated into 'struct
 repo_config_values' to tie it to a specific repository instance.

 Will merge to 'master'.
 cf. <xmqqechaga7p.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-15) 5 commits
 - history: re-edit a squash with every message
 - sequencer: share the squash message marker helpers and flags
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 source: <pull.2337.v9.git.git.1784128573.gitgitgadget@gmail.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
  (merged to 'next' on 2026-07-12 at adeaa999b6)
 + MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Will merge to 'master'.
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-07-05) 6 commits
  (merged to 'next' on 2026-07-10 at 1916c07bf5)
 + t: add greplint to detect bare grep assertions
 + t: convert grep assertions to test_grep
 + t: fix Lexer line count for $() inside double-quoted strings
 + t: extract chainlint's parser into shared module
 + t: fix grep assertions missing file arguments
 + t/README: document test_grep helper

 The test suite has been updated to use the 'test_grep' helper instead
 of bare 'grep' for test assertions, allowing file contents to be
 printed on failure for easier debugging.  A new 'greplint' linter has
 been introduced to detect and prevent new bare 'grep' assertions from
 being added to the test suite.

 Will merge to 'master'.
 cf. <xmqqtsqedxmt.fsf@gitster.g>
 source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have been
 optimized to use the memoized commit traversal previously used only by
 'git tag --contains', significantly speeding up connectivity checks
 across many candidate refs with shared history.

 Will merge to 'next'?
 cf. <20260716091924.GB1212956@coredump.intra.peff.net>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-09 at 371c2e9c3b)
 + replay: offer an option to linearize the commit topology
 + replay: resolve the replay base outside pick_regular_commit()
 + replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Will merge to 'master'?
 cf. <xmqq5x2qz42z.fsf@gitster.g>
 cf. <CABPp-BGzU9KHGF1nipi2HZaa1AiikMKGGaapQzHVH06wO4V1ww@mail.gmail.com>
 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-15) 13 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with an allow-list
 - 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
 - connect: make write_fetch_command_and_capabilities() more generic
 - fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 - fetch-pack: drop static advertise_sid variable
 - fetch-pack: fix hash_algo variable type
 - t1006: split test utility functions into new 'lib-cat-file.sh'
 - cat-file: declare loop counter inside for()
 - transport-helper: fix memory leak of helper on disconnect

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.  Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Expecting a reroll.
 cf. <DJZM80YDCMQG.SXP22P43W1J3@gmail.com>
 source: <20260715-ps-eric-work-rebase-v18-0-34d7adb051bb@gmail.com>


* mm/diff-process-hunks (2026-07-15) 9 commits
 . line-log: consult diff process for range tracking
 . diff: consult diff process for --stat counts
 . blame: consult diff process for no-hunk detection
 . diff: bypass diff process with --no-ext-diff and in format-patch
 . diff: add long-running diff process via diff.<driver>.process
 . sub-process: separate process lifecycle from hashmap management
 . userdiff: add diff.<driver>.process config
 . xdiff: support external hunks via xpparam_t
 . gitattributes: document how external diff drivers relate to diff features

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Ejected for now, as conflicts badly with mm/line-log-limited-ops.

 Expecting a reroll.
 cf. <xmqq8q7aj3b0.fsf@gitster.g>
 cf. <CAC2QwmKRp90hmBAckug9PPvvD53Pi53q5csZhi15LRhzdQasQg@mail.gmail.com>
 source: <pull.2120.v5.git.1784149323.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-07-16) 4 commits
 - environment: move has_symlinks into repo_config_values
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 cf. <xmqqa4rqfzys.fsf@gitster.g>
 source: <20260716084941.1101918-1-cat@malon.dev>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response, stalled.
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Waiting for response for too long, stalled.
 cf. <87cxwxofgv.fsf@emacs.iotcl.com>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-07-14) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged to their tracked
 remote-tracking branches.

 Needs review.
 source: <pull.2285.v19.git.git.1784053493.gitgitgadget@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote the new branch will work with.

 Needs review.
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-14) 7 commits
 - graph: add --[no-]graph-indent and log.graphIndent
 - graph: move config reading into graph_read_config()
 - graph: wrap cascading commits after 4 columns
 - graph: indent visual root in graph
 - graph: add a 2 commit buffer for lookahead
 - revision: add next_commit_to_show()
 - lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Will merge to 'next'?
 cf. <CA+J6zkQNzEAhhY74qDrOwfFVrshEF7YFxWRRkwE3ttJo15ZbAg@mail.gmail.com>
 source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion
 (this branch uses kk/commit-reach-find-all-fix.)

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* kk/prio-queue-cascade-sift (2026-07-08) 3 commits
 . prio-queue: use cascade for unfused gets
 . prio-queue: extract sift_up() from prio_queue_put()
 . Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift

 'prio_queue_get()' has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), whereby the number of comparisons per
 extract-min operation is halved in the common case.

 Retracted.
 cf. <CAL71e4PRVYfUWc-c+6XHTwtADqrbub9ykbo+rPyramDhJw=Rfg@mail.gmail.com>
 source: <pull.2132.v3.git.1783532989.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 11%]

* What's cooking in git.git (Jul 2026, #06)
@ 2026-07-15  0:00 12% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-15  0:00 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all.  They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The second batch of topics have now graduated to the 'master'
branch.

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

* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
  (merged to 'next' on 2026-07-06 at b099249efd)
 + gpg-interface: fix strip_cr_before_lf to only remove CR before LF

 The GPG and SSH signature parsing code has been corrected to strip
 carriage return characters only when they immediately precede line
 feeds, instead of unconditionally stripping all carriage returns.

 Graduated to 'master'.
 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>


* hn/branch-push-slip-advice (2026-06-27) 2 commits
  (merged to 'next' on 2026-07-06 at acdff65ac5)
 + push: suggest <remote> <branch> for a slash slip
 + branch: suggest <remote>/<branch> on upstream slip

 When 'git push origin/main' or 'git branch origin main' is run, the
 command is now recognized as a potential typo, and advice has been
 added to offer a typo fix.

 Graduated to 'master'.
 cf. <xmqqfr272lq7.fsf@gitster.g>
 source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>


* jk/format-patch-leakfix (2026-06-29) 2 commits
  (merged to 'next' on 2026-07-06 at 35aff0d609)
 + format-patch: fix leak of rev_info in prepare_bases()
 + t: move LSan errors from stdout to stderr

 A memory leak in the '--base' handling of 'git format-patch' has been
 plugged, and the leak reporting of the test suite when running under a
 TAP harness has been improved.

 Graduated to 'master'.
 cf. <akOZy-BygZS8fqPM@pks.im>
 source: <20260630063944.GA3733670@coredump.intra.peff.net>


* jk/reftable-leakfix (2026-06-28) 1 commit
  (merged to 'next' on 2026-07-06 at 55ce81f2d5)
 + reftable: fix unlikely leak on API error

 A memory leak in the 'reftable_writer_new()' initialization function
 has been fixed by delaying the allocation of 'struct reftable_writer'
 until after input options are validated.

 Graduated to 'master'.
 cf. <akIPBJLtPqDjQt-A@pks.im>
 source: <20260628090314.GA661068@coredump.intra.peff.net>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
  (merged to 'next' on 2026-07-06 at aa748c4564)
 + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 + prio-queue: rename .nr to .nr_ and add accessor helpers
 (this branch is used by kk/prio-queue-cascade-sift.)

 The lazy priority queue optimization pattern (deferring actual removal
 in 'prio_queue_get()' to allow get+put fusion) has been folded
 directly into 'prio_queue' itself, speeding up commit traversal
 workflows and simplifying callers.

 Graduated to 'master'.
 cf. <xmqqh5mjrbgq.fsf@gitster.g>
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
  (merged to 'next' on 2026-07-06 at 6132517517)
 + odb: introduce `odb_prepare()`
 + odb/source: generalize `reprepare()` callback
 + Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare

 The 'reprepare()' callback for object database sources has been
 generalized into a 'prepare()' callback with an optional flush cache
 flag, and a new 'odb_prepare()' wrapper has been introduced to allow
 pre-opening object database sources.

 Graduated to 'master'.
 cf. <87ik704f1j.fsf@emacs.iotcl.com>
 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>

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

* tb/send-pack-no-ref-delta (2026-07-12) 4 commits
 - send-pack: honor `no-ref-delta` capability
 - pack-objects: support reuse with `--no-ref-delta`
 - pack-objects: introduce `--no-ref-delta`
 - t/helper: teach pack-deltas to list delta entries

 'git send-pack' has been taught to refrain from sending 'REF_DELTA'
 encoded packfiles when the other side asks it to.

 Needs review.
 source: <alQ7WKITYDXfiVn9@com-79390>


* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit
 - fast-export: standardize usage string and SYNOPSIS

 The usage string and SYNOPSIS for 'git fast-export' have been
 standardized to make them consistent with each other and with other
 commands.

 Will merge to 'next'?
 cf. <alX5Nl8uX4ctVqo3@pks.im>
 source: <20260713124153.245268-1-christian.couder@gmail.com>


* sk/t1100-modernize (2026-07-14) 2 commits
 - t1100: move creation of expected output into setup test
 - t1100: modernize test style

 The test script 't/t1100-commit-tree-options.sh' has been modernized
 by converting test cases to the modern style (using single quotes and
 tab indentation) and moving the creation of the expected file inside
 the setup test so it runs under the protection of the test harness.

 Will merge to 'next'?
 cf. <xmqq4ii1v7x0.fsf@gitster.g>
 source: <20260714122033.61947-1-diy2903@gmail.com>


* tn/packfile-uri-concurrency (2026-07-13) 2 commits
 - fetch-pack: accept "pack" output for packfile URIs
 - http: use unique tempfiles for packfile URI downloads

 Concurrent downloads of packfiles via packfile URIs have been
 supported by using unique temporary files, preventing corruption when
 multiple processes fetch the same pack.  The 'fetch-pack' command has
 also been updated to tolerate pre-existing '.keep' files.

 Expecting a reroll.
 cf. <alaAi4vNwi-KabYV@com-76773>
 source: <alVn-QmK3K91_tkH@com-76773>


* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit
 - strbuf: avoid redundant reset in strbuf_getwholeline()

 A redundant 'strbuf_reset()' call in the 'HAVE_GETDELIM' path of
 'strbuf_getwholeline()' has been removed, as 'getdelim()' overwrites
 the buffer and the length is updated afterwards.

 Will merge to 'next'?
 cf. <xmqq8q7dv82b.fsf@gitster.g>
 source: <d4ffe7fb-f782-4f06-9e3b-f72729d1e225@web.de>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
 - use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
 - tempfile: stop using the_repository
 - lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
 - refs/packed: use repo_create_tempfile()
 - tempfile: add repo_create_tempfile{,_mode}()

 The tempfile and lockfile APIs have been refactored to stop depending
 on the 'the_repository' global variable, and their callers have been
 updated to use the repository-aware variants.

 Needs review.
 source: <20260714175956.54601-1-l.s.r@web.de>

--------------------------------------------------
[Stalled]

* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll for too long, stalled.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
 the redirect target were lost because 'credential_from_url()' cleared
 the credential state.  This has been fixed by preserving the collected
 headers across the redirect update.

 Will discard.
 cf. <xmqqmrw2zavx.fsf@gitster.g>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* js/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The pack-objects and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* cl/b4-cover-change-id (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at 15c7ad9a3f)
 + b4: include change-id in cover template

 The in-tree 'b4' cover letter template has been updated to include the
 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
 the required tracking information for subsequent runs.

 Will merge to 'master'.
 source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>


* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
  (merged to 'next' on 2026-07-13 at dd2c5795b7)
 + object-file: fix closing object stream twice

 The stream-based object signature verification path has been
 corrected to avoid double-closing the stream on read errors.

 Will merge to 'master'.
 source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>


* pz/fetch-submodule-errors-config (2026-07-14) 4 commits
 - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail).
 Additionally, a premature failure during recursive submodule fetches
 has been fixed by deferring the error until the OID-based retry phase
 also fails.

 Needs review.
 cf. <xmqqldbdvb3x.fsf@gitster.g>
 source: <20260714132959.3368867-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Expecting a reroll.
 cf. <DJXL4KSUEAD4.1EE4ERHJZ00TR@gmail.com>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>


* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
 - submodule--helper: accept '-i' shorthand for update --init

 The '-i' shorthand for the '--init' option, which was accepted by the
 'git submodule update' command until it was broken in a modernization
 of the option-parsing code, has been restored.

 Will merge to 'next'.
 cf. <xmqq8q7ltf51.fsf@gitster.g>
 source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>


* hf/unpack-trees-quadratic-scan (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-12 at 744f1aede4)
 + unpack-trees: avoid quadratic index scan in next_cache_entry()

 The cache-scanning loop in 'next_cache_entry()' has been optimized
 to avoid rescanning already-unpacked index entries, preventing a
 quadratic performance slow-down when diffing the working tree
 against a commit with a pathspec matching early index entries.

 Will merge to 'master'.
 cf. <xmqqpl0xqh3n.fsf@gitster.g>
 source: <pull.2353.v2.git.git.1783546933992.gitgitgadget@gmail.com>


* jc/relnotes-2.55-rust-fix (2026-07-07) 1 commit
  (merged to 'next' on 2026-07-10 at 444d202a75)
 + Rust: fix description in Release Notes to 2.55

 A description in the release notes for Git 2.55.0 has been
 retroactively updated to clarify that Rust support is enabled by
 default, but still optional, and will become mandatory in Git 3.0.

 Will merge to 'master'.
 source: <xmqqpl0y4rpg.fsf@gitster.g>


* jc/submitting-patches-abandoning (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at 41b9b65b23)
 + SubmittingPatches: document how to retract a topic

 The 'SubmittingPatches' document has been updated to explicitly
 describe the expectation for contributors to retract or abandon their
 patch series when they are no longer pursuing it.

 Will merge to 'master'.
 cf. <ak6U07K1dQPlXxIp@nixos>
 source: <xmqqpl0xv25e.fsf@gitster.g>


* jk/git-hash-cleanups (2026-07-07) 8 commits
  (merged to 'next' on 2026-07-09 at 12a4856545)
 + hash: check ctx->active flag in all wrapper functions
 + http: use idempotent git_hash_discard()
 + csum-file: use idempotent git_hash_discard()
 + hash: make git_hash_discard() idempotent
 + hash: document function pointers and wrappers
 + hash: convert remaining direct function calls
 + hash: use git_hash_init() consistently
 + Merge branch 'jk/hash-algo-leak-fixes' into jk/git-hash-cleanups
 (this branch uses jk/hash-algo-leak-fixes.)

 The 'git_hash_*()' wrappers have been updated to be used consistently
 across the codebase instead of direct calls to members of 'struct
 git_hash_algo', and 'git_hash_discard()' has been made idempotent to
 simplify cleanups.

 Will merge to 'master'.
 cf. <ak4E4-jmgYFSI75O@pks.im>
 source: <20260708035235.GA41491@coredump.intra.peff.net>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* mm/sideband-ansi-sgr-colon-fix (2026-05-13) 1 commit
  (merged to 'next' on 2026-07-09 at fd2b979b73)
 + sideband: allow ANSI SGR with colon-separated subfields

 The sideband demultiplexer has been updated to recognize ANSI SGR
 escape sequences that use colon-separated subfields (e.g., for
 256-color or true-color codes).

 Will merge to 'master'.
 cf. <8addf7c0-ae39-f1c0-20ab-52114702aaf6@gmx.de>
 source: <20260513070803.163546-1-grawity@nullroute.lt>


* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
 - odb: make optimizations pluggable
 - builtin/gc: fix signedness issues in ODB-related functionality
 - builtin/gc: refactor ODB optimizations to operate on "files" source
 - builtin/gc: introduce `odb_optimize_required()`
 - builtin/gc: move geometric repacking into `odb_optimize()`
 - builtin/gc: introduce object database optimization options
 - builtin/gc: inline config values specific to the "files" backend
 - builtin/gc: make repack arguments self-contained
 - builtin/gc: extract object database optimizations into separate function
 - builtin/gc: move worktree and rerere tasks before object optimizations
 - odb: run "pre-auto-gc" hook for all maintenance tasks
 - t7900: simplify how we check for maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable.  The files-backend specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Needs review.
 cf. <xmqqwluyyhv1.fsf@gitster.g>
 source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* tc/bundle-uri-empty-fix (2026-07-08) 2 commits
  (merged to 'next' on 2026-07-12 at 9da32fdaf7)
 + bundle-uri: stop sending invalid bundle configuration
 + bundle-uri: drain remaining response on invalid bundle-uri lines

 The client-side parser of the server-advertised bundle-URI list has
 been updated to drain the remaining response in order to avoid
 protocol desynchronization when the server sends a misconfigured list.
 Also, the server-side has been taught to omit empty configuration
 values instead of sending invalid key-value lines.

 Will merge to 'master'.
 cf. <xmqqtsq9qj5k.fsf@gitster.g>
 source: <20260708-toon-bundle-uri-no-uri-v2-0-09a03d8db556@iotcl.com>


* gr/t1410-reflog-exit-code (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at d0cf55ea54)
 + t1410-reflog.sh: avoid suppressing git's exit code in pipelines

 The pipelines in 't1410-reflog.sh' have been replaced with the
 'test_stdout_line_count' helper to avoid suppressing the exit code of
 'git' commands, ensuring failures are not hidden from the test suite.

 Will merge to 'master'.
 cf. <xmqqtsq8p18x.fsf@gitster.g>
 source: <20260709051229.40363-1-gatlavishweshwarreddy26@gmail.com>


* js/coverity-fixes-null-safety (2026-07-10) 12 commits
  (merged to 'next' on 2026-07-12 at 8d093f411d)
 + shallow: give write_one_shallow() its own hex buffer
 + shallow: fix NULL dereference
 + bisect: ensure non-NULL `head` before using it
 + pack-bitmap: handle missing bitmap for base MIDX
 + revision: avoid dereferencing NULL in `add_parents_only()`
 + replay: die when --onto does not peel to a commit
 + bisect: handle NULL commit in `bisect_successful()`
 + mailsplit: move NULL check before first use of file handle
 + reftable/stack: guard against NULL list_file in stack_destroy
 + remote: guard `remote_tracking()` against NULL remote
 + diff: handle NULL return from repo_get_commit_tree()
 + diffcore-break: guard against NULLed queue entries in merge loop

 Various code paths have been hardened against potential NULL-pointer
 dereferences and invalid file descriptor accesses flagged by
 Coverity.

 Will merge to 'master'.
 cf. <xmqqa4ryg84e.fsf@gitster.g>
 source: <pull.2174.v2.git.1783683577.gitgitgadget@gmail.com>


* ps/odb-for-each-object-filter (2026-07-13) 10 commits
 - builtin/cat-file: filter objects via object database
 - odb: introduce object filters to `odb_for_each_object()`
 - pack-bitmap: introduce function to open bitmap for a single source
 - pack-bitmap: drop `_1` suffix from functions that open bitmaps
 - pack-bitmap: iterate object sources when opening bitmaps
 - pack-bitmap: allow aborting iteration of bitmapped objects
 - pack-objects: drop unused return value from add_object_entry()
 - pack-bitmap: mark object filter as `const`
 - odb/source-packed: improve lookup when enumerating objects
 - Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter
 (this branch uses ps/odb-drop-whence.)

 The object database enumeration interface 'odb_for_each_object()'
 has been taught to accept object filters, allowing the underlying
 backends to optimize the traversal by using reachability bitmaps
 when available.  'git cat-file --batch-all-objects' has been updated
 to use this generic interface, simplifying its code and avoiding
 direct access to ODB backend internals.

 Will merge to 'next'?
 cf. <alW0KzSZuZnHmOZD@com-79390>
 source: <20260713-pks-odb-for-each-object-filter-v3-0-b3c65c641073@pks.im>


* ps/refs-wo-the-repository (2026-07-09) 8 commits
 - refs: remove remaining uses of `the_repository`
 - worktree: pass repository to public functions
 - worktree: pass repository to file-local functions
 - worktree: refactor code to use available repositories
 - refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 - refs/packed: drop `USE_THE_REPOSITORY_VARIABLE`
 - refs/packed: de-globalize handling of "core.packedRefsTimeout"
 - Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository
 (this branch uses ps/refs-writing-subcommands.)

 The ref subsystem and the worktree API have been refactored to pass a
 repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable.  As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Expecting a reroll.
 cf. <alCJpxAQwpTQ4g93@pks.im>
 source: <20260709-pks-refs-wo-the-repository-v1-0-1ad6f27529c9@pks.im>


* kk/commit-graph-topo-levels-fix (2026-07-09) 2 commits
  (merged to 'next' on 2026-07-12 at 295a5f9b34)
 + commit-graph: propagate topo_levels slab to all chain layers
 + commit-graph: add trace2 instrumentation for generation DFS

 The 'topo_levels' slab was propagated only to the topmost layer of a
 split commit-graph chain, causing topological levels for commits in
 base layers to be recomputed during incremental writes.  This has been
 corrected.

 Will merge to 'master'.
 cf. <alFu8gZURKhYr1VE@com-79390>
 source: <pull.2170.v2.git.1783609382.gitgitgadget@gmail.com>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the sparse-index collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* kk/reftable-tombstone-quadratic-fix (2026-07-10) 2 commits
  (merged to 'next' on 2026-07-12 at 4e60bb0027)
 + reftable: fix quadratic behavior in the presence of tombstones
 + t/perf: add perf test for ref tombstone scenarios

 The performance of ref updates and reads using the 'reftable' backend
 in the presence of many deletion tombstone records has been optimized
 by removing the tombstone suppression flag from the merged iterator
 and instead skipping tombstones at higher-level call sites where
 iteration bounds are known.

 Will merge to 'master'.
 cf. <alECc90WZ9RPqMaA@pks.im>
 source: <pull.2166.v3.git.1783679767.gitgitgadget@gmail.com>


* rs/blame-abbrev-marks (2026-07-06) 1 commit
  (merged to 'next' on 2026-07-08 at e4962bd3d5)
 + blame: reserve mark column only if necessary

 The alignment of commit object name abbreviations in 'git blame'
 output has been optimized to reserve a column for marks (caret,
 question mark, or asterisk) only when such marks are actually shown.

 Will merge to 'master'.
 cf. <xmqqzf0397u1.fsf@gitster.g>
 source: <92991b5e-0667-4315-89d5-1514a5499297@web.de>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation, by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* bc/parse-options-exit-0-on-help (2026-07-07) 4 commits
  (merged to 'next' on 2026-07-10 at 775654e447)
 + parse-options: exit 0 on -h
 + rev-parse: have --parseopt callers exit 0 on --help
 + parse-options: add a separate case for help output on error
 + t1517: skip svn tests if svn is not installed

 Option parsing with 'git rev-parse --parseopt' and in most 'git'
 subcommands has been updated to exit with 0 (instead of 129) when the
 help option ('-h' or '--help') is requested directly by the user,
 aligning with standard Unix convention.

 Will merge to 'master'.
 cf. <20260708035930.GB41684@coredump.intra.peff.net>
 source: <20260708001557.3581080-1-sandals@crustytoothpaste.net>


* mg/meson-hook-list-buildfix (2026-07-01) 1 commit
  (merged to 'next' on 2026-07-08 at 10763a0ebc)
 + meson: restore hook-list.h to builtin_sources

 A racy build failure under Meson has been corrected by ensuring that
 the generated header file 'hook-list.h' is built before compiling
 files in 'builtin_sources' that depend on it.

 Will merge to 'master'.
 cf. <akZGJP1kVtjBFN_e@pks.im>
 source: <20260701193928.358825-1-floppym@gentoo.org>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* jk/hash-algo-leak-fixes (2026-07-02) 9 commits
  (merged to 'next' on 2026-07-09 at 7db7b74972)
 + hash: add platform-specific discard functions
 + hash: fix memory leak copying sha256 gcrypt handles
 + http: discard hash in dumb-http http_object_request
 + check_stream_oid(): discard hash on read error
 + patch-id: discard hash when done
 + csum-file: provide a function to release checkpoints
 + csum-file: always finalize or discard hash
 + hash: add discard primitive
 + csum-file: drop discard_hashfile()
 (this branch is used by jk/git-hash-cleanups.)

 Various code paths that initialize a cryptographic hash context but
 bail out or finish without calling 'git_hash_final()' have been taught
 to call 'git_hash_discard()' to release allocated resources, fixing
 memory leaks when Git is built with non-default backends like
 'OpenSSL' or 'libgcrypt'.

 Will merge to 'master'.
 cf. <aktIIKuReMxJmDsi@pks.im>
 source: <20260702075234.GA1548258@coredump.intra.peff.net>


* ml/t9811-replace-test-f (2026-07-11) 2 commits
 - t9811: replace 'test -f' and '! test -f' with 'test_path_*'
 - t9811: break long && chains into multiple lines

 The test script 't/t9811-git-p4-label-import.sh' has been
 modernized to use 'test_path_is_file' and 'test_path_is_missing'
 instead of raw 'test -f' and '! test -f' calls.

 Will merge to 'next'?
 cf. <alTHrUEh4_O5ROeu@pks.im>
 source: <20260711160447.99708-1-marcelomlage@usp.br>


* ps/t-fixes-for-git-test-long (2026-07-05) 9 commits
  (merged to 'next' on 2026-07-09 at c5b13248c8)
 + gitlab-ci: enable "GIT_TEST_LONG"
 + gitlab-ci: disable RAM disk on macOS jobs
 + t: use `test_bool_env` to parse GIT_TEST_LONG
 + t7900: clean up large EXPENSIVE repository
 + t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + t5608: reduce maximum disk usage
 + t4141: fix inefficient use of dd(1)
 + t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + README: add GitLab CI badge to make it more discoverable

 Various test scripts have been updated to clean up large temporary
 files and repositories, reducing peak disk usage during testing.
 Also, expensive tests have been disabled on platforms that lack
 sufficient resources (like 32-bit platforms and Windows CI runners),
 and the long test suite has been enabled in GitLab CI.

 Will merge to 'master'.
 cf. <20260707043026.GB677056@coredump.intra.peff.net>
 source: <20260706-b4-pks-t-fixes-for-GIT-TEST-LONG-v3-0-4f6c5a37fd1f@pks.im>


* ih/precompose-flex-array (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at 737a87f65e)
 + precompose_utf8: use a flex array for d_name

 The UTF-8 precomposition wrapper on macOS has been updated to use a
 flexible array member to represent the name of a directory entry,
 preventing fortified libc checks from failing when the name is
 reallocated to be larger than 'NAME_MAX' bytes.

 Will merge to 'master'.
 cf. <20260703050800.GA29216@tb-raspi4>
 source: <20260704233724.16928-1-ihar.hrachyshka@gmail.com>


* sn/osxkeychain-rust-universal (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-10 at fe82b5d188)
 + contrib: wire up osxkeychain in contrib/Makefile on macOS
 + Makefile: support universal macOS builds via RUST_TARGETS
 + Makefile: add $(RUST_LIB) prerequisite to osxkeychain

 The build system has been updated to support building universal macOS
 binaries when 'Rust' is enabled, by compiling separate static archives
 for each target triple listed in 'RUST_TARGETS' and combining them
 using the macOS 'lipo' tool.  The 'git-credential-osxkeychain' helper
 has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.

 Will merge to 'master'.
 cf. <xmqq4ii9teym.fsf@gitster.g>
 source: <pull.2288.v8.git.git.1783480879.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-07-09) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The '[includeIf "condition"]' conditional inclusion facility for
 configuration files has been taught to use the location of the
 worktree in its condition.

 Will merge to 'next'?
 cf. <alTJCTKR9jOWfgbk@pks.im>
 source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>


* kk/commit-reach-find-all-fix (2026-06-29) 2 commits
  (merged to 'next' on 2026-07-10 at 0444c74d81)
 + commit-reach: guard !FIND_ALL early exit with generation ordering check
 + t6600: add test for merge-base early exit with clock skew
 (this branch is used by kk/merge-base-exhaustion.)

 The early-exit optimization in 'paint_down_to_common()' has been
 gated on the queue being generation-ordered, fixing a bug where
 'git merge-base' (without '--all') could return incorrect results
 on repositories with v1 commit graphs and clock skew.

 Will merge to 'master'.
 cf. <xmqqjyr5v1gu.fsf@gitster.g>
 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use 'test_path_is_file', 'test_path_is_dir', and
 'test_path_is_missing' helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response(s) to review comment(s).
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
  (merged to 'next' on 2026-07-10 at 1691a942ab)
 + setup: mark `set_git_work_tree()` as file-local
 + setup: pass worktree to `init_db()`
 + setup: drop redundant configuration of `startup_info->have_repository`
 + setup: make repository discovery self-contained
 + setup: propagate prefix via repository discovery
 + setup: drop static `cwd` variable
 + setup: move prefix into repository
 + setup: embed repository format in discovery
 + setup: introduce explicit repository discovery
 + setup: split up concerns of `setup_git_env_internal()`
 + setup: unify setup of shallow file
 + setup: mark bogus worktree in `apply_repository_format()`
 + setup: rename `check_repository_format_gently()`
 + Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup

 The repository discovery and repository configuration phases, which
 were previously intertwined in 'setup.c', have been split.  Repository
 discovery has been updated to populate a 'struct repo_discovery'
 without modifying the repository state, which is then taken by
 repository configuration to initialize the repository, paving the way
 for clean unification of repository configuration.

 Will merge to 'master'.
 cf. <87h5m9om0j.fsf@emacs.iotcl.com>
 source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>


* pw/rebase-drop-notes-with-commit (2026-07-13) 10 commits
 - sequencer: do not record dropped commits as rewritten
 - sequencer: use an enum to represent result of picking a commit
 - sequencer: simplify pick_one_commit()
 - sequencer: remove unnecessary condition in pick_one_commit()
 - sequencer: simplify handing of fixup with conflicts
 - sequencer: remove unnecessary "or" in pick_one_commit()
 - sequencer: never reschedule on failed commit
 - sequencer: be more careful with external merge
 - sequencer: move definition of is_final_fixup()
 - t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected.  When
 a commit is dropped during rebase (e.g., because its changes are
 already upstream), it is no longer recorded as rewritten, preventing
 its notes from being copied to an unrelated commit.

 Needs review.
 cf. <alTxn7MmX3aH_7gp@ugly.lan>
 source: <cover.1783948637.git.phillip.wood@dunelm.org.uk>


* jk/bloom-leak-fixes (2026-06-30) 3 commits
  (merged to 'next' on 2026-07-08 at 3b9a1cda3f)
 + line-log: drop extra copy of range with bloom filters
 + revision: avoid leaking bloom keyvecs with multiple traversals
 + bloom: make bloom-filter slab initialization idempotent

 Various memory leaks in the Bloom-filter code paths that are exposed
 when running tests with the 'GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1'
 environment variable have been plugged.

 Will merge to 'master'.
 cf. <b641aed4-ad52-477b-b1d8-9d8e470be46f@gmail.com>
 cf. <xmqqo6gqobrt.fsf@gitster.g>
 source: <20260701063538.GA2579765@coredump.intra.peff.net>


* js/ci-dockerized-pid-limit (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at cd80e673a5)
 + ci(dockerized): raise the PID limit for private repositories

 Dockerized CI jobs running in private GitHub repositories have been
 adjusted to use explicit process and file limits, preventing resource
 exhaustion errors on private runners.

 Will merge to 'master'.
 cf. <xmqqh5medmzh.fsf@gitster.g>
 source: <pull.2164.v2.git.1783155124926.gitgitgadget@gmail.com>


* js/coverity-fixes (2026-07-05) 12 commits
  (merged to 'next' on 2026-07-09 at 1823fe297c)
 + mingw: make `exit_process()` own the process handle on all paths
 + fsmonitor: plug token-data leak on early daemon-startup failures
 + reftable/table: release filter on error path
 + imap-send: avoid leaking the IMAP upload buffer
 + worktree: fix resource leaks when branch creation fails
 + submodule: fix cwd leak in `get_superproject_working_tree()`
 + dir: free allocations on parse-error paths in `read_one_dir()`
 + line-log: avoid redundant copy that leaks in process_ranges
 + run-command: avoid `close(-1)` in `start_command()` error paths
 + download_https_uri_to_file(): do not leak fd upon failure
 + loose: avoid closing invalid fd on error path
 + load_one_loose_object_map(): fix resource leak

 Various resource leaks, invalid file descriptor closures, and process
 handle ownership issues flagged by Coverity have been fixed.

 Will merge to 'master'.
 cf. <xmqqa4s238lg.fsf@gitster.g>
 source: <pull.2163.v2.git.1783239870.gitgitgadget@gmail.com>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together.  When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response(s) to review comment(s).
 cf. <aj8cOhH6hGVZIFft@nand.local>
 source: <cover.1782500507.git.me@ttaylorr.com>


* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
 - builtin/receive-pack: stage incoming objects via ODB transactions
 - builtin/receive-pack: drop redundant tmpdir env
 - odb/transaction: introduce ODB transaction flags
 - odb/transaction: add transaction env interface
 - odb/transaction: propagate commit errors
 - odb/transaction: propagate begin errors
 - object-file: propagate files transaction errors
 - object-file: drop check for inflight transactions
 - object-file: embed transaction flush logic in commit function
 - object-file: rename files transaction fsync function
 - object-file: rename files transaction prepare function

 'git receive-pack' has been refactored to use ODB transaction
 interfaces instead of directly managing 'tmp_objdir' for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Will merge to 'next'.
 cf. <alR1P-RGZNmjyiUE@pks.im>
 source: <20260710163722.2962278-1-jltobler@gmail.com>


* ps/odb-drop-whence (2026-07-02) 7 commits
  (merged to 'next' on 2026-07-08 at f43ee51cc3)
 + odb: document object info fields
 + odb: drop `whence` field from object info
 + treewide: convert users of `whence` to the new source field
 + odb: add `source` field to struct object_info_source
 + odb: make backend-specific fields optional
 + packfile: thread odb_source_packed through packed_object_info()
 + Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
 (this branch is used by ps/odb-for-each-object-filter.)

 The 'whence' field in 'struct object_info' has been removed.  The
 backend-specific object information retrieval has been refactored into
 an opt-in 'struct object_info_source' structure.

 Will merge to 'master'.
 cf. <xmqqv7b0rmt6.fsf@gitster.g>
 source: <20260702-b4-pks-odb-drop-whence-v2-0-b0af7468ad95@pks.im>


* ps/reftable-hardening (2026-07-03) 12 commits
  (merged to 'next' on 2026-07-10 at b8f4dd0ab9)
 + reftable/table: fix OOB read on truncated table
 + reftable/table: fix NULL pointer access when seeking to bogus offsets
 + reftable/block: fix OOB read with bogus restart offset
 + reftable/block: fix use of uninitialized memory when binsearch fails
 + reftable/block: fix OOB read with bogus restart count
 + reftable/block: fix OOB read with bogus block size
 + reftable/block: fix OOB write with bogus inflated log size
 + t/unit-tests: introduce test helper to write reftable blocks
 + reftable/record: don't abort when decoding invalid ref value type
 + reftable/basics: fix OOB read on binary search of empty range
 + oss-fuzz: add fuzzer for parsing reftables
 + meson: support building fuzzers with libFuzzer

 The reftable code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Will merge to 'master'.
 cf. <877bn5obz9.fsf@emacs.iotcl.com>
 source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>


* jc/history-message-prep-fix (2026-06-29) 1 commit
  (merged to 'next' on 2026-07-06 at 00534a21ce)
 + history: streamline message preparation and plug file stream leak

 A write file stream resource leak has been fixed as part of a code
 cleanup.

 Will merge to 'master'.
 cf. <akO1mhi2u2PntLbt@pks.im>
 source: <xmqqmrwdxrat.fsf@gitster.g>


* ty/migrate-excludes-file (2026-07-13) 10 commits
 - repository: adjust the comment of config_values_private_
 - environment: move object_creation_mode into repo_config_values
 - environment: move autorebase into repo_config_values
 - environment: move push_default into repo_config_values
 - environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 - environment: move askpass_program into repo_config_values
 - environment: move pager_program into repo_config_values
 - environment: move editor_program into repo_config_values
 - environment: move excludes_file into repo_config_values
 - repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Needs review.
 source: <20260714032525.1611141-1-cat@malon.dev>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The 'USE_NSEC' build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Will discard.
 cf. <45F2C180-1DE1-4371-869B-BF605B64E01A@gmail.com>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/libgit-in-subdir (2026-07-12) 3 commits
 - Move libgit.a sources into separate "lib/" directory
 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Needs review.
 cf. <alR9GDNTbdjWB4dq@szeder.dev>
 source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* ty/migrate-ignorecase (2026-06-19) 2 commits
  (merged to 'next' on 2026-07-12 at 39e9fdb93f)
 + config: use repo_ignore_case() to access core.ignorecase
 + environment: move ignore_case into repo_config_values

 The global configuration variable 'ignore_case' (representing the
 'core.ignorecase' configuration) has been migrated into 'struct
 repo_config_values' to tie it to a specific repository instance.

 Will merge to 'master'.
 cf. <xmqqechaga7p.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-10) 5 commits
 - history: re-edit a squash with every message
 - sequencer: share the squash message marker helpers and flags
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Expecting a reroll.
 cf. <CAHwyqnVYQ6Sk=4ot6=5AbUdqxCrwS15xt_+wX3DB1h369CSqsA@mail.gmail.com>
 source: <pull.2337.v8.git.git.1783674396.gitgitgadget@gmail.com>


* ps/refs-writing-subcommands (2026-07-06) 5 commits
  (merged to 'next' on 2026-07-08 at f001147283)
 + builtin/refs: add "rename" subcommand
 + builtin/refs: add "create" subcommand
 + builtin/refs: add "update" subcommand
 + builtin/refs: add "delete" subcommand
 + builtin/refs: drop `the_repository`
 (this branch is used by ps/refs-wo-the-repository.)

 The 'git refs' toolbox has been extended with new 'create', 'delete',
 'update', and 'rename' subcommands to create, delete, update, and
 rename references, respectively.

 Will merge to 'master'.
 source: <20260706-pks-refs-writing-subcommands-v4-0-d51f6ce7f830@pks.im>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
  (merged to 'next' on 2026-07-12 at adeaa999b6)
 + MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Will merge to 'master'.
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option.  Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-07-05) 6 commits
  (merged to 'next' on 2026-07-10 at 1916c07bf5)
 + t: add greplint to detect bare grep assertions
 + t: convert grep assertions to test_grep
 + t: fix Lexer line count for $() inside double-quoted strings
 + t: extract chainlint's parser into shared module
 + t: fix grep assertions missing file arguments
 + t/README: document test_grep helper

 The test suite has been updated to use the 'test_grep' helper instead
 of bare 'grep' for test assertions, allowing file contents to be
 printed on failure for easier debugging.  A new 'greplint' linter has
 been introduced to detect and prevent new bare 'grep' assertions from
 being added to the test suite.

 Will merge to 'master'.
 cf. <xmqqtsqedxmt.fsf@gitster.g>
 source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have been
 optimized to use the memoized commit traversal previously used only by
 'git tag --contains', significantly speeding up connectivity checks
 across many candidate refs with shared history.

 Needs review.
 cf. <xmqqqzlpulkp.fsf@gitster.g>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-09 at 371c2e9c3b)
 + replay: offer an option to linearize the commit topology
 + replay: resolve the replay base outside pick_regular_commit()
 + replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Will merge to 'master'?
 cf. <xmqq5x2qz42z.fsf@gitster.g>
 cf. <CABPp-BGzU9KHGF1nipi2HZaa1AiikMKGGaapQzHVH06wO4V1ww@mail.gmail.com>
 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-14) 13 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with an allow-list
 - 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
 - connect: make write_fetch_command_and_capabilities() more generic
 - fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 - fetch-pack: drop static advertise_sid variable
 - fetch-pack: fix hash_algo variable type
 - t1006: split test utility functions into new 'lib-cat-file.sh'
 - cat-file: declare loop counter inside for()
 - transport-helper: fix memory leak of helper on disconnect

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.  Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Needs review.
 cf. <xmqq8q7dto8d.fsf@gitster.g>
 source: <20260714-ps-eric-work-rebase-v17-0-afabfc83260e@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 enabling external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll for too long, stalled.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 cf. <xmqqcxx9ukvw.fsf@gitster.g>
 source: <20260619162105.648495-1-cat@malon.dev>


* ps/history-drop (2026-07-01) 11 commits
  (merged to 'next' on 2026-07-08 at 6fb84708a4)
 + builtin/history: implement "drop" subcommand
 + builtin/history: split handling of ref updates into two phases
 + replay: expose `replay_result_queue_update()`
 + reset: stop assuming that the caller passes in a clean index
 + reset: allow the caller to specify the current HEAD object
 + reset: introduce ability to skip updating HEAD
 + reset: introduce dry-run mode
 + reset: modernize flags passed to `reset_working_tree()`
 + reset: rename `reset_head()`
 + reset: drop `USE_THE_REPOSITORY_VARIABLE`
 + read-cache: split out function to drop unmerged entries to stage 0

 The experimental 'git history' command has been taught a new 'drop'
 subcommand to remove a commit, with its descendants replayed onto its
 parent.

 Will merge to 'master'.
 cf. <xmqq1pdmprbk.fsf@gitster.g>
 cf. <CAP8UFD3OAktVQsLuqBNFH2uhEO31PH8ZF3ZT1ZW8k++XE8YLPw@mail.gmail.com>
 source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s), stalled.
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Waiting for response(s) to review comment(s).
 cf. <87cxwxofgv.fsf@emacs.iotcl.com>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-07-14) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged to their tracked
 remote-tracking branches.

 Needs review.
 source: <pull.2285.v19.git.git.1784053493.gitgitgadget@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote the new branch will work with.

 Waiting for response(s) to review comment(s).
 cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-14) 7 commits
 - graph: add --[no-]graph-indent and log.graphIndent
 - graph: move config reading into graph_read_config()
 - graph: wrap cascading commits after 4 columns
 - graph: indent visual root in graph
 - graph: add a 2 commit buffer for lookahead
 - revision: add next_commit_to_show()
 - lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Needs review.
 source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion
 (this branch uses kk/commit-reach-find-all-fix.)

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* kk/prio-queue-cascade-sift (2026-07-08) 3 commits
 . prio-queue: use cascade for unfused gets
 . prio-queue: extract sift_up() from prio_queue_put()
 . Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift

 'prio_queue_get()' has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), whereby the number of comparisons per
 extract-min operation is halved in the common case.

 Retracted.
 cf. <CAL71e4PRVYfUWc-c+6XHTwtADqrbub9ykbo+rPyramDhJw=Rfg@mail.gmail.com>
 source: <pull.2132.v3.git.1783532989.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 12%]

* What's cooking in git.git (Jul 2026, #05)
@ 2026-07-13  5:40 13% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-13  5:40 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all. They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The first batch of topics have now graduated to the 'master' branch.

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/pack-objects-delta-size-t (2026-07-09) 12 commits
 - git-zlib: widen `git_deflate_bound()` to `size_t`
 - t/helper/test-pack-deltas: widen `do_compress()`'s maxsize local to `size_t`
 - http-push: widen `start_put()`'s size local from `ssize_t` to `size_t`
 - diff: widen `deflate_it()`'s bound local from int to `size_t`
 - archive-zip: widen `zlib_deflate_raw()`'s maxsize local to `size_t`
 - packfile, git-zlib: widen `use_pack()` and zstream avail fields to `size_t`
 - delta: widen `create_delta()` and `diff_delta()` to `size_t`
 - pack-objects: widen `mem_usage` and `try_delta()`'s out-param to `size_t`
 - pack-objects: widen `free_unpacked()` return to `size_t`
 - pack-objects: widen delta-cache accounting to `size_t`
 - delta: widen `create_delta_index()` parameter to `size_t`
 - diff-delta: widen `struct delta_index`' size fields to `size_t`

 The pack-objects and delta-encoding code paths have been updated to
 use 'size_t' instead of 'unsigned long' for object sizes and offset
 limits, avoiding potential truncation issues on 64-bit Windows.

 Needs review.
 source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* cl/b4-cover-change-id (2026-07-10) 1 commit
 - b4: include change-id in cover template

 The in-tree 'b4' cover letter template has been updated to include the
 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
 the required tracking information for subsequent runs.

 Will merge to 'next'.
 source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>


* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
 - object-file: fix closing object stream twice

 The stream-based object signature verification path has been
 corrected to avoid double-closing the stream on read errors.

 Will merge to 'next'.
 source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>


* pz/fetch-submodule-errors-config (2026-07-11) 3 commits
 - fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
 - submodule: fix premature failure in recursive submodule fetch

 The 'git fetch' command has been updated to allow configuring how
 submodule fetch errors are handled.  A new configuration variable
 'fetch.submoduleErrors' and a corresponding '--submodule-errors'
 command-line option have been introduced, allowing users to make
 submodule fetch errors non-fatal (warn instead of fail). Additionally,
 a premature failure during recursive submodule fetches has been fixed
 by deferring the error until the OID-based retry phase also fails.

 Needs review.
 source: <20260710122655.3066377-1-paulius.zaleckas@gmail.com>


* gr/add-e-use-apply-api (2026-07-10) 1 commit
 - builtin/add.c: replace run_command() with direct apply_all_patches() call

 The application of the edited patch in 'git add -e' has been
 refactored to use the internal apply API directly, avoiding the need
 to spawn a 'git apply' subprocess.

 Needs review.
 source: <20260711061246.58079-1-gatlavishweshwarreddy26@gmail.com>


* fz/rebase-autosquash-empty (2026-07-11) 1 commit
 . sequencer: honor --empty when a fixup!/squash! empties its target

 A commit that is emptied by melding a 'fixup!' or 'squash!' commit
 during 'git rebase --autosquash' is now handled according to the
 '--empty' option, allowing it to be dropped, kept, or to halt the
 rebase.

 Waiting for response(s) to review comment(s).
 cf. <xmqqh5m494yh.fsf@gitster.g>
 source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>

--------------------------------------------------
[Stalled]

* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll for too long, stalled.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
 the redirect target were lost because 'credential_from_url()' cleared
 the credential state.  This has been fixed by preserving the collected
 headers across the redirect update.

 Will discard.
 cf. <xmqqmrw2zavx.fsf@gitster.g>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
 - submodule--helper: accept '-i' shorthand for update --init

 The '-i' shorthand for the '--init' option, which was accepted by the
 'git submodule update' command until it was broken in a modernization
 of the option-parsing code, has been restored.

 Needs review.
 source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>


* hf/unpack-trees-quadratic-scan (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-12 at 744f1aede4)
 + unpack-trees: avoid quadratic index scan in next_cache_entry()

 The cache-scanning loop in 'next_cache_entry()' has been optimized
 to avoid rescanning already-unpacked index entries, preventing a
 quadratic performance slow-down when diffing the working tree
 against a commit with a pathspec matching early index entries.

 Will merge to 'master'.
 cf. <xmqqpl0xqh3n.fsf@gitster.g>
 source: <pull.2353.v2.git.git.1783546933992.gitgitgadget@gmail.com>


* jc/relnotes-2.55-rust-fix (2026-07-07) 1 commit
  (merged to 'next' on 2026-07-10 at 444d202a75)
 + Rust: fix description in Release Notes to 2.55

 A description in the release notes for Git 2.55.0 has been
 retroactively updated to clarify that Rust support is enabled by
 default, but still optional, and will become mandatory in Git 3.0.

 Will merge to 'master'.
 source: <xmqqpl0y4rpg.fsf@gitster.g>


* jc/submitting-patches-abandoning (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at 41b9b65b23)
 + SubmittingPatches: document how to retract a topic

 The 'SubmittingPatches' document has been updated to explicitly
 describe the expectation for contributors to retract or abandon their
 patch series when they are no longer pursuing it.

 Will merge to 'master'.
 cf. <ak6U07K1dQPlXxIp@nixos>
 source: <xmqqpl0xv25e.fsf@gitster.g>


* jk/git-hash-cleanups (2026-07-07) 8 commits
  (merged to 'next' on 2026-07-09 at 12a4856545)
 + hash: check ctx->active flag in all wrapper functions
 + http: use idempotent git_hash_discard()
 + csum-file: use idempotent git_hash_discard()
 + hash: make git_hash_discard() idempotent
 + hash: document function pointers and wrappers
 + hash: convert remaining direct function calls
 + hash: use git_hash_init() consistently
 + Merge branch 'jk/hash-algo-leak-fixes' into jk/git-hash-cleanups
 (this branch uses jk/hash-algo-leak-fixes.)

 The 'git_hash_*()' wrappers have been updated to be used consistently
 across the codebase instead of direct calls to members of 'struct
 git_hash_algo', and 'git_hash_discard()' has been made idempotent to
 simplify cleanups.

 Will merge to 'master'.
 cf. <ak4E4-jmgYFSI75O@pks.im>
 source: <20260708035235.GA41491@coredump.intra.peff.net>


* mm/lib-httpd-cgi-safe (2026-07-10) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Needs review.
 source: <pull.2171.v2.git.1783704657.gitgitgadget@gmail.com>


* mm/sideband-ansi-sgr-colon-fix (2026-05-13) 1 commit
  (merged to 'next' on 2026-07-09 at fd2b979b73)
 + sideband: allow ANSI SGR with colon-separated subfields

 The sideband demultiplexer has been updated to recognize ANSI SGR
 escape sequences that use colon-separated subfields (e.g., for
 256-color or true-color codes).

 Will merge to 'master'.
 cf. <8addf7c0-ae39-f1c0-20ab-52114702aaf6@gmx.de>
 source: <20260513070803.163546-1-grawity@nullroute.lt>


* ps/odb-pluggable-housekeeping (2026-07-07) 11 commits
 - odb: make optimizations pluggable
 - builtin/gc: fix signedness issues in ODB-related functionality
 - builtin/gc: refactor ODB optimizations to operate on "files" source
 - builtin/gc: introduce `odb_optimize_required()`
 - builtin/gc: move geometric repacking into `odb_optimize()`
 - builtin/gc: introduce object database optimization options
 - builtin/gc: inline config values specific to the "files" backend
 - builtin/gc: make repack arguments self-contained
 - builtin/gc: extract object database optimizations into separate function
 - builtin/gc: move worktree and rerere tasks before object optimizations
 - odb: run "pre-auto-gc" hook for all maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable. The files-backend specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Expecting a reroll.
 cf. <ak4CHGpIhVIT9sd2@pks.im>
 source: <20260707-b4-pks-odb-optimize-v1-0-aae607667be4@pks.im>


* tc/bundle-uri-empty-fix (2026-07-08) 2 commits
  (merged to 'next' on 2026-07-12 at 9da32fdaf7)
 + bundle-uri: stop sending invalid bundle configuration
 + bundle-uri: drain remaining response on invalid bundle-uri lines

 The client-side parser of server-advertised bundle-URI list has been
 updated to drain the remaining response in order to avoid protocol
 desynchronization when the server sends a misconfigured list. Also,
 the server-side has been taught to omit empty configuration values
 instead of sending invalid key-value lines.

 Will merge to 'master'.
 cf. <xmqqtsq9qj5k.fsf@gitster.g>
 source: <20260708-toon-bundle-uri-no-uri-v2-0-09a03d8db556@iotcl.com>


* gr/t1410-reflog-exit-code (2026-07-08) 1 commit
  (merged to 'next' on 2026-07-10 at d0cf55ea54)
 + t1410-reflog.sh: avoid suppressing git's exit code in pipelines

 The pipelines in 't1410-reflog.sh' have been replaced with the
 'test_stdout_line_count' helper to avoid suppressing the exit code of
 'git' commands, ensuring failures are not hidden from the test suite.

 Will merge to 'master'.
 cf. <xmqqtsq8p18x.fsf@gitster.g>
 source: <20260709051229.40363-1-gatlavishweshwarreddy26@gmail.com>


* js/coverity-fixes-null-safety (2026-07-10) 12 commits
  (merged to 'next' on 2026-07-12 at 8d093f411d)
 + shallow: give write_one_shallow() its own hex buffer
 + shallow: fix NULL dereference
 + bisect: ensure non-NULL `head` before using it
 + pack-bitmap: handle missing bitmap for base MIDX
 + revision: avoid dereferencing NULL in `add_parents_only()`
 + replay: die when --onto does not peel to a commit
 + bisect: handle NULL commit in `bisect_successful()`
 + mailsplit: move NULL check before first use of file handle
 + reftable/stack: guard against NULL list_file in stack_destroy
 + remote: guard `remote_tracking()` against NULL remote
 + diff: handle NULL return from repo_get_commit_tree()
 + diffcore-break: guard against NULLed queue entries in merge loop

 Various code paths have been hardened against potential NULL-pointer
 dereferences and invalid file descriptor accesses flagged by
 Coverity.

 Will merge to 'master'.
 cf. <xmqqa4ryg84e.fsf@gitster.g>
 source: <pull.2174.v2.git.1783683577.gitgitgadget@gmail.com>


* ps/odb-for-each-object-filter (2026-07-10) 9 commits
 - builtin/cat-file: filter objects via object database
 - odb: introduce object filters to `odb_for_each_object()`
 - pack-bitmap: introduce function to open bitmap for a single source
 - pack-bitmap: drop `_1` suffix from functions that open bitmaps
 - pack-bitmap: iterate object sources when opening bitmaps
 - pack-bitmap: allow aborting iteration of bitmapped objects
 - pack-bitmap: mark object filter as `const`
 - odb/source-packed: improve lookup when enumerating objects
 - Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter
 (this branch uses ps/odb-drop-whence.)

 The object database enumeration interface 'odb_for_each_object()' has
 been taught to accept object filters, allowing the underlying backends
 to optimize the traversal by using reachability bitmaps when
 available.  'git cat-file --batch-all-objects' has been updated to
 use this generic interface, simplifying its code and avoiding direct
 access to ODB backend internals.

 Needs review.
 source: <20260710-pks-odb-for-each-object-filter-v2-0-3710a9cc165a@pks.im>


* ps/refs-wo-the-repository (2026-07-09) 8 commits
 - refs: remove remaining uses of `the_repository`
 - worktree: pass repository to public functions
 - worktree: pass repository to file-local functions
 - worktree: refactor code to use available repositories
 - refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 - refs/packed: drop `USE_THE_REPOSITORY_VARIABLE`
 - refs/packed: de-globalize handling of "core.packedRefsTimeout"
 - Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository
 (this branch uses ps/refs-writing-subcommands.)

 The ref subsystem and the worktree API have been refactored to pass a
 repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable. As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Expecting a reroll.
 cf. <alCJpxAQwpTQ4g93@pks.im>
 source: <20260709-pks-refs-wo-the-repository-v1-0-1ad6f27529c9@pks.im>


* kk/commit-graph-topo-levels-fix (2026-07-09) 2 commits
  (merged to 'next' on 2026-07-12 at 295a5f9b34)
 + commit-graph: propagate topo_levels slab to all chain layers
 + commit-graph: add trace2 instrumentation for generation DFS

 The 'topo_levels' slab was propagated only to the topmost layer of a
 split commit-graph chain, causing topological levels for commits in
 base layers to be recomputed during incremental writes. This has been
 corrected.

 Will merge to 'master'.
 cf. <alFu8gZURKhYr1VE@com-79390>
 source: <pull.2170.v2.git.1783609382.gitgitgadget@gmail.com>


* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the sparse-index collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27219.20156.438730.881821@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* kk/reftable-tombstone-quadratic-fix (2026-07-10) 2 commits
  (merged to 'next' on 2026-07-12 at 4e60bb0027)
 + reftable: fix quadratic behavior in the presence of tombstones
 + t/perf: add perf test for ref tombstone scenarios

 The performance of ref updates and reads using the 'reftable' backend
 in the presence of many deletion tombstone records has been optimized
 by removing the tombstone suppression flag from the merged iterator
 and instead skipping tombstones at higher-level call sites where
 iteration bounds are known.

 Will merge to 'master'.
 cf. <alECc90WZ9RPqMaA@pks.im>
 source: <pull.2166.v3.git.1783679767.gitgitgadget@gmail.com>


* rs/blame-abbrev-marks (2026-07-06) 1 commit
  (merged to 'next' on 2026-07-08 at e4962bd3d5)
 + blame: reserve mark column only if necessary

 The alignment of commit object name abbreviations in 'git blame'
 output has been optimized to reserve a column for marks (caret,
 question mark, or asterisk) only when such marks are actually shown.

 Will merge to 'master'.
 cf. <xmqqzf0397u1.fsf@gitster.g>
 source: <92991b5e-0667-4315-89d5-1514a5499297@web.de>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation, by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* bc/parse-options-exit-0-on-help (2026-07-07) 4 commits
  (merged to 'next' on 2026-07-10 at 775654e447)
 + parse-options: exit 0 on -h
 + rev-parse: have --parseopt callers exit 0 on --help
 + parse-options: add a separate case for help output on error
 + t1517: skip svn tests if svn is not installed

 Option parsing with 'git rev-parse --parseopt' and in most 'git'
 subcommands has been updated to exit with 0 (instead of 129) when the
 help option ('-h' or '--help') is requested directly by the user,
 aligning with standard Unix convention.

 Will merge to 'master'.
 cf. <20260708035930.GB41684@coredump.intra.peff.net>
 source: <20260708001557.3581080-1-sandals@crustytoothpaste.net>


* mg/meson-hook-list-buildfix (2026-07-01) 1 commit
  (merged to 'next' on 2026-07-08 at 10763a0ebc)
 + meson: restore hook-list.h to builtin_sources

 A racy build failure under Meson has been corrected by ensuring that
 the generated header file 'hook-list.h' is built before compiling
 files in 'builtin_sources' that depend on it.

 Will merge to 'master'.
 cf. <akZGJP1kVtjBFN_e@pks.im>
 source: <20260701193928.358825-1-floppym@gentoo.org>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* jk/hash-algo-leak-fixes (2026-07-02) 9 commits
  (merged to 'next' on 2026-07-09 at 7db7b74972)
 + hash: add platform-specific discard functions
 + hash: fix memory leak copying sha256 gcrypt handles
 + http: discard hash in dumb-http http_object_request
 + check_stream_oid(): discard hash on read error
 + patch-id: discard hash when done
 + csum-file: provide a function to release checkpoints
 + csum-file: always finalize or discard hash
 + hash: add discard primitive
 + csum-file: drop discard_hashfile()
 (this branch is used by jk/git-hash-cleanups.)

 Various code paths that initialize a cryptographic hash context but
 bail out or finish without calling 'git_hash_final()' have been taught
 to call 'git_hash_discard()' to release allocated resources, fixing
 memory leaks when Git is built with non-default backends like
 'OpenSSL' or 'libgcrypt'.

 Will merge to 'master'.
 cf. <aktIIKuReMxJmDsi@pks.im>
 source: <20260702075234.GA1548258@coredump.intra.peff.net>


* ml/t9811-replace-test-f (2026-07-11) 2 commits
 - t9811: replace 'test -f' and '! test -f' with 'test_path_*'
 - t9811: break long && chains into multiple lines

 The test script 't/t9811-git-p4-label-import.sh' has been
 modernized to use 'test_path_is_file' and 'test_path_is_missing'
 instead of raw 'test -f' and '! test -f' calls.

 Needs review.
 source: <20260711160447.99708-1-marcelomlage@usp.br>


* ps/t-fixes-for-git-test-long (2026-07-05) 9 commits
  (merged to 'next' on 2026-07-09 at c5b13248c8)
 + gitlab-ci: enable "GIT_TEST_LONG"
 + gitlab-ci: disable RAM disk on macOS jobs
 + t: use `test_bool_env` to parse GIT_TEST_LONG
 + t7900: clean up large EXPENSIVE repository
 + t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + t5608: reduce maximum disk usage
 + t4141: fix inefficient use of dd(1)
 + t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + README: add GitLab CI badge to make it more discoverable

 Various test scripts have been updated to clean up large temporary
 files and repositories, reducing peak disk usage during testing.
 Also, expensive tests have been disabled on platforms that lack
 sufficient resources (like 32-bit platforms and Windows CI
 runners), and the long test suite has been enabled in GitLab CI.

 Will merge to 'master'.
 cf. <20260707043026.GB677056@coredump.intra.peff.net>
 source: <20260706-b4-pks-t-fixes-for-GIT-TEST-LONG-v3-0-4f6c5a37fd1f@pks.im>


* ih/precompose-flex-array (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at 737a87f65e)
 + precompose_utf8: use a flex array for d_name

 The UTF-8 precomposition wrapper on macOS has been updated to use a
 flexible array member to represent the name of a directory entry,
 preventing fortified libc checks from failing when the name is
 reallocated to be larger than 'NAME_MAX' bytes.

 Will merge to 'master'.
 cf. <20260703050800.GA29216@tb-raspi4>
 source: <20260704233724.16928-1-ihar.hrachyshka@gmail.com>


* sn/osxkeychain-rust-universal (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-10 at fe82b5d188)
 + contrib: wire up osxkeychain in contrib/Makefile on macOS
 + Makefile: support universal macOS builds via RUST_TARGETS
 + Makefile: add $(RUST_LIB) prerequisite to osxkeychain

 The build system has been updated to support building universal macOS
 binaries when 'Rust' is enabled, by compiling separate static archives
 for each target triple listed in 'RUST_TARGETS' and combining them
 using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
 has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.

 Will merge to 'master'.
 cf. <xmqq4ii9teym.fsf@gitster.g>
 source: <pull.2288.v8.git.git.1783480879.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-07-09) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The '[includeIf "condition"]' conditional inclusion facility for
 configuration files has been taught to use the location of the
 worktree in its condition.

 Needs review.
 source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>


* kk/commit-reach-find-all-fix (2026-06-29) 2 commits
  (merged to 'next' on 2026-07-10 at 0444c74d81)
 + commit-reach: guard !FIND_ALL early exit with generation ordering check
 + t6600: add test for merge-base early exit with clock skew
 (this branch is used by kk/merge-base-exhaustion.)

 The early-exit optimization in 'paint_down_to_common()' has been
 gated on the queue being generation-ordered, fixing a bug where
 'git merge-base' (without '--all') could return incorrect results
 on repositories with v1 commit graphs and clock skew.

 Will merge to 'master'.
 cf. <xmqqjyr5v1gu.fsf@gitster.g>
 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 The test script 't7412' that tests 'git submodule absorbgitdirs' has
 been modernized to use 'test_path_is_file', 'test_path_is_dir', and
 'test_path_is_missing' helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response(s) to review comment(s).
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* jk/format-patch-leakfix (2026-06-29) 2 commits
  (merged to 'next' on 2026-07-06 at 35aff0d609)
 + format-patch: fix leak of rev_info in prepare_bases()
 + t: move LSan errors from stdout to stderr

 A memory leak in the '--base' handling of 'git format-patch' has been
 plugged, and the leak-reporting of the test suite when running under a
 TAP harness has been improved.

 Will merge to 'master'.
 cf. <akOZy-BygZS8fqPM@pks.im>
 source: <20260630063944.GA3733670@coredump.intra.peff.net>


* ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
  (merged to 'next' on 2026-07-10 at 1691a942ab)
 + setup: mark `set_git_work_tree()` as file-local
 + setup: pass worktree to `init_db()`
 + setup: drop redundant configuration of `startup_info->have_repository`
 + setup: make repository discovery self-contained
 + setup: propagate prefix via repository discovery
 + setup: drop static `cwd` variable
 + setup: move prefix into repository
 + setup: embed repository format in discovery
 + setup: introduce explicit repository discovery
 + setup: split up concerns of `setup_git_env_internal()`
 + setup: unify setup of shallow file
 + setup: mark bogus worktree in `apply_repository_format()`
 + setup: rename `check_repository_format_gently()`
 + Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
 + Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup

 The repository discovery and repository configuration phases, which
 were previously intertwined in 'setup.c', have been split. Repository
 discovery has been updated to populate a 'struct repo_discovery'
 without modifying the repository state, which is then taken by
 repository configuration to initialize the repository, paving the way
 for clean unification of repository configuration.

 Will merge to 'master'.
 cf. <87h5m9om0j.fsf@emacs.iotcl.com>
 source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>


* pw/rebase-drop-notes-with-commit (2026-06-30) 15 commits
 - amend! sequencer: simplify pick_one_commit()
 - amend! sequencer: remove unnecessary "or" in pick_one_commit()
 - fixup! sequencer: never reschedule on failed commit
 - fixup! sequencer: be more careful with external merge
 - sequencer: do not record dropped commits as rewritten
 - sequencer: use an enum to represent result of picking a commit
 - sequencer: return early from pick_one_commit() on success
 - sequencer: simplify pick_one_commit()
 - sequencer: remove unnecessary condition in pick_one_commit()
 - sequencer: simplify handing of fixup with conflicts
 - sequencer: remove unnecessary "or" in pick_one_commit()
 - sequencer: never reschedule on failed commit
 - sequencer: be more careful with external merge
 - sequencer: move definition of is_final_fixup()
 - t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected. When a
 commit is dropped during rebase (e.g., because its changes are already
 upstream), it is no longer recorded as rewritten, preventing its notes
 from being copied to an unrelated commit.

 Expecting a reroll.
 cf. <dce74d17-eefd-40bb-82f3-f6b3179cc2b6@gmail.com>
 source: <cover.1782833268.git.phillip.wood@dunelm.org.uk>


* jk/bloom-leak-fixes (2026-06-30) 3 commits
  (merged to 'next' on 2026-07-08 at 3b9a1cda3f)
 + line-log: drop extra copy of range with bloom filters
 + revision: avoid leaking bloom keyvecs with multiple traversals
 + bloom: make bloom-filter slab initialization idempotent

 Various memory leaks in the Bloom-filter code paths that are exposed
 when running tests with the 'GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1'
 environment variable have been plugged.

 Will merge to 'master'.
 cf. <b641aed4-ad52-477b-b1d8-9d8e470be46f@gmail.com>
 cf. <xmqqo6gqobrt.fsf@gitster.g>
 source: <20260701063538.GA2579765@coredump.intra.peff.net>


* js/ci-dockerized-pid-limit (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at cd80e673a5)
 + ci(dockerized): raise the PID limit for private repositories

 Dockerized CI jobs running in private GitHub repositories have been
 adjusted to use explicit process and file limits, preventing resource
 exhaustion errors on private runners.

 Will merge to 'master'.
 cf. <xmqqh5medmzh.fsf@gitster.g>
 source: <pull.2164.v2.git.1783155124926.gitgitgadget@gmail.com>


* js/coverity-fixes (2026-07-05) 12 commits
  (merged to 'next' on 2026-07-09 at 1823fe297c)
 + mingw: make `exit_process()` own the process handle on all paths
 + fsmonitor: plug token-data leak on early daemon-startup failures
 + reftable/table: release filter on error path
 + imap-send: avoid leaking the IMAP upload buffer
 + worktree: fix resource leaks when branch creation fails
 + submodule: fix cwd leak in `get_superproject_working_tree()`
 + dir: free allocations on parse-error paths in `read_one_dir()`
 + line-log: avoid redundant copy that leaks in process_ranges
 + run-command: avoid `close(-1)` in `start_command()` error paths
 + download_https_uri_to_file(): do not leak fd upon failure
 + loose: avoid closing invalid fd on error path
 + load_one_loose_object_map(): fix resource leak

 Various resource leaks, invalid file descriptor closures, and process
 handle ownership issues flagged by Coverity have been fixed.

 Will merge to 'master'.
 cf. <xmqqa4s238lg.fsf@gitster.g>
 source: <pull.2163.v2.git.1783239870.gitgitgadget@gmail.com>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together. When both are given, non-cruft packs are rolled up by the
 geometric repack as usual, while a separate cruft pack is written to
 collect unreachable objects.

 Waiting for response(s) to review comment(s).
 cf. <aj8cOhH6hGVZIFft@nand.local>
 source: <cover.1782500507.git.me@ttaylorr.com>


* jk/reftable-leakfix (2026-06-28) 1 commit
  (merged to 'next' on 2026-07-06 at 55ce81f2d5)
 + reftable: fix unlikely leak on API error

 A memory leak in the 'reftable_writer_new()' initialization function
 has been fixed by delaying the allocation of 'struct reftable_writer'
 until after input options are validated.

 Will merge to 'master'.
 cf. <akIPBJLtPqDjQt-A@pks.im>
 source: <20260628090314.GA661068@coredump.intra.peff.net>


* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
  (merged to 'next' on 2026-07-06 at b099249efd)
 + gpg-interface: fix strip_cr_before_lf to only remove CR before LF

 The GPG and SSH signature parsing code has been corrected to strip
 carriage return characters only when they immediately precede line
 feeds, instead of unconditionally stripping all carriage returns.

 Will merge to 'master'.
 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>


* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
 - builtin/receive-pack: stage incoming objects via ODB transactions
 - builtin/receive-pack: drop redundant tmpdir env
 - odb/transaction: introduce ODB transaction flags
 - odb/transaction: add transaction env interface
 - odb/transaction: propagate commit errors
 - odb/transaction: propagate begin errors
 - object-file: propagate files transaction errors
 - object-file: drop check for inflight transactions
 - object-file: embed transaction flush logic in commit function
 - object-file: rename files transaction fsync function
 - object-file: rename files transaction prepare function

 'git receive-pack' has been refactored to use ODB transaction
 interfaces instead of directly managing 'tmp_objdir' for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Needs review.
 source: <20260710163722.2962278-1-jltobler@gmail.com>


* ps/odb-drop-whence (2026-07-02) 7 commits
  (merged to 'next' on 2026-07-08 at f43ee51cc3)
 + odb: document object info fields
 + odb: drop `whence` field from object info
 + treewide: convert users of `whence` to the new source field
 + odb: add `source` field to struct object_info_source
 + odb: make backend-specific fields optional
 + packfile: thread odb_source_packed through packed_object_info()
 + Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
 (this branch is used by ps/odb-for-each-object-filter.)

 The 'whence' field in 'struct object_info' has been removed. The
 backend-specific object information retrieval has been refactored into
 an opt-in 'struct object_info_source' structure.

 Will merge to 'master'.
 cf. <xmqqv7b0rmt6.fsf@gitster.g>
 source: <20260702-b4-pks-odb-drop-whence-v2-0-b0af7468ad95@pks.im>


* ps/reftable-hardening (2026-07-03) 12 commits
  (merged to 'next' on 2026-07-10 at b8f4dd0ab9)
 + reftable/table: fix OOB read on truncated table
 + reftable/table: fix NULL pointer access when seeking to bogus offsets
 + reftable/block: fix OOB read with bogus restart offset
 + reftable/block: fix use of uninitialized memory when binsearch fails
 + reftable/block: fix OOB read with bogus restart count
 + reftable/block: fix OOB read with bogus block size
 + reftable/block: fix OOB write with bogus inflated log size
 + t/unit-tests: introduce test helper to write reftable blocks
 + reftable/record: don't abort when decoding invalid ref value type
 + reftable/basics: fix OOB read on binary search of empty range
 + oss-fuzz: add fuzzer for parsing reftables
 + meson: support building fuzzers with libFuzzer

 The reftable code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Will merge to 'master'.
 cf. <877bn5obz9.fsf@emacs.iotcl.com>
 source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>


* hn/branch-push-slip-advice (2026-06-27) 2 commits
  (merged to 'next' on 2026-07-06 at acdff65ac5)
 + push: suggest <remote> <branch> for a slash slip
 + branch: suggest <remote>/<branch> on upstream slip

 When 'git push origin/main' or 'git branch origin main' is run, the
 command is now recognized as a potential typo, and advice has been
 added to offer a typo fix.

 Will merge to 'master'.
 cf. <xmqqfr272lq7.fsf@gitster.g>
 source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>


* jc/history-message-prep-fix (2026-06-29) 1 commit
  (merged to 'next' on 2026-07-06 at 00534a21ce)
 + history: streamline message preparation and plug file stream leak

 A write file stream resource leak has been fixed as part of a code
 cleanup.

 Will merge to 'master'.
 cf. <akO1mhi2u2PntLbt@pks.im>
 source: <xmqqmrwdxrat.fsf@gitster.g>


* ty/migrate-excludes-file (2026-07-12) 9 commits
 - environment: move object_creation_mode into repo_config_values
 - environment: move autorebase into repo_config_values
 - environment: move push_default into repo_config_values
 - environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 - environment: move askpass_program into repo_config_values
 - environment: move pager_program into repo_config_values
 - environment: move editor_program into repo_config_values
 - environment: move excludes_file into repo_config_values
 - repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Expecting a reroll.
 cf. <2a39cee9-1082-48aa-b42e-e12c34fa0e29@malon.dev>
 source: <20260712111734.1073514-1-cat@malon.dev>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The 'USE_NSEC' build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Will discard.
 cf. <xmqqa4rx9mb5.fsf@gitster.g>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/libgit-in-subdir (2026-07-10) 4 commits
 - fixup! Move libgit.a sources into separate "lib/" directory
 - Move libgit.a sources into separate "lib/" directory
 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Waiting for response(s) to review comment(s).
 cf. <0c94331b-7eb1-4116-afa5-811082ad5854@ramsayjones.plus.com>
 source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
  (merged to 'next' on 2026-07-06 at 6132517517)
 + odb: introduce `odb_prepare()`
 + odb/source: generalize `reprepare()` callback
 + Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare

 The 'reprepare()' callback for object database sources has been
 generalized into a 'prepare()' callback with an optional flush cache
 flag, and a new 'odb_prepare()' wrapper has been introduced to allow
 pre-opening object database sources.

 Will merge to 'master'.
 cf. <87ik704f1j.fsf@emacs.iotcl.com>
 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>


* ty/migrate-ignorecase (2026-06-19) 2 commits
  (merged to 'next' on 2026-07-12 at 39e9fdb93f)
 + config: use repo_ignore_case() to access core.ignorecase
 + environment: move ignore_case into repo_config_values

 The global configuration variable 'ignore_case' (representing the
 'core.ignorecase' configuration) has been migrated into 'struct
 repo_config_values' to tie it to a specific repository instance.

 Will merge to 'master'.
 cf. <xmqqechaga7p.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range and path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-10) 5 commits
 - history: re-edit a squash with every message
 - sequencer: share the squash message marker helpers and flags
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, with any
 descendants replayed on top.

 Needs review.
 source: <pull.2337.v8.git.git.1783674396.gitgitgadget@gmail.com>


* ps/refs-writing-subcommands (2026-07-06) 5 commits
  (merged to 'next' on 2026-07-08 at f001147283)
 + builtin/refs: add "rename" subcommand
 + builtin/refs: add "create" subcommand
 + builtin/refs: add "update" subcommand
 + builtin/refs: add "delete" subcommand
 + builtin/refs: drop `the_repository`
 (this branch is used by ps/refs-wo-the-repository.)

 The 'git refs' toolbox has been extended with new 'create', 'delete',
 'update', and 'rename' subcommands to create, delete, update, and
 rename references, respectively.

 Will merge to 'master'.
 source: <20260706-pks-refs-writing-subcommands-v4-0-d51f6ce7f830@pks.im>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
  (merged to 'next' on 2026-07-12 at adeaa999b6)
 + MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Will merge to 'master'.
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option. Previously, the
 custom base was ignored by the normal write path; packs from layers
 above the selected base were incorrectly skipped by the pack exclusion
 logic, and reachability closure for bitmaps was broken.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-07-05) 6 commits
  (merged to 'next' on 2026-07-10 at 1916c07bf5)
 + t: add greplint to detect bare grep assertions
 + t: convert grep assertions to test_grep
 + t: fix Lexer line count for $() inside double-quoted strings
 + t: extract chainlint's parser into shared module
 + t: fix grep assertions missing file arguments
 + t/README: document test_grep helper

 The test suite has been updated to use the 'test_grep' helper instead
 of bare 'grep' for test assertions, allowing file contents to be
 printed on failure for easier debugging. A new 'greplint' linter has
 been introduced to detect and prevent new bare 'grep' assertions from
 being added to the test suite.

 Will merge to 'master'.
 cf. <xmqqtsqedxmt.fsf@gitster.g>
 source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
  (merged to 'next' on 2026-07-06 at aa748c4564)
 + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 + prio-queue: rename .nr to .nr_ and add accessor helpers
 (this branch is used by kk/prio-queue-cascade-sift.)

 The lazy priority queue optimization pattern (deferring actual removal
 in 'prio_queue_get()' to allow get+put fusion) has been folded
 directly into 'prio_queue' itself, speeding up commit traversal
 workflows and simplifying callers.

 Will merge to 'master'.
 cf. <xmqqh5mjrbgq.fsf@gitster.g>
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have been
 optimized to use the memoized commit traversal previously used only by
 'git tag --contains', significantly speeding up connectivity checks
 across many candidate refs with shared history.

 Needs review.
 cf. <xmqqqzlpulkp.fsf@gitster.g>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-09 at 371c2e9c3b)
 + replay: offer an option to linearize the commit topology
 + replay: resolve the replay base outside pick_regular_commit()
 + replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Will merge to 'master'.
 cf. <xmqq5x2qz42z.fsf@gitster.g>
 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-10) 13 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with an allow-list
 - 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
 - connect: make write_fetch_command_and_capabilities() more generic
 - fetch-pack: move write_fetch_command_and_capabilities() to connect.c
 - fetch-pack: drop static advertise_sid variable
 - fetch-pack: fix hash_algo variable type
 - t1006: split test utility functions into new 'lib-cat-file.sh'
 - cat-file: declare loop counter inside for()
 - transport-helper: fix memory leak of helper on disconnect

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object. Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Will merge to 'next'?
 cf. <CA+J6zkSo3ZqLe7HLEXRAs+hOq2FuOVokMQWbABcW95wihNtCgA@mail.gmail.com>
 source: <20260710-ps-eric-work-rebase-v16-0-66e07b58a8fe@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 allowing external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll for too long, stalled.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 cf. <xmqqcxx9ukvw.fsf@gitster.g>
 source: <20260619162105.648495-1-cat@malon.dev>


* ps/history-drop (2026-07-01) 11 commits
  (merged to 'next' on 2026-07-08 at 6fb84708a4)
 + builtin/history: implement "drop" subcommand
 + builtin/history: split handling of ref updates into two phases
 + replay: expose `replay_result_queue_update()`
 + reset: stop assuming that the caller passes in a clean index
 + reset: allow the caller to specify the current HEAD object
 + reset: introduce ability to skip updating HEAD
 + reset: introduce dry-run mode
 + reset: modernize flags passed to `reset_working_tree()`
 + reset: rename `reset_head()`
 + reset: drop `USE_THE_REPOSITORY_VARIABLE`
 + read-cache: split out function to drop unmerged entries to stage 0

 The experimental 'git history' command has been taught a new 'drop'
 subcommand to remove a commit, with its descendants replayed onto its
 parent.

 Will merge to 'master'.
 cf. <xmqq1pdmprbk.fsf@gitster.g>
 cf. <CAP8UFD3OAktVQsLuqBNFH2uhEO31PH8ZF3ZT1ZW8k++XE8YLPw@mail.gmail.com>
 source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s), stalled.
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Waiting for response(s) to review comment(s).
 cf. <87cxwxofgv.fsf@emacs.iotcl.com>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-06-24) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged to their tracked
 remote-tracking branches.

 Expecting a reroll.
 cf. <CAHwyqnWspUTSnqmkMyXtWuAnENDSzrRLhhUR=Ljtt1xer3tphA@mail.gmail.com>
 source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote the new branch will work with.

 Waiting for response(s) to review comment(s).
 cf. <xmqq5x37h6fj.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-11) 4 commits
 - graph: indent visual root in graph
 - graph: add a 2 commit buffer for lookahead
 - revision: add next_commit_to_show()
 - lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Needs review.
 source: <20260711-ps-pre-commit-indent-v9-0-eab6676e82f7@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
 - commit-reach: remove commit-date ordering fallback
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_state with per-side counters
 - t6600: add clock-skew topologies and step counts for edge cases
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - test-lib-functions: improve diagnostic output for trace2 data assertions
 - Documentation/technical: add paint-down-to-common doc
 - Merge branch 'kk/commit-reach-find-all-fix' into kk/merge-base-exhaustion
 (this branch uses kk/commit-reach-find-all-fix.)

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 source: <pull.2149.v6.git.1783776466.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* kk/prio-queue-cascade-sift (2026-07-08) 3 commits
 . prio-queue: use cascade for unfused gets
 . prio-queue: extract sift_up() from prio_queue_put()
 . Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift
 (this branch uses kk/prio-queue-get-put-fusion.)

 'prio_queue_get()' has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), whereby the number of comparisons per
 extract-min operation is halved in the common case.

 Retracted.
 cf. <CAL71e4PRVYfUWc-c+6XHTwtADqrbub9ykbo+rPyramDhJw=Rfg@mail.gmail.com>
 source: <pull.2132.v3.git.1783532989.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 13%]

* What's cooking in git.git (Jul 2026, #04)
@ 2026-07-10  0:51 14% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-10  0:51 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all. They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The first batch of topics have now graduated to the 'master' branch.

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]

* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
 - submodule--helper: accept '-i' shorthand for update --init

 The '-i' shorthand for the '--init' option, which was accepted by the
 'git submodule update' command until it was broken in a modernization
 of the option-parsing code, has been restored.

 Will merge to 'next'?
 source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>


* hf/unpack-trees-quadratic-scan (2026-07-08) 1 commit
 - unpack-trees: avoid quadratic index scan in next_cache_entry()

 The cache-scanning loop in 'next_cache_entry()' has been optimized
 to avoid rescanning already-unpacked index entries, preventing a
 quadratic performance slow-down when diffing the working tree
 against a commit with a pathspec matching early index entries.

 Will merge to 'next'?
 cf. <xmqqpl0xqh3n.fsf@gitster.g>
 source: <pull.2353.v2.git.git.1783546933992.gitgitgadget@gmail.com>


* jc/relnotes-2.55-rust-fix (2026-07-07) 1 commit
 - Rust: fix description in Release Notes to 2.55

 A description in the release notes for Git 2.55.0 has been
 retroactively updated to clarify that Rust support is enabled by
 default, but still optional, and will become mandatory in Git 3.0.

 Will merge to 'next'?
 source: <xmqqpl0y4rpg.fsf@gitster.g>


* jc/submitting-patches-abandoning (2026-07-08) 1 commit
 - SubmittingPatches: document how to retract a topic

 The 'SubmittingPatches' document has been updated to explicitly
 describe the expectation for contributors to retract or abandon their
 patch series when they are no longer pursuing it.

 Will merge to 'next'?
 cf. <ak6U07K1dQPlXxIp@nixos>
 source: <xmqqpl0xv25e.fsf@gitster.g>


* jk/git-hash-cleanups (2026-07-07) 8 commits
  (merged to 'next' on 2026-07-09 at 12a4856545)
 + hash: check ctx->active flag in all wrapper functions
 + http: use idempotent git_hash_discard()
 + csum-file: use idempotent git_hash_discard()
 + hash: make git_hash_discard() idempotent
 + hash: document function pointers and wrappers
 + hash: convert remaining direct function calls
 + hash: use git_hash_init() consistently
 + Merge branch 'jk/hash-algo-leak-fixes' into jk/git-hash-cleanups
 (this branch uses jk/hash-algo-leak-fixes.)

 The 'git_hash_*()' wrappers have been updated to be used consistently
 across the codebase instead of direct calls to members of 'struct
 git_hash_algo', and 'git_hash_discard()' has been made idempotent to
 simplify cleanups.

 Will merge to 'master'.
 cf. <ak4E4-jmgYFSI75O@pks.im>
 source: <20260708035235.GA41491@coredump.intra.peff.net>


* mm/lib-httpd-cgi-safe (2026-07-07) 3 commits
 - t/README: document writing concurrency-safe helpers
 - t/lib-httpd: make http-429 first-request check atomic
 - t/lib-httpd: fix apply-one-time-script race under concurrent requests

 CGI helper scripts used by HTTP-related test scripts have been updated
 to use atomic filesystem operations, preventing race conditions when
 Apache handles concurrent requests.

 Expecting a reroll.
 cf. <CAC2QwmKuHUP6_287T9SOLdjLdb=b4EqV4qJ_NnYCkGP0-d6qHA@mail.gmail.com>
 source: <pull.2171.git.1783479584.gitgitgadget@gmail.com>


* mm/sideband-ansi-sgr-colon-fix (2026-05-13) 1 commit
  (merged to 'next' on 2026-07-09 at fd2b979b73)
 + sideband: allow ANSI SGR with colon-separated subfields

 The sideband demultiplexer has been updated to recognize ANSI SGR
 escape sequences that use colon-separated subfields (e.g., for
 256-color or true-color codes).

 Will merge to 'master'.
 cf. <8addf7c0-ae39-f1c0-20ab-52114702aaf6@gmx.de>
 source: <20260513070803.163546-1-grawity@nullroute.lt>


* ps/odb-pluggable-housekeeping (2026-07-07) 11 commits
 - odb: make optimizations pluggable
 - builtin/gc: fix signedness issues in ODB-related functionality
 - builtin/gc: refactor ODB optimizations to operate on "files" source
 - builtin/gc: introduce `odb_optimize_required()`
 - builtin/gc: move geometric repacking into `odb_optimize()`
 - builtin/gc: introduce object database optimization options
 - builtin/gc: inline config values specific to the "files" backend
 - builtin/gc: make repack arguments self-contained
 - builtin/gc: extract object database optimizations into separate function
 - builtin/gc: move worktree and rerere tasks before object optimizations
 - odb: run "pre-auto-gc" hook for all maintenance tasks

 Object database housekeeping in 'git gc' and 'git maintenance' has
 been refactored to be pluggable. The files-backend specific logic,
 including incremental and geometric repacking as well as object
 pruning, has been moved out of the command implementation and into the
 files object database source, enabling future alternative object
 database backends to implement their own housekeeping services.

 Expecting a reroll.
 cf. <ak4CHGpIhVIT9sd2@pks.im>
 source: <20260707-b4-pks-odb-optimize-v1-0-aae607667be4@pks.im>


* tc/bundle-uri-empty-fix (2026-07-08) 2 commits
 - bundle-uri: stop sending invalid bundle configuration
 - bundle-uri: drain remaining response on invalid bundle-uri lines

 The client-side parser of server-advertised bundle-URI list has been
 updated to drain the remaining response in order to avoid protocol
 desynchronization when the server sends a misconfigured list. Also,
 the server-side has been taught to omit empty configuration values
 instead of sending invalid key-value lines.

 Will merge to 'next'?
 cf. <xmqqtsq9qj5k.fsf@gitster.g>
 source: <20260708-toon-bundle-uri-no-uri-v2-0-09a03d8db556@iotcl.com>


* gr/t1410-reflog-exit-code (2026-07-08) 1 commit
 - t1410-reflog.sh: avoid suppressing git's exit code in pipelines

 The pipelines in 't1410-reflog.sh' have been replaced with the
 'test_stdout_line_count' helper to avoid suppressing the exit code of
 'git' commands, ensuring failures are not hidden from the test suite.

 Will merge to 'next'?
 cf. <xmqqtsq8p18x.fsf@gitster.g>
 source: <20260709051229.40363-1-gatlavishweshwarreddy26@gmail.com>


* js/coverity-fixes-null-safety (2026-07-09) 11 commits
 - shallow: fix NULL dereference
 - bisect: ensure non-NULL `head` before using it
 - pack-bitmap: handle missing bitmap for base MIDX
 - revision: avoid dereferencing NULL in `add_parents_only()`
 - replay: die when --onto does not peel to a commit
 - bisect: handle NULL commit in `bisect_successful()`
 - mailsplit: move NULL check before first use of file handle
 - reftable/stack: guard against NULL list_file in stack_destroy
 - remote: guard `remote_tracking()` against NULL remote
 - diff: handle NULL return from repo_get_commit_tree()
 - diffcore-break: guard against NULLed queue entries in merge loop

 Various code paths have been hardened against potential NULL-pointer
 dereferences and invalid file descriptor accesses flagged by
 Coverity.

 Needs review.
 source: <pull.2174.git.1783590159.gitgitgadget@gmail.com>


* ps/odb-for-each-object-filter (2026-07-09) 8 commits
 - builtin/cat-file: filter objects via object database
 - odb: introduce object filters to `odb_for_each_object()`
 - pack-bitmap: introduce function to open bitmap for a single source
 - pack-bitmap: iterate object sources when opening bitmaps
 - pack-bitmap: allow aborting iteration of bitmapped objects
 - pack-bitmap: mark object filter as `const`
 - odb/source-packed: improve lookup when enumerating objects
 - Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter
 (this branch uses ps/odb-drop-whence.)

 The object database enumeration interface 'odb_for_each_object()'
 has learned to accept object filters, allowing the underlying
 backends to optimize the traversal by using reachability bitmaps
 when available. 'git cat-file --batch-all-objects' has been updated
 to use this generic interface, simplifying its code and avoiding
 direct access to ODB backend internals.

 Needs review.
 source: <20260709-pks-odb-for-each-object-filter-v1-0-82fe014b12b3@pks.im>


* ps/refs-wo-the-repository (2026-07-09) 8 commits
 . refs: remove remaining uses of `the_repository`
 . worktree: pass repository to public functions
 . worktree: pass repository to file-local functions
 . worktree: refactor code to use available repositories
 . refs/files: drop `USE_THE_REPOSITORY_VARIABLE`
 . refs/packed: drop `USE_THE_REPOSITORY_VARIABLE`
 . refs/packed: de-globalize handling of "core.packedRefsTimeout"
 . Merge branch 'ps/refs-writing-subcommands' into ps/refs-wo-the-repository
 (this branch uses ps/refs-writing-subcommands.)

 The ref subsystem and the worktree API have been refactored to pass
 a repository pointer down the call chain, allowing them to drop
 references to the global 'the_repository' variable. As part of this,
 the handling of the 'core.packedRefsTimeout' configuration has been
 moved into the per-repository ref store structure.

 Needs review.
 source: <20260709-pks-refs-wo-the-repository-v1-0-1ad6f27529c9@pks.im>


* kk/commit-graph-topo-levels-fix (2026-07-09) 2 commits
 - commit-graph: propagate topo_levels slab to all chain layers
 - commit-graph: add trace2 instrumentation for generation DFS

 The 'topo_levels' slab was only propagated to the topmost layer of a
 split commit-graph chain, causing incremental writes to recompute
 topological levels for commits in base layers. This has been
 corrected.

 Will merge to 'next'?
 cf. <ak-ljlV33GLigFf6@pks.im>
 source: <pull.2170.v2.git.1783609382.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll for too long. stalled.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
 the redirect target were lost because 'credential_from_url()' cleared
 the credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Will discard.
 cf. <xmqqmrw2zavx.fsf@gitster.g>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the sparse-index collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27215.27575.968985.583226@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* kk/reftable-tombstone-quadratic-fix (2026-07-09) 2 commits
 - reftable: fix quadratic behavior in the presence of tombstones
 - t/perf: add perf test for ref tombstone scenarios

 The performance of ref updates and reads using the reftable backend in
 the presence of many deletion tombstone records has been optimized by
 removing the tombstone suppression flag from the merged iterator and
 instead skipping tombstones at higher-level call sites where iteration
 bounds are known.

 Expecting a reroll.
 cf. <CAL71e4PrtZwB8TMg3eBj=LzC7ik+C8yxLYEEEP7SDgMPiWSs0Q@mail.gmail.com>
 source: <pull.2166.v2.git.1783598912.gitgitgadget@gmail.com>


* rs/blame-abbrev-marks (2026-07-06) 1 commit
  (merged to 'next' on 2026-07-08 at e4962bd3d5)
 + blame: reserve mark column only if necessary

 The alignment of commit object name abbreviations in 'git blame'
 output has been optimized to reserve a column for marks (caret,
 question mark, or asterisk) only when such marks are actually shown.

 Will merge to 'master'.
 cf. <xmqqzf0397u1.fsf@gitster.g>
 source: <92991b5e-0667-4315-89d5-1514a5499297@web.de>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation, by verifying that
 the ancestry collector reports the expected process names rather than
 the emulator binary name.

 Needs review.
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>


* bc/parse-options-exit-0-on-help (2026-07-07) 4 commits
 - parse-options: exit 0 on -h
 - rev-parse: have --parseopt callers exit 0 on --help
 - parse-options: add a separate case for help output on error
 - t1517: skip svn tests if svn is not installed

 Option parsing with 'git rev-parse --parseopt' and most 'git'
 subcommands has been updated to exit with 0 (instead of 129) when the
 help option ('-h' or '--help') is requested directly by the user,
 aligning with standard Unix convention.

 Will merge to 'next'.
 cf. <20260708035930.GB41684@coredump.intra.peff.net>
 source: <20260708001557.3581080-1-sandals@crustytoothpaste.net>


* mg/meson-hook-list-buildfix (2026-07-01) 1 commit
  (merged to 'next' on 2026-07-08 at 10763a0ebc)
 + meson: restore hook-list.h to builtin_sources

 A racy build failure under Meson has been corrected by ensuring that
 the generated header file 'hook-list.h' is built before compiling
 files in 'builtin_sources' that depend on it.

 Will merge to 'master'.
 cf. <akZGJP1kVtjBFN_e@pks.im>
 source: <20260701193928.358825-1-floppym@gentoo.org>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate 'git diff' header parsed by 'git apply' has been isolated
 in a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* jk/hash-algo-leak-fixes (2026-07-02) 9 commits
  (merged to 'next' on 2026-07-09 at 7db7b74972)
 + hash: add platform-specific discard functions
 + hash: fix memory leak copying sha256 gcrypt handles
 + http: discard hash in dumb-http http_object_request
 + check_stream_oid(): discard hash on read error
 + patch-id: discard hash when done
 + csum-file: provide a function to release checkpoints
 + csum-file: always finalize or discard hash
 + hash: add discard primitive
 + csum-file: drop discard_hashfile()
 (this branch is used by jk/git-hash-cleanups.)

 Various code paths that initialize a cryptographic hash context but
 bail out or finish without calling 'git_hash_final()' have been taught
 to call 'git_hash_discard()' to release allocated resources, fixing
 memory leaks when Git is built with non-default backends like
 'OpenSSL' or 'libgcrypt'.

 Will merge to 'master'.
 cf. <aktIIKuReMxJmDsi@pks.im>
 source: <20260702075234.GA1548258@coredump.intra.peff.net>


* ml/t9811-replace-test-f (2026-07-02) 1 commit
 - t9811: replace 'test -f' and '! test -f' with 'test_path_*'

 The test script 't/t9811-git-p4-label-import.sh' has been
 modernized to use 'test_path_is_file' and 'test_path_is_missing'
 instead of raw 'test -f' and '! test -f' calls.

 Expecting a reroll.
 cf. <akdwp_a2EuhVoGVW@pks.im>
 cf. <CAO=vGZpMe3dxyzFVwR7BWBxaAZ-z9Kw3CqQ0kAe5ZZGSQszkzw@mail.gmail.com>
 source: <20260702140704.65805-1-marcelomlage@usp.br>


* ps/t-fixes-for-git-test-long (2026-07-05) 9 commits
  (merged to 'next' on 2026-07-09 at c5b13248c8)
 + gitlab-ci: enable "GIT_TEST_LONG"
 + gitlab-ci: disable RAM disk on macOS jobs
 + t: use `test_bool_env` to parse GIT_TEST_LONG
 + t7900: clean up large EXPENSIVE repository
 + t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + t5608: reduce maximum disk usage
 + t4141: fix inefficient use of dd(1)
 + t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 + README: add GitLab CI badge to make it more discoverable

 Various test scripts have been updated to clean up large temporary
 files and repositories, reducing peak disk usage during testing.
 Also, expensive tests have been disabled on platforms that lack
 sufficient resources (like 32-bit platforms and Windows CI
 runners), and the long test suite has been enabled in GitLab CI.

 Will merge to 'master'.
 cf. <20260707043026.GB677056@coredump.intra.peff.net>
 source: <20260706-b4-pks-t-fixes-for-GIT-TEST-LONG-v3-0-4f6c5a37fd1f@pks.im>


* ih/precompose-flex-array (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at 737a87f65e)
 + precompose_utf8: use a flex array for d_name

 The UTF-8 precomposition wrapper on macOS has been updated to use a
 flexible array member to represent the name of a directory entry,
 preventing fortified libc checks from failing when the name is
 reallocated to be larger than 'NAME_MAX' bytes.

 Will merge to 'master'.
 cf. <20260703050800.GA29216@tb-raspi4>
 source: <20260704233724.16928-1-ihar.hrachyshka@gmail.com>


* sn/osxkeychain-rust-universal (2026-07-07) 3 commits
 - contrib: wire up osxkeychain in contrib/Makefile on macOS
 - Makefile: support universal macOS builds via RUST_TARGETS
 - Makefile: add $(RUST_LIB) prerequisite to osxkeychain

 The build system has been updated to support building universal macOS
 binaries when 'Rust' is enabled, by compiling separate static archives
 for each target triple listed in 'RUST_TARGETS' and combining them
 using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
 has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.

 Will merge to 'next'?
 cf. <xmqq4ii9teym.fsf@gitster.g>
 source: <pull.2288.v8.git.git.1783480879.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-07-08) 3 commits
 . config: add "worktree" and "worktree/i" includeIf conditions
 . repository: keep a symlink-preserving copy of the worktree path
 . config: refactor include_by_gitdir() into include_by_path()

 The '[includeIf "condition"]' conditional inclusion facility for
 configuration files has been taught to use the location of the
 worktree in its condition.

 Needs review.
 cf. <ak9zWopOWpRVHmmS@pks.im>
 cf. <xmqqzezzkibu.fsf@gitster.g>
 source: <20260709-includeif-worktree-v7-0-e87e705e8df6@black-desk.cn>


* kk/commit-reach-find-all-fix (2026-06-29) 2 commits
 - commit-reach: guard !FIND_ALL early exit with generation ordering check
 - t6600: add test for merge-base early exit with clock skew

 The early-exit optimization in 'paint_down_to_common()' has been gated
 on the queue being generation-ordered. This fixes a bug where 'git
 merge-base' (without '--all') could return incorrect results on
 repositories with v1 commit graphs and clock skew.

 Will merge to 'next'.
 cf. <xmqqjyr5v1gu.fsf@gitster.g>
 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 't7412' that tests 'git submodule absorbgitdirs' has been modernized
 to use 'test_path_is_file', 'test_path_is_dir', and
 'test_path_is_missing' helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response(s) to review comment(s).
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* jk/format-patch-leakfix (2026-06-29) 2 commits
  (merged to 'next' on 2026-07-06 at 35aff0d609)
 + format-patch: fix leak of rev_info in prepare_bases()
 + t: move LSan errors from stdout to stderr

 A memory leak in the '--base' handling of 'git format-patch' has been
 plugged, and the leak-reporting of the test suite when running under a
 TAP harness has been improved.

 Will merge to 'master'.
 cf. <akOZy-BygZS8fqPM@pks.im>
 source: <20260630063944.GA3733670@coredump.intra.peff.net>


* ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
 - setup: mark `set_git_work_tree()` as file-local
 - setup: pass worktree to `init_db()`
 - setup: drop redundant configuration of `startup_info->have_repository`
 - setup: make repository discovery self-contained
 - setup: propagate prefix via repository discovery
 - setup: drop static `cwd` variable
 - setup: move prefix into repository
 - setup: embed repository format in discovery
 - setup: introduce explicit repository discovery
 - setup: split up concerns of `setup_git_env_internal()`
 - setup: unify setup of shallow file
 - setup: mark bogus worktree in `apply_repository_format()`
 - setup: rename `check_repository_format_gently()`
 - Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
 - Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
 - Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup

 The repository discovery and repository configuration phases, which
 were previously intertwined in 'setup.c', have been split. Repository
 discovery has been updated to populate a 'struct repo_discovery'
 without modifying the repository state, which is then taken by
 repository configuration to initialize the repository, paving the way
 for clean unification of repository configuration.

 Will merge to 'next'.
 cf. <87h5m9om0j.fsf@emacs.iotcl.com>
 source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>


* pw/rebase-drop-notes-with-commit (2026-06-30) 15 commits
 - amend! sequencer: simplify pick_one_commit()
 - amend! sequencer: remove unnecessary "or" in pick_one_commit()
 - fixup! sequencer: never reschedule on failed commit
 - fixup! sequencer: be more careful with external merge
 - sequencer: do not record dropped commits as rewritten
 - sequencer: use an enum to represent result of picking a commit
 - sequencer: return early from pick_one_commit() on success
 - sequencer: simplify pick_one_commit()
 - sequencer: remove unnecessary condition in pick_one_commit()
 - sequencer: simplify handing of fixup with conflicts
 - sequencer: remove unnecessary "or" in pick_one_commit()
 - sequencer: never reschedule on failed commit
 - sequencer: be more careful with external merge
 - sequencer: move definition of is_final_fixup()
 - t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected. When a
 commit is dropped during rebase (e.g., because its changes are already
 upstream), it is no longer recorded as rewritten, preventing its notes
 from being copied to an unrelated commit.

 Expecting a reroll.
 cf. <dce74d17-eefd-40bb-82f3-f6b3179cc2b6@gmail.com>
 source: <cover.1782833268.git.phillip.wood@dunelm.org.uk>


* jk/bloom-leak-fixes (2026-06-30) 3 commits
  (merged to 'next' on 2026-07-08 at 3b9a1cda3f)
 + line-log: drop extra copy of range with bloom filters
 + revision: avoid leaking bloom keyvecs with multiple traversals
 + bloom: make bloom-filter slab initialization idempotent

 Various memory leaks in the Bloom-filter code paths that are exposed
 when running tests with the 'GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1'
 environment variable have been plugged.

 Will merge to 'master'.
 cf. <b641aed4-ad52-477b-b1d8-9d8e470be46f@gmail.com>
 cf. <xmqqo6gqobrt.fsf@gitster.g>
 source: <20260701063538.GA2579765@coredump.intra.peff.net>


* js/ci-dockerized-pid-limit (2026-07-04) 1 commit
  (merged to 'next' on 2026-07-09 at cd80e673a5)
 + ci(dockerized): raise the PID limit for private repositories

 Dockerized CI jobs running in private GitHub repositories have been
 adjusted to use explicit process and file limits, preventing resource
 exhaustion errors on private runners.

 Will merge to 'master'.
 cf. <xmqqh5medmzh.fsf@gitster.g>
 source: <pull.2164.v2.git.1783155124926.gitgitgadget@gmail.com>


* js/coverity-fixes (2026-07-05) 12 commits
  (merged to 'next' on 2026-07-09 at 1823fe297c)
 + mingw: make `exit_process()` own the process handle on all paths
 + fsmonitor: plug token-data leak on early daemon-startup failures
 + reftable/table: release filter on error path
 + imap-send: avoid leaking the IMAP upload buffer
 + worktree: fix resource leaks when branch creation fails
 + submodule: fix cwd leak in `get_superproject_working_tree()`
 + dir: free allocations on parse-error paths in `read_one_dir()`
 + line-log: avoid redundant copy that leaks in process_ranges
 + run-command: avoid `close(-1)` in `start_command()` error paths
 + download_https_uri_to_file(): do not leak fd upon failure
 + loose: avoid closing invalid fd on error path
 + load_one_loose_object_map(): fix resource leak

 Various resource leaks, invalid file descriptor closures, and process
 handle ownership issues flagged by Coverity have been fixed.

 Will merge to 'master'.
 cf. <xmqqa4s238lg.fsf@gitster.g>
 source: <pull.2163.v2.git.1783239870.gitgitgadget@gmail.com>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together. When both are given, the geometric repack rolls up non-cruft
 packs as usual, while a separate cruft pack is written to collect
 unreachable objects.

 Waiting for response(s) to review comment(s).
 cf. <aj8cOhH6hGVZIFft@nand.local>
 source: <cover.1782500507.git.me@ttaylorr.com>


* jk/reftable-leakfix (2026-06-28) 1 commit
  (merged to 'next' on 2026-07-06 at 55ce81f2d5)
 + reftable: fix unlikely leak on API error

 A memory leak in the 'reftable_writer_new()' initialization function
 has been fixed by delaying the allocation of 'struct reftable_writer'
 until after input options are validated.

 Will merge to 'master'.
 cf. <akIPBJLtPqDjQt-A@pks.im>
 source: <20260628090314.GA661068@coredump.intra.peff.net>


* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
  (merged to 'next' on 2026-07-06 at b099249efd)
 + gpg-interface: fix strip_cr_before_lf to only remove CR before LF

 The GPG and SSH signature parsing code has been corrected to strip
 carriage return characters only when they immediately precede line
 feeds, instead of unconditionally stripping all carriage returns.

 Will merge to 'master'.
 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>


* jt/receive-pack-use-odb-transactions (2026-07-08) 11 commits
 - builtin/receive-pack: stage incoming objects via ODB transactions
 - builtin/receive-pack: drop redundant tmpdir env
 - odb/transaction: introduce ODB transaction flags
 - odb/transaction: add transaction env interface
 - odb/transaction: propagate commit errors
 - odb/transaction: propagate begin errors
 - object-file: propagate files transaction errors
 - object-file: drop check for inflight transactions
 - object-file: embed transaction flush logic in commit function
 - object-file: rename files transaction fsync function
 - object-file: rename files transaction prepare function

 'git receive-pack' has been refactored to use ODB transaction
 interfaces instead of directly managing 'tmp_objdir' for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Expecting a reroll.
 cf. <ak-ntVKQ8XqMr6zv@denethor>
 source: <20260708235925.3992097-1-jltobler@gmail.com>


* ps/odb-drop-whence (2026-07-02) 7 commits
  (merged to 'next' on 2026-07-08 at f43ee51cc3)
 + odb: document object info fields
 + odb: drop `whence` field from object info
 + treewide: convert users of `whence` to the new source field
 + odb: add `source` field to struct object_info_source
 + odb: make backend-specific fields optional
 + packfile: thread odb_source_packed through packed_object_info()
 + Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
 (this branch is used by ps/odb-for-each-object-filter.)

 The 'whence' field in 'struct object_info' has been removed. The
 backend-specific object information retrieval has been refactored into
 an opt-in 'struct object_info_source' structure.

 Will merge to 'master'.
 cf. <xmqqv7b0rmt6.fsf@gitster.g>
 source: <20260702-b4-pks-odb-drop-whence-v2-0-b0af7468ad95@pks.im>


* ps/reftable-hardening (2026-07-03) 12 commits
 - reftable/table: fix OOB read on truncated table
 - reftable/table: fix NULL pointer access when seeking to bogus offsets
 - reftable/block: fix OOB read with bogus restart offset
 - reftable/block: fix use of uninitialized memory when binsearch fails
 - reftable/block: fix OOB read with bogus restart count
 - reftable/block: fix OOB read with bogus block size
 - reftable/block: fix OOB write with bogus inflated log size
 - t/unit-tests: introduce test helper to write reftable blocks
 - reftable/record: don't abort when decoding invalid ref value type
 - reftable/basics: fix OOB read on binary search of empty range
 - oss-fuzz: add fuzzer for parsing reftables
 - meson: support building fuzzers with libFuzzer

 The reftable code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Will merge to 'next'?
 cf. <877bn5obz9.fsf@emacs.iotcl.com>
 source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>


* hn/branch-push-slip-advice (2026-06-27) 2 commits
  (merged to 'next' on 2026-07-06 at acdff65ac5)
 + push: suggest <remote> <branch> for a slash slip
 + branch: suggest <remote>/<branch> on upstream slip

 When 'git push origin/main' or 'git branch origin main' is run, the
 command is now recognized as a potential typo, and advice has been
 added to offer a typofix.

 Will merge to 'master'.
 cf. <xmqqfr272lq7.fsf@gitster.g>
 source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>


* jc/history-message-prep-fix (2026-06-29) 1 commit
  (merged to 'next' on 2026-07-06 at 00534a21ce)
 + history: streamline message preparation and plug file stream leak

 A write file stream resource leak has been fixed as part of a code
 cleanup.

 Will merge to 'master'.
 cf. <akO1mhi2u2PntLbt@pks.im>
 source: <xmqqmrwdxrat.fsf@gitster.g>


* ty/migrate-excludes-file (2026-07-09) 9 commits
 - environment: move object_creation_mode into repo_config_values
 - environment: move autorebase into repo_config_values
 - environment: move push_default into repo_config_values
 - environment: migrate apply_default_whitespace and apply_default_ignorewhitespace
 - environment: move askpass_program into repo_config_values
 - environment: move pager_program into repo_config_values
 - environment: move editor_program into repo_config_values
 - environment: move excludes_file into repo_config_values
 - repository: introduce repo_config_values_clear()

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Needs review.
 source: <20260709161145.13349-1-cat@malon.dev>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The 'USE_NSEC' build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Expecting a reroll.
 cf. <CALnO6CDm74rCBQu6Q0djsvtuw5U14V=PApptcZTgP+pic1f_AA@mail.gmail.com>
 cf. <ajjuoS5Qc3K0nCRl@pks.im>
 cf. <akIL6oJgUv8J8SB2@pks.im>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/libgit-in-subdir (2026-06-30) 3 commits
 - Move libgit.a sources into separate "lib/" directory
 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Needs review.
 cf. <akX1TMoRr87Id8Ss@pks.im>
 source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
  (merged to 'next' on 2026-07-06 at 6132517517)
 + odb: introduce `odb_prepare()`
 + odb/source: generalize `reprepare()` callback
 + Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare

 The 'reprepare()' callback for object database sources has been
 generalized into a 'prepare()' callback with an optional flush cache
 flag, and a new 'odb_prepare()' wrapper has been introduced to allow
 pre-opening object database sources.

 Will merge to 'master'.
 cf. <87ik704f1j.fsf@emacs.iotcl.com>
 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>


* ty/migrate-ignorecase (2026-06-19) 2 commits
 - config: use repo_ignore_case() to access core.ignorecase
 - environment: move ignore_case into repo_config_values

 The global configuration variable 'ignore_case' (representing the
 'core.ignorecase' configuration) has been migrated into 'struct
 repo_config_values' to tie it to a specific repository instance.

 Waiting for comments from Johannes.
 cf. <xmqqzf0mzc7j.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range:path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-06) 5 commits
 - history: re-edit a squash with every message
 - sequencer: extract helpers for the squash message markers
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, replaying
 any descendants on top.

 Waiting for response(s) to review comment(s).
 cf. <38493ca6-8fdd-4b6c-9972-5145f3bf0aa4@gmail.com>
 source: <pull.2337.v7.git.git.1783327849.gitgitgadget@gmail.com>


* ps/refs-writing-subcommands (2026-07-06) 5 commits
  (merged to 'next' on 2026-07-08 at f001147283)
 + builtin/refs: add "rename" subcommand
 + builtin/refs: add "create" subcommand
 + builtin/refs: add "update" subcommand
 + builtin/refs: add "delete" subcommand
 + builtin/refs: drop `the_repository`
 (this branch is used by ps/refs-wo-the-repository.)

 The 'git refs' toolbox has been extended with new 'create', 'delete',
 'update', and 'rename' subcommands to create, delete, update, and
 rename references, respectively.

 Will merge to 'master'.
 source: <20260706-pks-refs-writing-subcommands-v4-0-d51f6ce7f830@pks.im>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Will merge to 'next'?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-07-05) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 The test suite has been updated to use the 'test_grep' helper instead
 of bare 'grep' for test assertions, allowing file contents to be
 printed on failure for easier debugging. A new 'greplint' linter has
 been introduced to detect and prevent new bare 'grep' assertions from
 being added to the test suite.

 Will merge to 'next'.
 cf. <xmqqtsqedxmt.fsf@gitster.g>
 source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
  (merged to 'next' on 2026-07-06 at aa748c4564)
 + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 + prio-queue: rename .nr to .nr_ and add accessor helpers
 (this branch is used by kk/prio-queue-cascade-sift.)

 The lazy priority queue optimization pattern (deferring actual removal
 in 'prio_queue_get()' to allow get+put fusion) has been folded
 directly into 'prio_queue' itself, speeding up commit traversal
 workflows and simplifying callers.

 Will merge to 'master'.
 cf. <xmqqh5mjrbgq.fsf@gitster.g>
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Needs review.
 cf. <xmqqqzlpulkp.fsf@gitster.g>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-07) 3 commits
  (merged to 'next' on 2026-07-09 at 371c2e9c3b)
 + replay: offer an option to linearize the commit topology
 + replay: resolve the replay base outside pick_regular_commit()
 + replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Will merge to 'master'.
 cf. <xmqq5x2qz42z.fsf@gitster.g>
 source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-01) 13 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with an allow-list
 - 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
 - connect: make `write_fetch_command_and_capabilities()` more generic
 - fetch-pack: move `write_fetch_command_and_capabilities()` to connect.c
 - fetch-pack: drop static `advertise_sid` variable
 - t1006: split test utility functions into new 'lib-cat-file.sh'
 - cat-file: declare loop counter inside for()
 - git-compat-util: add `strtoumax_szt()` with error handling
 - transport-helper: fix memory leak of helper on disconnect

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object. Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Expecting a reroll.
 cf. <CAN5EUNQ=2qtKXSJvxQiNLYqx0N0m6sfyBGLLXm4FB1kwtOsdbQ@mail.gmail.com>
 source: <20260701-ps-eric-work-rebase-v15-0-c88a43b63917@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 allowing external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 cf. <xmqqcxx9ukvw.fsf@gitster.g>
 source: <20260619162105.648495-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-07-08) 3 commits
 - prio-queue: use cascade for unfused gets
 - prio-queue: extract sift_up() from prio_queue_put()
 - Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift
 (this branch uses kk/prio-queue-get-put-fusion.)

 'prio_queue_get()' has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Needs review.
 source: <pull.2132.v3.git.1783532989.gitgitgadget@gmail.com>


* ps/history-drop (2026-07-01) 11 commits
  (merged to 'next' on 2026-07-08 at 6fb84708a4)
 + builtin/history: implement "drop" subcommand
 + builtin/history: split handling of ref updates into two phases
 + replay: expose `replay_result_queue_update()`
 + reset: stop assuming that the caller passes in a clean index
 + reset: allow the caller to specify the current HEAD object
 + reset: introduce ability to skip updating HEAD
 + reset: introduce dry-run mode
 + reset: modernize flags passed to `reset_working_tree()`
 + reset: rename `reset_head()`
 + reset: drop `USE_THE_REPOSITORY_VARIABLE`
 + read-cache: split out function to drop unmerged entries to stage 0

 The experimental 'git history' command has been taught a new 'drop'
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Will merge to 'master'.
 cf. <xmqq1pdmprbk.fsf@gitster.g>
 cf. <CAP8UFD3OAktVQsLuqBNFH2uhEO31PH8ZF3ZT1ZW8k++XE8YLPw@mail.gmail.com>
 source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Waiting for response(s) to review comment(s).
 cf. <87cxwxofgv.fsf@emacs.iotcl.com>
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-06-24) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that are already merged to their tracked
 remote-tracking branches.

 Needs review.
 source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote the new branch will work with.

 Waiting for response(s) to review comment(s).
 cf. <xmqq5x37h6fj.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-04) 3 commits
 - graph: indent visual root in graph
 - graph: add a 2 commit buffer for lookahead
 - lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Expecting a reroll.
 cf. <CAN5EUNQoLtJ9cGwe8RNJTTdngM=qoak2=5F+yc7TH94TmQn7uw@mail.gmail.com>
 source: <20260704-ps-pre-commit-indent-v7-0-a94706cc8376@gmail.com>


* kk/merge-base-exhaustion (2026-07-01) 10 commits
 . commit-reach: remove commit-date ordering fallback
 . commit-reach: move min_generation check into paint_queue_get()
 . commit-reach: terminate merge-base walk when one paint side is exhausted
 . commit-reach: introduce struct paint_state with per-side counters
 . t6600: add clock-skew topologies and step counts for edge cases
 . commit-reach: add trace2 instrumentation to paint_down_to_common()
 . t6099, t6600: add side-exhaustion regression tests
 . t6600: add test cases for side-exhaustion edge cases
 . test-lib-functions: improve diagnostic output for trace2 data assertions
 . Documentation/technical: add paint-down-to-common doc

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Expecting a reroll.
 cf. <CAL71e4PgcZDK-gJziJa_yjEqX9TE+PFMwZn0xbjAUzuUDDDBYA@mail.gmail.com>
 source: <pull.2149.v5.git.1782923832.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 14%]

* Re: What's cooking in git.git (Jul 2026, #03)
  @ 2026-07-08 16:14 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-08 16:14 UTC (permalink / raw)
  To: Kristofer Karlsson; +Cc: git

Kristofer Karlsson <krka@spotify.com> writes:

> I tried building v6 of kk/merge-base-exhaustion on top of
> kk/commit-reach-find-all-fix but since that one is based
> on kk/paint-down-to-common-optim it does not include
> the changes from kk/commit-reach-optim which I also depend
> on.
>
> I thus think the status of kk/merge-base-exhaustion should
> instead be:
> "On hold, waiting for kk/commit-reach-find-all-fix to land first."
>
> Alternatively you could rebase kk/commit-reach-find-all-fix
> on master (triggers a small conflict though) and that would
> also unblock a reroll (but I don't want to generate more work for you).


When topic A depends on topic B and topic C, rather than rebasing A
on 'next' (if B and C are in 'next'), I would often do

    $ git checkout -b A master
    $ git merge --no-ff B
    $ git merge --no-ff C

these days to prepare the "base" to apply patches that belong to A.

Many contributors mimic this and state in their cover letter that
the patches in the series are to be applied on top of master at
commit X with branches Y and Z merged, or something to that effect.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jul 2026, #03)
@ 2026-07-07 17:18 13% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-07-07 17:18 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all. They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

The first batch of topics have now graduated to the 'master' branch.

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

* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been updated
 to allow the other side to add to the list of promisor remotes via the
 'promisor.acceptFromServerURL' configuration variable.

 Graduated to 'master'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
  (merged to 'next' on 2026-06-18 at e51bee59ca)
 + cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 + merge-ort: abort merge when trees have duplicate entries
 + merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 + merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 + merge-ort: propagate callback errors from traverse_trees_wrapper()

 The 'ort' merge backend has been hardened against corrupt trees by
 ensuring it aborts under appropriate error conditions.

 Graduated to 'master'.
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by 'git status' when the local branch is behind or has
 diverged from its push branch has been updated to suggest 'git pull
 <remote> <branch>'.

 Graduated to 'master'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* jc/submittingpatches-design-critiques (2026-06-20) 1 commit
  (merged to 'next' on 2026-06-22 at 7495b5f9d6)
 + SubmittingPatches: address design critiques

 The documentation in SubmittingPatches has been updated to clarify how
 patch contributors should respond to design and viability critiques,
 and how the resolution of such critiques should be recorded in the
 final commit messages.

 Graduated to 'master'.
 cf. <ajjwYGWZ6hQWr600@pks.im>
 source: <xmqqeci0g4mz.fsf@gitster.g>


* jk/repo-info-path-keys (2026-06-23) 3 commits
  (merged to 'next' on 2026-06-29 at fbf9652169)
 + repo: add path.gitdir with absolute and relative suffix formatting
 + repo: add path.commondir with absolute and relative suffix formatting
 + path: extract format_path() and use in rev-parse
 (this branch is used by ps/setup-split-discovery-and-setup.)

 The 'git repo info' command has been taught new keys to output both
 absolute and relative paths for 'gitdir' and 'commondir', supported by
 a new path-formatting helper extracted from 'git rev-parse'.

 Graduated to 'master'.
 cf. <xmqqy0g3iz38.fsf@gitster.g>
 source: <20260624033748.108281-1-jayatheerthkulkarni2005@gmail.com>


* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
  (merged to 'next' on 2026-06-18 at b63b3d1f25)
 + read_gitfile(): simplify NOT_A_REPO error message

 A regression in the error diagnosis code for invalid '.git' files has
 been fixed, avoiding a potential 'NULL'-pointer crash when reporting
 that a '.git' file does not point to a valid repository.

 Graduated to 'master'.
 cf. <xmqqjyry4hax.fsf@gitster.g>
 source: <20260616123516.GA2301231@coredump.intra.peff.net>


* kh/submittingpatches-trailers (2026-06-18) 5 commits
  (merged to 'next' on 2026-06-22 at 2cd4a152c9)
 + SubmittingPatches: note that trailer order matters
 + SubmittingPatches: be consistent with trailer markup
 + SubmittingPatches: document Based-on-patch-by trailer
 + SubmittingPatches: discourage common Linux trailers
 + SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Graduated to 'master'.
 cf. <xmqq4ij0vo8f.fsf@gitster.g>
 source: <V3_CV_SubPatches_trailers.9ec@msgid.xyz>


* mh/fetch-follow-remote-head-config (2026-06-19) 8 commits
  (merged to 'next' on 2026-06-22 at 423079e1c8)
 + fetch: fixup a misaligned comment
 + fetch: add configuration variable fetch.followRemoteHEAD
 + fetch: refactor do_fetch handling of followRemoteHEAD
 + fetch: return 0 on known git_fetch_config
 + fetch: rename function report_set_head
 + t5510: cleanup remote in followRemoteHEAD dangling ref test
 + doc: explain fetchRemoteHEADWarn advice
 + fetch: fixup set_head advice for warn-if-not-branch

 The 'fetch.followRemoteHEAD' configuration variable has been added to
 provide a default for the per-remote 'remote.<name>.followRemoteHEAD'
 setting.

 Graduated to 'master'.
 cf. <xmqqcxxp1j2t.fsf@gitster.g>
 source: <20260619094751.2996804-1-m@lfurio.us>


* mv/log-follow-mergy (2026-06-21) 1 commit
  (merged to 'next' on 2026-06-22 at f7e984a003)
 + log: improve --follow following renames for non-linear history

 'git log --follow' has been updated to better handle non-linear
 history, in which the path being tracked gets renamed differently in
 multiple history lines.

 Graduated to 'master'.
 source: <ajjU4w2B0NlZffw1@collabora.com>


* po/hash-object-size-t (2026-06-16) 6 commits
  (merged to 'next' on 2026-06-21 at b780a276b9)
 + hash-object: add a >4GB/LLP64 test case using filtered input
 + hash-object: add another >4GB/LLP64 test case
 + hash-object --stdin: verify that it works with >4GB/LLP64
 + hash algorithms: use size_t for section lengths
 + object-file.c: use size_t for header lengths
 + hash-object: demonstrate a >4GB/LLP64 problem

 Support for hashing loose or packed objects larger than 4GB on Windows
 and other LLP64 platforms has been improved by converting object header
 buffers and data-handling functions from 'unsigned long' to 'size_t'.

 Graduated to 'master'.
 cf. <ajOQthRjhD3hRM9w@pks.im>
 source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>


* ps/connected-generic-promisor-checks (2026-06-25) 5 commits
  (merged to 'next' on 2026-06-29 at 10eef65b98)
 + connected: search promisor objects generically
 + connected: split out promisor-based connectivity check
 + odb/source-packed: support flags when iterating an object prefix
 + odb/source-packed: extract logic to skip certain packs
 + Merge branch 'ps/odb-source-packed' into ps/connected-generic-promisor-checks
 (this branch uses ps/odb-source-packed.)

 The connectivity check has been refactored to search for promisor
 objects in a generic way using the object database interface,
 rather than iterating packfiles directly. This allows connectivity
 checks to work properly in repositories that do not use packfiles.

 Graduated to 'master'.
 cf. <CAP8UFD07AzNtP3rRj4btYfFfakX0kkLXKpO9T=a3Mds3YWEsXw@mail.gmail.com>
 source: <20260625-pks-connected-generic-promisor-checks-v3-0-7308f3b9dc44@pks.im>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
  (merged to 'next' on 2026-06-17 at dd9a463369)
 + b4: introduce configuration for the Git project
 + MyFirstContribution: recommend the use of b4
 + MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Graduated to 'master'.
 cf. <87eci7yomp.fsf@emacs.iotcl.com>
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* ps/odb-source-packed (2026-06-16) 18 commits
  (merged to 'next' on 2026-06-19 at dcf0c084e4)
 + odb/source-packed: drop pointer to "files" parent source
 + midx: refactor interfaces to work on "packed" source
 + odb/source-packed: stub out remaining functions
 + odb/source-packed: wire up `freshen_object()` callback
 + odb/source-packed: wire up `find_abbrev_len()` callback
 + odb/source-packed: wire up `count_objects()` callback
 + odb/source-packed: wire up `for_each_object()` callback
 + odb/source-packed: wire up `read_object_stream()` callback
 + odb/source-packed: wire up `read_object_info()` callback
 + packfile: use higher-level interface to implement `has_object_pack()`
 + odb/source-packed: wire up `reprepare()` callback
 + odb/source-packed: wire up `close()` callback
 + odb/source-packed: start converting to a proper `struct odb_source`
 + odb/source-packed: store pointer to "files" instead of generic source
 + packfile: move packed source into "odb/" subsystem
 + packfile: split out packfile list logic
 + packfile: rename `struct packfile_store` to `odb_source_packed`
 + Merge branch 'ps/odb-source-loose' into ps/odb-source-packed
 (this branch is used by ps/connected-generic-promisor-checks, ps/libgit-in-subdir, ps/odb-drop-whence and ps/odb-generalize-prepare.)

 The packed object source has been refactored into a proper 'struct
 odb_source'.

 Graduated to 'master'.
 cf. <ajK2QKdW-TdflfR0@denethor>
 source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>


* ps/refs-onbranch-fixes (2026-06-25) 12 commits
  (merged to 'next' on 2026-06-29 at 7b4929e311)
 + refs: protect against chicken-and-egg recursion
 + refs/reftable: lazy-load configuration to fix chicken-and-egg
 + reftable: split up write options
 + refs/files: lazy-load configuration to fix chicken-and-egg
 + refs: move parsing of "core.logAllRefUpdates" back into ref stores
 + repository: free main reference database
 + chdir-notify: drop unused `chdir_notify_reparent()`
 + refs: unregister reference stores from "chdir_notify"
 + setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 + setup: stop applying repository format twice
 + setup: inline `check_and_apply_repository_format()`
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-onbranch-fixes
 (this branch is used by ps/setup-split-discovery-and-setup.)

 Reference backend configuration has been updated to load lazily to
 avoid recursive calls during repository initialization when 'onbranch'
 configuration conditions are evaluated. This has also fixed a memory
 leak and allowed the unused 'chdir_notify_reparent()' machinery to be
 dropped.

 Graduated to 'master'.
 cf. <xmqqse6ae45i.fsf@gitster.g>
 source: <20260625-b4-pks-refs-avoid-chdir-notify-reparent-v6-0-41fbca3cf5e3@pks.im>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state
 (this branch is used by ps/setup-split-discovery-and-setup.)

 The refactoring of 'setup.c' has been continued to drop remaining
 global state ('git_work_tree_cfg', 'is_bare_repository_cfg'), updating
 'is_bare_repository()' to no longer implicitly rely on
 'the_repository'.

 Graduated to 'master'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* pw/status-rebase-todo (2026-06-23) 2 commits
  (merged to 'next' on 2026-06-23 at a0fcde09dc)
 + status: improve rebase todo list parsing
 + sequencer: factor out parsing of todo commands

 The display of the rebase todo list in 'git status' has been improved
 to correctly abbreviate object IDs for more commands and avoid
 misinterpreting refs as object IDs.

 Graduated to 'master'.
 source: <cover.1782230024.git.phillip.wood@dunelm.org.uk>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
  (merged to 'next' on 2026-06-17 at 43ed8b3969)
 + cat-file: speed up default format

 The default format path of 'git cat-file --batch' has been optimized
 to use 'strbuf_add_oid_hex()' and 'strbuf_add_uint()' instead of
 'strbuf_addf()', yielding a noticeable speedup.

 Graduated to 'master'.
 cf. <20260615165326.GA91269@coredump.intra.peff.net>
 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>


* sg/t3420-do-not-grep-in-missing-file (2021-10-10) 1 commit
  (merged to 'next' on 2026-06-29 at 2bf33c6a40)
 + t3420-rebase-autostash: don't try to grep non-existing files

 A test checking interactions between 'git rebase --quit' and autostash
 in 't3420-rebase-autostash.sh' has been corrected to use
 'test_path_is_missing' instead of '! grep' on a file that shouldn't
 exist in the conflicted state.

 Graduated to 'master'.
 source: <20211010172809.1472914-1-szeder.dev@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-21) 5 commits
  (merged to 'next' on 2026-06-22 at 59cf1663e7)
 + pack-objects: support `--delta-islands` with `--path-walk`
 + pack-objects: extract `record_tree_depth()` helper
 + pack-objects: support reachability bitmaps with `--path-walk`
 + t/perf: drop p5311's lookup-table permutation
 + Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The 'git pack-objects' command has been updated to support
 reachability bitmaps and delta-islands concurrently with the '--path-
 walk' option, allowing faster packaging by falling back to path-walk
 when bitmaps cannot fully satisfy the request.

 Graduated to 'master'.
 cf. <xmqqwlvq1qyy.fsf@gitster.g>
 source: <cover.1782082975.git.me@ttaylorr.com>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
  (merged to 'next' on 2026-06-19 at a19dbb4193)
 + ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like 'git branch' and 'git tag')
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Graduated to 'master'.
 cf. <xmqqik7fsv2m.fsf@gitster.g>
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-20) 2 commits
  (merged to 'next' on 2026-06-20 at d8ca0d5180)
 + environment: use 'repo->initialized' for repo_protect_hfs() and repo_protect_ntfs()
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables 'protect_hfs' and 'protect_ntfs'
 have been migrated into 'struct repo_config_values' to tie them to
 per-repository configuration state.

 Graduated to 'master'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>
 source: <20260620140957.667820-1-cat@malon.dev>


* wy/doc-clarify-review-replies (2026-06-21) 2 commits
  (merged to 'next' on 2026-06-29 at 21ae0599dc)
 + doc: advise batching patch rerolls
 + doc: encourage review replies before rerolling

 Documentation on community contribution guidelines has been updated to
 encourage replying to review comments before rerolling, and to advise
 a default limit of at most one reroll per day to give reviewers across
 different time zones enough time to participate.

 Graduated to 'master'.
 cf. <ajvDuUiDsmyf5LnX@pks.im>
 source: <cover.1782028813.git.wy@wyuan.org>

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

* ds/sparse-index-ita-crash (2026-07-06) 1 commit
 - sparse-index: avoid crash on intent-to-add entry outside the cone

 A crash in the sparse-index collapse code when encountering an
 invalidated cache-tree node (due to an intent-to-add path) has been
 fixed by avoiding collapsing such subtrees.

 Needs review.
 source: <pull.2167.git.1783345853272.gitgitgadget@gmail.com>


* ij/subtree-reject-v2-config (2026-07-06) 2 commits
 - git-subtree: Bail out if we find output from Rust rewrite (test)
 - git-subtree: Bail out if we find output from Rust rewrite

 The shell script implementation of 'git subtree' has been updated to
 check for the presence of the configuration file of the new Rust
 implementation, preventing users from accidentally running the old
 script on repositories already managed by the new tool.

 Expecting a reroll.
 cf. <27211.50096.133710.528147@chiark.greenend.org.uk>
 source: <20260706115816.20267-1-ijackson@chiark.greenend.org.uk>


* kk/reftable-tombstone-quadratic-fix (2026-07-06) 2 commits
 - reftable: fix quadratic behavior when re-creating deleted refs
 - t: add tests for ref tombstone scenarios

 The performance of ref updates and reads using the reftable backend in
 the presence of many deletion tombstone records has been optimized by
 removing the tombstone suppression flag from the merged iterator and
 instead skipping tombstones at higher-level call sites where iteration
 bounds are known.

 Needs review.
 source: <pull.2166.git.1783344957.gitgitgadget@gmail.com>


* rs/blame-abbrev-marks (2026-07-06) 1 commit
 - blame: reserve mark column only if necessary

 The alignment of commit object name abbreviations in 'git blame'
 output has been optimized to reserve a column for marks (caret,
 question mark, or asterisk) only when such marks are actually shown.

 Will merge to 'next'?
 cf. <xmqqzf0397u1.fsf@gitster.g>
 source: <92991b5e-0667-4315-89d5-1514a5499297@web.de>


* jm/t0213-skip-emulated-ancestry-tests (2026-07-06) 1 commit
 - t0213: skip ancestry tests under user-mode emulation

 The 'TRACE2_ANCESTRY' prerequisite in the 't0213' test script has been
 refined to avoid failures under user-mode emulation. It now verifies
 that the ancestry collector reports the expected process names rather
 than the emulator binary name.

 Needs review.
 source: <pull.2168.git.1783359242130.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When 'cURL' follows a redirect, the 'WWW-Authenticate' headers from
 the redirect target were lost because 'credential_from_url()' cleared
 the credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking has been updated to retry for a short
 period, avoiding failures when multiple processes attempt to update
 the configuration simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* bc/parse-options-exit-0-on-help (2026-07-01) 4 commits
 - parse-options: exit 0 on -h
 - rev-parse: have --parseopt callers exit 0 on --help
 - parse-options: add a separate case for help output on error
 - t1517: skip svn tests if svn is not installed

 Option parsing with 'git rev-parse --parseopt' and most git
 subcommands has been updated to exit with 0 (instead of 129) when the
 help option ('-h' or '--help') is requested directly by the user,
 aligning with standard Unix convention.

 Expecting a reroll.
 cf. <akZ6H84Tzzgu8L5W@fruit.crustytoothpaste.net>
 source: <20260701212442.1430084-1-sandals@crustytoothpaste.net>


* mg/meson-hook-list-buildfix (2026-07-01) 1 commit
 - meson: restore hook-list.h to builtin_sources

 A racy build failure under Meson has been corrected by ensuring that
 the generated header file hook-list.h is built before compiling files
 in builtin_sources that depend on it.

 Will merge to 'next'.
 cf. <akZGJP1kVtjBFN_e@pks.im>
 source: <20260701193928.358825-1-floppym@gentoo.org>


* zy/apply-abandoned-header-fix (2026-07-01) 1 commit
 - apply: avoid leaking abandoned git-header state

 A candidate git diff header parsed by 'git apply' has been isolated in
 a temporary structure, preventing any partially parsed state from
 polluting the main patch structure and causing assertions to trip if
 the header is ultimately rejected.

 Needs review.
 source: <20260702041759.51572-1-zhihao.yao@njit.edu>


* jk/hash-algo-leak-fixes (2026-07-02) 9 commits
 - hash: add platform-specific discard functions
 - hash: fix memory leak copying sha256 gcrypt handles
 - http: discard hash in dumb-http http_object_request
 - check_stream_oid(): discard hash on read error
 - patch-id: discard hash when done
 - csum-file: provide a function to release checkpoints
 - csum-file: always finalize or discard hash
 - hash: add discard primitive
 - csum-file: drop discard_hashfile()

 Various code paths that initialize a cryptographic hash context but
 bail out or finish without calling 'git_hash_final()' have been taught
 to call 'git_hash_discard()' to release allocated resources, fixing
 memory leaks when Git is built with non-default backends like
 'OpenSSL' or 'libgcrypt'.

 Will merge to 'next'?
 cf. <aktIIKuReMxJmDsi@pks.im>
 source: <20260702075234.GA1548258@coredump.intra.peff.net>


* ml/t9811-replace-test-f (2026-07-02) 1 commit
 - t9811: replace 'test -f' and '! test -f' with 'test_path_*'

 The test script 't/t9811-git-p4-label-import.sh' has been
 modernized to use 'test_path_is_file' and 'test_path_is_missing'
 instead of raw 'test -f' and '! test -f' calls.

 Expecting a reroll.
 cf. <akdwp_a2EuhVoGVW@pks.im>
 cf. <CAO=vGZpMe3dxyzFVwR7BWBxaAZ-z9Kw3CqQ0kAe5ZZGSQszkzw@mail.gmail.com>
 source: <20260702140704.65805-1-marcelomlage@usp.br>


* ps/t-fixes-for-git-test-long (2026-07-05) 9 commits
 - gitlab-ci: enable "GIT_TEST_LONG"
 - gitlab-ci: disable RAM disk on macOS jobs
 - t: use `test_bool_env` to parse GIT_TEST_LONG
 - t7900: clean up large EXPENSIVE repository
 - t7508: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 - t5608: reduce maximum disk usage
 - t4141: fix inefficient use of dd(1)
 - t0021: skip EXPENSIVE test that is broken without SIZE_T_IS_64BIT
 - README: add GitLab CI badge to make it more discoverable

 Various test scripts have been updated to clean up large temporary
 files and repositories, reducing peak disk usage during testing.
 Also, expensive tests have been disabled on platforms that lack
 sufficient resources (like 32-bit platforms and Windows CI
 runners), and the long test suite has been enabled in GitLab CI.

 Will merge to 'next'?
 cf. <20260707043026.GB677056@coredump.intra.peff.net>
 source: <20260706-b4-pks-t-fixes-for-GIT-TEST-LONG-v3-0-4f6c5a37fd1f@pks.im>


* ih/precompose-flex-array (2026-07-04) 1 commit
 - precompose_utf8: use a flex array for d_name

 The UTF-8 precomposition wrapper on macOS has been updated to use a
 flexible array member to represent the name of a directory entry,
 preventing fortified libc checks from failing when name is
 reallocated to be larger than NAME_MAX bytes.

 Will merge to 'next'.
 cf. <20260703050800.GA29216@tb-raspi4>
 source: <20260704233724.16928-1-ihar.hrachyshka@gmail.com>


* sn/osxkeychain-rust-universal (2026-07-06) 3 commits
 - contrib: wire up osxkeychain in contrib/Makefile on macOS
 - Makefile: support universal macOS builds via RUST_TARGETS
 - Makefile: add $(RUST_LIB) prerequisite to osxkeychain

 The build system has been updated to support building universal macOS
 binaries when 'Rust' is enabled, by compiling separate static archives
 for each target triple listed in 'RUST_TARGETS' and combining them
 using the macOS 'lipo' tool. Additionally, the 'git-credential-
 osxkeychain' helper has been updated to link against '$(RUST_LIB)'
 when 'Rust' is enabled.

 Needs review.
 source: <pull.2288.v6.git.git.1783378333.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-07-02) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The '[includeIf "condition"]' conditional inclusion facility for
 configuration files has been taught to use the location of the
 worktree in its condition.

 Waiting for response(s) to review comment(s).
 cf. <akeW4yFC8uuu2o8a@pks.im>
 cf. <CAC1kPDNBecLbmZwjfR5-CsNheF3rcbZ5=SQ+cwjzpFMjFr9KGQ@mail.gmail.com>
 source: <20260703-includeif-worktree-v6-0-a13893ad9a7f@black-desk.cn>


* kk/commit-reach-find-all-fix (2026-06-29) 2 commits
 - commit-reach: guard !FIND_ALL early exit with generation ordering check
 - t6600: add test for merge-base early exit with clock skew

 The early-exit optimization in 'paint_down_to_common()' has been gated
 on the queue being generation-ordered, fixing a bug where 'git merge-
 base' (without '--all') could return incorrect results on repositories
 with v1 commit graphs and clock skew.

 Comments?
 cf. <xmqqa4sdw55v.fsf@gitster.g>
 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 't7412' that tests 'git submodule absorbgitdirs' has been modernized
 to use 'test_path_is_file', 'test_path_is_dir', and
 'test_path_is_missing' helper functions instead of raw 'test -[fde]'
 commands.

 Waiting for response(s) to review comment(s).
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* jk/format-patch-leakfix (2026-06-29) 2 commits
  (merged to 'next' on 2026-07-06 at 35aff0d609)
 + format-patch: fix leak of rev_info in prepare_bases()
 + t: move LSan errors from stdout to stderr

 A memory leak in the '--base' handling of 'git format-patch' has been
 plugged, and the leak-reporting of the test suite when running under a
 TAP harness has been improved.

 Will merge to 'master'.
 cf. <akOZy-BygZS8fqPM@pks.im>
 source: <20260630063944.GA3733670@coredump.intra.peff.net>


* ps/setup-split-discovery-and-setup (2026-06-30) 16 commits
 - setup: mark `set_git_work_tree()` as file-local
 - setup: pass worktree to `init_db()`
 - setup: drop redundant configuration of `startup_info->have_repository`
 - setup: make repository discovery self-contained
 - setup: propagate prefix via repository discovery
 - setup: drop static `cwd` variable
 - setup: move prefix into repository
 - setup: embed repository format in discovery
 - setup: introduce explicit repository discovery
 - setup: split up concerns of `setup_git_env_internal()`
 - setup: unify setup of shallow file
 - setup: mark bogus worktree in `apply_repository_format()`
 - setup: rename `check_repository_format_gently()`
 - Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
 - Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
 - Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup

 The repository discovery and repository configuration phases, which
 were previously intertwined in 'setup.c', have been split. Repository
 discovery has been updated to populate a 'struct repo_discovery'
 without modifying the repository state, which is then taken by
 repository configuration to initialize the repository, paving the way
 for clean unification of repository configuration.

 Needs review.
 (a newer iteration v2 exists as <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>)
 source: <20260630-pks-setup-split-discovery-and-setup-v1-0-13864eb5a032@pks.im>


* pw/rebase-drop-notes-with-commit (2026-06-30) 15 commits
 - amend! sequencer: simplify pick_one_commit()
 - amend! sequencer: remove unnecessary "or" in pick_one_commit()
 - fixup! sequencer: never reschedule on failed commit
 - fixup! sequencer: be more careful with external merge
 - sequencer: do not record dropped commits as rewritten
 - sequencer: use an enum to represent result of picking a commit
 - sequencer: return early from pick_one_commit() on success
 - sequencer: simplify pick_one_commit()
 - sequencer: remove unnecessary condition in pick_one_commit()
 - sequencer: simplify handing of fixup with conflicts
 - sequencer: remove unnecessary "or" in pick_one_commit()
 - sequencer: never reschedule on failed commit
 - sequencer: be more careful with external merge
 - sequencer: move definition of is_final_fixup()
 - t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected. When a
 commit is dropped during rebase (e.g., because its changes are already
 upstream), it is no longer recorded as rewritten, preventing its notes
 from being copied to an unrelated commit.

 Expecting a reroll.
 cf. <dce74d17-eefd-40bb-82f3-f6b3179cc2b6@gmail.com>
 source: <cover.1782833268.git.phillip.wood@dunelm.org.uk>


* jk/bloom-leak-fixes (2026-06-30) 3 commits
 - line-log: drop extra copy of range with bloom filters
 - revision: avoid leaking bloom keyvecs with multiple traversals
 - bloom: make bloom-filter slab initialization idempotent

 Various memory leaks in the Bloom-filter code paths that are exposed
 when running tests with the 'GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1'
 environment variable have been plugged.

 Will merge to 'next'.
 cf. <b641aed4-ad52-477b-b1d8-9d8e470be46f@gmail.com>
 cf. <xmqqo6gqobrt.fsf@gitster.g>
 source: <20260701063538.GA2579765@coredump.intra.peff.net>


* js/ci-dockerized-pid-limit (2026-07-04) 1 commit
 - ci(dockerized): raise the PID limit for private repositories

 Dockerized CI jobs running in private GitHub repositories have been
 adjusted to use explicit process and file limits, preventing resource
 exhaustion errors on private runners.

 Will merge to 'next'.
 cf. <xmqqh5medmzh.fsf@gitster.g>
 source: <pull.2164.v2.git.1783155124926.gitgitgadget@gmail.com>


* js/coverity-fixes (2026-07-05) 12 commits
 - mingw: make `exit_process()` own the process handle on all paths
 - fsmonitor: plug token-data leak on early daemon-startup failures
 - reftable/table: release filter on error path
 - imap-send: avoid leaking the IMAP upload buffer
 - worktree: fix resource leaks when branch creation fails
 - submodule: fix cwd leak in `get_superproject_working_tree()`
 - dir: free allocations on parse-error paths in `read_one_dir()`
 - line-log: avoid redundant copy that leaks in process_ranges
 - run-command: avoid `close(-1)` in `start_command()` error paths
 - download_https_uri_to_file(): do not leak fd upon failure
 - loose: avoid closing invalid fd on error path
 - load_one_loose_object_map(): fix resource leak

 Various resource leaks, invalid file descriptor closures, and process
 handle ownership issues flagged by Coverity have been fixed.

 Needs review.
 source: <pull.2163.v2.git.1783239870.gitgitgadget@gmail.com>


* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 'git repack' has been taught to accept '--geometric' and '--cruft'
 together. When both are given, the geometric repack rolls up non-cruft
 packs as usual, while a separate cruft pack is written to collect
 unreachable objects.

 Expecting a reroll.
 cf. <aj8cOhH6hGVZIFft@nand.local>
 source: <cover.1782500507.git.me@ttaylorr.com>


* jk/reftable-leakfix (2026-06-28) 1 commit
  (merged to 'next' on 2026-07-06 at 55ce81f2d5)
 + reftable: fix unlikely leak on API error

 A memory leak in the 'reftable_writer_new()' initialization function
 has been fixed by delaying the allocation of 'struct reftable_writer'
 until after input options are validated.

 Will merge to 'master'.
 cf. <akIPBJLtPqDjQt-A@pks.im>
 source: <20260628090314.GA661068@coredump.intra.peff.net>


* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
  (merged to 'next' on 2026-07-06 at b099249efd)
 + gpg-interface: fix strip_cr_before_lf to only remove CR before LF

 The GPG and SSH signature parsing code has been corrected to strip
 carriage return characters only when they immediately precede line
 feeds, instead of unconditionally stripping all carriage returns.

 Will merge to 'master'.
 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>


* jt/receive-pack-use-odb-transactions (2026-06-23) 6 commits
 - builtin/receive-pack: stage incoming objects via ODB transactions
 - odb/transaction: add transaction env interface
 - odb/transaction: propagate commit errors
 - odb/transaction: propagate begin errors
 - object-file: propagate files transaction errors
 - object-file: rename files transaction prepare function

 'git receive-pack' has been refactored to use ODB transaction
 interfaces instead of directly managing 'tmp_objdir' for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Expecting a reroll.
 cf. <aju_AmlKVi5UZaiQ@pks.im>
 cf. <akK05yZ6843K8Vdd@denethor>
 cf. <akLLB_J-pvJ7iR7c@denethor>
 source: <20260624041920.2601961-1-jltobler@gmail.com>


* ps/odb-drop-whence (2026-07-02) 7 commits
 - odb: document object info fields
 - odb: drop `whence` field from object info
 - treewide: convert users of `whence` to the new source field
 - odb: add `source` field to struct object_info_source
 - odb: make backend-specific fields optional
 - packfile: thread odb_source_packed through packed_object_info()
 - Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence

 The 'whence' field in 'struct object_info' has been removed,
 refactoring backend-specific object information retrieval into an opt-
 in 'struct object_info_source' structure.

 Will merge to 'next'.
 cf. <xmqqv7b0rmt6.fsf@gitster.g>
 source: <20260702-b4-pks-odb-drop-whence-v2-0-b0af7468ad95@pks.im>


* ps/reftable-hardening (2026-07-03) 12 commits
 - reftable/table: fix OOB read on truncated table
 - reftable/table: fix NULL pointer access when seeking to bogus offsets
 - reftable/block: fix OOB read with bogus restart offset
 - reftable/block: fix use of uninitialized memory when binsearch fails
 - reftable/block: fix OOB read with bogus restart count
 - reftable/block: fix OOB read with bogus block size
 - reftable/block: fix OOB write with bogus inflated log size
 - t/unit-tests: introduce test helper to write reftable blocks
 - reftable/record: don't abort when decoding invalid ref value type
 - reftable/basics: fix OOB read on binary search of empty range
 - oss-fuzz: add fuzzer for parsing reftables
 - meson: support building fuzzers with libFuzzer

 The reftable code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Needs review.
 source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>


* hn/branch-push-slip-advice (2026-06-27) 2 commits
  (merged to 'next' on 2026-07-06 at acdff65ac5)
 + push: suggest <remote> <branch> for a slash slip
 + branch: suggest <remote>/<branch> on upstream slip

 When 'git push origin/main' or 'git branch origin main' is run, the
 command is now recognized as a potential typo, and advice has been
 added to offer a typofix.

 Will merge to 'master'.
 cf. <xmqqfr272lq7.fsf@gitster.g>
 source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>


* jc/history-message-prep-fix (2026-06-29) 1 commit
  (merged to 'next' on 2026-07-06 at 00534a21ce)
 + history: streamline message preparation and plug file stream leak

 A write file stream resource leak has been fixed as part of a code
 cleanup.

 Will merge to 'master'.
 cf. <akO1mhi2u2PntLbt@pks.im>
 source: <xmqqmrwdxrat.fsf@gitster.g>


* ty/migrate-excludes-file (2026-07-01) 1 commit
 - environment: move excludes_file into repo_config_values

 The 'excludes_file' and various other global configuration variables
 (including 'editor_program', 'pager_program', 'askpass_program', and
 'push_default') have been migrated into the per-repository structure.

 Waiting for response(s) to review comment(s).
 (a newer iteration v7 exists as <20260706142530.3681520-1-cat@malon.dev>)
 cf. <xmqqpl10auhw.fsf@gitster.g>
 source: <20260701180813.776173-2-cat@malon.dev>


* kk/merge-base-exhaustion (2026-07-01) 10 commits
 . commit-reach: remove commit-date ordering fallback
 . commit-reach: move min_generation check into paint_queue_get()
 . commit-reach: terminate merge-base walk when one paint side is exhausted
 . commit-reach: introduce struct paint_state with per-side counters
 . t6600: add clock-skew topologies and step counts for edge cases
 . commit-reach: add trace2 instrumentation to paint_down_to_common()
 . t6099, t6600: add side-exhaustion regression tests
 . t6600: add test cases for side-exhaustion edge cases
 . test-lib-functions: improve diagnostic output for trace2 data assertions
 . Documentation/technical: add paint-down-to-common doc

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Expecting a reroll.
 cf. <CAL71e4PgcZDK-gJziJa_yjEqX9TE+PFMwZn0xbjAUzuUDDDBYA@mail.gmail.com>
 source: <pull.2149.v5.git.1782923832.gitgitgadget@gmail.com>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The 'USE_NSEC' build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Expecting a reroll.
 cf. <CALnO6CDm74rCBQu6Q0djsvtuw5U14V=PApptcZTgP+pic1f_AA@mail.gmail.com>
 cf. <ajjuoS5Qc3K0nCRl@pks.im>
 cf. <akIL6oJgUv8J8SB2@pks.im>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/libgit-in-subdir (2026-06-30) 3 commits
 - Move libgit.a sources into separate "lib/" directory
 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir

 The source files for 'libgit.a' have been moved into a new 'lib/'
 directory to clean up the top-level directory and clearly separate
 library code.

 Comments?
 cf. <akX1TMoRr87Id8Ss@pks.im>
 source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
  (merged to 'next' on 2026-07-06 at 6132517517)
 + odb: introduce `odb_prepare()`
 + odb/source: generalize `reprepare()` callback
 + Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare

 The 'reprepare()' callback for object database sources has been
 generalized into a 'prepare()' callback with an optional flush cache
 flag, and a new 'odb_prepare()' wrapper has been introduced to allow
 pre-opening object database sources.

 Will merge to 'master'.
 cf. <87ik704f1j.fsf@emacs.iotcl.com>
 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>


* ty/migrate-ignorecase (2026-06-19) 2 commits
 - config: use repo_ignore_case() to access core.ignorecase
 - environment: move ignore_case into repo_config_values

 The global configuration variable 'ignore_case' (representing the
 'core.ignorecase' configuration) has been migrated into 'struct
 repo_config_values' to tie it to a specific repository instance.

 Waiting for comments from Johannes.
 cf. <xmqqzf0mzc7j.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 The 'git log -L<range>:<path>' command has been taught to limit
 various 'diff' operations, such as '--stat', '--check', and '-G', to
 the specified range:path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-07-06) 5 commits
 - history: re-edit a squash with every message
 - sequencer: extract helpers for the squash message markers
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental 'git history' command has been taught a new 'squash'
 subcommand to fold a range of commits into a single commit, replaying
 any descendants on top.

 Waiting for response(s) to review comment(s).
 cf. <38493ca6-8fdd-4b6c-9972-5145f3bf0aa4@gmail.com>
 source: <pull.2337.v7.git.git.1783327849.gitgitgadget@gmail.com>


* ps/refs-writing-subcommands (2026-07-06) 5 commits
 - builtin/refs: add "rename" subcommand
 - builtin/refs: add "create" subcommand
 - builtin/refs: add "update" subcommand
 - builtin/refs: add "delete" subcommand
 - builtin/refs: drop `the_repository`

 The 'git refs' toolbox has been extended with new 'create', 'delete',
 'update', and 'rename' subcommands to create, delete, update, and
 rename references, respectively.

 Will merge to 'next'.
 source: <20260706-pks-refs-writing-subcommands-v4-0-d51f6ce7f830@pks.im>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The 'git multi-pack-index write --incremental' command has been
 corrected to properly honor the '--base' option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Comments?
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-07-05) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 The test suite has been updated to use the 'test_grep' helper instead
 of bare 'grep' for test assertions, allowing file contents to be
 printed on failure for easier debugging. A new 'greplint' linter has
 been introduced to detect and prevent new bare 'grep' assertions from
 being added to the test suite.

 Needs review.
 source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
  (merged to 'next' on 2026-07-06 at aa748c4564)
 + prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 + prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in 'prio_queue_get()' to allow get+put fusion) has been folded
 directly into 'prio_queue' itself, speeding up commit traversal
 workflows and simplifying callers.

 Will merge to 'master'.
 cf. <xmqqh5mjrbgq.fsf@gitster.g>
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Comments?
 cf. <xmqqqzlpulkp.fsf@gitster.g>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-07-02) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: resolve the replay base outside pick_regular_commit()
 - replay: add helper to put entry into replayed_commits

 The 'git replay' command has been taught the '--linearize' option to
 drop merge commits and linearize the replayed history, mimicking 'git
 rebase --no-rebase-merges'.

 Waiting for response(s) to review comment(s).
 cf. <xmqqbjcnhjvk.fsf@gitster.g>
 source: <20260702-toon-git-replay-drop-merges-v6-0-78a07cdd0382@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-01) 13 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with an allow-list
 - 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
 - connect: make `write_fetch_command_and_capabilities()` more generic
 - fetch-pack: move `write_fetch_command_and_capabilities()` to connect.c
 - fetch-pack: drop static `advertise_sid` variable
 - t1006: split test utility functions into new 'lib-cat-file.sh'
 - cat-file: declare loop counter inside for()
 - git-compat-util: add `strtoumax_szt()` with error handling
 - transport-helper: fix memory leak of helper on disconnect

 The 'remote-object-info' command has been added to 'git cat-file
 --batch-command', allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object. Format placeholders are dynamically
 filtered on the client based on server-advertised capabilities,
 returning empty strings for inapplicable or unsupported fields.

 Expecting a reroll.
 cf. <CAN5EUNTYeDrQMor29eYMhJD0jcdRQq36ZA6BgupV8gG9xs9rFQ@mail.gmail.com>
 source: <20260701-ps-eric-work-rebase-v15-0-c88a43b63917@gmail.com>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 'git rebase --update-refs' has been taught to resolve local branch
 symrefs to their referents before queuing updates, ensuring aliases of
 the current branch are skipped and duplicate updates are avoided to
 prevent failures when branch aliases are present.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new 'diff.<driver>.process' configuration has been introduced to
 allow a long-running external process to act as a hunk provider,
 allowing external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Comments?
 cf. <xmqqcxx9ukvw.fsf@gitster.g>
 source: <20260619162105.648495-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 'prio_queue_get()' has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 On hold, waiting for kk/prio-queue-get-put-fusion to land first.
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* ps/history-drop (2026-07-01) 11 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - replay: expose `replay_result_queue_update()`
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental 'git history' command has been taught a new 'drop'
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Will merge to 'next'.
 cf. <xmqq1pdmprbk.fsf@gitster.g>
 cf. <CAP8UFD3OAktVQsLuqBNFH2uhEO31PH8ZF3ZT1ZW8k++XE8YLPw@mail.gmail.com>
 source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation for 'git interpret-trailers' has been updated to explain
 the format of trailer keys (alphanumeric characters and hyphens),
 replace outdated terminology, define key terms upfront, and document
 how comment lines in the input are treated.

 Expecting a reroll.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 Path completion for commands like 'git rm' and 'git mv' has been
 updated to hide dotfiles by default unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 Support for '-m', '-F', '-c', or '-C' options to supply a commit log
 message from outside the editor has been added for all 'git commit
 --fixup' variations.

 Comments?
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Documentation for 'git replay' has been updated to refer to its
 configuration variables.

 Comments?
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-06-24) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 The 'git branch' command has been taught the '--delete-merged' option
 to remove local branches that have already been merged to the remote-
 tracking branches they track.

 Needs review.
 source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 The 'git checkout --track=...' command has been taught to optionally
 fetch the branch from the remote the new branch will work with.

 Comments?
 cf. <xmqq5x37h6fj.fsf@gitster.g>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-04) 3 commits
 - graph: indent visual root in graph
 - graph: add a 2 commit buffer for lookahead
 - lib-log-graph: move check_graph function

 'git log --graph' has been modified to visually distinguish parentless
 'root' commits (and commits that become roots due to history
 simplification) by indenting them, preventing them from appearing
 falsely related to unrelated commits rendered immediately above them.

 Expecting a reroll.
 cf. <CAN5EUNQoLtJ9cGwe8RNJTTdngM=qoak2=5F+yc7TH94TmQn7uw@mail.gmail.com>
 source: <20260704-ps-pre-commit-indent-v7-0-a94706cc8376@gmail.com>


^ permalink raw reply	[relevance 13%]

* Re: What's cooking in git.git (Jul 2026, #01)
  @ 2026-07-03 20:39 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-07-03 20:39 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

> On Wed, Jul 01, 2026 at 04:40:16PM -0700, Junio C Hamano wrote:
>> * ps/odb-drop-whence (2026-06-24) 7 commits
> I'll send a small reroll to rename `sourcep` to `source_infop` based on
> Justin's feedback.
>
>> * ps/odb-generalize-prepare (2026-06-22) 3 commits
> This one should be ready.
>
>> * ps/refs-writing-subcommands (2026-06-30) 5 commits
> Likewise.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jul 2026, #01)
@ 2026-07-01 23:40 15% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-07-01 23:40 UTC (permalink / raw)
  To: git

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 is a candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all. They may be annotated with a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course, it can be resubmitted when new interest
arises).

Git 2.55 (final) has been tagged.  The next release is tentatively
called Git 2.56.  This week is the 0th week of the cycle, which is
time to see if there are any brown paper bag breakages and
regressions we need to fix.  Next week, I plan to start merging the
topics that have been cooking in 'next' down to 'master'.  It has
been customary to rewind 'next' and rebuild it on top of 'master'
soon after a major release, but IIRC, we didn't do so in Git 2.55;
perhaps we can do without rebuilding it this cycle as well.  We'll
see.

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]

* kk/commit-reach-find-all-fix (2026-06-29) 2 commits
 - commit-reach: guard !FIND_ALL early exit with generation ordering check
 - t6600: add test for merge-base early exit with clock skew

 The early-exit optimization in paint_down_to_common() has been gated
 on the queue being generation-ordered. This fixes a bug where git
 merge-base (without --all) could return incorrect results on
 repositories with v1 commit graphs and clock skew.

 Comments?
 cf. <xmqqa4sdw55v.fsf@gitster.g>
 source: <pull.2162.git.1782739162.gitgitgadget@gmail.com>


* bl/t7412-use-test-path-helpers (2026-06-29) 1 commit
 - submodule absorbgitdirs tests: use test_* helper functions

 t7412 that tests "git submodule absorbgitdirs" has been modernized to
 use test_path_is_file, test_path_is_dir, and test_path_is_missing
 helper functions instead of raw "test -[fde]" commands.

 Waiting for response(s) to review comment(s).
 cf. <akTKHfKPsP3-Rn31@pks.im>
 source: <20260630020220.1559190-1-bblima@usp.br>


* jk/format-patch-leakfix (2026-06-29) 2 commits
 - format-patch: fix leak of rev_info in prepare_bases()
 - t: move LSan errors from stdout to stderr

 A memory leak in the '--base' handling of 'git format-patch' has been
 plugged, and the leak-reporting of the test suite when running under a
 TAP harness has been improved.

 Will merge to 'next'?
 cf. <akOZy-BygZS8fqPM@pks.im>
 source: <20260630063944.GA3733670@coredump.intra.peff.net>


* ps/setup-split-discovery-and-setup (2026-06-30) 16 commits
 - setup: mark `set_git_work_tree()` as file-local
 - setup: pass worktree to `init_db()`
 - setup: drop redundant configuration of `startup_info->have_repository`
 - setup: make repository discovery self-contained
 - setup: propagate prefix via repository discovery
 - setup: drop static `cwd` variable
 - setup: move prefix into repository
 - setup: embed repository format in discovery
 - setup: introduce explicit repository discovery
 - setup: split up concerns of `setup_git_env_internal()`
 - setup: unify setup of shallow file
 - setup: mark bogus worktree in `apply_repository_format()`
 - setup: rename `check_repository_format_gently()`
 - Merge branch 'jk/repo-info-path-keys' into ps/setup-split-discovery-and-setup
 - Merge branch 'ps/setup-drop-global-state' into ps/setup-split-discovery-and-setup
 - Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup
 (this branch uses jk/repo-info-path-keys, ps/refs-onbranch-fixes and ps/setup-drop-global-state.)

 The repository discovery and repository configuration phases, which
 were previously intertwined in 'setup.c', have been split. Repository
 discovery now populates a 'struct repo_discovery' without modifying
 the repository state, and repository configuration takes this
 structure to initialize the repository, paving the way for clean
 unification of repository configuration.

 Needs review.
 source: <20260630-pks-setup-split-discovery-and-setup-v1-0-13864eb5a032@pks.im>


* pw/rebase-drop-notes-with-commit (2026-06-30) 15 commits
 - amend! sequencer: simplify pick_one_commit()
 - amend! sequencer: remove unnecessary "or" in pick_one_commit()
 - fixup! sequencer: never reschedule on failed commit
 - fixup! sequencer: be more careful with external merge
 - sequencer: do not record dropped commits as rewritten
 - sequencer: use an enum to represent result of picking a commit
 - sequencer: return early from pick_one_commit() on success
 - sequencer: simplify pick_one_commit()
 - sequencer: remove unnecessary condition in pick_one_commit()
 - sequencer: simplify handing of fixup with conflicts
 - sequencer: remove unnecessary "or" in pick_one_commit()
 - sequencer: never reschedule on failed commit
 - sequencer: be more careful with external merge
 - sequencer: move definition of is_final_fixup()
 - t3400: restore coverage for note copying with apply backend

 The rebase post-rewrite notes-copying logic has been corrected. When a
 commit is dropped during rebase (e.g., because its changes are already
 upstream), we no longer record it as rewritten, preventing its notes
 from being copied to an unrelated commit.

 Expecting a reroll.
 cf. <dce74d17-eefd-40bb-82f3-f6b3179cc2b6@gmail.com>
 source: <cover.1782833268.git.phillip.wood@dunelm.org.uk>


* jk/bloom-leak-fixes (2026-06-30) 3 commits
 - line-log: drop extra copy of range with bloom filters
 - revision: avoid leaking bloom keyvecs with multiple traversals
 - bloom: make bloom-filter slab initialization idempotent

 Plug various memory leaks in the Bloom-filter code paths that are
 exposed when running tests with the
 `GIT_TEST_COMMIT_GRAPH_CHANGED_PATHS=1` environment variable.

 Will merge to 'next'?
 cf. <xmqqo6gqobrt.fsf@gitster.g>
 source: <20260701063538.GA2579765@coredump.intra.peff.net>


* js/ci-dockerized-pid-limit (2026-07-01) 1 commit
 - ci(dockerized): reduce the PID limit for private repositories

 Dockerized CI jobs running in private GitHub repositories have been
 adjusted to use explicit process and file limits, preventing resource
 exhaustion errors on private runners.

 Waiting for response(s) to review comment(s).
 cf. <xmqq5x2yps4c.fsf@gitster.g>
 source: <pull.2164.git.1782889484346.gitgitgadget@gmail.com>


* js/coverity-fixes (2026-07-01) 13 commits
 - mingw: make exit_process() own the process handle on all paths
 - fsmonitor: plug token-data leak on early daemon-startup failures
 - reftable/table: release filter on error path
 - imap-send: avoid leaking the IMAP upload buffer
 - worktree: fix resource leaks when branch creation fails
 - submodule: fix cwd leak in get_superproject_working_tree()
 - dir: free allocations on parse-error paths in read_one_dir()
 - line-log: avoid redundant copy that leaks in process_ranges
 - run_diff_files: avoid memory leak
 - run-command: avoid close(-1) in start_command() error paths
 - download_https_uri_to_file(): do not leak fd upon failure
 - loose: avoid closing invalid fd on error path
 - load_one_loose_object_map(): fix resource leak

 A collection of fixes for various resource leaks, invalid file
 descriptor closures, and process handle ownership issues flagged by
 Coverity.

 Waiting for response(s) to review comment(s).
 cf. <akTIMM6qLfDNdg-a@pks.im>
 source: <pull.2163.git.1782889472.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll for too long, stalled.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq33yzd9yf.fsf@gitster.g>
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>

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

* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 Teach `git repack` to accept `--geometric` and `--cruft`
 together. When both are given, the geometric repack rolls up non-cruft
 packs as usual, while a separate cruft pack is written to collect
 unreachable objects.

 Expecting a reroll.
 cf. <akTIMM6qLfDNdg-a@pks.im>
 source: <cover.1782500507.git.me@ttaylorr.com>


* jk/reftable-leakfix (2026-06-28) 1 commit
 - reftable: fix unlikely leak on API error

 Leakfix.

 Will merge to 'next'.
 cf. <akIPBJLtPqDjQt-A@pks.im>
 source: <20260628090314.GA661068@coredump.intra.peff.net>


* sg/t3420-do-not-grep-in-missing-file (2021-10-10) 1 commit
  (merged to 'next' on 2026-06-29 at 2bf33c6a40)
 + t3420-rebase-autostash: don't try to grep non-existing files

 Test fix.

 Will merge to 'master'.
 source: <20211010172809.1472914-1-szeder.dev@gmail.com>


* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
 - gpg-interface: fix strip_cr_before_lf to only remove CR before LF

 The GPG and SSH signature parsing code has been corrected to strip
 carriage return characters only when they immediately precede line
 feeds, instead of unconditionally stripping all carriage returns.

 Will merge to 'next'.
 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>


* jt/receive-pack-use-odb-transactions (2026-06-23) 6 commits
 - builtin/receive-pack: stage incoming objects via ODB transactions
 - odb/transaction: add transaction env interface
 - odb/transaction: propagate commit errors
 - odb/transaction: propagate begin errors
 - object-file: propagate files transaction errors
 - object-file: rename files transaction prepare function

 git-receive-pack has been refactored to use ODB transaction
 interfaces instead of directly managing tmp_objdir for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Expecting a reroll.
 cf. <aju_AmlKVi5UZaiQ@pks.im>
 cf. <akK05yZ6843K8Vdd@denethor>
 cf. <akLLB_J-pvJ7iR7c@denethor>
 source: <20260624041920.2601961-1-jltobler@gmail.com>


* ps/odb-drop-whence (2026-06-24) 7 commits
 - odb: document object info fields
 - odb: drop `whence` field from object info
 - treewide: convert users of `whence` to the new source field
 - odb: add `source` field to struct object_info_source
 - odb: make backend-specific fields optional
 - packfile: thread odb_source_packed through packed_object_info()
 - Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
 (this branch uses ps/odb-source-packed.)

 The whence field in struct object_info has been removed,
 refactoring backend-specific object information retrieval into an
 opt-in struct object_info_source structure.

 Will merge to 'next'?
 cf. <akOod6X1a2axIXKZ@pks.im>
 cf. <xmqqv7b0rmt6.fsf@gitster.g>
 source: <20260624-b4-pks-odb-drop-whence-v1-0-8d1877b790ac@pks.im>


* ps/reftable-hardening (2026-06-29) 12 commits
 - reftable/table: fix OOB read on truncated table
 - reftable/table: fix NULL pointer access when seeking to bogus offsets
 - reftable/block: fix OOB read with bogus restart offset
 - reftable/block: fix use of uninitialized memory when binsearch fails
 - reftable/block: fix OOB read with bogus restart count
 - reftable/block: fix OOB read with bogus block size
 - reftable/block: fix OOB write with bogus inflated log size
 - t/unit-tests: introduce test helper to write reftable blocks
 - reftable/record: don't abort when decoding invalid ref value type
 - reftable/basics: fix OOB read on binary search of empty range
 - oss-fuzz: add fuzzer for parsing reftables
 - meson: support building fuzzers with libFuzzer

 The reftable code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Needs review.
 source: <20260629-pks-reftable-hardening-v2-0-b0228e7d908d@pks.im>


* hn/branch-push-slip-advice (2026-06-27) 2 commits
 - push: suggest <remote> <branch> for a slash slip
 - branch: suggest <remote>/<branch> on upstream slip

 "git push origin/main" and "git branch origin main" could both be
 an obvious typo, in which case offer the obvious typofix.

 Will merge to 'next'.
 cf. <xmqqfr272lq7.fsf@gitster.g>
 source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>


* jc/history-message-prep-fix (2026-06-29) 1 commit
 - history: streamline message preparation and plug file stream leak

 Code clean-up with leakfix for a write file stream.

 Will merge to 'next'?
 cf. <akO1mhi2u2PntLbt@pks.im>
 source: <xmqqmrwdxrat.fsf@gitster.g>


* ty/migrate-excludes-file (2026-06-30) 1 commit
 - environment: move excludes_file into repo_config_values

 Move excludes_file global variable into per-repository structure.

 Needs review.
 source: <20260630164401.2906091-2-cat@malon.dev>


* kk/merge-base-exhaustion (2026-07-01) 10 commits
 . commit-reach: remove commit-date ordering fallback
 . commit-reach: move min_generation check into paint_queue_get()
 . commit-reach: terminate merge-base walk when one paint side is exhausted
 . commit-reach: introduce struct paint_state with per-side counters
 . t6600: add clock-skew topologies and step counts for edge cases
 . commit-reach: add trace2 instrumentation to paint_down_to_common()
 . t6099, t6600: add side-exhaustion regression tests
 . t6600: add test cases for side-exhaustion edge cases
 . test-lib-functions: improve diagnostic output for trace2 data assertions
 . Documentation/technical: add paint-down-to-common doc

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Needs review.
 passes t6600 standalone, breaks when merged to 'seen'.
 source: <pull.2149.v5.git.1782923832.gitgitgadget@gmail.com>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The USE_NSEC build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Waiting for response(s) to review comment(s).
 cf. <ajjuoS5Qc3K0nCRl@pks.im>
 cf. <akIL6oJgUv8J8SB2@pks.im>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/connected-generic-promisor-checks (2026-06-25) 5 commits
  (merged to 'next' on 2026-06-29 at 10eef65b98)
 + connected: search promisor objects generically
 + connected: split out promisor-based connectivity check
 + odb/source-packed: support flags when iterating an object prefix
 + odb/source-packed: extract logic to skip certain packs
 + Merge branch 'ps/odb-source-packed' into ps/connected-generic-promisor-checks
 (this branch uses ps/odb-source-packed.)

 The connectivity check has been refactored to search for promisor
 objects in a generic way using the object database interface,
 rather than iterating packfiles directly. This allows connectivity
 checks to work properly in repositories that do not use packfiles.

 Will merge to 'master'.
 cf. <CAP8UFD07AzNtP3rRj4btYfFfakX0kkLXKpO9T=a3Mds3YWEsXw@mail.gmail.com>
 source: <20260625-pks-connected-generic-promisor-checks-v3-0-7308f3b9dc44@pks.im>


* ps/libgit-in-subdir (2026-06-30) 3 commits
 - Move libgit.a sources into separate "lib/" directory
 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir
 (this branch uses ps/odb-source-packed.)

 The source files for libgit.a have been moved into a new "lib/"
 directory to clean up the top-level directory and clearly separate
 library code.

 Waiting for response(s) to review comment(s).
 cf. <cbbb08fc-fd4d-45ef-927b-05ac44602ff1@gmail.com>
 source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
 - odb: introduce `odb_prepare()`
 - odb/source: generalize `reprepare()` callback
 - Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
 (this branch uses ps/odb-source-packed.)

 The `reprepare()` callback for object database sources has been
 generalized into a `prepare()` callback with an optional flush cache
 flag, and a new `odb_prepare()` wrapper has been introduced to
 allow pre-opening object database sources.

 Will merge to 'next'?
 cf. <87ik704f1j.fsf@emacs.iotcl.com>
 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>


* jc/submittingpatches-design-critiques (2026-06-20) 1 commit
  (merged to 'next' on 2026-06-22 at 7495b5f9d6)
 + SubmittingPatches: address design critiques

 The documentation in SubmittingPatches has been updated to clarify how
 patch contributors should respond to design and viability critiques,
 and how the resolution of such critiques should be recorded in the
 final commit messages.

 Will merge to 'master'.
 cf. <ajjwYGWZ6hQWr600@pks.im>
 source: <xmqqeci0g4mz.fsf@gitster.g>


* wy/doc-clarify-review-replies (2026-06-21) 2 commits
  (merged to 'next' on 2026-06-29 at 21ae0599dc)
 + doc: advise batching patch rerolls
 + doc: encourage review replies before rerolling

 Documentation on community contribution guidelines has been updated to
 encourage replying to review comments before rerolling, and to advise
 a default limit of at most one reroll per day to give reviewers across
 different time zones enough time to participate.

 Will merge to 'master'.
 cf. <ajvDuUiDsmyf5LnX@pks.im>
 source: <cover.1782028813.git.wy@wyuan.org>


* ty/migrate-ignorecase (2026-06-19) 2 commits
 - config: use repo_ignore_case() to access core.ignorecase
 - environment: move ignore_case into repo_config_values

 The global configuration variable ignore_case (representing the
 core.ignorecase configuration) has been migrated into struct
 repo_config_values to tie it to a specific repository instance.

 Waiting for comments from Johannes.
 cf. <xmqqzf0mzc7j.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 "git log -L<range>:<path>" learned to limit various "diff" operations
 like --stat, --check, -G, to the specified range:path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-06-28) 4 commits
 - history: re-edit a squash with every message
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental "git history" command has been taught a new
 "squash" subcommand to fold a range of commits into a single commit,
 replaying any descendants on top.

 Waiting for response(s) to review comment(s).
 cf. <xmqqse65zyhw.fsf@gitster.g>
 cf. <akIQLM6xZTHBudWT@pks.im>
 cf. <3b3af3ef-a043-4af9-964e-429237789c97@gmail.com>
 source: <pull.2337.v6.git.git.1782635349.gitgitgadget@gmail.com>


* mh/fetch-follow-remote-head-config (2026-06-19) 8 commits
  (merged to 'next' on 2026-06-22 at 423079e1c8)
 + fetch: fixup a misaligned comment
 + fetch: add configuration variable fetch.followRemoteHEAD
 + fetch: refactor do_fetch handling of followRemoteHEAD
 + fetch: return 0 on known git_fetch_config
 + fetch: rename function report_set_head
 + t5510: cleanup remote in followRemoteHEAD dangling ref test
 + doc: explain fetchRemoteHEADWarn advice
 + fetch: fixup set_head advice for warn-if-not-branch

 The `fetch.followRemoteHEAD` configuration variable has been added to
 provide a default for the per-remote `remote.<name>.followRemoteHEAD`
 setting.

 Will merge to 'master'.
 cf. <xmqqcxxp1j2t.fsf@gitster.g>
 source: <20260619094751.2996804-1-m@lfurio.us>


* ps/refs-writing-subcommands (2026-06-30) 5 commits
 - builtin/refs: add "rename" subcommand
 - builtin/refs: add "create" subcommand
 - builtin/refs: add "update" subcommand
 - builtin/refs: add "delete" subcommand
 - builtin/refs: drop `the_repository`

 The "git refs" toolbox has been extended with new "create", "delete",
 "update", and "rename" subcommands to create, delete, update, and
 rename references, respectively.

 Will merge to 'next'?
 cf. <xmqqcxx7susi.fsf@gitster.g>
 source: <20260630-pks-refs-writing-subcommands-v3-0-deb04de1ecef@pks.im>


* po/hash-object-size-t (2026-06-16) 6 commits
  (merged to 'next' on 2026-06-21 at b780a276b9)
 + hash-object: add a >4GB/LLP64 test case using filtered input
 + hash-object: add another >4GB/LLP64 test case
 + hash-object --stdin: verify that it works with >4GB/LLP64
 + hash algorithms: use size_t for section lengths
 + object-file.c: use size_t for header lengths
 + hash-object: demonstrate a >4GB/LLP64 problem

 Support for hashing loose or packed objects larger than 4GB on Windows
 and other LLP64 platforms has been improved by converting object header
 buffers and data-handling functions from 'unsigned long' to 'size_t'.

 Will merge to 'master'.
 cf. <ajOQthRjhD3hRM9w@pks.im>
 source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>


* kh/submittingpatches-trailers (2026-06-18) 5 commits
  (merged to 'next' on 2026-06-22 at 2cd4a152c9)
 + SubmittingPatches: note that trailer order matters
 + SubmittingPatches: be consistent with trailer markup
 + SubmittingPatches: document Based-on-patch-by trailer
 + SubmittingPatches: discourage common Linux trailers
 + SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Will merge to 'master'.
 cf. <xmqq4ij0vo8f.fsf@gitster.g>
 source: <V3_CV_SubPatches_trailers.9ec@msgid.xyz>


* mv/log-follow-mergy (2026-06-21) 1 commit
  (merged to 'next' on 2026-06-22 at f7e984a003)
 + log: improve --follow following renames for non-linear history

 "git log --follow" has been updated to handle non-linear history, in
 which the path being tracked gets renamed differently in multiple
 history lines, better.

 Will merge to 'master'.
 source: <ajjU4w2B0NlZffw1@collabora.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The `git multi-pack-index write --incremental` command has been
 corrected to properly honor the `--base` option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-06-12) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 Waiting for response(s) to review comment(s).
 cf. <aj93BE8MYatQAjoy@szeder.dev>
 cf. <xmqqqzlpt543.fsf@gitster.g>
 source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
  (merged to 'next' on 2026-06-17 at 43ed8b3969)
 + cat-file: speed up default format

 Will merge to 'master'.
 cf. <20260615165326.GA91269@coredump.intra.peff.net>
 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 Will merge to 'next'?
 cf. <xmqqh5mjrbgq.fsf@gitster.g>
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Comments?
 cf. <xmqqqzlpulkp.fsf@gitster.g>
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-06-25) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: better explain how pick_regular_commit() picks a base
 - replay: add helper to put entry into mapped_commits

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Waiting for response(s) to review comment(s).
 cf. <xmqq5x358byf.fsf@gitster.g>
 cf. <b5d70a0b-ef32-49c9-84ba-8a64b7809574@gmail.com>
 cf. <f8b520d1-edeb-9e45-c503-025c8b5833c3@gmx.de>
 cf. <akOpOXeD_gS5U7rH@pks.im>
 source: <20260626-toon-git-replay-drop-merges-v5-0-5e120738b9d0@iotcl.com>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state
 (this branch is used by ps/setup-split-discovery-and-setup.)

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Will merge to 'master'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-onbranch-fixes (2026-06-25) 12 commits
  (merged to 'next' on 2026-06-29 at 7b4929e311)
 + refs: protect against chicken-and-egg recursion
 + refs/reftable: lazy-load configuration to fix chicken-and-egg
 + reftable: split up write options
 + refs/files: lazy-load configuration to fix chicken-and-egg
 + refs: move parsing of "core.logAllRefUpdates" back into ref stores
 + repository: free main reference database
 + chdir-notify: drop unused `chdir_notify_reparent()`
 + refs: unregister reference stores from "chdir_notify"
 + setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 + setup: stop applying repository format twice
 + setup: inline `check_and_apply_repository_format()`
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-onbranch-fixes
 (this branch is used by ps/setup-split-discovery-and-setup.)

 Reference backend configuration is now loaded lazily to avoid
 recursive calls during repository initialization when "onbranch"
 configuration conditions are evaluated. This also fixes a memory
 leak and allows dropping the unused `chdir_notify_reparent()`
 machinery.

 Will merge to 'master'.
 cf. <xmqqse6ae45i.fsf@gitster.g>
 source: <20260625-b4-pks-refs-avoid-chdir-notify-reparent-v6-0-41fbca3cf5e3@pks.im>


* ps/odb-source-packed (2026-06-16) 18 commits
  (merged to 'next' on 2026-06-19 at dcf0c084e4)
 + odb/source-packed: drop pointer to "files" parent source
 + midx: refactor interfaces to work on "packed" source
 + odb/source-packed: stub out remaining functions
 + odb/source-packed: wire up `freshen_object()` callback
 + odb/source-packed: wire up `find_abbrev_len()` callback
 + odb/source-packed: wire up `count_objects()` callback
 + odb/source-packed: wire up `for_each_object()` callback
 + odb/source-packed: wire up `read_object_stream()` callback
 + odb/source-packed: wire up `read_object_info()` callback
 + packfile: use higher-level interface to implement `has_object_pack()`
 + odb/source-packed: wire up `reprepare()` callback
 + odb/source-packed: wire up `close()` callback
 + odb/source-packed: start converting to a proper `struct odb_source`
 + odb/source-packed: store pointer to "files" instead of generic source
 + packfile: move packed source into "odb/" subsystem
 + packfile: split out packfile list logic
 + packfile: rename `struct packfile_store` to `odb_source_packed`
 + Merge branch 'ps/odb-source-loose' into ps/odb-source-packed
 (this branch is used by ps/connected-generic-promisor-checks, ps/libgit-in-subdir, ps/odb-drop-whence and ps/odb-generalize-prepare.)

 The packed object source has been refactored into a proper struct
 odb_source.

 Will merge to 'master'.
 cf. <ajK2QKdW-TdflfR0@denethor>
 source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
  (merged to 'next' on 2026-06-19 at a19dbb4193)
 + ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Will merge to 'master'.
 cf. <xmqqik7fsv2m.fsf@gitster.g>
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-20) 2 commits
  (merged to 'next' on 2026-06-20 at d8ca0d5180)
 + environment: use 'repo->initialized' for repo_protect_hfs() and repo_protect_ntfs()
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will merge to 'master'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>
 source: <20260620140957.667820-1-cat@malon.dev>


* ps/cat-file-remote-object-info (2026-07-01) 13 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with an allow-list
 - 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
 - connect: make `write_fetch_command_and_capabilities()` more generic
 - fetch-pack: move `write_fetch_command_and_capabilities()` to connect.c
 - fetch-pack: drop static `advertise_sid` variable
 - t1006: split test utility functions into new 'lib-cat-file.sh'
 - cat-file: declare loop counter inside for()
 - git-compat-util: add `strtoumax_szt()` with error handling
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Waiting for response(s) to review comment(s).
 cf. <xmqq7bneo9mh.fsf@gitster.g>
 source: <20260701-ps-eric-work-rebase-v15-0-c88a43b63917@gmail.com>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
  (merged to 'next' on 2026-06-17 at dd9a463369)
 + b4: introduce configuration for the Git project
 + MyFirstContribution: recommend the use of b4
 + MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Will merge to 'master'.
 cf. <87eci7yomp.fsf@emacs.iotcl.com>
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-21) 5 commits
  (merged to 'next' on 2026-06-22 at 59cf1663e7)
 + pack-objects: support `--delta-islands` with `--path-walk`
 + pack-objects: extract `record_tree_depth()` helper
 + pack-objects: support reachability bitmaps with `--path-walk`
 + t/perf: drop p5311's lookup-table permutation
 + Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Will merge to 'master'.
 cf. <xmqqwlvq1qyy.fsf@gitster.g>
 source: <cover.1782082975.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Comments?
 cf. <xmqqcxx9ukvw.fsf@gitster.g>
 source: <20260619162105.648495-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 On hold, waiting for kk/prio-queue-get-put-fusion to land first.
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-23) 3 commits
  (merged to 'next' on 2026-06-29 at fbf9652169)
 + repo: add path.gitdir with absolute and relative suffix formatting
 + repo: add path.commondir with absolute and relative suffix formatting
 + path: extract format_path() and use in rev-parse
 (this branch is used by ps/setup-split-discovery-and-setup.)

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Will merge to 'master'.
 cf. <xmqqy0g3iz38.fsf@gitster.g>
 source: <20260624033748.108281-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-07-01) 11 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - replay: expose `replay_result_queue_update()`
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Needs review.
 source: <20260701-b4-pks-history-drop-v8-0-19b5cdf1facd@pks.im>


* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
  (merged to 'next' on 2026-06-18 at b63b3d1f25)
 + read_gitfile(): simplify NOT_A_REPO error message

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Will merge to 'master'.
 cf. <xmqqjyry4hax.fsf@gitster.g>
 source: <20260616123516.GA2301231@coredump.intra.peff.net>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqqik71t3nr.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will merge to 'master'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* hn/branch-delete-merged (2026-06-24) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 "git branch" command learned "--delete-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Needs review.
 source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will merge to 'master'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Waiting for response(s) to review comment(s).
 cf. <12998c3a-ff69-4a98-9ed6-18aa0224e75e@gmail.com>
 cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
  (merged to 'next' on 2026-06-18 at e51bee59ca)
 + cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 + merge-ort: abort merge when trees have duplicate entries
 + merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 + merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 + merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Will merge to 'master'.
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-06-23) 2 commits
  (merged to 'next' on 2026-06-23 at a0fcde09dc)
 + status: improve rebase todo list parsing
 + sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Will merge to 'master'.
 source: <cover.1782230024.git.phillip.wood@dunelm.org.uk>


* ps/shift-root-in-graph (2026-06-20) 3 commits
 - graph: indent visual root in graph
 - revision: add peek functions for lookahead
 - lib-log-graph: move check_graph function

 "git log --graph" has been modified to visually distinguish
 parentless "root" commits (and commits that become roots due to
 history simplification) by indenting them, preventing them from
 appearing falsely related to unrelated commits rendered immediately
 above them.

 Expecting a reroll.
 The peek-ahead approach may need to be scratched.
 cf. <CAN5EUNSj-2hkEBF7N_M6RLsuujDNFNUF3w53zR7SN1_5i2BRyg@mail.gmail.com>
 cf. <CAL71e4OQ_kGb+UwHgikHG236-8BVtc7P9OdpV4i4UzYRCoPczw@mail.gmail.com>
 cf. <CAN5EUNTQV68_eofa7BGb0BukMe=U2d4-FEVmJwW4dObQ2r6LuA@mail.gmail.com>
 source: <20260620-ps-pre-commit-indent-v6-0-cdc6d8fd5fbc@gmail.com>


^ permalink raw reply	[relevance 15%]

* Re: What's cooking in git.git (Jun 2026, #10)
  @ 2026-06-30 19:27 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-30 19:27 UTC (permalink / raw)
  To: Toon Claes; +Cc: git

Toon Claes <toon@iotcl.com> writes:

> Junio C Hamano <gitster@pobox.com> writes:
>
>> * ps/odb-generalize-prepare (2026-06-22) 3 commits
>>  - odb: introduce `odb_prepare()`
>>  - odb/source: generalize `reprepare()` callback
>>  - Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
>>  (this branch uses ps/odb-source-packed.)
>>
>>  The `reprepare()` callback for object database sources has been
>>  generalized into a `prepare()` callback with an optional flush cache
>>  flag, and a new `odb_prepare()` wrapper has been introduced to
>>  allow pre-opening object database sources.
>>
>>  Needs review.
>>  source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>
>
> I did have some questions/remarks, but Patrick answered them, and with
> those answers I'm happy about this series.

Yeah, I am also happy with these patches.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jun 2026, #11)
@ 2026-06-29 17:50 17% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-29 17:50 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.55 (final) has been tagged, with a few last-minute fixes.

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]

* tb/repack-geometric-cruft (2026-06-28) 11 commits
 - SQUASH??? bare grep !???
 - repack: support combining '--geometric' with '--cruft'
 - pack-objects: support '--refs-snapshot' with 'follow-reachable'
 - pack-objects: introduce '--stdin-packs=follow-reachable'
 - pack-objects: extract `stdin_packs_add_all_pack_entries()`
 - repack-geometry: drop unused redundant-pack removal
 - repack: delete geometric packs via existing_packs
 - repack: teach MIDX retention about geometric rollups
 - repack: mark geometric progression of packs as retained
 - repack: extract `locate_existing_pack()` helper
 - repack: unconditionally exclude non-kept packs

 Teach `git repack` to accept `--geometric` and `--cruft`
 together. When both are given, the geometric repack rolls up non-cruft
 packs as usual, while a separate cruft pack is written to collect
 unreachable objects.

 Needs review.
 cf. <xmqqpl1d56dd.fsf@gitster.g>
 source: <cover.1782500507.git.me@ttaylorr.com>


* jk/reftable-leakfix (2026-06-28) 1 commit
 - reftable: fix unlikely leak on API error

 Leakfix.

 Will merge to 'next'?
 cf. <akIPBJLtPqDjQt-A@pks.im>
 source: <20260628090314.GA661068@coredump.intra.peff.net>


* sg/t3420-do-not-grep-in-missing-file (2021-10-10) 1 commit
  (merged to 'next' on 2026-06-29 at 2bf33c6a40)
 + t3420-rebase-autostash: don't try to grep non-existing files

 Test fix.

 Will merge to 'master'.
 source: <20211010172809.1472914-1-szeder.dev@gmail.com>

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

* jk/t5551-expensive-test-timeouts-fix (2026-06-28) 2 commits
 - t5551: put many-tags case into its own repo
 - t/lib-httpd: bump apache timeout

 The Apache timeout in HTTP tests has been increased to prevent test
 failures on heavily loaded CI runners. The tests creating an
 enormous number of refs have been isolated to their own
 repositories to avoid slowing down subsequent tests.
  cf. <akIPBJLtPqDjQt-A@pks.im>
 source: <20260628075716.GA3525066@coredump.intra.peff.net>


* js/http-https-proxy-fix (2026-06-27) 1 commit
  (merged to 'next' on 2026-06-28 at a7fdf2ec97)
 + http: accept https:// proxies again

 We lost ability to use https:// proxies during this cycle; this is
 a hotfix for the regression.
 
 source: <pull.2161.git.1782580676734.gitgitgadget@gmail.com>


* ps/t4216-tap-fix (2026-06-19) 1 commit
  (merged to 'next' on 2026-06-25 at 42296fc12e)
 + t4216: fix no-op test that breaks TAP output

 TAP output breakage fix.
 cf. <xmqq8q82fk8r.fsf@gitster.g>
 source: <20260619-pks-t4216-drop-unused-prereq-v1-1-2ce0d7bea088@pks.im>

--------------------------------------------------
[Stalled]

* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq33yzd9yf.fsf@gitster.g>
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>

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

* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
 - gpg-interface: fix strip_cr_before_lf to only remove CR before LF

 The GPG and SSH signature parsing code has been corrected to strip
 carriage return characters only when they immediately precede line
 feeds, instead of unconditionally stripping all carriage returns.

 Needs review.
 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>


* jt/receive-pack-use-odb-transactions (2026-06-23) 6 commits
 - builtin/receive-pack: stage incoming objects via ODB transactions
 - odb/transaction: add transaction env interface
 - odb/transaction: propagate commit errors
 - odb/transaction: propagate begin errors
 - object-file: propagate files transaction errors
 - object-file: rename files transaction prepare function

 git-receive-pack has been refactored to use ODB transaction
 interfaces instead of directly managing tmp_objdir for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Waiting for response(s) to review comment(s).
 cf. <aju_AmlKVi5UZaiQ@pks.im>
 source: <20260624041920.2601961-1-jltobler@gmail.com>


* ps/odb-drop-whence (2026-06-24) 7 commits
 - odb: document object info fields
 - odb: drop `whence` field from object info
 - treewide: convert users of `whence` to the new source field
 - odb: add `source` field to struct object_info_source
 - odb: make backend-specific fields optional
 - packfile: thread odb_source_packed through packed_object_info()
 - Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
 (this branch uses ps/odb-source-packed.)

 The whence field in struct object_info has been removed,
 refactoring backend-specific object information retrieval into an
 opt-in struct object_info_source structure.

 Needs review.
 source: <20260624-b4-pks-odb-drop-whence-v1-0-8d1877b790ac@pks.im>


* ps/reftable-hardening (2026-06-29) 12 commits
 - reftable/table: fix OOB read on truncated table
 - reftable/table: fix NULL pointer access when seeking to bogus offsets
 - reftable/block: fix OOB read with bogus restart offset
 - reftable/block: fix use of uninitialized memory when binsearch fails
 - reftable/block: fix OOB read with bogus restart count
 - reftable/block: fix OOB read with bogus block size
 - reftable/block: fix OOB write with bogus inflated log size
 - t/unit-tests: introduce test helper to write reftable blocks
 - reftable/record: don't abort when decoding invalid ref value type
 - reftable/basics: fix OOB read on binary search of empty range
 - oss-fuzz: add fuzzer for parsing reftables
 - meson: support building fuzzers with libFuzzer

 The reftable code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Needs review.
 source: <20260629-pks-reftable-hardening-v2-0-b0228e7d908d@pks.im>


* hn/branch-push-slip-advice (2026-06-27) 2 commits
 - push: suggest <remote> <branch> for a slash slip
 - branch: suggest <remote>/<branch> on upstream slip

 "git push origin/main" and "git branch origin main" could both be
 an obvious typo, in which case offer the obvious typofix.

 Will merge to 'next'?
 cf. <xmqqfr272lq7.fsf@gitster.g>
 source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>


* jc/history-message-prep-fix (2026-06-29) 1 commit
 - history: streamline message preparation and plug file stream leak

 Code clean-up with leakfix for a write file stream.

 Needs review.
 source: <xmqqmrwdxrat.fsf@gitster.g>


* ty/migrate-excludes-file (2026-06-27) 1 commit
 - environment: move excludes_file into repo_config_values

 Move excludes_file global variable into per-repository structure.

 Waiting for response(s) to review comment(s).
 cf. <xmqqbjcv2h3j.fsf@gitster.g>
 cf. <CAP8UFD3Z0M_1NEXGcAxNZKpRUQiSkHZLTEvNNYushKA_PoPgjA@mail.gmail.com>
 source: <20260627160813.1074201-2-cat@malon.dev>


* kk/merge-base-exhaustion (2026-06-28) 8 commits
 - commit-reach: move min_generation check into paint_queue_get()
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: remove unused nonstale_queue dedup wrappers
 - commit-reach: introduce struct paint_state with per-side counters
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - Documentation/technical: add paint-down-to-common doc

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Expecting a reroll.
 cf. <48bfdb11-2624-4aa6-8fbd-d3f894c33bcc@gmail.com>
 cf. <CAL71e4N92t8170UBW3rMA6B-rEUeOm-R_HSioB957mUKOpwRyQ@mail.gmail.com>
 source: <pull.2149.v4.git.1782649547.gitgitgadget@gmail.com>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The USE_NSEC build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Waiting for response(s) to review comment(s).
 cf. <ajjuoS5Qc3K0nCRl@pks.im>
 cf. <akIL6oJgUv8J8SB2@pks.im>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/connected-generic-promisor-checks (2026-06-25) 5 commits
  (merged to 'next' on 2026-06-29 at 10eef65b98)
 + connected: search promisor objects generically
 + connected: split out promisor-based connectivity check
 + odb/source-packed: support flags when iterating an object prefix
 + odb/source-packed: extract logic to skip certain packs
 + Merge branch 'ps/odb-source-packed' into ps/connected-generic-promisor-checks
 (this branch uses ps/odb-source-packed.)

 The connectivity check has been refactored to search for promisor
 objects in a generic way using the object database interface,
 rather than iterating packfiles directly. This allows connectivity
 checks to work properly in repositories that do not use packfiles.

 Will merge to 'master'.
 cf. <CAP8UFD07AzNtP3rRj4btYfFfakX0kkLXKpO9T=a3Mds3YWEsXw@mail.gmail.com>
 source: <20260625-pks-connected-generic-promisor-checks-v3-0-7308f3b9dc44@pks.im>


* ps/libgit-in-subdir (2026-06-26) 4 commits
 - fixup??? Move libgit.a sources into separate "lib/" directory
 - Move libgit.a sources into separate "lib/" directory
 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir
 (this branch uses ps/odb-source-packed.)

 The source files for libgit.a have been moved into a new "lib/"
 directory to clean up the top-level directory and clearly separate
 library code.

 Waiting for response(s) to review comment(s).
 cf. <32bb1cf6-1e37-dc0c-dfb2-e78a30763342@gmx.de>
 cf. <xmqqwlvl6sr5.fsf@gitster.g>
 cf. <aj9wcFEb6oCRnfn2@szeder.dev>
 source: <20260622-pks-libgit-in-subdir-v2-0-cb946c51ee7b@pks.im>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
 - odb: introduce `odb_prepare()`
 - odb/source: generalize `reprepare()` callback
 - Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
 (this branch uses ps/odb-source-packed.)

 The `reprepare()` callback for object database sources has been
 generalized into a `prepare()` callback with an optional flush cache
 flag, and a new `odb_prepare()` wrapper has been introduced to
 allow pre-opening object database sources.

 Waiting for response(s) to review comment(s).
 cf. <87ldc14i4n.fsf@emacs.iotcl.com>
 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>


* jc/submittingpatches-design-critiques (2026-06-20) 1 commit
  (merged to 'next' on 2026-06-22 at 7495b5f9d6)
 + SubmittingPatches: address design critiques

 The documentation in SubmittingPatches has been updated to clarify how
 patch contributors should respond to design and viability critiques,
 and how the resolution of such critiques should be recorded in the
 final commit messages.

 Will cook in 'next'.
 cf. <ajjwYGWZ6hQWr600@pks.im>
 source: <xmqqeci0g4mz.fsf@gitster.g>


* wy/doc-clarify-review-replies (2026-06-21) 2 commits
  (merged to 'next' on 2026-06-29 at 21ae0599dc)
 + doc: advise batching patch rerolls
 + doc: encourage review replies before rerolling

 Documentation on community contribution guidelines has been updated to
 encourage replying to review comments before rerolling, and to advise
 a default limit of at most one reroll per day to give reviewers across
 different time zones enough time to participate.

 Will merge to 'master'.
 cf. <ajvDuUiDsmyf5LnX@pks.im>
 source: <cover.1782028813.git.wy@wyuan.org>


* ty/migrate-ignorecase (2026-06-19) 2 commits
 - config: use repo_ignore_case() to access core.ignorecase
 - environment: move ignore_case into repo_config_values

 The global configuration variable ignore_case (representing the
 core.ignorecase configuration) has been migrated into struct
 repo_config_values to tie it to a specific repository instance.

 Waiting for comments from Johannes.
 cf. <xmqqzf0mzc7j.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-27) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 "git log -L<range>:<path>" learned to limit various "diff" operations
 like --stat, --check, -G, to the specified range:path.

 Needs review.
 source: <pull.2152.v2.git.1782581342.gitgitgadget@gmail.com>


* hn/history-squash (2026-06-28) 4 commits
 - history: re-edit a squash with every message
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental "git history" command has been taught a new
 "squash" subcommand to fold a range of commits into a single commit,
 replaying any descendants on top.

 Waiting for response(s) to review comment(s).
 cf. <xmqqse65zyhw.fsf@gitster.g>
 cf. <akIQLM6xZTHBudWT@pks.im>
 source: <pull.2337.v6.git.git.1782635349.gitgitgadget@gmail.com>


* mh/fetch-follow-remote-head-config (2026-06-19) 8 commits
  (merged to 'next' on 2026-06-22 at 423079e1c8)
 + fetch: fixup a misaligned comment
 + fetch: add configuration variable fetch.followRemoteHEAD
 + fetch: refactor do_fetch handling of followRemoteHEAD
 + fetch: return 0 on known git_fetch_config
 + fetch: rename function report_set_head
 + t5510: cleanup remote in followRemoteHEAD dangling ref test
 + doc: explain fetchRemoteHEADWarn advice
 + fetch: fixup set_head advice for warn-if-not-branch

 The `fetch.followRemoteHEAD` configuration variable has been added to
 provide a default for the per-remote `remote.<name>.followRemoteHEAD`
 setting.

 Will cook in 'next'.
 cf. <xmqqcxxp1j2t.fsf@gitster.g>
 source: <20260619094751.2996804-1-m@lfurio.us>


* ps/refs-writing-subcommands (2026-06-17) 5 commits
 - builtin/refs: add "rename" subcommand
 - builtin/refs: add "create" subcommand
 - builtin/refs: add "update" subcommand
 - builtin/refs: add "delete" subcommand
 - builtin/refs: drop `the_repository`

 The "git refs" toolbox has been extended with new "create", "delete",
 "update", and "rename" subcommands to create, delete, update, and
 rename references, respectively.

 Needs review.
 source: <20260617-pks-refs-writing-subcommands-v2-0-07f3d18336f9@pks.im>


* po/hash-object-size-t (2026-06-16) 6 commits
  (merged to 'next' on 2026-06-21 at b780a276b9)
 + hash-object: add a >4GB/LLP64 test case using filtered input
 + hash-object: add another >4GB/LLP64 test case
 + hash-object --stdin: verify that it works with >4GB/LLP64
 + hash algorithms: use size_t for section lengths
 + object-file.c: use size_t for header lengths
 + hash-object: demonstrate a >4GB/LLP64 problem

 Support for hashing loose or packed objects larger than 4GB on Windows
 and other LLP64 platforms has been improved by converting object header
 buffers and data-handling functions from 'unsigned long' to 'size_t'.

 Will cook in 'next'.
 cf. <ajOQthRjhD3hRM9w@pks.im>
 source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>


* kh/submittingpatches-trailers (2026-06-18) 5 commits
  (merged to 'next' on 2026-06-22 at 2cd4a152c9)
 + SubmittingPatches: note that trailer order matters
 + SubmittingPatches: be consistent with trailer markup
 + SubmittingPatches: document Based-on-patch-by trailer
 + SubmittingPatches: discourage common Linux trailers
 + SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Will cook in 'next'.
 cf. <xmqq4ij0vo8f.fsf@gitster.g>
 source: <V3_CV_SubPatches_trailers.9ec@msgid.xyz>


* mv/log-follow-mergy (2026-06-21) 1 commit
  (merged to 'next' on 2026-06-22 at f7e984a003)
 + log: improve --follow following renames for non-linear history

 "git log --follow" has been updated to handle non-linear history, in
 which the path being tracked gets renamed differently in multiple
 history lines, better.

 Will cook in 'next'.
 source: <ajjU4w2B0NlZffw1@collabora.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The `git multi-pack-index write --incremental` command has been
 corrected to properly honor the `--base` option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-06-12) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 Waiting for response(s) to review comment(s).
 cf. <aj93BE8MYatQAjoy@szeder.dev>
 source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
  (merged to 'next' on 2026-06-17 at 43ed8b3969)
 + cat-file: speed up default format

 Will cook in 'next'.
 cf. <20260615165326.GA91269@coredump.intra.peff.net>
 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 On hold, waiting for kk/prio-queue-get-put-fusion to land first.
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Needs review.
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-06-25) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: better explain how pick_regular_commit() picks a base
 - replay: add helper to put entry into mapped_commits

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Waiting for response(s) to review comment(s).
 cf. <xmqq5x358byf.fsf@gitster.g>
 cf. <b5d70a0b-ef32-49c9-84ba-8a64b7809574@gmail.com>
 cf. <f8b520d1-edeb-9e45-c503-025c8b5833c3@gmx.de>
 source: <20260626-toon-git-replay-drop-merges-v5-0-5e120738b9d0@iotcl.com>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Will cook in 'next'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-onbranch-fixes (2026-06-25) 12 commits
  (merged to 'next' on 2026-06-29 at 7b4929e311)
 + refs: protect against chicken-and-egg recursion
 + refs/reftable: lazy-load configuration to fix chicken-and-egg
 + reftable: split up write options
 + refs/files: lazy-load configuration to fix chicken-and-egg
 + refs: move parsing of "core.logAllRefUpdates" back into ref stores
 + repository: free main reference database
 + chdir-notify: drop unused `chdir_notify_reparent()`
 + refs: unregister reference stores from "chdir_notify"
 + setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 + setup: stop applying repository format twice
 + setup: inline `check_and_apply_repository_format()`
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-onbranch-fixes

 Reference backend configuration is now loaded lazily to avoid
 recursive calls during repository initialization when "onbranch"
 configuration conditions are evaluated. This also fixes a memory
 leak and allows dropping the unused `chdir_notify_reparent()`
 machinery.

 Will merge to 'master'.
 cf. <xmqqse6ae45i.fsf@gitster.g>
 source: <20260625-b4-pks-refs-avoid-chdir-notify-reparent-v6-0-41fbca3cf5e3@pks.im>


* ps/odb-source-packed (2026-06-16) 18 commits
  (merged to 'next' on 2026-06-19 at dcf0c084e4)
 + odb/source-packed: drop pointer to "files" parent source
 + midx: refactor interfaces to work on "packed" source
 + odb/source-packed: stub out remaining functions
 + odb/source-packed: wire up `freshen_object()` callback
 + odb/source-packed: wire up `find_abbrev_len()` callback
 + odb/source-packed: wire up `count_objects()` callback
 + odb/source-packed: wire up `for_each_object()` callback
 + odb/source-packed: wire up `read_object_stream()` callback
 + odb/source-packed: wire up `read_object_info()` callback
 + packfile: use higher-level interface to implement `has_object_pack()`
 + odb/source-packed: wire up `reprepare()` callback
 + odb/source-packed: wire up `close()` callback
 + odb/source-packed: start converting to a proper `struct odb_source`
 + odb/source-packed: store pointer to "files" instead of generic source
 + packfile: move packed source into "odb/" subsystem
 + packfile: split out packfile list logic
 + packfile: rename `struct packfile_store` to `odb_source_packed`
 + Merge branch 'ps/odb-source-loose' into ps/odb-source-packed
 (this branch is used by ps/connected-generic-promisor-checks, ps/libgit-in-subdir, ps/odb-drop-whence and ps/odb-generalize-prepare.)

 The packed object source has been refactored into a proper struct
 odb_source.

 Will cook in 'next'.
 cf. <ajK2QKdW-TdflfR0@denethor>
 source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
  (merged to 'next' on 2026-06-19 at a19dbb4193)
 + ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Will cook in 'next'.
 cf. <xmqqik7fsv2m.fsf@gitster.g>
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-20) 2 commits
  (merged to 'next' on 2026-06-20 at d8ca0d5180)
 + environment: use 'repo->initialized' for repo_protect_hfs() and repo_protect_ntfs()
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will cook in 'next'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>
 source: <20260620140957.667820-1-cat@malon.dev>


* ps/cat-file-remote-object-info (2026-06-25) 13 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - fetch-pack: prepare function to be moved
 - t1006: split test utility functions into new "lib-cat-file.sh"
 - cat-file: declare loop counter inside for()
 - git-compat-util: add strtoul_szt() with error handling
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Waiting for response(s) to review comment(s).
 cf. <CAOLa=ZScS3Gmm5BAgJF69phpaDXGnP_j9jx+bMhn_tfF65RXEg@mail.gmail.com>
 source: <20260625-ps-eric-work-rebase-v14-0-09f7ffe21a53@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
  (merged to 'next' on 2026-06-17 at dd9a463369)
 + b4: introduce configuration for the Git project
 + MyFirstContribution: recommend the use of b4
 + MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Will cook in 'next'.
 cf. <87eci7yomp.fsf@emacs.iotcl.com>
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-21) 5 commits
  (merged to 'next' on 2026-06-22 at 59cf1663e7)
 + pack-objects: support `--delta-islands` with `--path-walk`
 + pack-objects: extract `record_tree_depth()` helper
 + pack-objects: support reachability bitmaps with `--path-walk`
 + t/perf: drop p5311's lookup-table permutation
 + Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Will cook in 'next'.
 cf. <xmqqwlvq1qyy.fsf@gitster.g>
 source: <cover.1782082975.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 source: <20260619162105.648495-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 On hold, waiting for kk/prio-queue-get-put-fusion to land first.
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-23) 3 commits
  (merged to 'next' on 2026-06-29 at fbf9652169)
 + repo: add path.gitdir with absolute and relative suffix formatting
 + repo: add path.commondir with absolute and relative suffix formatting
 + path: extract format_path() and use in rev-parse

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Will merge to 'master'.
 cf. <xmqqy0g3iz38.fsf@gitster.g>
 source: <20260624033748.108281-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-29) 11 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - replay: expose `replay_result_queue_update()`
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Needs review.
 source: <20260629-b4-pks-history-drop-v7-0-6e9392a957d8@pks.im>


* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
  (merged to 'next' on 2026-06-18 at b63b3d1f25)
 + read_gitfile(): simplify NOT_A_REPO error message

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Will cook in 'next'.
 cf. <xmqqjyry4hax.fsf@gitster.g>
 source: <20260616123516.GA2301231@coredump.intra.peff.net>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 cf. <xmqqbjd37i4y.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will cook in 'next'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* hn/branch-delete-merged (2026-06-24) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 "git branch" command learned "--delete-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Needs review.
 source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will cook in 'next'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Waiting for response(s) to review comment(s).
 cf. <12998c3a-ff69-4a98-9ed6-18aa0224e75e@gmail.com>
 cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
  (merged to 'next' on 2026-06-18 at e51bee59ca)
 + cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 + merge-ort: abort merge when trees have duplicate entries
 + merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 + merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 + merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Will cook in 'next'.
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-06-23) 2 commits
  (merged to 'next' on 2026-06-23 at a0fcde09dc)
 + status: improve rebase todo list parsing
 + sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Will cook in 'next'.
 source: <cover.1782230024.git.phillip.wood@dunelm.org.uk>


* ps/shift-root-in-graph (2026-06-20) 3 commits
 - graph: indent visual root in graph
 - revision: add peek functions for lookahead
 - lib-log-graph: move check_graph function

 "git log --graph" has been modified to visually distinguish
 parentless "root" commits (and commits that become roots due to
 history simplification) by indenting them, preventing them from
 appearing falsely related to unrelated commits rendered immediately
 above them.

 Waiting for response(s) to review comment(s).
 The peek-ahead approach may need to be scratched.
 cf. <CAN5EUNSj-2hkEBF7N_M6RLsuujDNFNUF3w53zR7SN1_5i2BRyg@mail.gmail.com>
 cf. <CAL71e4OQ_kGb+UwHgikHG236-8BVtc7P9OdpV4i4UzYRCoPczw@mail.gmail.com>
 source: <20260620-ps-pre-commit-indent-v6-0-cdc6d8fd5fbc@gmail.com>


^ permalink raw reply	[relevance 17%]

* What's cooking in git.git (Jun 2026, #10)
@ 2026-06-26  0:30 18% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-06-26  0:30 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.55-rc2 has been tagged.  The tree is in deep feature-freeze,
and remaining topics in 'next' will stay in "Will cook in 'next'"
instead of "Will merge to 'master'" state, until Git 2.55 final.

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]

* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
 - gpg-interface: fix strip_cr_before_lf to only remove CR before LF

 The GPG and SSH signature parsing code has been corrected to strip
 carriage return characters only when they immediately precede line
 feeds, instead of unconditionally stripping all carriage returns.

 Needs review.
 source: <20260624093618.17456-1-antonio.destefani08@gmail.com>


* jt/receive-pack-use-odb-transactions (2026-06-23) 6 commits
 - builtin/receive-pack: stage incoming objects via ODB transactions
 - odb/transaction: add transaction env interface
 - odb/transaction: propagate commit errors
 - odb/transaction: propagate begin errors
 - object-file: propagate files transaction errors
 - object-file: rename files transaction prepare function

 git-receive-pack has been refactored to use ODB transaction
 interfaces instead of directly managing tmp_objdir for staging
 incoming objects, bringing it closer to being ODB backend agnostic.

 Waiting for response(s) to review comment(s).
 cf. <aju_AmlKVi5UZaiQ@pks.im>
 source: <20260624041920.2601961-1-jltobler@gmail.com>


* ps/odb-drop-whence (2026-06-24) 7 commits
 - odb: document object info fields
 - odb: drop `whence` field from object info
 - treewide: convert users of `whence` to the new source field
 - odb: add `source` field to struct object_info_source
 - odb: make backend-specific fields optional
 - packfile: thread odb_source_packed through packed_object_info()
 - Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
 (this branch uses ps/odb-source-packed.)

 The whence field in struct object_info has been removed,
 refactoring backend-specific object information retrieval into an
 opt-in struct object_info_source structure.

 Needs review.
 source: <20260624-b4-pks-odb-drop-whence-v1-0-8d1877b790ac@pks.im>


* ps/reftable-hardening (2026-06-24) 11 commits
 - reftable/table: fix OOB read on truncated table
 - reftable/table: fix NULL pointer access when seeking to bogus offsets
 - reftable/block: fix OOB read with bogus restart offset
 - reftable/block: fix use of uninitialized memory when binsearch fails
 - reftable/block: fix OOB read with bogus restart count
 - reftable/block: fix OOB read with bogus block size
 - reftable/block: fix OOB write with bogus inflated log size
 - reftable/record: don't abort when decoding invalid ref value type
 - reftable/basics: fix OOB read on binary search of empty range
 - oss-fuzz: add fuzzer for parsing reftables
 - meson: support building fuzzers with libFuzzer

 The reftable code has been hardened against corrupted tables by
 fixing out-of-bounds writes, out-of-bounds reads, and abort calls
 during parsing.

 Needs review.
 source: <20260624-pks-reftable-hardening-v1-0-66e4ce87c6b9@pks.im>


* hn/branch-push-slip-advice (2026-06-24) 3 commits
 - SQUASH??? use test_grep
 - push: suggest <remote> <branch> for a slash slip
 - branch: suggest <remote>/<branch> on upstream slip

 "git push origin/main" and "git branch origin main" could both be
 an obvious typo, in which case offer the obvious typofix.

 Waiting for response(s) to review comment(s).
 cf. <xmqqfr2ae2wp.fsf@gitster.g>
 source: <pull.2331.v2.git.git.1782338114.gitgitgadget@gmail.com>


* jc/history-message-prep-fix (2026-06-25) 1 commit
 - history: streamline message preparation and plug file stream leak

 Code clean-up with leakfix for a write file stream.

 Needs review.
 source: <xmqqh5mqfkpv.fsf@gitster.g>


* ty/migrate-excludes-file (2026-06-25) 2 commits
 - environment: move excludes_file into repo_config_values
 - dir: encapsulate excludes_file lazy-load

 Move excludes_file global variable into per-repository structure.

 Waiting for response(s) to review comment(s).
 cf. <xmqqwlvme4lz.fsf@gitster.g>
 source: <20260625161845.7543-1-cat@malon.dev>

--------------------------------------------------
[Stalled]

* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq33yzd9yf.fsf@gitster.g>
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>

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

* kk/merge-base-exhaustion (2026-06-24) 7 commits
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: remove unused nonstale_queue dedup wrappers
 - commit-reach: introduce struct paint_state with per-side counters
 - commit-reach: add trace2 instrumentation to paint_down_to_common()
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - Documentation/technical: add paint-down-to-common doc

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Expecting a reroll.
 cf. <CAL71e4MnA36ZchLaUsMSoLcb9LO77aac274jES8+oV=yxuigOA@mail.gmail.com>
 source: <pull.2149.v2.git.1782303254.gitgitgadget@gmail.com>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The USE_NSEC build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Waiting for response(s) to review comment(s).
 cf. <ajjuoS5Qc3K0nCRl@pks.im>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/connected-generic-promisor-checks (2026-06-25) 5 commits
 - connected: search promisor objects generically
 - connected: split out promisor-based connectivity check
 - odb/source-packed: support flags when iterating an object prefix
 - odb/source-packed: extract logic to skip certain packs
 - Merge branch 'ps/odb-source-packed' into ps/connected-generic-promisor-checks
 (this branch uses ps/odb-source-packed.)

 The connectivity check has been refactored to search for promisor
 objects in a generic way using the object database interface,
 rather than iterating packfiles directly. This allows connectivity
 checks to work properly in repositories that do not use packfiles.

 Will merge to 'next'?
 cf. <xmqq4iiqfk0l.fsf@gitster.g>
 source: <20260625-pks-connected-generic-promisor-checks-v3-0-7308f3b9dc44@pks.im>


* ps/libgit-in-subdir (2026-06-22) 3 commits
 - Move libgit.a sources into separate "lib/" directory
 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir
 (this branch uses ps/odb-source-packed.)

 The source files for libgit.a have been moved into a new "lib/"
 directory to clean up the top-level directory and clearly separate
 library code.

 Needs review.
 source: <20260622-pks-libgit-in-subdir-v2-0-cb946c51ee7b@pks.im>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
 - odb: introduce `odb_prepare()`
 - odb/source: generalize `reprepare()` callback
 - Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
 (this branch uses ps/odb-source-packed.)

 The `reprepare()` callback for object database sources has been
 generalized into a `prepare()` callback with an optional flush cache
 flag, and a new `odb_prepare()` wrapper has been introduced to
 allow pre-opening object database sources.

 Needs review.
 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>


* jc/submittingpatches-design-critiques (2026-06-20) 1 commit
  (merged to 'next' on 2026-06-22 at 7495b5f9d6)
 + SubmittingPatches: address design critiques

 The documentation in SubmittingPatches has been updated to clarify how
 patch contributors should respond to design and viability critiques,
 and how the resolution of such critiques should be recorded in the
 final commit messages.

 Will cook in 'next'.
 cf. <ajjwYGWZ6hQWr600@pks.im>
 source: <xmqqeci0g4mz.fsf@gitster.g>


* wy/doc-clarify-review-replies (2026-06-21) 2 commits
 - doc: advise batching patch rerolls
 - doc: encourage review replies before rerolling

 Documentation on community contribution guidelines has been updated to
 encourage replying to review comments before rerolling, and to advise
 a default limit of at most one reroll per day to give reviewers across
 different time zones enough time to participate.

 Will merge to 'next'?
 cf. <ajvDuUiDsmyf5LnX@pks.im>
 source: <cover.1782028813.git.wy@wyuan.org>


* ty/migrate-ignorecase (2026-06-19) 2 commits
 - config: use repo_ignore_case() to access core.ignorecase
 - environment: move ignore_case into repo_config_values

 The global configuration variable ignore_case (representing the
 core.ignorecase configuration) has been migrated into struct
 repo_config_values to tie it to a specific repository instance.

 Waiting for comments from Johannes.
 cf. <xmqqzf0mzc7j.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-18) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 "git log -L<range>:<path>" learned to limit various "diff" operations
 like --stat, --check, -G, to the specified range:path.

 Expecting a reroll.
 cf. <CAC2QwmKEHb+LL4ZkQwq+Rw8eyDXzdBp_nxa_d+Ecx0K1icNqQA@mail.gmail.com>
 source: <pull.2152.git.1781806593.gitgitgadget@gmail.com>


* hn/history-squash (2026-06-24) 4 commits
 - history: re-edit a squash with every message
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental "git history" command has been taught a new
 "squash" subcommand to fold a range of commits into a single commit,
 replaying any descendants on top.

 Needs review.
 source: <pull.2337.v5.git.git.1782338102.gitgitgadget@gmail.com>


* ps/t4216-tap-fix (2026-06-19) 1 commit
  (merged to 'next' on 2026-06-25 at 42296fc12e)
 + t4216: fix no-op test that breaks TAP output

 TAP output breakage fix.

 Will merge to 'master'.
 cf. <xmqq8q82fk8r.fsf@gitster.g>
 source: <20260619-pks-t4216-drop-unused-prereq-v1-1-2ce0d7bea088@pks.im>


* mh/fetch-follow-remote-head-config (2026-06-19) 8 commits
  (merged to 'next' on 2026-06-22 at 423079e1c8)
 + fetch: fixup a misaligned comment
 + fetch: add configuration variable fetch.followRemoteHEAD
 + fetch: refactor do_fetch handling of followRemoteHEAD
 + fetch: return 0 on known git_fetch_config
 + fetch: rename function report_set_head
 + t5510: cleanup remote in followRemoteHEAD dangling ref test
 + doc: explain fetchRemoteHEADWarn advice
 + fetch: fixup set_head advice for warn-if-not-branch

 The `fetch.followRemoteHEAD` configuration variable has been added to
 provide a default for the per-remote `remote.<name>.followRemoteHEAD`
 setting.

 Will cook in 'next'.
 cf. <xmqqcxxp1j2t.fsf@gitster.g>
 source: <20260619094751.2996804-1-m@lfurio.us>


* ps/refs-writing-subcommands (2026-06-17) 5 commits
 - builtin/refs: add "rename" subcommand
 - builtin/refs: add "create" subcommand
 - builtin/refs: add "update" subcommand
 - builtin/refs: add "delete" subcommand
 - builtin/refs: drop `the_repository`

 The "git refs" toolbox has been extended with new "create", "delete",
 "update", and "rename" subcommands to create, delete, update, and
 rename references, respectively.

 Needs review.
 source: <20260617-pks-refs-writing-subcommands-v2-0-07f3d18336f9@pks.im>


* po/hash-object-size-t (2026-06-16) 6 commits
  (merged to 'next' on 2026-06-21 at b780a276b9)
 + hash-object: add a >4GB/LLP64 test case using filtered input
 + hash-object: add another >4GB/LLP64 test case
 + hash-object --stdin: verify that it works with >4GB/LLP64
 + hash algorithms: use size_t for section lengths
 + object-file.c: use size_t for header lengths
 + hash-object: demonstrate a >4GB/LLP64 problem

 Support for hashing loose or packed objects larger than 4GB on Windows
 and other LLP64 platforms has been improved by converting object header
 buffers and data-handling functions from 'unsigned long' to 'size_t'.

 Will cook in 'next'.
 cf. <ajOQthRjhD3hRM9w@pks.im>
 source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>


* kh/submittingpatches-trailers (2026-06-18) 5 commits
  (merged to 'next' on 2026-06-22 at 2cd4a152c9)
 + SubmittingPatches: note that trailer order matters
 + SubmittingPatches: be consistent with trailer markup
 + SubmittingPatches: document Based-on-patch-by trailer
 + SubmittingPatches: discourage common Linux trailers
 + SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Will cook in 'next'.
 cf. <xmqq4ij0vo8f.fsf@gitster.g>
 source: <V3_CV_SubPatches_trailers.9ec@msgid.xyz>


* mv/log-follow-mergy (2026-06-21) 1 commit
  (merged to 'next' on 2026-06-22 at f7e984a003)
 + log: improve --follow following renames for non-linear history

 "git log --follow" has been updated to handle non-linear history, in
 which the path being tracked gets renamed differently in multiple
 history lines, better.

 Will cook in 'next'.
 source: <ajjU4w2B0NlZffw1@collabora.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The `git multi-pack-index write --incremental` command has been
 corrected to properly honor the `--base` option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-06-12) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 Needs review.
 source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
  (merged to 'next' on 2026-06-17 at 43ed8b3969)
 + cat-file: speed up default format

 Will cook in 'next'.
 cf. <20260615165326.GA91269@coredump.intra.peff.net>
 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 On hold, waiting for kk/prio-queue-get-put-fusion to land first.
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Needs review.
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-06-22) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: add helper to put entry into mapped_commits
 - replay: refactor enum replay_mode into a bool

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Expecting a reroll.
 cf. <87tsqrycke.fsf@emacs.iotcl.com>
 source: <20260622-toon-git-replay-drop-merges-v4-0-ff257f534319@iotcl.com>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Will cook in 'next'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-avoid-chdir-notify-reparent (2026-06-25) 12 commits
 - refs: protect against chicken-and-egg recursion
 - refs/reftable: lazy-load configuration to fix chicken-and-egg
 - reftable: split up write options
 - refs/files: lazy-load configuration to fix chicken-and-egg
 - refs: move parsing of "core.logAllRefUpdates" back into ref stores
 - repository: free main reference database
 - chdir-notify: drop unused `chdir_notify_reparent()`
 - refs: unregister reference stores from "chdir_notify"
 - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 - setup: stop applying repository format twice
 - setup: inline `check_and_apply_repository_format()`
 - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent

 The reference backends have been converted to always use absolute
 paths internally. This allows dropping the calls to
 `chdir_notify_reparent()` and fixes a memory leak in how the
 reference database is constructed with an "onbranch" condition.

 Will merge to 'next'?
 cf. <aj1DuUzusBUqmF_C@denethor>
 source: <20260625-b4-pks-refs-avoid-chdir-notify-reparent-v6-0-41fbca3cf5e3@pks.im>


* ps/odb-source-packed (2026-06-16) 18 commits
  (merged to 'next' on 2026-06-19 at dcf0c084e4)
 + odb/source-packed: drop pointer to "files" parent source
 + midx: refactor interfaces to work on "packed" source
 + odb/source-packed: stub out remaining functions
 + odb/source-packed: wire up `freshen_object()` callback
 + odb/source-packed: wire up `find_abbrev_len()` callback
 + odb/source-packed: wire up `count_objects()` callback
 + odb/source-packed: wire up `for_each_object()` callback
 + odb/source-packed: wire up `read_object_stream()` callback
 + odb/source-packed: wire up `read_object_info()` callback
 + packfile: use higher-level interface to implement `has_object_pack()`
 + odb/source-packed: wire up `reprepare()` callback
 + odb/source-packed: wire up `close()` callback
 + odb/source-packed: start converting to a proper `struct odb_source`
 + odb/source-packed: store pointer to "files" instead of generic source
 + packfile: move packed source into "odb/" subsystem
 + packfile: split out packfile list logic
 + packfile: rename `struct packfile_store` to `odb_source_packed`
 + Merge branch 'ps/odb-source-loose' into ps/odb-source-packed
 (this branch is used by ps/connected-generic-promisor-checks, ps/libgit-in-subdir, ps/odb-drop-whence and ps/odb-generalize-prepare.)

 The packed object source has been refactored into a proper struct
 odb_source.

 Will cook in 'next'.
 cf. <ajK2QKdW-TdflfR0@denethor>
 source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
  (merged to 'next' on 2026-06-19 at a19dbb4193)
 + ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Will cook in 'next'.
 cf. <xmqqik7fsv2m.fsf@gitster.g>
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-20) 2 commits
  (merged to 'next' on 2026-06-20 at d8ca0d5180)
 + environment: use 'repo->initialized' for repo_protect_hfs() and repo_protect_ntfs()
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will cook in 'next'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>
 source: <20260620140957.667820-1-cat@malon.dev>


* ps/cat-file-remote-object-info (2026-06-25) 13 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - fetch-pack: prepare function to be moved
 - t1006: split test utility functions into new "lib-cat-file.sh"
 - cat-file: declare loop counter inside for()
 - git-compat-util: add strtoul_szt() with error handling
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Waiting for response(s) to review comment(s).
 cf. <xmqqjyrme393.fsf@gitster.g>
 source: <20260625-ps-eric-work-rebase-v14-0-09f7ffe21a53@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
  (merged to 'next' on 2026-06-17 at dd9a463369)
 + b4: introduce configuration for the Git project
 + MyFirstContribution: recommend the use of b4
 + MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Will cook in 'next'.
 cf. <87eci7yomp.fsf@emacs.iotcl.com>
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-21) 5 commits
  (merged to 'next' on 2026-06-22 at 59cf1663e7)
 + pack-objects: support `--delta-islands` with `--path-walk`
 + pack-objects: extract `record_tree_depth()` helper
 + pack-objects: support reachability bitmaps with `--path-walk`
 + t/perf: drop p5311's lookup-table permutation
 + Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Will cook in 'next'.
 cf. <xmqqwlvq1qyy.fsf@gitster.g>
 source: <cover.1782082975.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 source: <20260619162105.648495-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 On hold, waiting for kk/prio-queue-get-put-fusion to land first.
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-23) 3 commits
 - repo: add path.gitdir with absolute and relative suffix formatting
 - repo: add path.commondir with absolute and relative suffix formatting
 - path: extract format_path() and use in rev-parse

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Will merge to 'next'?
 cf. <xmqqy0g3iz38.fsf@gitster.g>
 source: <20260624033748.108281-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-15) 10 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Waiting for response(s) to review comment(s).
 cf. <CAP8UFD1evTZqj1ymW9g5g2RmMkYMaE0rPa0Hzt+irH94M6LD6A@mail.gmail.com>
 source: <20260615-b4-pks-history-drop-v6-0-2e329e536d78@pks.im>


* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
  (merged to 'next' on 2026-06-18 at b63b3d1f25)
 + read_gitfile(): simplify NOT_A_REPO error message

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Will cook in 'next'.
 cf. <xmqqjyry4hax.fsf@gitster.g>
 source: <20260616123516.GA2301231@coredump.intra.peff.net>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will cook in 'next'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* hn/branch-delete-merged (2026-06-24) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 "git branch" command learned "--delete-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Needs review.
 source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will cook in 'next'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Waiting for response(s) to review comment(s).
 cf. <12998c3a-ff69-4a98-9ed6-18aa0224e75e@gmail.com>
 source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
  (merged to 'next' on 2026-06-18 at e51bee59ca)
 + cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 + merge-ort: abort merge when trees have duplicate entries
 + merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 + merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 + merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Will cook in 'next'.
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-06-23) 2 commits
  (merged to 'next' on 2026-06-23 at a0fcde09dc)
 + status: improve rebase todo list parsing
 + sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Will cook in 'next'.
 source: <cover.1782230024.git.phillip.wood@dunelm.org.uk>


* ps/shift-root-in-graph (2026-06-20) 3 commits
 - graph: indent visual root in graph
 - revision: add peek functions for lookahead
 - lib-log-graph: move check_graph function

 "git log --graph" has been modified to visually distinguish
 parentless "root" commits (and commits that become roots due to
 history simplification) by indenting them, preventing them from
 appearing falsely related to unrelated commits rendered immediately
 above them.

 Waiting for response(s) to review comment(s).
 The peek-ahead approach may need to be scratched.
 cf. <CAN5EUNSj-2hkEBF7N_M6RLsuujDNFNUF3w53zR7SN1_5i2BRyg@mail.gmail.com>
 cf. <CAL71e4OQ_kGb+UwHgikHG236-8BVtc7P9OdpV4i4UzYRCoPczw@mail.gmail.com>
 source: <20260620-ps-pre-commit-indent-v6-0-cdc6d8fd5fbc@gmail.com>


^ permalink raw reply	[relevance 18%]

* What's cooking in git.git (Jun 2026, #09)
@ 2026-06-23 16:56 19% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-23 16:56 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.55-rc2 has been tagged.  The tree is in deep feature-freeze,
and remaining topics in 'next' will stay in "Will cook in 'next'"
instead of "Will merge to 'master'" state, until Git 2.55 final.

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

* hn/macos-linker-warning (2026-06-19) 1 commit
  (merged to 'next' on 2026-06-22 at 0e7f024ab5)
 + config.mak.uname: avoid macOS dup-library warning

 Xcode 15 and later has a linker set to complain when the same library
 archive is listed twice on the command line.  Squelch the annoyance.
 cf. <ajjspU7lJ01GgrBw@pks.im>
 source: <pull.2314.v3.git.git.1781901127385.gitgitgadget@gmail.com>


* js/win32-localtime-r (2026-06-22) 1 commit
  (merged to 'next' on 2026-06-22 at 67d3fa726d)
 + win32: ensure that `localtime_r()` is declared even in i686 builds

 Build-fix for 32-bit Windows.
 source: <pull.2157.git.1782117847057.gitgitgadget@gmail.com>


* ps/gitlab-ci-windows (2026-06-15) 1 commit
  (merged to 'next' on 2026-06-22 at 6d177c61ea)
 + gitlab-ci: migrate Windows builds away from Chocolatey

 Wean the Windows builds in GitLab CI procedure away from
 (unfortunately unreliable) Chocolatey to install dependencies.
 cf. <ajP5owy3r_GyuLqk@denethor>
 source: <20260615-b4-pks-gitlab-ci-drop-chocolatey-v1-1-51a6e7d5e388@pks.im>

--------------------------------------------------
[Stalled]

* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq33yzd9yf.fsf@gitster.g>
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>

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

* kk/merge-base-exhaustion (2026-06-20) 6 commits
 - Documentation/technical: add paint-down-to-common doc
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_queue with per-side counters
 - commit-reach: decouple ahead_behind from nonstale_queue

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Expecting a reroll.
 cf. <CAL71e4Pcw-UUbHBw_j6PFx2bXmxZ93VLMWG+3Qap=RmCJa_ZgA@mail.gmail.com>
 source: <pull.2149.git.1781951820.gitgitgadget@gmail.com>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The USE_NSEC build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Waiting for response(s) to review comment(s).
 cf. <ajjuoS5Qc3K0nCRl@pks.im>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/connected-generic-promisor-checks (2026-06-22) 4 commits
 - connected: search promisor objects generically
 - odb/source-packed: support flags when iterating an object prefix
 - odb/source-packed: extract logic to skip certain packs
 - Merge branch 'ps/odb-source-packed' into ps/connected-generic-promisor-checks
 (this branch uses ps/odb-source-packed.)

 The connectivity check has been refactored to search for promisor
 objects in a generic way using the object database interface,
 rather than iterating packfiles directly. This allows connectivity
 checks to work properly in repositories that do not use packfiles.

 Waiting for response(s) to review comment(s).
 cf. <xmqq4iiu1mrt.fsf@gitster.g>
 source: <20260622-pks-connected-generic-promisor-checks-v1-0-25eba2698202@pks.im>


* ps/libgit-in-subdir (2026-06-22) 3 commits
 - Move libgit.a sources into separate "lib/" directory
 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir
 (this branch uses ps/odb-source-packed.)

 The source files for libgit.a have been moved into a new "lib/"
 directory to clean up the top-level directory and clearly separate
 library code.

 Needs review.
 source: <20260622-pks-libgit-in-subdir-v2-0-cb946c51ee7b@pks.im>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
 - odb: introduce `odb_prepare()`
 - odb/source: generalize `reprepare()` callback
 - Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
 (this branch uses ps/odb-source-packed.)

 The `reprepare()` callback for object database sources has been
 generalized into a `prepare()` callback with an optional flush cache
 flag, and a new `odb_prepare()` wrapper has been introduced to
 allow pre-opening object database sources.

 Needs review.
 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>


* jc/submittingpatches-design-critiques (2026-06-20) 1 commit
  (merged to 'next' on 2026-06-22 at 7495b5f9d6)
 + SubmittingPatches: address design critiques

 The documentation in SubmittingPatches has been updated to clarify how
 patch contributors should respond to design and viability critiques,
 and how the resolution of such critiques should be recorded in the
 final commit messages.

 Will cook in 'next'.
 cf. <ajjwYGWZ6hQWr600@pks.im>
 source: <xmqqeci0g4mz.fsf@gitster.g>


* wy/doc-clarify-review-replies (2026-06-21) 2 commits
 - doc: advise batching patch rerolls
 - doc: encourage review replies before rerolling

 Documentation on community contribution guidelines has been updated to
 encourage replying to review comments before rerolling, and to advise
 a default limit of at most one reroll per day to give reviewers across
 different time zones enough time to participate.

 Needs review.
 source: <cover.1782028813.git.wy@wyuan.org>


* ty/migrate-ignorecase (2026-06-19) 2 commits
 - config: use repo_ignore_case() to access core.ignorecase
 - environment: move ignore_case into repo_config_values

 The global configuration variable ignore_case (representing the
 core.ignorecase configuration) has been migrated into struct
 repo_config_values to tie it to a specific repository instance.

 Waiting for comments from Johannes.
 cf. <xmqqzf0mzc7j.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-18) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 "git log -L<range>:<path>" learned to limit various "diff" operations
 like --stat, --check, -G, to the specified range:path.

 Waiting for response(s) to review comment(s).
 cf. <CAC2QwmKEHb+LL4ZkQwq+Rw8eyDXzdBp_nxa_d+Ecx0K1icNqQA@mail.gmail.com>
 source: <pull.2152.git.1781806593.gitgitgadget@gmail.com>


* hn/history-squash (2026-06-20) 4 commits
 - history: re-edit a squash with every message
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental "git history" command has been taught a new
 "squash" subcommand to fold a range of commits into a single commit,
 replaying any descendants on top.

 Waiting for response(s) to review comment(s).
 cf. <ajkijomPo_kXSXul@pks.im>
 source: <pull.2337.v4.git.git.1782021195.gitgitgadget@gmail.com>


* ps/t4216-tap-fix (2026-06-19) 1 commit
 - t4216: fix no-op test that breaks TAP output

 TAP output breakage fix.

 Waiting for response(s) to review comment(s).
 cf. <xmqqa4sqlchz.fsf@gitster.g>
 cf. <ajjBmi39IFJW5p5V@pks.im>
 source: <20260619-pks-t4216-drop-unused-prereq-v1-1-2ce0d7bea088@pks.im>


* mh/fetch-follow-remote-head-config (2026-06-19) 8 commits
  (merged to 'next' on 2026-06-22 at 423079e1c8)
 + fetch: fixup a misaligned comment
 + fetch: add configuration variable fetch.followRemoteHEAD
 + fetch: refactor do_fetch handling of followRemoteHEAD
 + fetch: return 0 on known git_fetch_config
 + fetch: rename function report_set_head
 + t5510: cleanup remote in followRemoteHEAD dangling ref test
 + doc: explain fetchRemoteHEADWarn advice
 + fetch: fixup set_head advice for warn-if-not-branch

 The `fetch.followRemoteHEAD` configuration variable has been added to
 provide a default for the per-remote `remote.<name>.followRemoteHEAD`
 setting.

 Will cook in 'next'.
 cf. <xmqqcxxp1j2t.fsf@gitster.g>
 source: <20260619094751.2996804-1-m@lfurio.us>


* ps/refs-writing-subcommands (2026-06-17) 5 commits
 - builtin/refs: add "rename" subcommand
 - builtin/refs: add "create" subcommand
 - builtin/refs: add "update" subcommand
 - builtin/refs: add "delete" subcommand
 - builtin/refs: drop `the_repository`

 The "git refs" toolbox has been extended with new "create", "delete",
 "update", and "rename" subcommands to create, delete, update, and
 rename references, respectively.

 Needs review.
 source: <20260617-pks-refs-writing-subcommands-v2-0-07f3d18336f9@pks.im>


* po/hash-object-size-t (2026-06-16) 6 commits
  (merged to 'next' on 2026-06-21 at b780a276b9)
 + hash-object: add a >4GB/LLP64 test case using filtered input
 + hash-object: add another >4GB/LLP64 test case
 + hash-object --stdin: verify that it works with >4GB/LLP64
 + hash algorithms: use size_t for section lengths
 + object-file.c: use size_t for header lengths
 + hash-object: demonstrate a >4GB/LLP64 problem

 Support for hashing loose or packed objects larger than 4GB on Windows
 and other LLP64 platforms has been improved by converting object header
 buffers and data-handling functions from 'unsigned long' to 'size_t'.

 Will cook in 'next'.
 cf. <ajOQthRjhD3hRM9w@pks.im>
 source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>


* kh/submittingpatches-trailers (2026-06-18) 5 commits
  (merged to 'next' on 2026-06-22 at 2cd4a152c9)
 + SubmittingPatches: note that trailer order matters
 + SubmittingPatches: be consistent with trailer markup
 + SubmittingPatches: document Based-on-patch-by trailer
 + SubmittingPatches: discourage common Linux trailers
 + SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Will cook in 'next'.
 cf. <xmqq4ij0vo8f.fsf@gitster.g>
 source: <V3_CV_SubPatches_trailers.9ec@msgid.xyz>


* mv/log-follow-mergy (2026-06-21) 1 commit
  (merged to 'next' on 2026-06-22 at f7e984a003)
 + log: improve --follow following renames for non-linear history

 "git log --follow" has been updated to handle non-linear history, in
 which the path being tracked gets renamed differently in multiple
 history lines, better.

 Will cook in 'next'.
 source: <ajjU4w2B0NlZffw1@collabora.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The `git multi-pack-index write --incremental` command has been
 corrected to properly honor the `--base` option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-06-12) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 Needs review.
 source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
  (merged to 'next' on 2026-06-17 at 43ed8b3969)
 + cat-file: speed up default format

 Will cook in 'next'.
 cf. <20260615165326.GA91269@coredump.intra.peff.net>
 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 On hold, waiting for kk/prio-queue-get-put-fusion to land first.
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Needs review.
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-06-22) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: add helper to put entry into mapped_commits
 - replay: refactor enum replay_mode into a bool

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Waiting for response(s) to review comment(s).
 cf. <xmqq7bnq37jm.fsf@gitster.g>
 source: <20260622-toon-git-replay-drop-merges-v4-0-ff257f534319@iotcl.com>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Will cook in 'next'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-avoid-chdir-notify-reparent (2026-06-22) 12 commits
 - refs: protect against chicken-and-egg recursion
 - refs/reftable: lazy-load configuration to fix chicken-and-egg
 - reftable: split up write options
 - refs/files: lazy-load configuration to fix chicken-and-egg
 - refs: move parsing of "core.logAllRefUpdates" back into ref stores
 - repository: free main reference database
 - chdir-notify: drop unused `chdir_notify_reparent()`
 - refs: unregister reference stores from "chdir_notify"
 - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 - setup: stop applying repository format twice
 - setup: inline `check_and_apply_repository_format()`
 - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent

 The reference backends have been converted to always use absolute
 paths internally. This allows dropping the calls to
 `chdir_notify_reparent()` and fixes a memory leak in how the
 reference database is constructed with an "onbranch" condition.

 Needs review.
 source: <20260622-b4-pks-refs-avoid-chdir-notify-reparent-v5-0-018475013dbc@pks.im>


* ps/odb-source-packed (2026-06-16) 18 commits
  (merged to 'next' on 2026-06-19 at dcf0c084e4)
 + odb/source-packed: drop pointer to "files" parent source
 + midx: refactor interfaces to work on "packed" source
 + odb/source-packed: stub out remaining functions
 + odb/source-packed: wire up `freshen_object()` callback
 + odb/source-packed: wire up `find_abbrev_len()` callback
 + odb/source-packed: wire up `count_objects()` callback
 + odb/source-packed: wire up `for_each_object()` callback
 + odb/source-packed: wire up `read_object_stream()` callback
 + odb/source-packed: wire up `read_object_info()` callback
 + packfile: use higher-level interface to implement `has_object_pack()`
 + odb/source-packed: wire up `reprepare()` callback
 + odb/source-packed: wire up `close()` callback
 + odb/source-packed: start converting to a proper `struct odb_source`
 + odb/source-packed: store pointer to "files" instead of generic source
 + packfile: move packed source into "odb/" subsystem
 + packfile: split out packfile list logic
 + packfile: rename `struct packfile_store` to `odb_source_packed`
 + Merge branch 'ps/odb-source-loose' into ps/odb-source-packed
 (this branch is used by ps/connected-generic-promisor-checks, ps/libgit-in-subdir and ps/odb-generalize-prepare.)

 The packed object source has been refactored into a proper struct
 odb_source.

 Will cook in 'next'.
 cf. <ajK2QKdW-TdflfR0@denethor>
 source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
  (merged to 'next' on 2026-06-19 at a19dbb4193)
 + ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Will cook in 'next'.
 cf. <xmqqik7fsv2m.fsf@gitster.g>
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-20) 2 commits
  (merged to 'next' on 2026-06-20 at d8ca0d5180)
 + environment: use 'repo->initialized' for repo_protect_hfs() and repo_protect_ntfs()
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will cook in 'next'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>
 source: <20260620140957.667820-1-cat@malon.dev>


* ps/cat-file-remote-object-info (2026-06-19) 12 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - t1006: split test utility functions into new "lib-cat-file.sh"
 - cat-file: declare loop counter inside for()
 - git-compat-util: add strtoul_ul() with error handling
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Waiting for response(s) to review comment(s).
 cf. <CAOLa=ZSvxXuf_bSzKMvViNQ5MuDAqxnQdo4asF9vfMhJaDQcVw@mail.gmail.com>
 source: <20260619-ps-eric-work-rebase-v13-0-3d4c7315d2f8@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
  (merged to 'next' on 2026-06-17 at dd9a463369)
 + b4: introduce configuration for the Git project
 + MyFirstContribution: recommend the use of b4
 + MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Will cook in 'next'.
 cf. <87eci7yomp.fsf@emacs.iotcl.com>
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-21) 5 commits
  (merged to 'next' on 2026-06-22 at 59cf1663e7)
 + pack-objects: support `--delta-islands` with `--path-walk`
 + pack-objects: extract `record_tree_depth()` helper
 + pack-objects: support reachability bitmaps with `--path-walk`
 + t/perf: drop p5311's lookup-table permutation
 + Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Will cook in 'next'.
 cf. <xmqqwlvq1qyy.fsf@gitster.g>
 source: <cover.1782082975.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 source: <20260619162105.648495-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Expecting a reroll.
 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-20) 3 commits
 - repo: add path.gitdir with absolute and relative suffix formatting
 - repo: add path.commondir with absolute and relative suffix formatting
 - path: extract append_formatted_path() and use in rev-parse

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Expecting a reroll.
 cf. <CA+rGoLcahV9pPqkSAKvz9o3g2cw2PsYXxzzwAC8XoseFzMB5rA@mail.gmail.com>
 source: <20260621055534.46798-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-15) 10 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Needs review.
 source: <20260615-b4-pks-history-drop-v6-0-2e329e536d78@pks.im>


* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
  (merged to 'next' on 2026-06-18 at b63b3d1f25)
 + read_gitfile(): simplify NOT_A_REPO error message

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Will cook in 'next'.
 cf. <xmqqjyry4hax.fsf@gitster.g>
 source: <20260616123516.GA2301231@coredump.intra.peff.net>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will cook in 'next'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* hn/branch-delete-merged (2026-06-22) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 "git branch" command learned "--delete-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Waiting for response(s) to review comment(s).
 cf. <cb6fcdfb-67b4-429d-b820-c4e623f28cfa@gmail.com>
 source: <pull.2285.v17.git.git.1782113388.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will cook in 'next'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-06-18) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Waiting for response(s) to review comment(s).
 cf. <12998c3a-ff69-4a98-9ed6-18aa0224e75e@gmail.com>
 source: <pull.2281.v14.git.git.1781786652.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
  (merged to 'next' on 2026-06-18 at e51bee59ca)
 + cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 + merge-ort: abort merge when trees have duplicate entries
 + merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 + merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 + merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Will cook in 'next'.
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-06-22) 2 commits
  (merged to 'next' on 2026-06-22 at a32de5bd17)
 + status: improve rebase todo list parsing
 + sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Will cook in 'next'.
 cf. <xmqqechy1o7p.fsf@gitster.g>
 source: <cover.1782117361.git.phillip.wood@dunelm.org.uk>


* ps/shift-root-in-graph (2026-06-20) 3 commits
 - graph: indent visual root in graph
 - revision: add peek functions for lookahead
 - lib-log-graph: move check_graph function

 "git log --graph" has been modified to visually distinguish
 parentless "root" commits (and commits that become roots due to
 history simplification) by indenting them, preventing them from
 appearing falsely related to unrelated commits rendered immediately
 above them.

 Waiting for response(s) to review comment(s).
 The peek-ahead approach may need to be scratched.
 cf. <CAN5EUNSj-2hkEBF7N_M6RLsuujDNFNUF3w53zR7SN1_5i2BRyg@mail.gmail.com>
 cf. <CAL71e4OQ_kGb+UwHgikHG236-8BVtc7P9OdpV4i4UzYRCoPczw@mail.gmail.com>
 source: <20260620-ps-pre-commit-indent-v6-0-cdc6d8fd5fbc@gmail.com>


^ permalink raw reply	[relevance 19%]

* What's cooking in git.git (Jun 2026, #08)
@ 2026-06-23  7:06 18% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-23  7:06 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.55-rc2 will be tagged tomorrow.  There are a few topics I want
to merge to 'master' before it happens, but other than these topics,
I expect nothing will move to 'master' before the final.  The tree
is feature-frozen, and remaining topics in 'next' will stay in "Will
cook in 'next'" instead of "Will merge to 'master'" state.  We'd
want to force ourselves to concentrate on addressing topics that are
important fixes but still in the "Needs review" state, and of
course, find any correct any regressions relative to Git 2.54, until
we are ready to tag Git 2.55 final.

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

* js/objects-larger-than-4gb-on-windows-more (2026-06-15) 7 commits
  (merged to 'next' on 2026-06-18 at 2b3ac350e6)
 + odb: use size_t for object_info.sizep and the size APIs
 + packfile,delta: drop the `cast_size_t_to_ulong()` wrappers
 + pack-objects: use size_t for in-core object sizes
 + packfile: widen unpack_entry()'s size out-parameter to size_t
 + pack-objects(check_pack_inflate()): use size_t instead of unsigned long
 + patch-delta: use size_t for sizes
 + compat/msvc: use _chsize_s for ftruncate

 source: <pull.2137.v2.git.1781524349.gitgitgadget@gmail.com>


* kw/gitattributes-typofix (2026-06-15) 1 commit
  (merged to 'next' on 2026-06-17 at 14ff167ef8)
 + gitattributes: fix eol attribute for Perl scripts

 source: <pull.2151.v2.git.1781510039164.gitgitgadget@gmail.com>

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

* kk/merge-base-exhaustion (2026-06-20) 6 commits
 - Documentation/technical: add paint-down-to-common doc
 - t6099, t6600: add side-exhaustion regression tests
 - t6600: add test cases for side-exhaustion edge cases
 - commit-reach: terminate merge-base walk when one paint side is exhausted
 - commit-reach: introduce struct paint_queue with per-side counters
 - commit-reach: decouple ahead_behind from nonstale_queue

 The merge-base computation has been optimized by stopping the walk
 early when one side's exclusive commits in the queue are exhausted,
 yielding significant speedups for queries with one-sided histories.

 Expecting a reroll.
 cf. <CAL71e4Pcw-UUbHBw_j6PFx2bXmxZ93VLMWG+3Qap=RmCJa_ZgA@mail.gmail.com>
 source: <pull.2149.git.1781951820.gitgitgadget@gmail.com>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
 - meson: wire up USE_NSEC build knob

 The USE_NSEC build knob, which enables support for sub-second file
 timestamp resolution, has been wired up to the Meson build system.

 Waiting for response(s) to review comment(s).
 cf. <ajjuoS5Qc3K0nCRl@pks.im>
 source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* js/win32-localtime-r (2026-06-22) 1 commit
  (merged to 'next' on 2026-06-22 at 67d3fa726d)
 + win32: ensure that `localtime_r()` is declared even in i686 builds

 Build-fix for 32-bit Windows.

 Will merge to 'master'.
 source: <pull.2157.git.1782117847057.gitgitgadget@gmail.com>


* ps/connected-generic-promisor-checks (2026-06-22) 4 commits
 - connected: search promisor objects generically
 - odb/source-packed: support flags when iterating an object prefix
 - odb/source-packed: extract logic to skip certain packs
 - Merge branch 'ps/odb-source-packed' into ps/connected-generic-promisor-checks
 (this branch uses ps/odb-source-packed.)

 The connectivity check has been refactored to search for promisor
 objects in a generic way using the object database interface,
 rather than iterating packfiles directly. This allows connectivity
 checks to work properly in repositories that do not use packfiles.

 Waiting for response(s) to review comment(s).
 cf. <xmqq4iiu1mrt.fsf@gitster.g>
 source: <20260622-pks-connected-generic-promisor-checks-v1-0-25eba2698202@pks.im>


* ps/libgit-in-subdir (2026-06-22) 3 commits
 - Move libgit.a sources into separate "lib/" directory
 - t/helper: prepare "test-example-tap.c" for introduction of "lib/"
 - Merge branch 'ps/odb-source-packed' into ps/libgit-in-subdir
 (this branch uses ps/odb-source-packed.)

 The source files for libgit.a have been moved into a new "lib/"
 directory to clean up the top-level directory and clearly separate
 library code.

 Needs review.
 source: <20260622-pks-libgit-in-subdir-v2-0-cb946c51ee7b@pks.im>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
 - odb: introduce `odb_prepare()`
 - odb/source: generalize `reprepare()` callback
 - Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare
 (this branch uses ps/odb-source-packed.)

 The `reprepare()` callback for object database sources has been
 generalized into a `prepare()` callback with an optional flush cache
 flag, and a new `odb_prepare()` wrapper has been introduced to
 allow pre-opening object database sources.

 Needs review.
 source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>

--------------------------------------------------
[Stalled]

* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq33yzd9yf.fsf@gitster.g>
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>

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

* jc/submittingpatches-design-critiques (2026-06-20) 1 commit
 - SubmittingPatches: address design critiques

 The documentation in SubmittingPatches has been updated to clarify how
 patch contributors should respond to design and viability critiques,
 and how the resolution of such critiques should be recorded in the
 final commit messages.

 Will merge to 'next'.
 cf. <ajjwYGWZ6hQWr600@pks.im>
 source: <xmqqeci0g4mz.fsf@gitster.g>


* wy/doc-clarify-review-replies (2026-06-21) 2 commits
 - doc: advise batching patch rerolls
 - doc: encourage review replies before rerolling

 Documentation on community contribution guidelines has been updated to
 encourage replying to review comments before rerolling, and to advise
 a default limit of at most one reroll per day to give reviewers across
 different time zones enough time to participate.

 Needs review.
 source: <cover.1782028813.git.wy@wyuan.org>


* ps/gitlab-ci-windows (2026-06-15) 1 commit
  (merged to 'next' on 2026-06-22 at 6d177c61ea)
 + gitlab-ci: migrate Windows builds away from Chocolatey

 Wean the Windows builds in GitLab CI procedure away from
 (unfortunately unreliable) Chocolatey to install dependencies.

 Will merge to 'master'.
 cf. <ajP5owy3r_GyuLqk@denethor>
 source: <20260615-b4-pks-gitlab-ci-drop-chocolatey-v1-1-51a6e7d5e388@pks.im>


* ty/migrate-ignorecase (2026-06-19) 2 commits
 - config: use repo_ignore_case() to access core.ignorecase
 - environment: move ignore_case into repo_config_values

 The global configuration variable ignore_case (representing the
 core.ignorecase configuration) has been migrated into struct
 repo_config_values to tie it to a specific repository instance.

 Waiting for response(s) to review comment(s).
 cf. <xmqqjyrr7ipf.fsf@gitster.g>
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-18) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 "git log -L<range>:<path>" learned to limit various "diff" operations
 like --stat, --check, -G, to the specified range:path.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q8bpl03.fsf@gitster.g>
 source: <pull.2152.git.1781806593.gitgitgadget@gmail.com>


* hn/history-squash (2026-06-20) 4 commits
 - history: re-edit a squash with every message
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental "git history" command has been taught a new
 "squash" subcommand to fold a range of commits into a single commit,
 replaying any descendants on top.

 Waiting for response(s) to review comment(s).
 cf. <ajkijomPo_kXSXul@pks.im>
 source: <pull.2337.v4.git.git.1782021195.gitgitgadget@gmail.com>


* ps/t4216-tap-fix (2026-06-19) 1 commit
 - t4216: fix no-op test that breaks TAP output

 TAP output breakage fix.

 Waiting for response(s) to review comment(s).
 cf. <xmqqa4sqlchz.fsf@gitster.g>
 cf. <ajjBmi39IFJW5p5V@pks.im>
 source: <20260619-pks-t4216-drop-unused-prereq-v1-1-2ce0d7bea088@pks.im>


* hn/macos-linker-warning (2026-06-19) 1 commit
  (merged to 'next' on 2026-06-22 at 0e7f024ab5)
 + config.mak.uname: avoid macOS dup-library warning

 Xcode 15 and later has a linker set to complain when the same library
 archive is listed twice on the command line.  Squelch the annoyance.

 Will merge to 'master'.
 cf. <ajjspU7lJ01GgrBw@pks.im>
 source: <pull.2314.v3.git.git.1781901127385.gitgitgadget@gmail.com>


* mh/fetch-follow-remote-head-config (2026-06-19) 8 commits
  (merged to 'next' on 2026-06-22 at 423079e1c8)
 + fetch: fixup a misaligned comment
 + fetch: add configuration variable fetch.followRemoteHEAD
 + fetch: refactor do_fetch handling of followRemoteHEAD
 + fetch: return 0 on known git_fetch_config
 + fetch: rename function report_set_head
 + t5510: cleanup remote in followRemoteHEAD dangling ref test
 + doc: explain fetchRemoteHEADWarn advice
 + fetch: fixup set_head advice for warn-if-not-branch

 The `fetch.followRemoteHEAD` configuration variable has been added to
 provide a default for the per-remote `remote.<name>.followRemoteHEAD`
 setting.

 Will cook in 'next'.
 cf. <xmqqcxxp1j2t.fsf@gitster.g>
 source: <20260619094751.2996804-1-m@lfurio.us>


* ps/refs-writing-subcommands (2026-06-17) 5 commits
 - builtin/refs: add "rename" subcommand
 - builtin/refs: add "create" subcommand
 - builtin/refs: add "update" subcommand
 - builtin/refs: add "delete" subcommand
 - builtin/refs: drop `the_repository`

 The "git refs" toolbox has been extended with new "create", "delete",
 "update", and "rename" subcommands to create, delete, update, and
 rename references, respectively.

 Needs review.
 source: <20260617-pks-refs-writing-subcommands-v2-0-07f3d18336f9@pks.im>


* po/hash-object-size-t (2026-06-16) 6 commits
  (merged to 'next' on 2026-06-21 at b780a276b9)
 + hash-object: add a >4GB/LLP64 test case using filtered input
 + hash-object: add another >4GB/LLP64 test case
 + hash-object --stdin: verify that it works with >4GB/LLP64
 + hash algorithms: use size_t for section lengths
 + object-file.c: use size_t for header lengths
 + hash-object: demonstrate a >4GB/LLP64 problem

 Support for hashing loose or packed objects larger than 4GB on Windows
 and other LLP64 platforms has been improved by converting object header
 buffers and data-handling functions from 'unsigned long' to 'size_t'.

 Will cook in 'next'.
 cf. <ajOQthRjhD3hRM9w@pks.im>
 source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>


* kh/submittingpatches-trailers (2026-06-18) 5 commits
  (merged to 'next' on 2026-06-22 at 2cd4a152c9)
 + SubmittingPatches: note that trailer order matters
 + SubmittingPatches: be consistent with trailer markup
 + SubmittingPatches: document Based-on-patch-by trailer
 + SubmittingPatches: discourage common Linux trailers
 + SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Will cook in 'next'.
 cf. <xmqq4ij0vo8f.fsf@gitster.g>
 source: <V3_CV_SubPatches_trailers.9ec@msgid.xyz>


* mv/log-follow-mergy (2026-06-21) 1 commit
 - log: improve --follow following renames for non-linear history

 "git log --follow" has been updated to handle non-linear history, in
 which the path being tracked gets renamed differently in multiple
 history lines, better.

 Will merge to 'next'.
 source: <ajjU4w2B0NlZffw1@collabora.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The `git multi-pack-index write --incremental` command has been
 corrected to properly honor the `--base` option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-06-12) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 Needs review.
 source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
  (merged to 'next' on 2026-06-17 at 43ed8b3969)
 + cat-file: speed up default format

 Will cook in 'next'.
 cf. <20260615165326.GA91269@coredump.intra.peff.net>
 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 Needs review.
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Needs review.
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-06-22) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: add helper to put entry into mapped_commits
 - replay: refactor enum replay_mode into a bool

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Waiting for response(s) to review comment(s).
 cf. <xmqq7bnq37jm.fsf@gitster.g>
 source: <20260622-toon-git-replay-drop-merges-v4-0-ff257f534319@iotcl.com>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Will cook in 'next'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-avoid-chdir-notify-reparent (2026-06-22) 12 commits
 - refs: protect against chicken-and-egg recursion
 - refs/reftable: lazy-load configuration to fix chicken-and-egg
 - reftable: split up write options
 - refs/files: lazy-load configuration to fix chicken-and-egg
 - refs: move parsing of "core.logAllRefUpdates" back into ref stores
 - repository: free main reference database
 - chdir-notify: drop unused `chdir_notify_reparent()`
 - refs: unregister reference stores from "chdir_notify"
 - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 - setup: stop applying repository format twice
 - setup: inline `check_and_apply_repository_format()`
 - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent

 The reference backends have been converted to always use absolute
 paths internally. This allows dropping the calls to
 `chdir_notify_reparent()` and fixes a memory leak in how the
 reference database is constructed with an "onbranch" condition.

 Needs review.
 source: <20260622-b4-pks-refs-avoid-chdir-notify-reparent-v5-0-018475013dbc@pks.im>


* ps/odb-source-packed (2026-06-16) 18 commits
  (merged to 'next' on 2026-06-19 at dcf0c084e4)
 + odb/source-packed: drop pointer to "files" parent source
 + midx: refactor interfaces to work on "packed" source
 + odb/source-packed: stub out remaining functions
 + odb/source-packed: wire up `freshen_object()` callback
 + odb/source-packed: wire up `find_abbrev_len()` callback
 + odb/source-packed: wire up `count_objects()` callback
 + odb/source-packed: wire up `for_each_object()` callback
 + odb/source-packed: wire up `read_object_stream()` callback
 + odb/source-packed: wire up `read_object_info()` callback
 + packfile: use higher-level interface to implement `has_object_pack()`
 + odb/source-packed: wire up `reprepare()` callback
 + odb/source-packed: wire up `close()` callback
 + odb/source-packed: start converting to a proper `struct odb_source`
 + odb/source-packed: store pointer to "files" instead of generic source
 + packfile: move packed source into "odb/" subsystem
 + packfile: split out packfile list logic
 + packfile: rename `struct packfile_store` to `odb_source_packed`
 + Merge branch 'ps/odb-source-loose' into ps/odb-source-packed
 (this branch is used by ps/connected-generic-promisor-checks, ps/libgit-in-subdir and ps/odb-generalize-prepare.)

 The packed object source has been refactored into a proper struct
 odb_source.

 Will cook in 'next'.
 cf. <ajK2QKdW-TdflfR0@denethor>
 source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
  (merged to 'next' on 2026-06-19 at a19dbb4193)
 + ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Will cook in 'next'.
 cf. <xmqqik7fsv2m.fsf@gitster.g>
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-20) 2 commits
  (merged to 'next' on 2026-06-20 at d8ca0d5180)
 + environment: use 'repo->initialized' for repo_protect_hfs() and repo_protect_ntfs()
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will cook in 'next'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>
 source: <20260620140957.667820-1-cat@malon.dev>


* ps/cat-file-remote-object-info (2026-06-19) 12 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - t1006: split test utility functions into new "lib-cat-file.sh"
 - cat-file: declare loop counter inside for()
 - git-compat-util: add strtoul_ul() with error handling
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Waiting for response(s) to review comment(s).
 cf. <CAOLa=ZSvxXuf_bSzKMvViNQ5MuDAqxnQdo4asF9vfMhJaDQcVw@mail.gmail.com>
 source: <20260619-ps-eric-work-rebase-v13-0-3d4c7315d2f8@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
  (merged to 'next' on 2026-06-17 at dd9a463369)
 + b4: introduce configuration for the Git project
 + MyFirstContribution: recommend the use of b4
 + MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Will cook in 'next'.
 cf. <87eci7yomp.fsf@emacs.iotcl.com>
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-21) 5 commits
 - pack-objects: support `--delta-islands` with `--path-walk`
 - pack-objects: extract `record_tree_depth()` helper
 - pack-objects: support reachability bitmaps with `--path-walk`
 - t/perf: drop p5311's lookup-table permutation
 - Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Will merge to 'next'.
 cf. <xmqqwlvq1qyy.fsf@gitster.g>
 source: <cover.1782082975.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 source: <20260619162105.648495-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Expecting a reroll.
 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-20) 3 commits
 - repo: add path.gitdir with absolute and relative suffix formatting
 - repo: add path.commondir with absolute and relative suffix formatting
 - path: extract append_formatted_path() and use in rev-parse

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Expecting a reroll.
 cf. <CA+rGoLcahV9pPqkSAKvz9o3g2cw2PsYXxzzwAC8XoseFzMB5rA@mail.gmail.com>
 source: <20260621055534.46798-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-15) 10 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Needs review.
 source: <20260615-b4-pks-history-drop-v6-0-2e329e536d78@pks.im>


* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
  (merged to 'next' on 2026-06-18 at b63b3d1f25)
 + read_gitfile(): simplify NOT_A_REPO error message

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Will cook in 'next'.
 cf. <xmqqjyry4hax.fsf@gitster.g>
 source: <20260616123516.GA2301231@coredump.intra.peff.net>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-06-20) 2 commits
 - completion: hide dotfiles by default for path completion
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqq1pe0g08t.fsf@gitster.g>
 source: <pull.2311.v3.git.git.1781978156.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will cook in 'next'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* hn/branch-delete-merged (2026-06-22) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 "git branch" command learned "--delete-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Waiting for response(s) to review comment(s).
 cf. <cb6fcdfb-67b4-429d-b820-c4e623f28cfa@gmail.com>
 source: <pull.2285.v17.git.git.1782113388.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will cook in 'next'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-06-18) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Needs review.
 source: <pull.2281.v14.git.git.1781786652.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
  (merged to 'next' on 2026-06-18 at e51bee59ca)
 + cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 + merge-ort: abort merge when trees have duplicate entries
 + merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 + merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 + merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Will cook in 'next'.
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-06-22) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Will merge to 'next'.
 cf. <xmqqechy1o7p.fsf@gitster.g>
 source: <cover.1782117361.git.phillip.wood@dunelm.org.uk>


* ps/shift-root-in-graph (2026-06-20) 3 commits
 - graph: indent visual root in graph
 - revision: add peek functions for lookahead
 - lib-log-graph: move check_graph function

 "git log --graph" has been modified to visually distinguish
 parentless "root" commits (and commits that become roots due to
 history simplification) by indenting them, preventing them from
 appearing falsely related to unrelated commits rendered immediately
 above them.

 Waiting for response(s) to review comment(s).
 The peek-ahead approach may need to be scratched.
 cf. <CAN5EUNSj-2hkEBF7N_M6RLsuujDNFNUF3w53zR7SN1_5i2BRyg@mail.gmail.com>
 cf. <CAL71e4OQ_kGb+UwHgikHG236-8BVtc7P9OdpV4i4UzYRCoPczw@mail.gmail.com>
 source: <20260620-ps-pre-commit-indent-v6-0-cdc6d8fd5fbc@gmail.com>


^ permalink raw reply	[relevance 18%]

* Re: What's cooking in git.git (Jun 2026, #07)
  @ 2026-06-22 12:50 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-22 12:50 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

> On Fri, Jun 19, 2026 at 06:33:33PM -0700, Junio C Hamano wrote:
>> * ps/gitlab-ci-windows (2026-06-15) 1 commit
>>  - gitlab-ci: migrate Windows builds away from Chocolatey
>> ... 
> Might even be a candidate to also merge to `master` before the release,
> if you feel comfortable with that.

Yeah, exactly my thought.  I've carelessly merged some stuff that
had wider implications (I do not think they are buggy after reading
the patches, though) than the topic name suggested near the tip of
'master' recently, but compared to them the potential blast radius
of this topic is certainly much smaller ;-)


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jun 2026, #07)
@ 2026-06-20  1:33 17% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-06-20  1:33 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.55-rc1 has been tagged and pushed out.  There may be a few
more topics in 'next' that we may want to include in the release
that I didn't manage or I forgot (please let me know), but basically
this development cycle is over, the tree is feature-frozen, and
remaining topics in 'next' will stay in "Will cook in 'next'"
instead of "Will merge to 'master'" state.  We'd want to force
ourselves to concentrate on addressing topics that are important
fixes but still in the "Needs review" state, and of course, find any
correct any regressions relative to Git 2.54, until we are ready to
tag Git 2.55 final.

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

* dl/posix-unused-warning-clang (2026-06-13) 3 commits
  (merged to 'next' on 2026-06-15 at 1d7e627c24)
 + compat/posix.h: simplify GIT_GNUC_PREREQ() comparison
 + compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSED
 + compat/posix.h: enable UNUSED warning messages for Clang

 The UNUSED macro in 'compat/posix.h' has been updated to use a
 newly introduced GIT_CLANG_PREREQ macro for compiler version
 checks, and the existing GIT_GNUC_PREREQ macro has been modernized
 to use explicit major/minor comparisons rather than bit-shifting.
 cf. <ai-8Y1r9zbWfdY8p@pks.im>
 source: <20260613122711.38662-1-dominik.loidolt@univie.ac.at>


* en/commit-graph-timestamp-fix (2026-06-13) 1 commit
  (merged to 'next' on 2026-06-16 at 13248b8196)
 + commit-graph: use timestamp_t for max parent generation accumulator

 compute_reachable_generation_numbers() in commit-graph used a 32-bit
 integer to accumulate parent generations, which is OK for generation
 number v1 (topological levels), but with generation number v2
 (adjusted committer timestamps), it truncated timestamps beyond
 2106.  Fixed by widening the accumulator to timestamp_t.
 cf. <09e50180-e165-48d8-a9d0-485283342f5c@gmail.com>
 source: <pull.2148.git.1781420271100.gitgitgadget@gmail.com>


* jc/t1400-fifo-cleanup (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at 7d5acd110a)
 + t1400: have fifo test clean after itself

 Test cleanup.
 cf. <aiqs5Wq2Di-6yW0D@pks.im>
 source: <xmqqo6hit6rn.fsf@gitster.g>


* js/objects-larger-than-4gb-on-windows (2026-06-18) 1 commit
  (merged to 'next' on 2026-06-18 at 99d7cf9126)
 + zlib: properly clamp to uLong

 A hotfix to an earlier attempt to update code paths that assumed
 "unsigned long" was long enough for "size_t".
 source: <pull.2153.git.1781790619424.gitgitgadget@gmail.com>


* ps/transport-helper-tsan-fix (2026-06-09) 1 commit
  (merged to 'next' on 2026-06-15 at 0857e6696f)
 + transport-helper: fix TSAN race in transfer_debug()

 The TSAN race in transfer_debug() within transport-helper.c has been
 resolved by initializing the debug flag early in
 bidirectional_transfer_loop() before spawning worker threads, allowing
 the removal of a TSAN suppression.
 cf. <20260609002833.GE358144@coredump.intra.peff.net>
 cf. <20260611083320.GI2191159@coredump.intra.peff.net>
 source: <20260609134741.4727-2-pushkarkumarsingh1970@gmail.com>


* ta/doc-config-adoc-fixes (2026-06-11) 3 commits
  (merged to 'next' on 2026-06-15 at 93340b5cf0)
 + doc: git-config: escape erroneous highlight markup
 + doc: config/sideband: fix description list delimiter
 + doc: config: terminate runaway lists

 Various AsciiDoc markup fixes in 'git config' documentation and
 related files to ensure lists and formatting are rendered correctly.
 cf. <20260612045329.GA593075@coredump.intra.peff.net>
 source: <20260611161946.12166-1-taahol@utu.fi>


* td/describe-tag-iteration (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at 1ae171f3b7)
 + describe: limit default ref iteration to tags

 'git describe' has been taught to pass the 'refs/tags/' prefix down to
 the ref iterator when '--all' is not requested, avoiding unnecessary
 iteration over non-tag refs.
 cf. <20260611064912.GC2191159@coredump.intra.peff.net>
 source: <20260610-describe-tag-ref-scope-v3-1-5aa63ab279f7@gmail.com>


* td/ls-files-pathspec-prefilter (2026-06-11) 1 commit
  (merged to 'next' on 2026-06-15 at 38918c4cfd)
 + ls-files: filter pathspec before lstat

 `git ls-files --modified` and `git ls-files --deleted` have been
 optimized to filter with pathspec before calling lstat() when there is
 only a single pathspec item, avoiding unnecessary filesystem access
 for entries that will not be shown.
 cf. <xmqqfr2tnfk0.fsf@gitster.g>
 source: <20260611-ls-files-pathspec-lstat-v3-1-f967e1a00c13@gmail.com>

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

* jc/submittingpatches-design-critiques (2026-06-19) 1 commit
 - SubmittingPatches: address design critiques

 The documentation in SubmittingPatches has been updated to clarify how
 patch contributors should respond to design and viability critiques,
 and how the resolution of such critiques should be recorded in the
 final commit messages.

 Needs review.
 source: <xmqqik7eld2g.fsf_-_@gitster.g>


* wy/doc-clarify-review-replies (2026-06-17) 2 commits
 - doc: advise batching patch rerolls
 - doc: encourage review replies before rerolling

 Documentation on community contribution guidelines has been updated to
 encourage replying to review comments before rerolling, and to advise
 a default limit of at most one reroll per day to give reviewers across
 different time zones enough time to participate.

 Expecting a reroll.
 cf. <ajVCD51lLvHreyJB@wyuan.org>
 source: <cover.1781714757.git.wy@wyuan.org>


* ps/gitlab-ci-windows (2026-06-15) 1 commit
 - gitlab-ci: migrate Windows builds away from Chocolatey

 Wean the Windows builds in GitLab CI procedure away from
 (unfortunately unreliable) Chocolatey to install dependencies.

 Will merge to 'next'?
 cf. <ajL1677NQShTO6tD@denethor>
 source: <20260615-b4-pks-gitlab-ci-drop-chocolatey-v1-1-51a6e7d5e388@pks.im>


* ty/migrate-ignorecase (2026-06-19) 2 commits
 - config: use repo_ignore_case() to access core.ignorecase
 - environment: move ignore_case into repo_config_values

 The global configuration variable ignore_case (representing the
 core.ignorecase configuration) has been migrated into struct
 repo_config_values to tie it to a specific repository instance.

 Needs review.
 source: <20260619155152.642760-1-cat@malon.dev>


* mm/line-log-limited-ops (2026-06-18) 7 commits
 - diffcore-pickaxe: scope -G to the -L tracked range
 - diff: support --check with -L line ranges
 - line-log: support diff stat formats with -L
 - diff: extract a line-range diff helper for reuse
 - diff: emit -L hunk headers via xdiff's formatter
 - diff: simplify the line-range filter by classifying removals immediately
 - diff: rename and group the line-range filter for clarity

 "git log -L<range>:<path>" learned to limit various "diff" operations
 like --stat, --check, -G, to the specified range:path.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q8bpl03.fsf@gitster.g>
 source: <pull.2152.git.1781806593.gitgitgadget@gmail.com>


* hn/history-squash (2026-06-18) 6 commits
 - SQUASH??? avoid test_grep lint triggering on uses of raw grep
 - SQUASH??? avoid test number clash by moving 3454-h-squash to 3455
 - history: re-edit a squash with every message
 - history: add squash subcommand to fold a range
 - history: give commit_tree_ext a message template
 - history: extract helper for a commit's parent tree

 The experimental "git history" command has been taught a new
 "squash" subcommand to fold a range of commits into a single commit,
 replaying any descendants on top.

 Waiting for response(s) to review comment(s).
 cf. <ajU8T2JFJTdk1hr2@pks.im>
 source: <pull.2337.v3.git.git.1781810226.gitgitgadget@gmail.com>


* ps/t4216-tap-fix (2026-06-19) 1 commit
 - t4216: fix no-op test that breaks TAP output

 TAP output breakage fix.

 Waiting for response(s) to review comment(s).
 cf. <xmqqa4sqlchz.fsf@gitster.g>
 source: <20260619-pks-t4216-drop-unused-prereq-v1-1-2ce0d7bea088@pks.im>


* hn/macos-linker-warning (2026-06-19) 1 commit
 - config.mak.uname: avoid macOS dup-library warning

 Xcode 15 and later has a linker set to complain when the same library
 archive is listed twice on the command line.  Squelch the annoyance.

 Will merge to 'next'?
 source: <pull.2314.v3.git.git.1781901127385.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* mh/fetch-follow-remote-head-config (2026-06-19) 8 commits
 - fetch: fixup a misaligned comment
 - fetch: add configuration variable fetch.followRemoteHEAD
 - fetch: refactor do_fetch handling of followRemoteHEAD
 - fetch: return 0 on known git_fetch_config
 - fetch: rename function report_set_head
 - t5510: cleanup remote in followRemoteHEAD dangling ref test
 - doc: explain fetchRemoteHEADWarn advice
 - fetch: fixup set_head advice for warn-if-not-branch

 The `fetch.followRemoteHEAD` configuration variable has been added to
 provide a default for the per-remote `remote.<name>.followRemoteHEAD`
 setting.

 Will merge to 'next'?
 cf. <xmqqcxxp1j2t.fsf@gitster.g>
 source: <20260619094751.2996804-1-m@lfurio.us>


* ps/refs-writing-subcommands (2026-06-17) 5 commits
 - builtin/refs: add "rename" subcommand
 - builtin/refs: add "create" subcommand
 - builtin/refs: add "update" subcommand
 - builtin/refs: add "delete" subcommand
 - builtin/refs: drop `the_repository`

 The "git refs" toolbox has been extended with new "create", "delete",
 "update", and "rename" subcommands to create, delete, update, and
 rename references, respectively.

 Needs review.
 source: <20260617-pks-refs-writing-subcommands-v2-0-07f3d18336f9@pks.im>


* po/hash-object-size-t (2026-06-16) 6 commits
 - hash-object: add a >4GB/LLP64 test case using filtered input
 - hash-object: add another >4GB/LLP64 test case
 - hash-object --stdin: verify that it works with >4GB/LLP64
 - hash algorithms: use size_t for section lengths
 - object-file.c: use size_t for header lengths
 - hash-object: demonstrate a >4GB/LLP64 problem

 Support for hashing loose or packed objects larger than 4GB on Windows
 and other LLP64 platforms has been improved by converting object header
 buffers and data-handling functions from 'unsigned long' to 'size_t'.

 Will merge to 'next'.
 cf. <ajOQthRjhD3hRM9w@pks.im>
 source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>


* kh/submittingpatches-trailers (2026-06-18) 5 commits
 - SubmittingPatches: note that trailer order matters
 - SubmittingPatches: be consistent with trailer markup
 - SubmittingPatches: document Based-on-patch-by trailer
 - SubmittingPatches: discourage common Linux trailers
 - SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Will merge to 'next'?
 cf. <xmqq4ij0vo8f.fsf@gitster.g>
 source: <V3_CV_SubPatches_trailers.9ec@msgid.xyz>


* mv/log-follow-mergy (2026-06-14) 1 commit
 - log: improve --follow following renames for non-linear history

 "git log --follow" has been updated to handle non-linear history, in
 which the path being tracked gets renamed differently in multiple
 history lines, better.

 Needs review.
 source: <ai-aE83w02xPRlPr@collabora.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The `git multi-pack-index write --incremental` command has been
 corrected to properly honor the `--base` option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* mm/test-grep-lint (2026-06-12) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 Needs review.
 source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>


* js/objects-larger-than-4gb-on-windows-more (2026-06-15) 7 commits
  (merged to 'next' on 2026-06-18 at 2b3ac350e6)
 + odb: use size_t for object_info.sizep and the size APIs
 + packfile,delta: drop the `cast_size_t_to_ulong()` wrappers
 + pack-objects: use size_t for in-core object sizes
 + packfile: widen unpack_entry()'s size out-parameter to size_t
 + pack-objects(check_pack_inflate()): use size_t instead of unsigned long
 + patch-delta: use size_t for sizes
 + compat/msvc: use _chsize_s for ftruncate

 Will cook in 'next'.
 cf. <ajPhBn7n1wR-sii4@pks.im>
 source: <pull.2137.v2.git.1781524349.gitgitgadget@gmail.com>


* kw/gitattributes-typofix (2026-06-15) 1 commit
  (merged to 'next' on 2026-06-17 at 14ff167ef8)
 + gitattributes: fix eol attribute for Perl scripts

 Will cook in 'next'.
 cf. <ai-5vfY8D84UhsB4@pks.im>
 source: <pull.2151.v2.git.1781510039164.gitgitgadget@gmail.com>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
  (merged to 'next' on 2026-06-17 at 43ed8b3969)
 + cat-file: speed up default format

 Will cook in 'next'.
 cf. <20260615165326.GA91269@coredump.intra.peff.net>
 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <xmqq33yzd9yf.fsf@gitster.g>
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 Needs review.
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Needs review.
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-06-16) 4 commits
 - SQUASH??? prepare for mm/test-grep-lint
 - replay: offer an option to linearize the commit topology
 - replay: add helper to put entry into mapped_commits
 - replay: refactor enum replay_mode into a bool

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Needs review.
 source: <20260616-toon-git-replay-drop-merges-v3-0-153e9eb99ce1@iotcl.com>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Will cook in 'next'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-avoid-chdir-notify-reparent (2026-06-19) 11 commits
 - refs: drop local buffer in `refs_compute_filesystem_location()`
 - refs: fix recursing `get_main_ref_store()` with "onbranch" config
 - refs/reftable-backend: manually parse "core.sharedRepository"
 - refs: move parsing of "core.logAllRefUpdates" back into ref stores
 - repository: free main reference database
 - chdir-notify: drop unused `chdir_notify_reparent()`
 - refs: unregister reference stores from "chdir_notify"
 - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 - setup: stop applying repository format twice
 - setup: inline `check_and_apply_repository_format()`
 - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent

 The reference backends have been converted to always use absolute
 paths internally. This allows dropping the calls to
 `chdir_notify_reparent()` and fixes a memory leak in how the
 reference database is constructed with an "onbranch" condition.

 Needs review.
 source: <20260619-b4-pks-refs-avoid-chdir-notify-reparent-v4-0-a6472be7acc4@pks.im>


* ps/odb-source-packed (2026-06-16) 18 commits
  (merged to 'next' on 2026-06-19 at dcf0c084e4)
 + odb/source-packed: drop pointer to "files" parent source
 + midx: refactor interfaces to work on "packed" source
 + odb/source-packed: stub out remaining functions
 + odb/source-packed: wire up `freshen_object()` callback
 + odb/source-packed: wire up `find_abbrev_len()` callback
 + odb/source-packed: wire up `count_objects()` callback
 + odb/source-packed: wire up `for_each_object()` callback
 + odb/source-packed: wire up `read_object_stream()` callback
 + odb/source-packed: wire up `read_object_info()` callback
 + packfile: use higher-level interface to implement `has_object_pack()`
 + odb/source-packed: wire up `reprepare()` callback
 + odb/source-packed: wire up `close()` callback
 + odb/source-packed: start converting to a proper `struct odb_source`
 + odb/source-packed: store pointer to "files" instead of generic source
 + packfile: move packed source into "odb/" subsystem
 + packfile: split out packfile list logic
 + packfile: rename `struct packfile_store` to `odb_source_packed`
 + Merge branch 'ps/odb-source-loose' into ps/odb-source-packed

 The packed object source has been refactored into a proper struct
 odb_source.

 Will cook in 'next'.
 cf. <ajK2QKdW-TdflfR0@denethor>
 source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
  (merged to 'next' on 2026-06-19 at a19dbb4193)
 + ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Will cook in 'next'.
 cf. <xmqqik7fsv2m.fsf@gitster.g>
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will cook in 'next'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>


* ps/cat-file-remote-object-info (2026-06-19) 12 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - t1006: split test utility functions into new "lib-cat-file.sh"
 - cat-file: declare loop counter inside for()
 - git-compat-util: add strtoul_ul() with error handling
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Needs review.
 source: <20260619-ps-eric-work-rebase-v13-0-3d4c7315d2f8@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
  (merged to 'next' on 2026-06-17 at dd9a463369)
 + b4: introduce configuration for the Git project
 + MyFirstContribution: recommend the use of b4
 + MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Will cook in 'next'.
 cf. <87eci7yomp.fsf@emacs.iotcl.com>
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-15) 6 commits
 - SQUASH???
 - pack-objects: support `--delta-islands` with `--path-walk`
 - pack-objects: extract `record_tree_depth()` helper
 - pack-objects: support reachability bitmaps with `--path-walk`
 - t/perf: drop p5311's lookup-table permutation
 - Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Waiting for response(s) to review comment(s).
 cf. <849c659f-efa8-430a-bfac-0c26a3ed1aaa@gmail.com>
 cf. <xmqqjyrzbjyf.fsf@gitster.g>
 cf. <7afdaf77-07f5-4d48-955d-e153d148f647@gmail.com>
 source: <cover.1780438896.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-19) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 source: <20260619162105.648495-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Expecting a reroll.
 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-15) 4 commits
 - repo: add path.gitdir with absolute and relative suffix formatting
 - repo: add path.commondir with absolute and relative suffix formatting
 - rev-parse: use append_formatted_path() for path formatting
 - path: introduce append_formatted_path() for shared path formatting

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Expecting a reroll.
 cf. <CA+rGoLfhhRNrSReeJ1grhy+2K3BSrikTCNgGpCaGqc4fFp3Lfg@mail.gmail.com>
 source: <20260616044953.184806-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-15) 10 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Needs review.
 source: <20260615-b4-pks-history-drop-v6-0-2e329e536d78@pks.im>


* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
  (merged to 'next' on 2026-06-18 at b63b3d1f25)
 + read_gitfile(): simplify NOT_A_REPO error message

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Will cook in 'next'.
 cf. <xmqqjyry4hax.fsf@gitster.g>
 source: <20260616123516.GA2301231@coredump.intra.peff.net>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <729baf6b-53ea-4e8d-95ab-5935667e66c2@app.fastmail.com>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-05-26) 1 commit
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqqik7qusuc.fsf@gitster.g>
 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will cook in 'next'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* hn/branch-delete-merged (2026-06-18) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 "git branch" command learned "--delete-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Waiting for response(s) to review comment(s).
 cf. <78b6dfdd-df61-4c44-96eb-b527cb26243c@gmail.com>
 cf. <f68e2a11-02a5-47b9-a01a-458eba821c37@gmail.com>
 cf. <37f2a483-c8bf-4c24-84de-c6233cc20b25@gmail.com>
 cf. <xmqq33yimsdp.fsf@gitster.g>
 source: <pull.2285.v16.git.git.1781810729.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will cook in 'next'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-06-18) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Needs review.
 source: <pull.2281.v14.git.git.1781786652.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
  (merged to 'next' on 2026-06-18 at e51bee59ca)
 + cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 + merge-ort: abort merge when trees have duplicate entries
 + merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 + merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 + merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Will cook in 'next'.
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Waiting for response(s) to review comment(s).
 cf. <xmqqqzmdoya9.fsf@gitster.g>
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-06-13) 2 commits
 - graph: indent visual root in graph
 - lib-log-graph: move check_graph function

 "git log --graph" has been modified to visually distinguish
 parentless "root" commits (and commits that become roots due to
 history simplification) by indenting them, preventing them from
 appearing falsely related to unrelated commits rendered immediately
 above them.

 Waiting for response(s) to review comment(s).
 cf. <20260617202744.GA3465855@coredump.intra.peff.net>
 source: <20260613-ps-pre-commit-indent-v5-0-8d308efea63d@gmail.com>

--------------------------------------------------
[Discarded]

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 . fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Retracted.
 cf. <CAL71e4MrVqC1=AR6x0_8S=8kVqPdDkhgCZRb4etFsxTzd6s_8Q@mail.gmail.com>
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 . repack-promisor: add missing headers
 . t7703: test for promisor file content after geometric repack
 . t7700: test for promisor file content after repack
 . repack-promisor: preserve content of promisor files after repack
 . repack-promisor add helper to fill promisor file after repack
 . pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Retracted.
 cf. <agx_GPfBKpkSc3Gx@lorenzo-VM>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 . contrib/subtree: reduce recursion during split
 . contrib/subtree: functionalize split traversal
 . contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Retracted.
 cf. <0915b5cc-5cbb-4cce-a832-147f85d4ff1f@howdoi.land>
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 . sideband: delay sanitizing by default to Git v3.0
 . Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 Retracted.
 cf. <xmqqzf11oz7a.fsf@gitster.g>
 source: <20260305233452.3727126-8-gitster@pobox.com>


* kk/remove-get-reachable-subset (2026-06-11) 1 commit
 . commit-reach: remove get_reachable_subset()

 API clean-up.

 Retracted.
 cf. <CAL71e4P3Oq08xVPZ+dxQ8L5PKekPJN0RsL4pTicom1og7-1D=A@mail.gmail.com>
 source: <pull.2144.v2.git.1781178567862.gitgitgadget@gmail.com>


* ds/config-no-includes (2026-06-08) 3 commits
 . git: add --no-includes top-level option
 . config: add GIT_CONFIG_INCLUDES
 . git-config.adoc: fix paragraph break

 Two new mechanisms, the GIT_CONFIG_INCLUDES environment variable and
 the top-level --no-includes command-line option, have been introduced
 to ignore configuration include directives.

 Retracted.
 cf. <539713c4-b291-42e6-8541-a16a454518f5@gmail.com>
 source: <pull.2139.git.1780927027.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 17%]

* What's cooking in git.git (Jun 2026, #06)
@ 2026-06-17 17:16 17% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-17 17:16 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.55-rc1 has been tagged and pushed out.  There may be a few
more topics in 'next' that we may want to include in the release
that I didn't manage or I forgot (please let me know), but basically
this development cycle is over, the tree is feature-frozen, and
remaining topics in 'next' will stay in "Will cook in 'next'"
instead of "Will merge to 'master'" state.  We'd want to force
ourselves to concentrate on addressing topics that are important
fixes but still in the "Needs review" state, and of course, find any
correct any regressions relative to Git 2.54, until we are ready to
tag Git 2.55 final.

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]

* mh/fetch-follow-remote-head-config (2026-06-16) 7 commits
 - fetch: fixup a misaligned comment
 - fetch: add configuration variable fetch.followRemoteHEAD
 - fetch: refactor do_fetch handling of followRemoteHEAD
 - fetch: rename function report_set_head
 - t5510: cleanup remote in followRemoteHEAD dangling ref test
 - doc: explain fetchRemoteHEADWarn advice
 - fetch: fixup set_head advice for warn-if-not-branch

 The `fetch.followRemoteHEAD` configuration variable has been added to
 provide a default for the per-remote `remote.<name>.followRemoteHEAD`
 setting.

 Will merge to 'next'?
 source: <20260616222606.1003521-1-m@lfurio.us>


* ps/refs-writing-subcommands (2026-06-17) 5 commits
 - builtin/refs: add "rename" subcommand
 - builtin/refs: add "create" subcommand
 - builtin/refs: add "update" subcommand
 - builtin/refs: add "delete" subcommand
 - builtin/refs: drop `the_repository`

 The "git refs" toolbox has been extended with new "create", "delete",
 "update", and "rename" subcommands to create, delete, update, and
 rename references, respectively.

 Will merge to 'next'?
 source: <20260617-pks-refs-writing-subcommands-v2-0-07f3d18336f9@pks.im>


* po/hash-object-size-t (2026-06-16) 6 commits
 - hash-object: add a >4GB/LLP64 test case using filtered input
 - hash-object: add another >4GB/LLP64 test case
 - hash-object --stdin: verify that it works with >4GB/LLP64
 - hash algorithms: use size_t for section lengths
 - object-file.c: use size_t for header lengths
 - hash-object: demonstrate a >4GB/LLP64 problem

 Support for hashing loose or packed objects larger than 4GB on Windows
 and other LLP64 platforms has been improved by converting object header
 buffers and data-handling functions from 'unsigned long' to 'size_t'.

 Will merge to 'next'?
 source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>

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

* ab/index-pack-retain-child-bases (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-12 at 625f76ac4c)
 + index-pack: retain child bases in delta cache

 "git index-pack" has been optimized by retaining child bases in the
 delta cache instead of immediately freeing them, letting the existing
 cache limit policy decide eviction.
 source: <pull.2131.v2.git.1780330402264.gitgitgadget@gmail.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 1 commit
  (merged to 'next' on 2026-06-11 at 3d7788721e)
 + unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.
 cf. <xmqqqzmfz91r.fsf@gitster.g>
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* jk/describe-contains-all-match-fix (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-11 at a95871538b)
 + describe: fix --exclude, --match with --contains and --all

 The 'git describe --contains --all' command has been fixed to
 properly honor the '--match' and '--exclude' options by passing
 them down to 'git name-rev' with the appropriate reference
 prefixes.
 source: <20260601233727.43558-1-jacob.e.keller@intel.com>


* js/osxkeychain-build-wo-rust (2026-06-17) 1 commit
  (merged to 'next' on 2026-06-17 at d5f6cec43d)
 + osxkeychain: fix build with Rust

 Build fix.
 source: <pull.2154.git.1781691074710.gitgitgadget@gmail.com>


* js/win-kill-child-more-gently (2026-06-04) 2 commits
  (merged to 'next' on 2026-06-11 at b4a2299e7e)
 + mingw: really handle SIGINT
 + mingw: kill child processes in a gentler way

 Advanced emulation of kill() used on Windows in GfW has been
 upstreamed to improve the symptoms like left-behind .lock files and
 that fails to let the child clean-up itself when it gets killed.
 source: <pull.2130.git.1780590261.gitgitgadget@gmail.com>


* kk/streaming-walk-pqueue (2026-05-27) 3 commits
  (merged to 'next' on 2026-06-11 at 1466219fc9)
 + revision: use priority queue for non-limited streaming walks
 + revision: introduce rev_walk_mode to clarify get_revision_1()
 + pack-objects: call release_revisions() after cruft traversal

 Streaming revision walks have been optimized by using a priority queue
 for date-sorting commits, speeding up walks repositories with many
 merges.
 source: <pull.2127.git.1779897003.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-06-10) 2 commits
  (merged to 'next' on 2026-06-11 at c89a71798a)
 + bash-completions: add --max-count-oldest
  (merged to 'next' on 2026-06-09 at 076600fa21)
 + revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.
 source: <xmqq4ijm3p2x.fsf@gitster.g>


* mm/subprocess-handshake-fix (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-11 at b649c3a97c)
 + sub-process: use gentle handshake to avoid die() on startup failure

 The subprocess handshake during startup has been made gentler by using
 packet_read_line_gently() instead of packet_read_line() to prevent the
 parent Git process from dying abruptly when a configured subprocess
 (e.g., a clean/smudge filter) fails to start.
 source: <pull.2133.v2.git.1780348848489.gitgitgadget@gmail.com>


* ps/t7527-fix-tap-output (2026-06-04) 8 commits
  (merged to 'next' on 2026-06-11 at b5a4cd26ee)
 + t: let prove fail when parsing invalid TAP output
 + t/lib-git-p4: silence output when killing p4d and its watchdog
 + t/test-lib: silence EBUSY errors on Windows during test cleanup
 + t7810: turn MB_REGEX check into a lazy prereq
 + t7527: fix broken TAP output
 + ci: unify Linux images across GitLab and GitHub
 + gitlab-ci: add missing Linux jobs
 + gitlab-ci: rearrange Linux jobs to match GitHub's order

 A recent regression in t7527 that broke TAP output has been fixed,
 some other test noise that also broke TAP output has been silenced,
 and 'prove' is now configured to fail on invalid TAP output to
 prevent future regressions.
 source: <20260604-pks-t7527-fix-tap-output-v3-0-7d766ed481e4@pks.im>


* ta/typofixes (2026-06-04) 1 commit
  (merged to 'next' on 2026-06-11 at dfb63ded01)
 + docs: fix typos

 Typofixes
 cf. <xmqqh5ncvfsu.fsf@gitster.g>
 source: <20260604131457.19215-1-taahol@utu.fi>


* wy/docs-typofixes (2026-05-29) 1 commit
  (merged to 'next' on 2026-06-11 at bd53c91110)
 + docs: fix typos and grammar

 Various typos, grammatical errors, and duplicated words in both
 documentation and code comments have been corrected.
 source: <7b502e20e9495cd4720496bd6738a1fbeb453410.1780041658.git.wy@wyuan.org>

--------------------------------------------------
[Stalled]

* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* kh/submittingpatches-trailers (2026-06-10) 6 commits
 - SubmittingPatches: note that trailer order matters
 - SubmittingPatches: be consistent with trailer markup
 - SubmittingPatches: document Based-on-patch-by trailer
 - SubmittingPatches: discourage common Linux trailers
 - SubmittingPatches: discuss non-ident trailers
 - SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Waiting for response(s) to review comment(s).
 cf. <ajJNjOYMVDwL52zY@pks.im>
 source: <CV_SubPatches_trailers.8f3@msgid.xyz>


* mv/log-follow-mergy (2026-06-14) 1 commit
 - log: improve --follow following renames for non-linear history

 "git log --follow" has been updated to handle non-linear history, in
 which the path being tracked gets renamed differently in multiple
 history lines, better.

 Needs review.
 source: <ai-aE83w02xPRlPr@collabora.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* td/ls-files-pathspec-prefilter (2026-06-11) 1 commit
  (merged to 'next' on 2026-06-15 at 38918c4cfd)
 + ls-files: filter pathspec before lstat

 `git ls-files --modified` and `git ls-files --deleted` have been
 optimized to filter with pathspec before calling lstat() when there is
 only a single pathspec item, avoiding unnecessary filesystem access
 for entries that will not be shown.

 Will merge to 'master'.
 cf. <xmqqfr2tnfk0.fsf@gitster.g>
 source: <20260611-ls-files-pathspec-lstat-v3-1-f967e1a00c13@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The `git multi-pack-index write --incremental` command has been
 corrected to properly honor the `--base` option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* en/commit-graph-timestamp-fix (2026-06-13) 1 commit
  (merged to 'next' on 2026-06-16 at 13248b8196)
 + commit-graph: use timestamp_t for max parent generation accumulator

 compute_reachable_generation_numbers() in commit-graph used a 32-bit
 integer to accumulate parent generations, which is OK for generation
 number v1 (topological levels), but with generation number v2
 (adjusted committer timestamps), it truncated timestamps beyond
 2106.  Fixed by widening the accumulator to timestamp_t.

 Will merge to 'master'.
 cf. <09e50180-e165-48d8-a9d0-485283342f5c@gmail.com>
 source: <pull.2148.git.1781420271100.gitgitgadget@gmail.com>


* mm/test-grep-lint (2026-06-12) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 Needs review.
 source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>


* js/objects-larger-than-4gb-on-windows-more (2026-06-15) 7 commits
 - odb: use size_t for object_info.sizep and the size APIs
 - packfile,delta: drop the `cast_size_t_to_ulong()` wrappers
 - pack-objects: use size_t for in-core object sizes
 - packfile: widen unpack_entry()'s size out-parameter to size_t
 - pack-objects(check_pack_inflate()): use size_t instead of unsigned long
 - patch-delta: use size_t for sizes
 - compat/msvc: use _chsize_s for ftruncate

 Needs review.
 source: <pull.2137.v2.git.1781524349.gitgitgadget@gmail.com>


* kw/gitattributes-typofix (2026-06-15) 1 commit
 - gitattributes: fix eol attribute for Perl scripts

 Will merge to 'next'.
 cf. <ai-5vfY8D84UhsB4@pks.im>
 source: <pull.2151.v2.git.1781510039164.gitgitgadget@gmail.com>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
 - cat-file: speed up default format

 Will merge to 'next'.
 cf. <20260615165326.GA91269@coredump.intra.peff.net>
 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Waiting for response(s) to review comment(s).
 cf. <xmqq33yzd9yf.fsf@gitster.g>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 Comments?
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* kk/remove-get-reachable-subset (2026-06-11) 1 commit
 - commit-reach: remove get_reachable_subset()

 API clean-up.

 Retracted.
 cf. <CAL71e4P3Oq08xVPZ+dxQ8L5PKekPJN0RsL4pTicom1og7-1D=A@mail.gmail.com>
 source: <pull.2144.v2.git.1781178567862.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Needs review.
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-06-16) 4 commits
 - SQUASH??? prepare for mm/test-grep-lint
 - replay: offer an option to linearize the commit topology
 - replay: add helper to put entry into mapped_commits
 - replay: refactor enum replay_mode into a bool

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Needs review.
 source: <20260616-toon-git-replay-drop-merges-v3-0-153e9eb99ce1@iotcl.com>


* td/describe-tag-iteration (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at 1ae171f3b7)
 + describe: limit default ref iteration to tags

 'git describe' has been taught to pass the 'refs/tags/' prefix down to
 the ref iterator when '--all' is not requested, avoiding unnecessary
 iteration over non-tag refs.

 Will merge to 'master'.
 cf. <20260611064912.GC2191159@coredump.intra.peff.net>
 source: <20260610-describe-tag-ref-scope-v3-1-5aa63ab279f7@gmail.com>


* ta/doc-config-adoc-fixes (2026-06-11) 3 commits
  (merged to 'next' on 2026-06-15 at 93340b5cf0)
 + doc: git-config: escape erroneous highlight markup
 + doc: config/sideband: fix description list delimiter
 + doc: config: terminate runaway lists

 Various AsciiDoc markup fixes in 'git config' documentation and
 related files to ensure lists and formatting are rendered correctly.

 Will merge to 'master'.
 cf. <20260612045329.GA593075@coredump.intra.peff.net>
 source: <20260611161946.12166-1-taahol@utu.fi>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Will cook in 'next'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-avoid-chdir-notify-reparent (2026-06-15) 9 commits
 - refs: drop local buffer in `refs_compute_filesystem_location()`
 - refs: fix recursing `get_main_ref_store()` with "onbranch" config
 - repository: free main reference database
 - chdir-notify: drop unused `chdir_notify_reparent()`
 - refs: unregister reference stores from "chdir_notify"
 - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 - setup: stop applying repository format twice
 - setup: inline `check_and_apply_repository_format()`
 - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent

 The reference backends have been converted to always use absolute
 paths internally. This allows dropping the calls to
 `chdir_notify_reparent()` and fixes a memory leak in how the
 reference database is constructed with an "onbranch" condition.

 Needs review.
 source: <20260615-b4-pks-refs-avoid-chdir-notify-reparent-v2-0-f4854aa99859@pks.im>


* jc/t1400-fifo-cleanup (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at 7d5acd110a)
 + t1400: have fifo test clean after itself

 Test cleanup.

 Will merge to 'master'.
 cf. <aiqs5Wq2Di-6yW0D@pks.im>
 source: <xmqqo6hit6rn.fsf@gitster.g>


* ps/odb-source-packed (2026-06-16) 18 commits
 - odb/source-packed: drop pointer to "files" parent source
 - midx: refactor interfaces to work on "packed" source
 - odb/source-packed: stub out remaining functions
 - odb/source-packed: wire up `freshen_object()` callback
 - odb/source-packed: wire up `find_abbrev_len()` callback
 - odb/source-packed: wire up `count_objects()` callback
 - odb/source-packed: wire up `for_each_object()` callback
 - odb/source-packed: wire up `read_object_stream()` callback
 - odb/source-packed: wire up `read_object_info()` callback
 - packfile: use higher-level interface to implement `has_object_pack()`
 - odb/source-packed: wire up `reprepare()` callback
 - odb/source-packed: wire up `close()` callback
 - odb/source-packed: start converting to a proper `struct odb_source`
 - odb/source-packed: store pointer to "files" instead of generic source
 - packfile: move packed source into "odb/" subsystem
 - packfile: split out packfile list logic
 - packfile: rename `struct packfile_store` to `odb_source_packed`
 - Merge branch 'ps/odb-source-loose' into ps/odb-source-packed

 The packed object source has been refactored into a proper struct
 odb_source.

 Needs review.
 source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>


* ps/transport-helper-tsan-fix (2026-06-09) 1 commit
  (merged to 'next' on 2026-06-15 at 0857e6696f)
 + transport-helper: fix TSAN race in transfer_debug()

 The TSAN race in transfer_debug() within transport-helper.c has been
 resolved by initializing the debug flag early in
 bidirectional_transfer_loop() before spawning worker threads, allowing
 the removal of a TSAN suppression.

 Will merge to 'master'.
 cf. <20260609002833.GE358144@coredump.intra.peff.net>
 cf. <20260611083320.GI2191159@coredump.intra.peff.net>
 source: <20260609134741.4727-2-pushkarkumarsingh1970@gmail.com>


* dl/posix-unused-warning-clang (2026-06-13) 3 commits
  (merged to 'next' on 2026-06-15 at 1d7e627c24)
 + compat/posix.h: simplify GIT_GNUC_PREREQ() comparison
 + compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSED
 + compat/posix.h: enable UNUSED warning messages for Clang

 The UNUSED macro in 'compat/posix.h' has been updated to use a
 newly introduced GIT_CLANG_PREREQ macro for compiler version
 checks, and the existing GIT_GNUC_PREREQ macro has been modernized
 to use explicit major/minor comparisons rather than bit-shifting.

 Will merge to 'master'.
 cf. <ai-8Y1r9zbWfdY8p@pks.im>
 source: <20260613122711.38662-1-dominik.loidolt@univie.ac.at>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
 - ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Needs review.
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will cook in 'next'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>


* ds/config-no-includes (2026-06-08) 3 commits
 - git: add --no-includes top-level option
 - config: add GIT_CONFIG_INCLUDES
 - git-config.adoc: fix paragraph break

 Two new mechanisms, the GIT_CONFIG_INCLUDES environment variable and
 the top-level --no-includes command-line option, have been introduced
 to ignore configuration include directives.

 Retracted.
 cf. <539713c4-b291-42e6-8541-a16a454518f5@gmail.com>
 source: <pull.2139.git.1780927027.gitgitgadget@gmail.com>


* ps/cat-file-remote-object-info (2026-06-08) 12 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - 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
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Expecting a reroll.
 cf. <CAN5EUNQQBRoHUbZtkhLoBX-K7_4Carsxws_fyh1Ac7Lmd_FjKg@mail.gmail.com>
 source: <20260608-ps-eric-work-rebase-v12-0-5338b766e658@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
 - b4: introduce configuration for the Git project
 - MyFirstContribution: recommend the use of b4
 - MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Will merge to 'next'.
 cf. <87eci7yomp.fsf@emacs.iotcl.com>
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-15) 6 commits
 - SQUASH???
 - pack-objects: support `--delta-islands` with `--path-walk`
 - pack-objects: extract `record_tree_depth()` helper
 - pack-objects: support reachability bitmaps with `--path-walk`
 - t/perf: drop p5311's lookup-table permutation
 - Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Waiting for response(s) to review comment(s).
 cf. <849c659f-efa8-430a-bfac-0c26a3ed1aaa@gmail.com>
 cf. <xmqqjyrzbjyf.fsf@gitster.g>
 source: <cover.1780438896.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-12) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 source: <20260612160527.167203-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Expecting a reroll.
 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-15) 4 commits
 - repo: add path.gitdir with absolute and relative suffix formatting
 - repo: add path.commondir with absolute and relative suffix formatting
 - rev-parse: use append_formatted_path() for path formatting
 - path: introduce append_formatted_path() for shared path formatting

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Expecting a reroll.
 cf. <CA+rGoLfhhRNrSReeJ1grhy+2K3BSrikTCNgGpCaGqc4fFp3Lfg@mail.gmail.com>
 source: <20260616044953.184806-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-15) 10 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Needs review.
 source: <20260615-b4-pks-history-drop-v6-0-2e329e536d78@pks.im>


* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
 - read_gitfile(): simplify NOT_A_REPO error message

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Will merge to 'next'?
 cf. <xmqqjyry4hax.fsf@gitster.g>
 source: <20260616123516.GA2301231@coredump.intra.peff.net>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Waiting for response(s) to review comment(s).
 cf. <xmqqcxxyt4op.fsf@gitster.g>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-05-26) 1 commit
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqqik7qusuc.fsf@gitster.g>
 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will cook in 'next'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* hn/branch-prune-merged (2026-06-15) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Waiting for response(s) to review comment(s).
 cf. <78b6dfdd-df61-4c44-96eb-b527cb26243c@gmail.com>
 cf. <f68e2a11-02a5-47b9-a01a-458eba821c37@gmail.com>
 source: <pull.2285.v15.git.git.1781542042.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will cook in 'next'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-23) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Needs review.
 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Will merge to 'next'?
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Waiting for response(s) to review comment(s).
 cf. <xmqqqzmdoya9.fsf@gitster.g>
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-06-13) 2 commits
 - graph: indent visual root in graph
 - lib-log-graph: move check_graph function

 "git log --graph" has been modified to visually distinguish
 parentless "root" commits (and commits that become roots due to
 history simplification) by indenting them, preventing them from
 appearing falsely related to unrelated commits rendered immediately
 above them.

 Will merge to 'next'?
 cf. <xmqq8q8e4f3s.fsf@gitster.g>
 source: <20260613-ps-pre-commit-indent-v5-0-8d308efea63d@gmail.com>

--------------------------------------------------
[Discarded]

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 - fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Retracted.
 cf. <CAL71e4MrVqC1=AR6x0_8S=8kVqPdDkhgCZRb4etFsxTzd6s_8Q@mail.gmail.com>
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Retracted.
 cf. <agx_GPfBKpkSc3Gx@lorenzo-VM>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 . contrib/subtree: reduce recursion during split
 . contrib/subtree: functionalize split traversal
 . contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Retracted.
 cf. <0915b5cc-5cbb-4cce-a832-147f85d4ff1f@howdoi.land>
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 . sideband: delay sanitizing by default to Git v3.0
 . Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 Retracted.
 cf. <xmqqzf11oz7a.fsf@gitster.g>
 source: <20260305233452.3727126-8-gitster@pobox.com>


^ permalink raw reply	[relevance 17%]

* What's cooking in git.git (Jun 2026, #06)
@ 2026-06-17 17:06 17% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-17 17:06 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.55-rc1 has been tagged and pushed out.  There may be a few
more topics in 'next' that we may want to include in the release
that I didn't manage or I forgot (please let me know), but basically
this development cycle is over, the tree is feature-frozen, and
remaining topics in 'next' will stay in "Will cook in 'next'"
instead of "Will merge to 'master'" state.  We'd want to force
ourselves to concentrate on addressing topics that are important
fixes but still in the "Needs review" state, and of course, find any
correct any regressions relative to Git 2.54, until we are ready to
tag Git 2.55 final.

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]

* mh/fetch-follow-remote-head-config (2026-06-16) 7 commits
 - fetch: fixup a misaligned comment
 - fetch: add configuration variable fetch.followRemoteHEAD
 - fetch: refactor do_fetch handling of followRemoteHEAD
 - fetch: rename function report_set_head
 - t5510: cleanup remote in followRemoteHEAD dangling ref test
 - doc: explain fetchRemoteHEADWarn advice
 - fetch: fixup set_head advice for warn-if-not-branch

 The `fetch.followRemoteHEAD` configuration variable has been added to
 provide a default for the per-remote `remote.<name>.followRemoteHEAD`
 setting.

 Will merge to 'next'?
 source: <20260616222606.1003521-1-m@lfurio.us>


* ps/refs-writing-subcommands (2026-06-17) 5 commits
 - builtin/refs: add "rename" subcommand
 - builtin/refs: add "create" subcommand
 - builtin/refs: add "update" subcommand
 - builtin/refs: add "delete" subcommand
 - builtin/refs: drop `the_repository`

 The "git refs" toolbox has been extended with new "create", "delete",
 "update", and "rename" subcommands to create, delete, update, and
 rename references, respectively.

 Will merge to 'next'?
 source: <20260617-pks-refs-writing-subcommands-v2-0-07f3d18336f9@pks.im>


* po/hash-object-size-t (2026-06-16) 6 commits
 - hash-object: add a >4GB/LLP64 test case using filtered input
 - hash-object: add another >4GB/LLP64 test case
 - hash-object --stdin: verify that it works with >4GB/LLP64
 - hash algorithms: use size_t for section lengths
 - object-file.c: use size_t for header lengths
 - hash-object: demonstrate a >4GB/LLP64 problem

 Support for hashing loose or packed objects larger than 4GB on Windows
 and other LLP64 platforms has been improved by converting object header
 buffers and data-handling functions from 'unsigned long' to 'size_t'.

 Will merge to 'next'?
 source: <pull.2138.v2.git.1781621398.gitgitgadget@gmail.com>

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

* ab/index-pack-retain-child-bases (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-12 at 625f76ac4c)
 + index-pack: retain child bases in delta cache

 "git index-pack" has been optimized by retaining child bases in the
 delta cache instead of immediately freeing them, letting the existing
 cache limit policy decide eviction.
 source: <pull.2131.v2.git.1780330402264.gitgitgadget@gmail.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 1 commit
  (merged to 'next' on 2026-06-11 at 3d7788721e)
 + unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.
 cf. <xmqqqzmfz91r.fsf@gitster.g>
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* jk/describe-contains-all-match-fix (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-11 at a95871538b)
 + describe: fix --exclude, --match with --contains and --all

 The 'git describe --contains --all' command has been fixed to
 properly honor the '--match' and '--exclude' options by passing
 them down to 'git name-rev' with the appropriate reference
 prefixes.
 source: <20260601233727.43558-1-jacob.e.keller@intel.com>


* js/osxkeychain-build-wo-rust (2026-06-17) 1 commit
  (merged to 'next' on 2026-06-17 at d5f6cec43d)
 + osxkeychain: fix build with Rust

 Build fix.
 source: <pull.2154.git.1781691074710.gitgitgadget@gmail.com>


* js/win-kill-child-more-gently (2026-06-04) 2 commits
  (merged to 'next' on 2026-06-11 at b4a2299e7e)
 + mingw: really handle SIGINT
 + mingw: kill child processes in a gentler way

 Advanced emulation of kill() used on Windows in GfW has been
 upstreamed to improve the symptoms like left-behind .lock files and
 that fails to let the child clean-up itself when it gets killed.
 source: <pull.2130.git.1780590261.gitgitgadget@gmail.com>


* kk/streaming-walk-pqueue (2026-05-27) 3 commits
  (merged to 'next' on 2026-06-11 at 1466219fc9)
 + revision: use priority queue for non-limited streaming walks
 + revision: introduce rev_walk_mode to clarify get_revision_1()
 + pack-objects: call release_revisions() after cruft traversal

 Streaming revision walks have been optimized by using a priority queue
 for date-sorting commits, speeding up walks repositories with many
 merges.
 source: <pull.2127.git.1779897003.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-06-10) 2 commits
  (merged to 'next' on 2026-06-11 at c89a71798a)
 + bash-completions: add --max-count-oldest
  (merged to 'next' on 2026-06-09 at 076600fa21)
 + revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.
 source: <xmqq4ijm3p2x.fsf@gitster.g>


* mm/subprocess-handshake-fix (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-11 at b649c3a97c)
 + sub-process: use gentle handshake to avoid die() on startup failure

 The subprocess handshake during startup has been made gentler by using
 packet_read_line_gently() instead of packet_read_line() to prevent the
 parent Git process from dying abruptly when a configured subprocess
 (e.g., a clean/smudge filter) fails to start.
 source: <pull.2133.v2.git.1780348848489.gitgitgadget@gmail.com>


* ps/t7527-fix-tap-output (2026-06-04) 8 commits
  (merged to 'next' on 2026-06-11 at b5a4cd26ee)
 + t: let prove fail when parsing invalid TAP output
 + t/lib-git-p4: silence output when killing p4d and its watchdog
 + t/test-lib: silence EBUSY errors on Windows during test cleanup
 + t7810: turn MB_REGEX check into a lazy prereq
 + t7527: fix broken TAP output
 + ci: unify Linux images across GitLab and GitHub
 + gitlab-ci: add missing Linux jobs
 + gitlab-ci: rearrange Linux jobs to match GitHub's order

 A recent regression in t7527 that broke TAP output has been fixed,
 some other test noise that also broke TAP output has been silenced,
 and 'prove' is now configured to fail on invalid TAP output to
 prevent future regressions.
 source: <20260604-pks-t7527-fix-tap-output-v3-0-7d766ed481e4@pks.im>


* ta/typofixes (2026-06-04) 1 commit
  (merged to 'next' on 2026-06-11 at dfb63ded01)
 + docs: fix typos

 Typofixes
 cf. <xmqqh5ncvfsu.fsf@gitster.g>
 source: <20260604131457.19215-1-taahol@utu.fi>


* wy/docs-typofixes (2026-05-29) 1 commit
  (merged to 'next' on 2026-06-11 at bd53c91110)
 + docs: fix typos and grammar

 Various typos, grammatical errors, and duplicated words in both
 documentation and code comments have been corrected.
 source: <7b502e20e9495cd4720496bd6738a1fbeb453410.1780041658.git.wy@wyuan.org>

--------------------------------------------------
[Stalled]

* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s) for too long, stalled.
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* kh/submittingpatches-trailers (2026-06-10) 6 commits
 - SubmittingPatches: note that trailer order matters
 - SubmittingPatches: be consistent with trailer markup
 - SubmittingPatches: document Based-on-patch-by trailer
 - SubmittingPatches: discourage common Linux trailers
 - SubmittingPatches: discuss non-ident trailers
 - SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Waiting for response(s) to review comment(s).
 cf. <ajJNjOYMVDwL52zY@pks.im>
 source: <CV_SubPatches_trailers.8f3@msgid.xyz>


* mv/log-follow-mergy (2026-06-14) 1 commit
 - log: improve --follow following renames for non-linear history

 "git log --follow" has been updated to handle non-linear history, in
 which the path being tracked gets renamed differently in multiple
 history lines, better.

 Needs review.
 source: <ai-aE83w02xPRlPr@collabora.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* td/ls-files-pathspec-prefilter (2026-06-11) 1 commit
  (merged to 'next' on 2026-06-15 at 38918c4cfd)
 + ls-files: filter pathspec before lstat

 `git ls-files --modified` and `git ls-files --deleted` have been
 optimized to filter with pathspec before calling lstat() when there is
 only a single pathspec item, avoiding unnecessary filesystem access
 for entries that will not be shown.

 Will merge to 'master'.
 cf. <xmqqfr2tnfk0.fsf@gitster.g>
 source: <20260611-ls-files-pathspec-lstat-v3-1-f967e1a00c13@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The `git multi-pack-index write --incremental` command has been
 corrected to properly honor the `--base` option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* en/commit-graph-timestamp-fix (2026-06-13) 1 commit
  (merged to 'next' on 2026-06-16 at 13248b8196)
 + commit-graph: use timestamp_t for max parent generation accumulator

 compute_reachable_generation_numbers() in commit-graph used a 32-bit
 integer to accumulate parent generations, which is OK for generation
 number v1 (topological levels), but with generation number v2
 (adjusted committer timestamps), it truncated timestamps beyond
 2106.  Fixed by widening the accumulator to timestamp_t.

 Will merge to 'master'.
 cf. <09e50180-e165-48d8-a9d0-485283342f5c@gmail.com>
 source: <pull.2148.git.1781420271100.gitgitgadget@gmail.com>


* mm/test-grep-lint (2026-06-12) 6 commits
 - t: add greplint to detect bare grep assertions
 - t: convert grep assertions to test_grep
 - t: fix Lexer line count for $() inside double-quoted strings
 - t: extract chainlint's parser into shared module
 - t: fix grep assertions missing file arguments
 - t/README: document test_grep helper

 Needs review.
 source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>


* js/objects-larger-than-4gb-on-windows-more (2026-06-15) 7 commits
 - odb: use size_t for object_info.sizep and the size APIs
 - packfile,delta: drop the `cast_size_t_to_ulong()` wrappers
 - pack-objects: use size_t for in-core object sizes
 - packfile: widen unpack_entry()'s size out-parameter to size_t
 - pack-objects(check_pack_inflate()): use size_t instead of unsigned long
 - patch-delta: use size_t for sizes
 - compat/msvc: use _chsize_s for ftruncate

 Needs review.
 source: <pull.2137.v2.git.1781524349.gitgitgadget@gmail.com>


* kw/gitattributes-typofix (2026-06-15) 1 commit
 - gitattributes: fix eol attribute for Perl scripts

 Will merge to 'next'.
 cf. <ai-5vfY8D84UhsB4@pks.im>
 source: <pull.2151.v2.git.1781510039164.gitgitgadget@gmail.com>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
 - cat-file: speed up default format

 Will merge to 'next'.
 cf. <20260615165326.GA91269@coredump.intra.peff.net>
 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Waiting for response(s) to review comment(s).
 cf. <xmqq33yzd9yf.fsf@gitster.g>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 Comments?
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* kk/remove-get-reachable-subset (2026-06-11) 1 commit
 - commit-reach: remove get_reachable_subset()

 API clean-up.

 Retracted.
 cf. <CAL71e4P3Oq08xVPZ+dxQ8L5PKekPJN0RsL4pTicom1og7-1D=A@mail.gmail.com>
 source: <pull.2144.v2.git.1781178567862.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Needs review.
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-06-16) 4 commits
 - SQUASH??? prepare for mm/test-grep-lint
 - replay: offer an option to linearize the commit topology
 - replay: add helper to put entry into mapped_commits
 - replay: refactor enum replay_mode into a bool

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Needs review.
 source: <20260616-toon-git-replay-drop-merges-v3-0-153e9eb99ce1@iotcl.com>


* td/describe-tag-iteration (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at 1ae171f3b7)
 + describe: limit default ref iteration to tags

 'git describe' has been taught to pass the 'refs/tags/' prefix down to
 the ref iterator when '--all' is not requested, avoiding unnecessary
 iteration over non-tag refs.

 Will merge to 'master'.
 cf. <20260611064912.GC2191159@coredump.intra.peff.net>
 source: <20260610-describe-tag-ref-scope-v3-1-5aa63ab279f7@gmail.com>


* ta/doc-config-adoc-fixes (2026-06-11) 3 commits
  (merged to 'next' on 2026-06-15 at 93340b5cf0)
 + doc: git-config: escape erroneous highlight markup
 + doc: config/sideband: fix description list delimiter
 + doc: config: terminate runaway lists

 Various AsciiDoc markup fixes in 'git config' documentation and
 related files to ensure lists and formatting are rendered correctly.

 Will merge to 'master'.
 cf. <20260612045329.GA593075@coredump.intra.peff.net>
 source: <20260611161946.12166-1-taahol@utu.fi>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Will cook in 'next'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-avoid-chdir-notify-reparent (2026-06-15) 9 commits
 - refs: drop local buffer in `refs_compute_filesystem_location()`
 - refs: fix recursing `get_main_ref_store()` with "onbranch" config
 - repository: free main reference database
 - chdir-notify: drop unused `chdir_notify_reparent()`
 - refs: unregister reference stores from "chdir_notify"
 - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 - setup: stop applying repository format twice
 - setup: inline `check_and_apply_repository_format()`
 - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent

 The reference backends have been converted to always use absolute
 paths internally. This allows dropping the calls to
 `chdir_notify_reparent()` and fixes a memory leak in how the
 reference database is constructed with an "onbranch" condition.

 Needs review.
 source: <20260615-b4-pks-refs-avoid-chdir-notify-reparent-v2-0-f4854aa99859@pks.im>


* jc/t1400-fifo-cleanup (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at 7d5acd110a)
 + t1400: have fifo test clean after itself

 Test cleanup.

 Will merge to 'master'.
 cf. <aiqs5Wq2Di-6yW0D@pks.im>
 source: <xmqqo6hit6rn.fsf@gitster.g>


* ps/odb-source-packed (2026-06-16) 18 commits
 - odb/source-packed: drop pointer to "files" parent source
 - midx: refactor interfaces to work on "packed" source
 - odb/source-packed: stub out remaining functions
 - odb/source-packed: wire up `freshen_object()` callback
 - odb/source-packed: wire up `find_abbrev_len()` callback
 - odb/source-packed: wire up `count_objects()` callback
 - odb/source-packed: wire up `for_each_object()` callback
 - odb/source-packed: wire up `read_object_stream()` callback
 - odb/source-packed: wire up `read_object_info()` callback
 - packfile: use higher-level interface to implement `has_object_pack()`
 - odb/source-packed: wire up `reprepare()` callback
 - odb/source-packed: wire up `close()` callback
 - odb/source-packed: start converting to a proper `struct odb_source`
 - odb/source-packed: store pointer to "files" instead of generic source
 - packfile: move packed source into "odb/" subsystem
 - packfile: split out packfile list logic
 - packfile: rename `struct packfile_store` to `odb_source_packed`
 - Merge branch 'ps/odb-source-loose' into ps/odb-source-packed

 The packed object source has been refactored into a proper struct
 odb_source.

 Needs review.
 source: <20260617-pks-odb-source-packed-v3-0-b5c7583cd795@pks.im>


* ps/transport-helper-tsan-fix (2026-06-09) 1 commit
  (merged to 'next' on 2026-06-15 at 0857e6696f)
 + transport-helper: fix TSAN race in transfer_debug()

 The TSAN race in transfer_debug() within transport-helper.c has been
 resolved by initializing the debug flag early in
 bidirectional_transfer_loop() before spawning worker threads, allowing
 the removal of a TSAN suppression.

 Will merge to 'master'.
 cf. <20260609002833.GE358144@coredump.intra.peff.net>
 cf. <20260611083320.GI2191159@coredump.intra.peff.net>
 source: <20260609134741.4727-2-pushkarkumarsingh1970@gmail.com>


* dl/posix-unused-warning-clang (2026-06-13) 3 commits
  (merged to 'next' on 2026-06-15 at 1d7e627c24)
 + compat/posix.h: simplify GIT_GNUC_PREREQ() comparison
 + compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSED
 + compat/posix.h: enable UNUSED warning messages for Clang

 The UNUSED macro in 'compat/posix.h' has been updated to use a
 newly introduced GIT_CLANG_PREREQ macro for compiler version
 checks, and the existing GIT_GNUC_PREREQ macro has been modernized
 to use explicit major/minor comparisons rather than bit-shifting.

 Will merge to 'master'.
 cf. <ai-8Y1r9zbWfdY8p@pks.im>
 source: <20260613122711.38662-1-dominik.loidolt@univie.ac.at>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
 - ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Needs review.
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will cook in 'next'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>


* ds/config-no-includes (2026-06-08) 3 commits
 - git: add --no-includes top-level option
 - config: add GIT_CONFIG_INCLUDES
 - git-config.adoc: fix paragraph break

 Two new mechanisms, the GIT_CONFIG_INCLUDES environment variable and
 the top-level --no-includes command-line option, have been introduced
 to ignore configuration include directives.

 Retracted.
 cf. <539713c4-b291-42e6-8541-a16a454518f5@gmail.com>
 source: <pull.2139.git.1780927027.gitgitgadget@gmail.com>


* ps/cat-file-remote-object-info (2026-06-08) 12 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - 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
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Expecting a reroll.
 cf. <CAN5EUNQQBRoHUbZtkhLoBX-K7_4Carsxws_fyh1Ac7Lmd_FjKg@mail.gmail.com>
 source: <20260608-ps-eric-work-rebase-v12-0-5338b766e658@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
 - b4: introduce configuration for the Git project
 - MyFirstContribution: recommend the use of b4
 - MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Will merge to 'next'.
 cf. <87eci7yomp.fsf@emacs.iotcl.com>
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2Qwm+P=fZOtpfMPeMiSXf3Afk6OLYpTP8Br78_PRA8WNL1Wg@mail.gmail.com>
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-15) 6 commits
 - SQUASH???
 - pack-objects: support `--delta-islands` with `--path-walk`
 - pack-objects: extract `record_tree_depth()` helper
 - pack-objects: support reachability bitmaps with `--path-walk`
 - t/perf: drop p5311's lookup-table permutation
 - Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Waiting for response(s) to review comment(s).
 cf. <849c659f-efa8-430a-bfac-0c26a3ed1aaa@gmail.com>
 cf. <xmqqjyrzbjyf.fsf@gitster.g>
 source: <cover.1780438896.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-12) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 source: <20260612160527.167203-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Expecting a reroll.
 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-15) 4 commits
 - repo: add path.gitdir with absolute and relative suffix formatting
 - repo: add path.commondir with absolute and relative suffix formatting
 - rev-parse: use append_formatted_path() for path formatting
 - path: introduce append_formatted_path() for shared path formatting

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Expecting a reroll.
 cf. <CA+rGoLfhhRNrSReeJ1grhy+2K3BSrikTCNgGpCaGqc4fFp3Lfg@mail.gmail.com>
 source: <20260616044953.184806-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-15) 10 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Needs review.
 source: <20260615-b4-pks-history-drop-v6-0-2e329e536d78@pks.im>


* jk/setup-gitfile-diag-fix (2026-06-16) 1 commit
 - read_gitfile(): simplify NOT_A_REPO error message

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Will merge to 'next'?
 cf. <xmqqjyry4hax.fsf@gitster.g>
 source: <20260616123516.GA2301231@coredump.intra.peff.net>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Waiting for response(s) to review comment(s).
 cf. <xmqqcxxyt4op.fsf@gitster.g>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-05-26) 1 commit
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqqik7qusuc.fsf@gitster.g>
 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will cook in 'next'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* hn/branch-prune-merged (2026-06-15) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Waiting for response(s) to review comment(s).
 cf. <78b6dfdd-df61-4c44-96eb-b527cb26243c@gmail.com>
 cf. <f68e2a11-02a5-47b9-a01a-458eba821c37@gmail.com>
 source: <pull.2285.v15.git.git.1781542042.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will cook in 'next'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-23) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Needs review.
 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Will merge to 'next'?
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Waiting for response(s) to review comment(s).
 cf. <xmqqqzmdoya9.fsf@gitster.g>
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-06-13) 2 commits
 - graph: indent visual root in graph
 - lib-log-graph: move check_graph function

 "git log --graph" has been modified to visually distinguish
 parentless "root" commits (and commits that become roots due to
 history simplification) by indenting them, preventing them from
 appearing falsely related to unrelated commits rendered immediately
 above them.

 Will merge to 'next'?
 cf. <xmqq8q8e4f3s.fsf@gitster.g>
 source: <20260613-ps-pre-commit-indent-v5-0-8d308efea63d@gmail.com>

--------------------------------------------------
[Discarded]

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 - fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Retracted.
 cf. <CAL71e4MrVqC1=AR6x0_8S=8kVqPdDkhgCZRb4etFsxTzd6s_8Q@mail.gmail.com>
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Retracted.
 cf. <agx_GPfBKpkSc3Gx@lorenzo-VM>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 . contrib/subtree: reduce recursion during split
 . contrib/subtree: functionalize split traversal
 . contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Retracted.
 cf. <0915b5cc-5cbb-4cce-a832-147f85d4ff1f@howdoi.land>
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 . sideband: delay sanitizing by default to Git v3.0
 . Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 Retracted.
 cf. <xmqqzf11oz7a.fsf@gitster.g>
 source: <20260305233452.3727126-8-gitster@pobox.com>


^ permalink raw reply	[relevance 17%]

* What's cooking in git.git (Jun 2026, #05)
@ 2026-06-15 18:55 17% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-15 18:55 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

A preview release Git 2.55-rc0 has been tagged and pushed out.  There
may be a few more topics in 'next' and possibly outside 'next' that
we may want to include in the release that I didn't manage or I
forgot (please let me know).

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

* ak/typofixes (2026-05-31) 1 commit
  (merged to 'next' on 2026-06-09 at 40de2e7b90)
 + doc: fix typos via codespell

 Typofixes.
  cf. <3398ef40-1547-4324-2cfc-97b9e2b24854@gmx.de>
 cf. <xmqq8q8p1ese.fsf@gitster.g>
 source: <20260531184428.55905-1-algonell@gmail.com>
 source: <20260506101631.18127-1-algonell@gmail.com>
 source: <3398ef40-1547-4324-2cfc-97b9e2b24854@gmx.de>


* am/doc-tech-hash-typofix (2026-06-05) 1 commit
  (merged to 'next' on 2026-06-09 at aeaf2363f8)
 + doc: fix typo in GIT_ALTERNATE_OBJECT_DIRECTORIES

 Typofix.
  cf. <aiZo9FqsdKrhz0gA@pks.im>
 source: <20260605172643.8796-1-amonakov@ispras.ru>


* hn/config-typo-advice (2026-06-02) 2 commits
  (merged to 'next' on 2026-06-09 at 5149e69e3e)
 + config: improve diagnostic for "set" with missing value
 + config: add git_config_key_is_valid() for quiet validation

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.
  cf. <xmqq1penqfg2.fsf@gitster.g>
 source: <pull.2302.v6.git.git.1780425808.gitgitgadget@gmail.com>


* jc/submitting-patches-cover-letter (2026-06-02) 2 commits
  (merged to 'next' on 2026-06-09 at 42b2538a2a)
 + SubmittingPatches: describe cover letter
 + SubmittingPatches: separate typofixes section

 Guidelines on how to write a cover letter for a multi-patch series
 have been added to SubmittingPatches, which also got a new marker
 to separate the section for typofixes.
  cf. <c54f3571-ff7b-4caa-b75d-a739ed87ec9d@gmail.com>
 cf. <aiEgUdnL8dkszKFn@pks.im>
 source: <20260602144304.3341000-1-gitster@pobox.com>


* lo/doc-format-patch-subject-prefix (2026-06-04) 1 commit
  (merged to 'next' on 2026-06-09 at 58b2a20f6d)
 + Documentation: remove redundant 'instead' in --subject-prefix

 Wording used in "format-patch --subject-prefix" documentation
 has been improved.
 
 source: <20260604163510.36687-2-lucasseikioshiro@gmail.com>


* ls/doc-raw-timestamp-prefix (2026-06-02) 1 commit
  (merged to 'next' on 2026-06-09 at 7198b6bb9d)
 + doc: document and test `@` prefix for raw timestamps

 Documentation and tests have been added to clarify that Git's internal
 raw timestamp format requires a `@` prefix for values less than
 100,000,000 to prevent ambiguity with other formats like YYYYMMDD.
  cf. xmqqmrxdxq1r.fsf@gitster.g>
 source: <20260602081924.673763-2-dev@luna.gl>


* ob/more-repo-config-values (2026-06-02) 8 commits
  (merged to 'next' on 2026-06-09 at 3d0b057aee)
 + environment: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 + environment: move "sparse_expect_files_outside_of_patterns" into `struct repo_config_values`
 + environment: move "core_sparse_checkout_cone" into `struct repo_config_values`
 + environment: move "precomposed_unicode" into `struct repo_config_values`
 + environment: move "pack_compression_level" into `struct repo_config_values`
 + environment: move `zlib_compression_level` into `struct repo_config_values`
 + environment: move "check_stat" into `struct repo_config_values`
 + environment: move "trust_ctime" into `struct repo_config_values`

 Many core configuration variables have been migrated from global
 variables into 'repo_config_values' to tie them to a specific
 repository instance, avoiding cross-repository state leakage.
 
 source: <20260602170921.35869-1-belkid98@gmail.com>


* ps/setup-centralize-odb-creation (2026-06-04) 9 commits
  (merged to 'next' on 2026-06-09 at a1f23cb38c)
 + setup: construct object database in `apply_repository_format()`
 + repository: stop reading loose object map twice on repo init
 + setup: stop initializing object database without repository
 + setup: stop creating the object database in `setup_git_env()`
 + repository: stop initializing the object database in `repo_set_gitdir()`
 + setup: deduplicate logic to apply repository format
 + setup: drop `setup_git_env()`
 + t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
 + Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation
 (this branch is used by ps/refs-avoid-chdir-notify-reparent and ps/setup-drop-global-state.)

 The setup logic to discover and configure repositories has been
 refactored, and the initialization of the object database has been
 centralized.
  cf. <CAOLa=ZQwVbLsOcajaxQwtkTPm=4St7EiGEEyL6_B0o3Tt1v1pw@mail.gmail.com>
 source: <20260604-b4-pks-setup-centralize-odb-creation-v3-0-0691834f318a@pks.im>

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

* kh/submittingpatches-trailers (2026-06-10) 6 commits
 - SubmittingPatches: note that trailer order matters
 - SubmittingPatches: be consistent with trailer markup
 - SubmittingPatches: document Based-on-patch-by trailer
 - SubmittingPatches: discourage common Linux trailers
 - SubmittingPatches: discuss non-ident trailers
 - SubmittingPatches: encourage trailer use for substantial help

 The trailer sections in SubmittingPatches have been updated to
 encourage use of standard trailers.

 Waiting for response(s) to review comment(s).
 cf. <xmqqse6tnho1.fsf@gitster.g>
 source: <CV_SubPatches_trailers.8f3@msgid.xyz>


* mv/log-follow-mergy (2026-06-14) 1 commit
 - log: improve --follow following renames for non-linear history

 "git log --follow" has been updated to handle non-linear history, in
 which the path being tracked gets renamed differently in multiple
 history lines, better.

 Needs review.
 source: <ai-aE83w02xPRlPr@collabora.com>


* wy/doc-myfirstcontribution-trim-quotes (2026-06-11) 1 commit
 - MyFirstContribution: mention trimming quoted text in replies

 The contributor guide has been updated to advise new contributors to
 trim irrelevant quoted text when replying to review comments, matching
 the existing advice given to reviewers.

 Comments?
 cf. <xmqqcxxwljue.fsf@gitster.g>
 source: <080402ff0ac8127b654dccea59a1bf643df62a5c.1781186476.git.wy@wyuan.org>


* td/ls-files-pathspec-prefilter (2026-06-11) 1 commit
  (merged to 'next' on 2026-06-15 at 38918c4cfd)
 + ls-files: filter pathspec before lstat

 `git ls-files --modified` and `git ls-files --deleted` have been
 optimized to filter with pathspec before calling lstat() when there is
 only a single pathspec item, avoiding unnecessary filesystem access
 for entries that will not be shown.

 Will merge to 'master'.
 cf. <xmqqfr2tnfk0.fsf@gitster.g>
 source: <20260611-ls-files-pathspec-lstat-v3-1-f967e1a00c13@gmail.com>


* tb/midx-incremental-custom-base (2026-06-12) 3 commits
 - midx-write: include packs above custom incremental base
 - midx: pass custom '--base' through incremental writes
 - t5334: expose shared `nth_line()` helper

 The `git multi-pack-index write --incremental` command has been
 corrected to properly honor the `--base` option. Previously, the
 custom base was ignored by the normal write path, and the pack
 exclusion logic incorrectly skipped packs from layers above the
 selected base, breaking reachability closure for bitmaps.

 Needs review.
 source: <cover.1781294771.git.me@ttaylorr.com>


* en/commit-graph-timestamp-fix (2026-06-13) 1 commit
 - commit-graph: use timestamp_t for max parent generation accumulator

 compute_reachable_generation_numbers() in commit-graph used a 32-bit
 integer to accumulate parent generations, which is OK for generation
 number v1 (topological levels), but with generation number v2
 (adjusted committer timestamps), it truncated timestamps beyond
 2106.  Fixed by widening the accumulator to timestamp_t.
 Will merge to 'next'?
 cf. <ai-zzWn9Ls6-j9h8@pks.im>
 source: <pull.2148.git.1781420271100.gitgitgadget@gmail.com>


* mm/test-grep-lint (2026-06-12) 6 commits
 . t: add greplint to detect bare grep assertions
 . t: convert grep assertions to test_grep
 . t: fix Lexer line count for $() inside double-quoted strings
 . t: extract chainlint's parser into shared module
 . t: fix grep assertions missing file arguments
 . t/README: document test_grep helper

 Needs review.
 source: <pull.2135.v2.git.1781323575.gitgitgadget@gmail.com>


* js/objects-larger-than-4gb-on-windows-more (2026-06-15) 7 commits
 - odb: use size_t for object_info.sizep and the size APIs
 - packfile,delta: drop the `cast_size_t_to_ulong()` wrappers
 - pack-objects: use size_t for in-core object sizes
 - packfile: widen unpack_entry()'s size out-parameter to size_t
 - pack-objects(check_pack_inflate()): use size_t instead of unsigned long
 - patch-delta: use size_t for sizes
 - compat/msvc: use _chsize_s for ftruncate

 source: <pull.2137.v2.git.1781524349.gitgitgadget@gmail.com>


* kw/gitattributes-typofix (2026-06-15) 1 commit
 - gitattributes: fix eol attribute for Perl scripts

 source: <pull.2151.v2.git.1781510039164.gitgitgadget@gmail.com>


* rs/cat-file-default-format-optim (2026-06-14) 1 commit
 - cat-file: speed up default format

 source: <5a7ed929-6fe0-496c-83bd-65dee57c2241@web.de>

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

* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll for too long. stalled.
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 Comments?
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* kk/remove-get-reachable-subset (2026-06-11) 1 commit
 - commit-reach: remove get_reachable_subset()

 API clean-up.

 Waiting for response(s) to review comment(s).
 cf. <3a3d1dc4-341f-4276-a1ee-2972a885db84@gmail.com>
 source: <pull.2144.v2.git.1781178567862.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
 - commit-reach: die on contains walk errors
 - ref-filter: memoize --contains with generations
 - commit-reach: reject cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Needs review.
 source: <20260612-ref-filter-memoized-contains-v4-0-5ed39fd001dd@gmail.com>


* tc/replay-linearize (2026-06-10) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: add helper to put entry into mapped_commits
 - replay: refactor enum replay_mode into a bool

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Waiting for response(s) to review comment(s).
 cf. <xmqqjys6wcpo.fsf@gitster.g>
 cf. <CABPp-BGRi2obnqRGEY9pSMyvRbNGs8AdVUpZmr0C6vZSgHb=cg@mail.gmail.com>
 source: <20260610-toon-git-replay-drop-merges-v2-0-5714a71c6d83@iotcl.com>


* td/describe-tag-iteration (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at 1ae171f3b7)
 + describe: limit default ref iteration to tags

 'git describe' has been taught to pass the 'refs/tags/' prefix down to
 the ref iterator when '--all' is not requested, avoiding unnecessary
 iteration over non-tag refs.

 Will merge to 'master'.
 cf. <20260611064912.GC2191159@coredump.intra.peff.net>
 source: <20260610-describe-tag-ref-scope-v3-1-5aa63ab279f7@gmail.com>


* ta/doc-config-adoc-fixes (2026-06-11) 3 commits
  (merged to 'next' on 2026-06-15 at 93340b5cf0)
 + doc: git-config: escape erroneous highlight markup
 + doc: config/sideband: fix description list delimiter
 + doc: config: terminate runaway lists

 Various AsciiDoc markup fixes in 'git config' documentation and
 related files to ensure lists and formatting are rendered correctly.

 Will merge to 'master'.
 cf. <20260612045329.GA593075@coredump.intra.peff.net>
 source: <20260611161946.12166-1-taahol@utu.fi>


* ps/setup-drop-global-state (2026-06-10) 8 commits
  (merged to 'next' on 2026-06-15 at d9a8b88d47)
 + treewide: drop USE_THE_REPOSITORY_VARIABLE
 + environment: stop using `the_repository` in `is_bare_repository()`
 + environment: split up concerns of `is_bare_repository_cfg`
 + builtin/init: stop modifying `is_bare_repository_cfg`
 + setup: remove global `git_work_tree_cfg` variable
 + builtin/init: simplify logic to configure worktree
 + builtin/init: stop modifying global `git_work_tree_cfg` variable
 + Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Will merge to 'master'.
 cf. <airVOrTboNDDGBak@denethor>
 cf. <87ldckyygk.fsf@emacs.iotcl.com>
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-avoid-chdir-notify-reparent (2026-06-15) 9 commits
 - refs: drop local buffer in `refs_compute_filesystem_location()`
 - refs: fix recursing `get_main_ref_store()` with "onbranch" config
 - repository: free main reference database
 - chdir-notify: drop unused `chdir_notify_reparent()`
 - refs: unregister reference stores from "chdir_notify"
 - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 - setup: stop applying repository format twice
 - setup: inline `check_and_apply_repository_format()`
 - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent

 The reference backends have been converted to always use absolute
 paths internally. This allows dropping the calls to
 `chdir_notify_reparent()` and fixes a memory leak in how the
 reference database is constructed with an "onbranch" condition.

 Needs review.
 source: <20260615-b4-pks-refs-avoid-chdir-notify-reparent-v2-0-f4854aa99859@pks.im>


* jc/t1400-fifo-cleanup (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at 7d5acd110a)
 + t1400: have fifo test clean after itself

 Test cleanup.

 Will merge to 'master'.
 cf. <aiqs5Wq2Di-6yW0D@pks.im>
 source: <xmqqo6hit6rn.fsf@gitster.g>


* jd/unpack-trees-wo-the-repository (2026-03-31) 1 commit
  (merged to 'next' on 2026-06-11 at 3d7788721e)
 + unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Will merge to 'master'.
 cf. <xmqqqzmfz91r.fsf@gitster.g>
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/odb-source-packed (2026-06-09) 18 commits
 - odb/source-packed: drop pointer to "files" parent source
 - midx: refactor interfaces to work on "packed" source
 - odb/source-packed: stub out remaining functions
 - odb/source-packed: wire up `freshen_object()` callback
 - odb/source-packed: wire up `find_abbrev_len()` callback
 - odb/source-packed: wire up `count_objects()` callback
 - odb/source-packed: wire up `for_each_object()` callback
 - odb/source-packed: wire up `read_object_stream()` callback
 - odb/source-packed: wire up `read_object_info()` callback
 - packfile: use higher-level interface to implement `has_object_pack()`
 - odb/source-packed: wire up `reprepare()` callback
 - odb/source-packed: wire up `close()` callback
 - odb/source-packed: start converting to a proper `struct odb_source`
 - odb/source-packed: store pointer to "files" instead of generic source
 - packfile: move packed source into "odb/" subsystem
 - packfile: split out packfile list logic
 - packfile: rename `struct packfile_store` to `odb_source_packed`
 - Merge branch 'ps/odb-source-loose' into ps/odb-source-packed

 The packed object source has been refactored into a proper struct
 odb_source.

 Needs review.
 source: <20260609-pks-odb-source-packed-v2-0-839089132c8b@pks.im>


* ps/transport-helper-tsan-fix (2026-06-09) 1 commit
  (merged to 'next' on 2026-06-15 at 0857e6696f)
 + transport-helper: fix TSAN race in transfer_debug()

 The TSAN race in transfer_debug() within transport-helper.c has been
 resolved by initializing the debug flag early in
 bidirectional_transfer_loop() before spawning worker threads, allowing
 the removal of a TSAN suppression.

 Will merge to 'master'.
 cf. <20260609002833.GE358144@coredump.intra.peff.net>
 cf. <20260611083320.GI2191159@coredump.intra.peff.net>
 source: <20260609134741.4727-2-pushkarkumarsingh1970@gmail.com>


* ta/typofixes (2026-06-04) 1 commit
  (merged to 'next' on 2026-06-11 at dfb63ded01)
 + docs: fix typos

 Typofixes

 Will merge to 'master'.
 cf. <xmqqh5ncvfsu.fsf@gitster.g>
 source: <20260604131457.19215-1-taahol@utu.fi>


* js/win-kill-child-more-gently (2026-06-04) 2 commits
  (merged to 'next' on 2026-06-11 at b4a2299e7e)
 + mingw: really handle SIGINT
 + mingw: kill child processes in a gentler way

 Advanced emulation of kill() used on Windows in GfW has been
 upstreamed to improve the symptoms like left-behind .lock files and
 that fails to let the child clean-up itself when it gets killed.

 Will merge to 'master'.
 source: <pull.2130.git.1780590261.gitgitgadget@gmail.com>


* dl/posix-unused-warning-clang (2026-06-13) 3 commits
  (merged to 'next' on 2026-06-15 at 1d7e627c24)
 + compat/posix.h: simplify GIT_GNUC_PREREQ() comparison
 + compat/posix.h: clean up GIT_GNUC_PREREQ() and UNUSED
 + compat/posix.h: enable UNUSED warning messages for Clang

 The UNUSED macro in 'compat/posix.h' has been updated to use a
 newly introduced GIT_CLANG_PREREQ macro for compiler version
 checks, and the existing GIT_GNUC_PREREQ macro has been modernized
 to use explicit major/minor comparisons rather than bit-shifting.

 Will merge to 'master'.
 cf. <ai-8Y1r9zbWfdY8p@pks.im>
 source: <20260613122711.38662-1-dominik.loidolt@univie.ac.at>


* td/ref-filter-restore-prefix-iteration (2026-06-12) 1 commit
 - ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Needs review.
 source: <20260612-fix-git-branch-regression-v4-1-f150038c02f4@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-10) 1 commit
  (merged to 'next' on 2026-06-15 at c2a30ca954)
 + environment: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will merge to 'master'.
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>


* ds/config-no-includes (2026-06-08) 3 commits
 - git: add --no-includes top-level option
 - config: add GIT_CONFIG_INCLUDES
 - git-config.adoc: fix paragraph break

 Two new mechanisms, the GIT_CONFIG_INCLUDES environment variable and
 the top-level --no-includes command-line option, have been introduced
 to ignore configuration include directives.

 Retracted.
 cf. <539713c4-b291-42e6-8541-a16a454518f5@gmail.com>
 source: <pull.2139.git.1780927027.gitgitgadget@gmail.com>


* ps/cat-file-remote-object-info (2026-06-08) 12 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - 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
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Expecting a reroll.
 cf. <CAN5EUNQQBRoHUbZtkhLoBX-K7_4Carsxws_fyh1Ac7Lmd_FjKg@mail.gmail.com>
 source: <20260608-ps-eric-work-rebase-v12-0-5338b766e658@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-15) 3 commits
 - b4: introduce configuration for the Git project
 - MyFirstContribution: recommend the use of b4
 - MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Needs review.
 source: <20260615-pks-b4-v4-0-22cfca8f19c5@pks.im>


* kk/streaming-walk-pqueue (2026-05-27) 3 commits
  (merged to 'next' on 2026-06-11 at 1466219fc9)
 + revision: use priority queue for non-limited streaming walks
 + revision: introduce rev_walk_mode to clarify get_revision_1()
 + pack-objects: call release_revisions() after cruft traversal

 Streaming revision walks have been optimized by using a priority queue
 for date-sorting commits, speeding up walks repositories with many
 merges.

 Will merge to 'master'.
 source: <pull.2127.git.1779897003.gitgitgadget@gmail.com>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* jk/describe-contains-all-match-fix (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-11 at a95871538b)
 + describe: fix --exclude, --match with --contains and --all

 The 'git describe --contains --all' command has been fixed to
 properly honor the '--match' and '--exclude' options by passing
 them down to 'git name-rev' with the appropriate reference
 prefixes.

 Will merge to 'master'.
 source: <20260601233727.43558-1-jacob.e.keller@intel.com>


* wy/docs-typofixes (2026-05-29) 1 commit
  (merged to 'next' on 2026-06-11 at bd53c91110)
 + docs: fix typos and grammar

 Various typos, grammatical errors, and duplicated words in both
 documentation and code comments have been corrected.

 Will merge to 'master'.
 source: <7b502e20e9495cd4720496bd6738a1fbeb453410.1780041658.git.wy@wyuan.org>


* ab/index-pack-retain-child-bases (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-12 at 625f76ac4c)
 + index-pack: retain child bases in delta cache

 "git index-pack" has been optimized by retaining child bases in the
 delta cache instead of immediately freeing them, letting the existing
 cache limit policy decide eviction.

 Will merge to 'master'.
 source: <pull.2131.v2.git.1780330402264.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Needs review.
 source: <pull.2120.v4.git.1781463564.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-02) 5 commits
 - pack-objects: support `--delta-islands` with `--path-walk`
 - pack-objects: extract `record_tree_depth()` helper
 - pack-objects: support reachability bitmaps with `--path-walk`
 - t/perf: drop p5311's lookup-table permutation
 - Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Waiting for response(s) to review comment(s).
 cf. <849c659f-efa8-430a-bfac-0c26a3ed1aaa@gmail.com>
 source: <cover.1780438896.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-12) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 source: <20260612160527.167203-1-cat@malon.dev>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Expecting a reroll.
 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* mm/subprocess-handshake-fix (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-11 at b649c3a97c)
 + sub-process: use gentle handshake to avoid die() on startup failure

 The subprocess handshake during startup has been made gentler by using
 packet_read_line_gently() instead of packet_read_line() to prevent the
 parent Git process from dying abruptly when a configured subprocess
 (e.g., a clean/smudge filter) fails to start.

 Will merge to 'master'.
 source: <pull.2133.v2.git.1780348848489.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-14) 4 commits
 - repo: add path.gitdir with absolute and relative suffix formatting
 - repo: add path.commondir with absolute and relative suffix formatting
 - rev-parse: use append_formatted_path() for path formatting
 - path: introduce append_formatted_path() for shared path formatting

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Needs review.
 source: <20260615045112.50686-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-15) 10 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Needs review.
 source: <20260615-b4-pks-history-drop-v6-0-2e329e536d78@pks.im>


* jk/setup-gitfile-diag-fix (2026-06-01) 1 commit
 - read_gitfile_gently(): return non-repo path on error

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Waiting for response(s) to review comment(s).
 cf. <xmqqeciezh0w.fsf@gitster.g>
 source: <20260602061159.GA693928@coredump.intra.peff.net>


* ps/t7527-fix-tap-output (2026-06-04) 8 commits
  (merged to 'next' on 2026-06-11 at b5a4cd26ee)
 + t: let prove fail when parsing invalid TAP output
 + t/lib-git-p4: silence output when killing p4d and its watchdog
 + t/test-lib: silence EBUSY errors on Windows during test cleanup
 + t7810: turn MB_REGEX check into a lazy prereq
 + t7527: fix broken TAP output
 + ci: unify Linux images across GitLab and GitHub
 + gitlab-ci: add missing Linux jobs
 + gitlab-ci: rearrange Linux jobs to match GitHub's order

 A recent regression in t7527 that broke TAP output has been fixed,
 some other test noise that also broke TAP output has been silenced,
 and 'prove' is now configured to fail on invalid TAP output to
 prevent future regressions.

 Will merge to 'master'.
 source: <20260604-pks-t7527-fix-tap-output-v3-0-7d766ed481e4@pks.im>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Waiting for response(s) to review comment(s).
 cf. <xmqqcxxyt4op.fsf@gitster.g>
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-05-26) 1 commit
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqqik7qusuc.fsf@gitster.g>
 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-15 at 898a4df940)
 + remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will merge to 'master'.
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s).
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hn/branch-prune-merged (2026-06-15) 7 commits
 - branch: add --dry-run for --delete-merged
 - branch: add branch.<name>.deleteMerged opt-out
 - branch: add --delete-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches skip unmerged branches on bulk refusal
 - branch: convert delete_branches() to a flags argument
 - branch: add --forked filter for --list mode

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Needs review.
 source: <pull.2285.v15.git.git.1781542042.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
  (merged to 'next' on 2026-06-15 at d1c99e75cc)
 + doc: promisor: improve acceptFromServer entry
 + promisor-remote: auto-configure unknown remotes
 + promisor-remote: trust known remotes matching acceptFromServerUrl
 + promisor-remote: introduce promisor.acceptFromServerUrl
 + promisor-remote: add 'local_name' to 'struct promisor_info'
 + urlmatch: add url_normalize_pattern() helper
 + urlmatch: change 'allow_globs' arg to bool
 + t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will merge to 'master'.
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-23) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Needs review.
 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-06-10) 2 commits
  (merged to 'next' on 2026-06-11 at c89a71798a)
 + bash-completions: add --max-count-oldest
  (merged to 'next' on 2026-06-09 at 076600fa21)
 + revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Will merge to 'master'.
 source: <xmqq4ijm3p2x.fsf@gitster.g>


* en/ort-harden-against-corrupt-trees (2026-06-13) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Waiting for response(s) to review comment(s).
 cf. <xmqq5x3ldu4h.fsf@gitster.g>
 source: <pull.2096.v2.git.1781419047.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Waiting for response(s) to review comment(s).
 cf. <xmqqqzmdoya9.fsf@gitster.g>
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-06-13) 2 commits
 - graph: indent visual root in graph
 - lib-log-graph: move check_graph function

 "git log --graph" has been modified to visually distinguish
 parentless "root" commits (and commits that become roots due to
 history simplification) by indenting them, preventing them from
 appearing falsely related to unrelated commits rendered immediately
 above them.

 Waiting for response(s) to review comment(s).
 cf. <xmqqo6hdepgy.fsf@gitster.g>
 source: <20260613-ps-pre-commit-indent-v5-0-8d308efea63d@gmail.com>

--------------------------------------------------
[Discarded]

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 - fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Retracted.
 cf. <CAL71e4MrVqC1=AR6x0_8S=8kVqPdDkhgCZRb4etFsxTzd6s_8Q@mail.gmail.com>
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Retracted.
 cf. <agx_GPfBKpkSc3Gx@lorenzo-VM>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 . contrib/subtree: reduce recursion during split
 . contrib/subtree: functionalize split traversal
 . contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Retracted.
 cf. <0915b5cc-5cbb-4cce-a832-147f85d4ff1f@howdoi.land>
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 . sideband: delay sanitizing by default to Git v3.0
 . Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 Retracted.
 cf. <xmqqzf11oz7a.fsf@gitster.g>
 source: <20260305233452.3727126-8-gitster@pobox.com>


^ permalink raw reply	[relevance 17%]

* Re: What's cooking in git.git (Jun 2026, #04)
  @ 2026-06-11 18:55 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-11 18:55 UTC (permalink / raw)
  To: Mirko Faina; +Cc: git

Mirko Faina <mroik@delayed.space> writes:

> On Thu, Jun 11, 2026 at 09:08:25AM -0700, Junio C Hamano wrote:
>> * mf/revision-max-count-oldest (2026-05-18) 1 commit
>>   (merged to 'next' on 2026-06-09 at 076600fa21)
>>  + revision.c: implement --max-count-oldest
>> 
>>  "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
>>  that picks oldest N commits in the range instead of the usual newest.
>> 
>>  Will merge to 'master'.
>>  source: <xmqq4ijm3p2x.fsf@gitster.g>
>
> Might want to wait and merge it in with [1].
>
> [1] https://lore.kernel.org/git/a804828a046d8f12ef0d03eaf014807b079bb707.1781102091.git.mroik@delayed.space/

Thanks for reminding me.  Will do.



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Jun 2026, #03)
  @ 2026-06-11 16:10 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-11 16:10 UTC (permalink / raw)
  To: Phillip Wood; +Cc: git

Phillip Wood <phillip.wood123@gmail.com> writes:

> Hi Junio
>
> On 09/06/2026 01:56, Junio C Hamano wrote:
>> 
>> * pw/status-rebase-todo (2026-05-01) 2 commits
>>   - status: improve rebase todo list parsing
>>   - sequencer: factor out parsing of todo commands
>> 
>>   The display of the rebase todo list in "git status" has been
>>   improved to correctly abbreviate object IDs for more commands and
>>   avoid misinterpreting refs as object IDs.
>> 
>>   Waiting for response(s) to review comment(s).
>>   cf. <xmqqbjdwcsno.fsf@gitster.g>
>
> I replied to that message with 
> <4fafee2c-4151-45f4-a842-17d6b77d951c@gmail.com> I'm waiting to hear 
> whether you agree that the unambiguous label case is unlikely enough to 
> happen that we can ignore it.

Thanks.  

I forgot to send the response to the message, so I just have done
so.



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jun 2026, #04)
@ 2026-06-11 16:08 16% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-06-11 16:08 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

A preview release Git 2.55-rc0 has been tagged and pushed out.  There
may be a few more topics in 'next' and possibly outside 'next' that
we may want to include in the release that I didn't manage or I
forgot (please let me know).

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

* gh/jump-auto-mode (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-02 at f70dd05c9c)
 + git-jump: pick a mode automatically when invoked without arguments

 The 'git-jump' command (in contrib/) has been taught to automatically
 pick a mode (merge, diff, or ws) when invoked without arguments.
 cf. <20260522052821.GC861761@coredump.intra.peff.net>
 source: <pull.2108.v3.git.1779371110195.gitgitgadget@gmail.com>


* hn/macos-linker-warning (2026-06-02) 1 commit
  (merged to 'next' on 2026-06-04 at db2ca164c4)
 + config.mak.uname: avoid macOS linker warning on Xcode 16.3+

 A linker warning on macOS when building with Xcode 16.3 or newer has
 been avoided by passing -fno-common to the compiler when a
 sufficiently new linker is detected.
 source: <pull.2313.v3.git.git.1780385878555.gitgitgadget@gmail.com>


* ib/doc-push-default-simple (2026-05-25) 1 commit
  (merged to 'next' on 2026-06-02 at 5c1ff2a769)
 + doc: clarify push.default=simple behavior

 The documentation for `push.default = simple` has been clarified to
 better explain its behavior, making it clear that it pushes the
 current branch to a same-named branch on the remote, and detailing
 the upstream requirements for centralized workflows.
 cf. <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>
 source: <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>


* jc/doc-monitor-ghci (2026-05-24) 1 commit
  (merged to 'next' on 2026-06-02 at 46fb5fe1c2)
 + SubmittingPatches: proactively monitor GHCI pages

 Encourage original authors to monitor the CI status.
 source: <xmqq1pf0gpp3.fsf@gitster.g>


* kk/wildmatch-windows-ls-files-prereq (2026-05-28) 1 commit
  (merged to 'next' on 2026-06-04 at 6dc748aa63)
 + t3070: skip ls-files tests with backslash patterns on Windows

 In t3070-wildmatch, "via ls-files" test variants with patterns
 containing backslash escapes are now skipped on Windows, avoiding 36
 test failures caused by pathspec separator conversion.
 cf. <xmqqecivjn7k.fsf@gitster.g>
 source: <pull.2128.git.1779958849319.gitgitgadget@gmail.com>


* lp/http-fetch-pack-index-leak-fix (2026-06-01) 2 commits
  (merged to 'next' on 2026-06-04 at f4090b5068)
 + http: fix memory leak in fetch_and_setup_pack_index()
 + http: cleanup function fetch_and_setup_pack_index()

 A memory leak in `fetch_and_setup_pack_index()` when verification of
 the downloaded pack index fails has been plugged. Also an obsolete
 `unlink()` call on parse failure has been cleaned up.
 cf. <20260529053659.GC1099450@coredump.intra.peff.net>
 source: <cover.1780321770.git.lorenzo.pegorari2002@gmail.com>


* mm/doc-word-diff (2026-05-28) 1 commit
  (merged to 'next' on 2026-06-04 at 9fa723ec63)
 + doc: clarify that --word-diff operates on line-level hunks

 The documentation for "--word-diff" has been extended with a bit of
 implementation detail of where these different words come from.
 source: <pull.2113.v2.git.1779996106005.gitgitgadget@gmail.com>


* mm/line-log-cleanup (2026-05-28) 3 commits
  (merged to 'next' on 2026-06-04 at 02f8bea278)
 + line-log: allow non-patch diff formats with -L
 + line-log: integrate -L output with the standard log-tree pipeline
 + revision: move -L setup before output_format-to-diff derivation

 The `git log -L` implementation has been refactored to use the
 standard diff output pipeline, enabling pickaxe and diff-filter to
 work as expected. Additionally, metadata-only diff formats like
 --raw and --name-only are now supported with -L.
 cf. <B59BA5B1-184D-48A8-8BAD-11EB6F8EB50C@gmail.com>
 source: <pull.2094.v3.git.1780001267.gitgitgadget@gmail.com>


* ps/odb-source-loose (2026-06-01) 19 commits
  (merged to 'next' on 2026-06-04 at 660909ad66)
 + odb/source-loose: drop pointer to the "files" source
 + odb/source-loose: stub out remaining callbacks
 + odb/source-loose: wire up `write_object_stream()` callback
 + object-file: refactor writing objects to use loose source
 + odb/source-loose: wire up `write_object()` callback
 + loose: refactor object map to operate on `struct odb_source_loose`
 + odb/source-loose: wire up `freshen_object()` callback
 + odb/source-loose: drop `odb_source_loose_has_object()`
 + odb/source-loose: wire up `count_objects()` callback
 + odb/source-loose: wire up `find_abbrev_len()` callback
 + odb/source-loose: wire up `for_each_object()` callback
 + odb/source-loose: wire up `read_object_stream()` callback
 + odb/source-loose: wire up `read_object_info()` callback
 + odb/source-loose: wire up `close()` callback
 + odb/source-loose: wire up `reprepare()` callback
 + odb/source-loose: start converting to a proper `struct odb_source`
 + odb/source-loose: store pointer to "files" instead of generic source
 + odb/source-loose: move loose source into "odb/" subsystem
 + Merge branch 'ps/odb-in-memory' into ps/odb-source-loose
 (this branch is used by ps/odb-source-packed.)

 The loose object source has been refactored into a proper `struct
 odb_source`.
 source: <20260601-b4-pks-odb-source-loose-v2-0-90ff159430af@pks.im>


* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
  (merged to 'next' on 2026-06-02 at 4876f95de0)
 + hex: add and use strbuf_add_oid_hex()

 Formatting object name in full hexadecimal form has been optimized
 by using a new strbuf_add_oid_hex() helper function.
 cf. <20260513160155.GA103037@coredump.intra.peff.net>
 source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>


* rs/strbuf-add-uint (2026-05-12) 4 commits
  (merged to 'next' on 2026-06-02 at f5be02d8ec)
 + ls-tree: use strbuf_add_uint()
 + ls-files: use strbuf_add_uint()
 + cat-file: use strbuf_add_uint()
 + strbuf: add strbuf_add_uint()

 Adding a decimal integer with strbuf_addf("%u") appears commonly;
 they have been optimized by using a custom formatter.
 cf. <20260512184619.GD70851@coredump.intra.peff.net>
 source: <20260512115603.80780-1-l.s.r@web.de>


* st/daemon-sockaddr-fixes (2026-05-27) 3 commits
  (merged to 'next' on 2026-06-04 at 17684e6158)
 + daemon: guard NULL REMOTE_PORT in execute() logging
 + daemon: fix IPv6 address truncation in ip2str()
 + daemon: fix IPv6 address corruption in lookup_hostname()

 Correct use of sockaddr API in "git daemon".
 source: <pull.2300.v3.git.git.1779937016.gitgitgadget@gmail.com>


* tb/bitmap-build-performance (2026-05-27) 9 commits
  (merged to 'next' on 2026-06-02 at d1a84a996a)
 + pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
 + pack-bitmap: remember pseudo-merge parents
 + pack-bitmap: sort bitmaps before XORing
 + pack-bitmap: cache object positions during fill
 + pack-bitmap: consolidate `find_object_pos()` success path
 + pack-bitmap: reuse stored selected bitmaps
 + pack-bitmap: check subtree bits before recursing
 + pack-bitmap: pass object position to `fill_bitmap_tree()`
 + Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance

 Reachability bitmap generation has been significantly optimized. By
 reordering tree traversal, caching object positions, and refining how
 pseudo-merge bitmaps are constructed, the performance of "git repack
 --write-midx-bitmaps" is improved, especially for large repositories
 and when using pseudo-merges.
 cf. <20260529083439.GD1106035@coredump.intra.peff.net>
 source: <cover.1779911733.git.me@ttaylorr.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
  (merged to 'next' on 2026-06-02 at 02a749d7fe)
 + promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.
 cf. <c87f1f12-d0cc-4150-8f43-4dc9cc1fe24f@malon.dev>
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* ua/push-remote-group (2026-05-03) 3 commits
  (merged to 'next' on 2026-06-02 at ba5d6aebaa)
 + push: support pushing to a remote group
 + remote: move remote group resolution to remote.c
 + remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.
 cf. <20260518182721.155070-1-usmanakinyemi202@gmail.com>
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>

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

* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
 - prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
 - prio-queue: rename .nr to .nr_ and add accessor helpers

 The lazy priority queue optimization pattern (deferring actual removal
 in prio_queue_get() to allow get+put fusion) has been folded directly
 into prio_queue itself, speeding up commit traversal workflows and
 simplifying callers.

 Comments?
 source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* kk/remove-get-reachable-subset (2026-06-11) 1 commit
 - commit-reach: remove get_reachable_subset()

 API clean-up.

 Needs review.
 source: <pull.2144.v2.git.1781178567862.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-08) 2 commits
 - ref-filter: memoize --contains with generations
 - commit-reach: handle cycles in contains walk

 'git branch --contains' and 'git for-each-ref --contains' have
 been optimized to use the memoized commit traversal previously
 used only by 'git tag --contains', significantly speeding up
 connectivity checks across many candidate refs with shared
 history.

 Waiting for response(s) to review comment(s).
 cf. <CAOLa=ZRFSuGrqFXhTuQ7Dk5GCQQGHom++78xwONoiNdt1h_gWQ@mail.gmail.com>
 source: <20260608-ref-filter-memoized-contains-v2-0-e72720344a7c@gmail.com>


* tc/replay-linearize (2026-06-10) 3 commits
 - replay: offer an option to linearize the commit topology
 - replay: add helper to put entry into mapped_commits
 - replay: refactor enum replay_mode into a bool

 git replay learns --linearize option to drop merge commits and
 linearize the replayed history, mimicking git rebase
 --no-rebase-merges.

 Waiting for response(s) to review comment(s).
 cf. <xmqqjys6wcpo.fsf@gitster.g>
 source: <20260610-toon-git-replay-drop-merges-v2-0-5714a71c6d83@iotcl.com>


* td/describe-tag-iteration (2026-06-10) 1 commit
 - describe: limit default ref iteration to tags

 'git describe' has been taught to pass the 'refs/tags/' prefix down to
 the ref iterator when '--all' is not requested, avoiding unnecessary
 iteration over non-tag refs.

 Needs review.
 source: <20260610-describe-tag-ref-scope-v3-1-5aa63ab279f7@gmail.com>


* ta/doc-config-adoc-fixes (2026-06-10) 3 commits
 - doc: git-config: escape erroneous highlight markup
 - doc: config/sideband: fix description list delimiter
 - doc: config: terminate runaway lists

 Various AsciiDoc markup fixes in 'git config' documentation and
 related files to ensure lists and formatting are rendered correctly.

 Comments?
 cf. <20260611083139.GA2237523@coredump.intra.peff.net>
 source: <20260610225513.6269-1-taahol@utu.fi>


* ps/setup-drop-global-state (2026-06-10) 8 commits
 - treewide: drop USE_THE_REPOSITORY_VARIABLE
 - environment: stop using `the_repository` in `is_bare_repository()`
 - environment: split up concerns of `is_bare_repository_cfg`
 - builtin/init: stop modifying `is_bare_repository_cfg`
 - setup: remove global `git_work_tree_cfg` variable
 - builtin/init: simplify logic to configure worktree
 - builtin/init: stop modifying global `git_work_tree_cfg` variable
 - Merge branch 'ps/setup-centralize-odb-creation' into ps/setup-drop-global-state
 (this branch uses ps/setup-centralize-odb-creation.)

 Continuation of "setup.c" refactoring to drop remaining global state
 (`git_work_tree_cfg`, `is_bare_repository_cfg`). The most notable
 outcome is that `is_bare_repository()` has been updated to no longer
 implicitly rely on `the_repository`.

 Comments?
 source: <20260611-b4-pks-setup-drop-global-state-v2-0-a6f7269c841d@pks.im>


* ps/refs-avoid-chdir-notify-reparent (2026-06-10) 10 commits
 - refs: always use absolute paths for reference stores
 - refs: drop local buffer in `refs_compute_filesystem_location()`
 - refs: fix recursing `get_main_ref_store()` with "onbranch" config
 - repository: free main reference database
 - chdir-notify: drop unused `chdir_notify_reparent()`
 - refs: unregister reference stores from "chdir_notify"
 - setup: don't apply "GIT_REFERENCE_BACKEND" without a repository
 - setup: stop applying repository format twice
 - setup: inline `check_and_apply_repository_format()`
 - Merge branch 'ps/setup-centralize-odb-creation' into ps/refs-avoid-chdir-notify-reparent
 (this branch uses ps/setup-centralize-odb-creation.)

 The reference backends have been converted to always use absolute
 paths internally. This allows dropping the calls to
 `chdir_notify_reparent()` and fixes a memory leak in how the
 reference database is constructed with an "onbranch" condition.

 Waiting for response(s) to review comment(s).
 cf. <20260611065346.GD2191159@coredump.intra.peff.net>
 source: <20260610-b4-pks-refs-avoid-chdir-notify-reparent-v1-0-56c864b01c43@pks.im>


* jc/t1400-fifo-cleanup (2026-06-10) 1 commit
 - t1400: have fifo test clean after itself

 source: <xmqqo6hit6rn.fsf@gitster.g>

--------------------------------------------------
[Stalled]

* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Waiting for response(s) to review comment(s) for too long, consider discarding.
 cf. <xmqqv7c13o5l.fsf@gitster.g>
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>

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

* jd/unpack-trees-wo-the-repository (2026-03-31) 1 commit
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Will merge to 'next'.
 cf. <xmqqqzmfz91r.fsf@gitster.g>
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/odb-source-packed (2026-06-09) 18 commits
 - odb/source-packed: drop pointer to "files" parent source
 - midx: refactor interfaces to work on "packed" source
 - odb/source-packed: stub out remaining functions
 - odb/source-packed: wire up `freshen_object()` callback
 - odb/source-packed: wire up `find_abbrev_len()` callback
 - odb/source-packed: wire up `count_objects()` callback
 - odb/source-packed: wire up `for_each_object()` callback
 - odb/source-packed: wire up `read_object_stream()` callback
 - odb/source-packed: wire up `read_object_info()` callback
 - packfile: use higher-level interface to implement `has_object_pack()`
 - odb/source-packed: wire up `reprepare()` callback
 - odb/source-packed: wire up `close()` callback
 - odb/source-packed: start converting to a proper `struct odb_source`
 - odb/source-packed: store pointer to "files" instead of generic source
 - packfile: move packed source into "odb/" subsystem
 - packfile: split out packfile list logic
 - packfile: rename `struct packfile_store` to `odb_source_packed`
 - Merge branch 'ps/odb-source-loose' into ps/odb-source-packed

 The packed object source has been refactored into a proper struct
 odb_source.

 Needs review.
 source: <20260609-pks-odb-source-packed-v2-0-839089132c8b@pks.im>


* ps/transport-helper-tsan-fix (2026-06-09) 1 commit
 - transport-helper: fix TSAN race in transfer_debug()

 The TSAN race in transfer_debug() within transport-helper.c has been
 resolved by initializing the debug flag early in
 bidirectional_transfer_loop() before spawning worker threads, allowing
 the removal of a TSAN suppression.

 Will merge to 'next'?
 cf. <20260609002833.GE358144@coredump.intra.peff.net>
 cf. <20260611083320.GI2191159@coredump.intra.peff.net>
 source: <20260609134741.4727-2-pushkarkumarsingh1970@gmail.com>


* ta/typofixes (2026-06-04) 1 commit
 - docs: fix typos

 Typofixes

 Will merge to 'next'.
 cf. <xmqqh5ncvfsu.fsf@gitster.g>
 source: <20260604131457.19215-1-taahol@utu.fi>


* js/win-kill-child-more-gently (2026-06-04) 2 commits
  (merged to 'next' on 2026-06-11 at b4a2299e7e)
 + mingw: really handle SIGINT
 + mingw: kill child processes in a gentler way

 Advanced emulation of kill() used on Windows in GfW has been
 upstreamed to improve the symptoms like left-behind .lock files and
 that fails to let the child clean-up itself when it gets killed.

 Will merge to 'master'.
 source: <pull.2130.git.1780590261.gitgitgadget@gmail.com>


* dl/posix-unused-warning-clang (2026-06-08) 2 commits
 - compat/posix.h: simplify GIT_GNUC_PREREQ() comparison
 - compat/posix.h: enable UNUSED warning messages for Clang

 The UNUSED macro in 'compat/posix.h' has been updated to use a
 newly introduced GIT_CLANG_PREREQ macro for compiler version
 checks, and the existing GIT_GNUC_PREREQ macro has been modernized
 to use explicit major/minor comparisons rather than bit-shifting.

 Needs review.
 source: <20260608124419.38905-1-dominik.loidolt@univie.ac.at>


* lo/doc-format-patch-subject-prefix (2026-06-04) 1 commit
  (merged to 'next' on 2026-06-09 at 58b2a20f6d)
 + Documentation: remove redundant 'instead' in --subject-prefix

 Wording used in "format-patch --subject-prefix" documentation
 has been improved.

 Will merge to 'master'.
 source: <20260604163510.36687-2-lucasseikioshiro@gmail.com>


* am/doc-tech-hash-typofix (2026-06-05) 1 commit
  (merged to 'next' on 2026-06-09 at aeaf2363f8)
 + doc: fix typo in GIT_ALTERNATE_OBJECT_DIRECTORIES

 Typofix.

 Will merge to 'master'.
 cf. <aiZo9FqsdKrhz0gA@pks.im>
 source: <20260605172643.8796-1-amonakov@ispras.ru>


* td/ref-filter-restore-prefix-iteration (2026-06-10) 1 commit
 - ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Needs review.
 source: <20260610-fix-git-branch-regression-v3-1-6fd48fad7a53@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-10) 1 commit
 - environment.c: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Will merge to 'next'?
 cf. <CAP8UFD35Tiy1_fqpjq8P-z=ZhzR3MTiThqfCs977652umRoSEQ@mail.gmail.com>
 cf. <xmqqse6uwdnz.fsf@gitster.g>
 source: <20260610124353.149874-2-cat@malon.dev>


* ds/config-no-includes (2026-06-08) 3 commits
 - git: add --no-includes top-level option
 - config: add GIT_CONFIG_INCLUDES
 - git-config.adoc: fix paragraph break

 Two new mechanisms, the GIT_CONFIG_INCLUDES environment variable and
 the top-level --no-includes command-line option, have been introduced
 to ignore configuration include directives.

 Comments?
 cf. <20260608225149.GB340696@coredump.intra.peff.net>
 source: <pull.2139.git.1780927027.gitgitgadget@gmail.com>


* ps/cat-file-remote-object-info (2026-06-08) 12 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - 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
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Comments?
 cf. <CA+J6zkQ22en2HgH03EedKOfC+jLcHH2UbwpH0h_bDEAHR6B2pg@mail.gmail.com>
 source: <20260608-ps-eric-work-rebase-v12-0-5338b766e658@gmail.com>


* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-07) 3 commits
 - b4: introduce configuration for the Git project
 - MyFirstContribution: recommend the use of b4
 - MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Comments?
 cf. <87a4t32a4g.fsf@emacs.iotcl.com>
 source: <20260608-pks-b4-v3-0-f5e497d10c56@pks.im>


* kk/streaming-walk-pqueue (2026-05-27) 3 commits
  (merged to 'next' on 2026-06-11 at 1466219fc9)
 + revision: use priority queue for non-limited streaming walks
 + revision: introduce rev_walk_mode to clarify get_revision_1()
 + pack-objects: call release_revisions() after cruft traversal

 Streaming revision walks have been optimized by using a priority queue
 for date-sorting commits, speeding up walks repositories with many
 merges.

 Will merge to 'master'.
 source: <pull.2127.git.1779897003.gitgitgadget@gmail.com>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* jk/describe-contains-all-match-fix (2026-06-01) 1 commit
  (merged to 'next' on 2026-06-11 at a95871538b)
 + describe: fix --exclude, --match with --contains and --all

 The 'git describe --contains --all' command has been fixed to
 properly honor the '--match' and '--exclude' options by passing
 them down to 'git name-rev' with the appropriate reference
 prefixes.

 Will merge to 'master'.
 source: <20260601233727.43558-1-jacob.e.keller@intel.com>


* wy/docs-typofixes (2026-05-29) 1 commit
 - docs: fix typos and grammar

 Various typos, grammatical errors, and duplicated words in both
 documentation and code comments have been corrected.

 Will merge to 'next'.
 source: <7b502e20e9495cd4720496bd6738a1fbeb453410.1780041658.git.wy@wyuan.org>


* ab/index-pack-retain-child-bases (2026-06-02) 1 commit
 - index-pack: retain child bases in delta cache

 "git index-pack" has been optimized by retaining child bases in the
 delta cache instead of immediately freeing them, letting the existing
 cache limit policy decide eviction.

 Will replace with [v2] and then merge to 'next'.
 cf. <20260611065748.GF2191159@coredump.intra.peff.net>
 source: <pull.2131.v3.git.1780445118653.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-05-29) 6 commits
 . blame: consult diff process for no-hunk detection
 . diff: bypass diff process with --no-ext-diff and in format-patch
 . diff: add long-running diff process via diff.<driver>.process
 . sub-process: separate process lifecycle from hashmap management
 . userdiff: add diff.<driver>.process config
 . xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2QwmKNA6wv-jG07fgJj7Xj2J+dzzWEiqV5Q+8HJpjA_GtkFw@mail.gmail.com>
 source: <pull.2120.v3.git.1780087700.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-02) 5 commits
 - pack-objects: support `--delta-islands` with `--path-walk`
 - pack-objects: extract `record_tree_depth()` helper
 - pack-objects: support reachability bitmaps with `--path-walk`
 - t/perf: drop p5311's lookup-table permutation
 - Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Needs review.
 source: <cover.1780438896.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-06-10) 3 commits
 - environment: move trust_executable_bit into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Needs review.
 cf. <CAP8UFD1GJ=caPh-M97KLCfB1ZKtpomzosYN0uYBOnay+G23GcA@mail.gmail.com>
 cf. <CAP8UFD20yij=1ZEYnR74DoCJ3g=b39yOsUxZecYuuf7nFGaKyA@mail.gmail.com>
 source: <20260610093635.139719-1-cat@malon.dev>


* ak/typofixes (2026-05-31) 1 commit
  (merged to 'next' on 2026-06-09 at 40de2e7b90)
 + doc: fix typos via codespell

 Typofixes.

 Will merge to 'master'.
 cf. <3398ef40-1547-4324-2cfc-97b9e2b24854@gmx.de>
 cf. <xmqq8q8p1ese.fsf@gitster.g>
 source: <20260531184428.55905-1-algonell@gmail.com>
 source: <20260506101631.18127-1-algonell@gmail.com>
 source: <3398ef40-1547-4324-2cfc-97b9e2b24854@gmx.de>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Expecting a reroll.
 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
 cf. <CAL71e4MYNiScZjTwkApjDAjRh2LM0_SP59h5HCTywV-Pua03tw@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* mm/subprocess-handshake-fix (2026-06-01) 1 commit
 - sub-process: use gentle handshake to avoid die() on startup failure

 The subprocess handshake during startup has been made gentler by using
 packet_read_line_gently() instead of packet_read_line() to prevent the
 parent Git process from dying abruptly when a configured subprocess
 (e.g., a clean/smudge filter) fails to start.

 Will merge to 'next'.
 source: <pull.2133.v2.git.1780348848489.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-05) 4 commits
 - repo: add path.commondir with absolute and relative suffix formatting
 - repo: add path.gitdir with absolute and relative suffix formatting
 - rev-parse: use format_path for path formatting
 - path: introduce format_path() for centralized path formatting

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Expecting a reroll.
 cf. <CA+rGoLf39iQH9X-xKW7HeTS3sMv-N-QzGiqm0Y=RYGOAqDcaoA@mail.gmail.com>
 source: <20260605163012.181089-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-10) 10 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip updating HEAD
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_working_tree()`
 - reset: rename `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Needs review.
 source: <20260610-b4-pks-history-drop-v4-0-70d5f0ae8c25@pks.im>


* ls/doc-raw-timestamp-prefix (2026-06-02) 1 commit
  (merged to 'next' on 2026-06-09 at 7198b6bb9d)
 + doc: document and test `@` prefix for raw timestamps

 Documentation and tests have been added to clarify that Git's internal
 raw timestamp format requires a `@` prefix for values less than
 100,000,000 to prevent ambiguity with other formats like YYYYMMDD.

 Will merge to 'master'.
 cf. xmqqmrxdxq1r.fsf@gitster.g>
 source: <20260602081924.673763-2-dev@luna.gl>


* jk/setup-gitfile-diag-fix (2026-06-01) 1 commit
 - read_gitfile_gently(): return non-repo path on error

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Expecting a reroll?
 cf. <ah6WEtk2pXyViEQA@pks.im>
 source: <20260602061159.GA693928@coredump.intra.peff.net>


* jc/submitting-patches-cover-letter (2026-06-02) 2 commits
  (merged to 'next' on 2026-06-09 at 42b2538a2a)
 + SubmittingPatches: describe cover letter
 + SubmittingPatches: separate typofixes section

 Guidelines on how to write a cover letter for a multi-patch series
 have been added to SubmittingPatches, which also got a new marker
 to separate the section for typofixes.

 Will merge to 'master'.
 cf. <c54f3571-ff7b-4caa-b75d-a739ed87ec9d@gmail.com>
 cf. <aiEgUdnL8dkszKFn@pks.im>
 source: <20260602144304.3341000-1-gitster@pobox.com>


* ps/t7527-fix-tap-output (2026-06-04) 8 commits
  (merged to 'next' on 2026-06-11 at b5a4cd26ee)
 + t: let prove fail when parsing invalid TAP output
 + t/lib-git-p4: silence output when killing p4d and its watchdog
 + t/test-lib: silence EBUSY errors on Windows during test cleanup
 + t7810: turn MB_REGEX check into a lazy prereq
 + t7527: fix broken TAP output
 + ci: unify Linux images across GitLab and GitHub
 + gitlab-ci: add missing Linux jobs
 + gitlab-ci: rearrange Linux jobs to match GitHub's order

 A recent regression in t7527 that broke TAP output has been fixed,
 some other test noise that also broke TAP output has been silenced,
 and 'prove' is now configured to fail on invalid TAP output to
 prevent future regressions.

 Will merge to 'master'.
 source: <20260604-pks-t7527-fix-tap-output-v3-0-7d766ed481e4@pks.im>


* ob/more-repo-config-values (2026-06-02) 8 commits
  (merged to 'next' on 2026-06-09 at 3d0b057aee)
 + environment: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 + environment: move "sparse_expect_files_outside_of_patterns" into `struct repo_config_values`
 + environment: move "core_sparse_checkout_cone" into `struct repo_config_values`
 + environment: move "precomposed_unicode" into `struct repo_config_values`
 + environment: move "pack_compression_level" into `struct repo_config_values`
 + environment: move `zlib_compression_level` into `struct repo_config_values`
 + environment: move "check_stat" into `struct repo_config_values`
 + environment: move "trust_ctime" into `struct repo_config_values`

 Many core configuration variables have been migrated from global
 variables into 'repo_config_values' to tie them to a specific
 repository instance, avoiding cross-repository state leakage.

 Will merge to 'master'.
 source: <20260602170921.35869-1-belkid98@gmail.com>


* kh/doc-trailers (2026-06-10) 10 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: join new-trailers again
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 source: <V3_CV_doc_int-tr_key_format.8a3@msgid.xyz>


* za/completion-hide-dotfiles (2026-05-26) 1 commit
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Waiting for response(s) to review comment(s).
 cf. <xmqqqzmxlep3.fsf@gitster.g>
 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Needs review.
 source: <cover.1779792311.git.erik@cervined.in>


* ps/setup-centralize-odb-creation (2026-06-04) 9 commits
  (merged to 'next' on 2026-06-09 at a1f23cb38c)
 + setup: construct object database in `apply_repository_format()`
 + repository: stop reading loose object map twice on repo init
 + setup: stop initializing object database without repository
 + setup: stop creating the object database in `setup_git_env()`
 + repository: stop initializing the object database in `repo_set_gitdir()`
 + setup: deduplicate logic to apply repository format
 + setup: drop `setup_git_env()`
 + t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
 + Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation
 (this branch is used by ps/refs-avoid-chdir-notify-reparent and ps/setup-drop-global-state.)

 The setup logic to discover and configure repositories has been
 refactored, and the initialization of the object database has been
 centralized.

 Will merge to 'master'.
 cf. <CAOLa=ZQwVbLsOcajaxQwtkTPm=4St7EiGEEyL6_B0o3Tt1v1pw@mail.gmail.com>
 source: <20260604-b4-pks-setup-centralize-odb-creation-v3-0-0691834f318a@pks.im>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Needs review.
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
 - remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Will merge to 'next'?
 cf. <xmqq7bo6xuok.fsf@gitster.g>
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* hn/config-typo-advice (2026-06-02) 2 commits
  (merged to 'next' on 2026-06-09 at 5149e69e3e)
 + config: improve diagnostic for "set" with missing value
 + config: add git_config_key_is_valid() for quiet validation

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.

 Will merge to 'master'.
 cf. <xmqq1penqfg2.fsf@gitster.g>
 source: <pull.2302.v6.git.git.1780425808.gitgitgadget@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s).
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hn/branch-prune-merged (2026-06-09) 6 commits
 - branch: add --dry-run for --prune-merged
 - branch: add branch.<name>.pruneMerged opt-out
 - branch: add --prune-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches warn instead of error on bulk refusal
 - branch: add --forked filter for --list mode

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Needs review.
 cf. <1c56bf9c-8273-4499-87c8-16ddf0112dca@gmail.com>
 source: <pull.2285.v14.git.git.1780999917.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Will merge to 'next'?
 cf. <877bo7294j.fsf@emacs.iotcl.com>
 cf. <xmqqh5naxwfc.fsf@gitster.g>
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-23) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Needs review.
 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-18) 1 commit
  (merged to 'next' on 2026-06-09 at 076600fa21)
 + revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Will merge to 'master'.
 source: <xmqq4ijm3p2x.fsf@gitster.g>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Waiting for response(s) to review comment(s).
 cf. <xmqqldcy4f07.fsf@gitster.g>
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Waiting for response(s) to review comment(s).
 cf. <xmqqbjdwcsno.fsf@gitster.g>
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Expecting a reroll.
 cf. <CAN5EUNQoKRqt3FGLmzRGpPU1nO5jCAogP8Wm9gBZXuPbMNbQAw@mail.gmail.com>
 cf. <CAN5EUNSFBC0+aoW1ceGjEiKWBRjzuzUEUjg8Xys5O9rDsJdkjg@mail.gmail.com>
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 Will retract.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>

--------------------------------------------------
[Discarded]

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 - fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Retracted.
 cf. <CAL71e4MrVqC1=AR6x0_8S=8kVqPdDkhgCZRb4etFsxTzd6s_8Q@mail.gmail.com>
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Retracted.
 cf. <agx_GPfBKpkSc3Gx@lorenzo-VM>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


^ permalink raw reply	[relevance 16%]

* What's cooking in git.git (Jun 2026, #03)
@ 2026-06-09  0:56 17% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-06-09  0:56 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* aj/stash-patch-optimize-temporary-index (2026-05-22) 1 commit
  (merged to 'next' on 2026-05-31 at d1b1dd94f5)
 + stash: reuse cached index entries in --patch temporary index

 "git stash -p" has been optimized by reusing cached index
 entries in its temporary index, avoiding unnecessary lstat()
 calls on unchanged files.
 cf. <xmqqse7m6deh.fsf@gitster.g>
 source: <pull.2306.v2.git.git.1779491545531.gitgitgadget@gmail.com>


* ar/receive-pack-worktree-env (2026-05-25) 1 commit
  (merged to 'next' on 2026-05-27 at 9c246d1969)
 + receive-pack: fix updateInstead with core.worktree

 The GIT_WORK_TREE variable prepared to invoke the push-to-checkout
 hook was leaking into the environment even when there was no hook
 used and broke the default push-to-deploy (i.e., let "git checkout"
 update the working tree only when the working tree is clean).
 source: <20260525162311.66240-2-hi@alyssa.is>


* ds/restore-sparse-index (2026-05-26) 2 commits
  (merged to 'next' on 2026-05-31 at e85a961bc7)
 + restore: avoid sparse index expansion
 + t1092: test 'git restore' with sparse index

 'git restore --staged' has been optimized to avoid unnecessarily expanding
 the sparse index when operating on paths within the sparse checkout
 definition, by handling sparse directory entries at the tree level.
 source: <pull.2121.v2.git.1779827195.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-again (2026-05-25) 6 commits
  (merged to 'next' on 2026-05-31 at cc4fe82d87)
 + doc: convert git-imap-send synopsis and options to new style
 + doc: convert git-apply synopsis and options to new style
 + doc: convert git-am synopsis and options to new style
 + doc: convert git-grep synopsis and options to new style
 + doc: git bisect: clarify the usage of the synopsis vs actual command
 + doc: convert git-bisect to synopsis style

 A batch of documentation pages has been updated to use the modern
 synopsis style.
 cf. <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>
 source: <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>


* kh/free-commit-list (2026-05-28) 2 commits
  (merged to 'next' on 2026-05-31 at 154f83b192)
 + commit: remove deprecated functions
 + *: replace deprecated free_commit_list

 Code clean-up.
 source: <V2_CV_commit.h_remove_deprecated.732@msgid.xyz>


* kk/commit-reach-optim (2026-05-25) 3 commits
  (merged to 'next' on 2026-05-31 at eeb8d0c207)
 + commit-reach: replace queue_has_nonstale() scan with O(1) tracking
 + commit-reach: deduplicate queue entries in paint_down_to_common
 + object.h: fix stale entries in object flag allocation table

 The check for non-stale commits in the priority queue used by
 `paint_down_to_common` and `ahead_behind` has been optimized by
 replacing an O(N) scan with an O(1) counter, yielding performance
 improvements in repositories with wide histories.
 cf. <xmqqzf1ncded.fsf@gitster.g>
 source: <pull.2124.v2.git.1779719286.gitgitgadget@gmail.com>

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

* ps/odb-source-packed (2026-06-04) 17 commits
 - odb/source-packed: drop pointer to "files" parent source
 - midx: refactor interfaces to work on "packed" source
 - odb/source-packed: stub out remaining functions
 - odb/source-packed: wire up `freshen_object()` callback
 - odb/source-packed: wire up `find_abbrev_len()` callback
 - odb/source-packed: wire up `count_objects()` callback
 - odb/source-packed: wire up `for_each_object()` callback
 - odb/source-packed: wire up `read_object_stream()` callback
 - odb/source-packed: wire up `read_object_info()` callback
 - packfile: use higher-level interface to implement `has_object_pack()`
 - odb/source-packed: wire up `reprepare()` callback
 - odb/source-packed: wire up `close()` callback
 - odb/source-packed: start converting to a proper `struct odb_source`
 - odb/source-packed: store pointer to "files" instead of generic source
 - packfile: move packed source into "odb/" subsystem
 - packfile: rename `struct packfile_store` to `odb_source_packed`
 - Merge branch 'ps/odb-source-loose' into ps/odb-source-packed
 (this branch uses ps/odb-source-loose.)

 The packed object source has been refactored into a proper struct
 odb_source.

 Comments?
 source: <20260604-pks-odb-source-packed-v1-0-2e7ab31b4b5c@pks.im>


* ps/transport-helper-tsan-fix (2026-06-04) 1 commit
 - transport-helper: fix TSAN race in transfer_debug()

 The TSAN race in transfer_debug() within transport-helper.c has been
 resolved by initializing the debug flag early in
 bidirectional_transfer_loop() before spawning worker threads, allowing
 the removal of a TSAN suppression.

 Comments?
 source: <20260604132327.277693-3-pushkarkumarsingh1970@gmail.com>


* ta/typofixes (2026-06-04) 1 commit
 - docs: fix typos

 Typofixes

 Comments?
 source: <20260604131457.19215-1-taahol@utu.fi>


* js/win-kill-child-more-gently (2026-06-04) 2 commits
 - mingw: really handle SIGINT
 - mingw: kill child processes in a gentler way

 Advanced emulation of kill() used on Windows in GfW has been
 upstreamed to improve the symptoms like left-behind .lock files and
 that fails to let the child clean-up itself when it gets killed.

 Comments?
 source: <pull.2130.git.1780590261.gitgitgadget@gmail.com>


* dl/posix-unused-warning-clang (2026-06-08) 2 commits
 - compat/posix.h: simplify GIT_GNUC_PREREQ() comparison
 - compat/posix.h: enable UNUSED warning messages for Clang

 The UNUSED macro in 'compat/posix.h' has been updated to use a
 newly introduced GIT_CLANG_PREREQ macro for compiler version
 checks, and the existing GIT_GNUC_PREREQ macro has been modernized
 to use explicit major/minor comparisons rather than bit-shifting.

 Comments?
 source: <20260608124419.38905-1-dominik.loidolt@univie.ac.at>


* lo/doc-format-patch-subject-prefix (2026-06-04) 1 commit
 - Documentation: remove redundant 'instead' in --subject-prefix

 Wording used in "format-patch --subject-prefix" documentation
 has been improved.

 Will merge to 'next'.
 source: <20260604163510.36687-2-lucasseikioshiro@gmail.com>


* am/doc-tech-hash-typofix (2026-06-05) 1 commit
 - doc: fix typo in GIT_ALTERNATE_OBJECT_DIRECTORIES

 Typofix.

 Will merge to 'next'.
 cf. <aiZo9FqsdKrhz0gA@pks.im>
 source: <20260605172643.8796-1-amonakov@ispras.ru>


* td/ref-filter-restore-prefix-iteration (2026-06-05) 1 commit
 - ref-filter: restore prefix-scoped iteration

 Commands that list branches and tags (like git branch and git tag)
 have been optimized to pass the namespace prefix when initializing
 their ref iterator, avoiding a loose-ref scaling regression in
 repositories with many unrelated loose references.

 Comments?
 source: <20260605-fix-git-branch-regression-v1-1-02f40ad40929@gmail.com>


* ty/move-protect-hfs-ntfs (2026-06-06) 1 commit
 - environment.c: move 'protect_hfs' and 'protect_ntfs' into 'repo_config_values'

 The global configuration variables protect_hfs and protect_ntfs have
 been migrated into struct repo_config_values to tie them to
 per-repository configuration state.

 Comments?
 source: <20260606143412.15443-1-cat@malon.dev>


* ds/config-no-includes (2026-06-08) 3 commits
 - git: add --no-includes top-level option
 - config: add GIT_CONFIG_INCLUDES
 - git-config.adoc: fix paragraph break

 Two new mechanisms, the GIT_CONFIG_INCLUDES environment variable and
 the top-level --no-includes command-line option, have been introduced
 to ignore configuration include directives.

 Comments?
 source: <pull.2139.git.1780927027.gitgitgadget@gmail.com>


* ps/cat-file-remote-object-info (2026-06-08) 12 commits
 - cat-file: make remote-object-info allow-list dynamic
 - cat-file: validate remote atoms with allow_list
 - 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
 - connect: refactor packet writing
 - fetch-pack: move function to connect.c
 - 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
 - transport-helper: fix memory leak of helper on disconnect

 The `remote-object-info` command has been added to `git cat-file
 --batch-command`, allowing clients to request object metadata
 (currently size) from a remote server via protocol v2 without
 downloading the entire object.

 The client dynamically filters format placeholders based on
 server-advertised capabilities and safely returns empty strings for
 inapplicable or unsupported fields.

 Comments?
 source: <20260608-ps-eric-work-rebase-v12-0-5338b766e658@gmail.com>

--------------------------------------------------
[Stalled]

* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Waiting for response(s) to review comment(s) for too long, consider discarding.
 cf. <xmqqldf7y95a.fsf@gitster.g>
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Waiting for response(s) to review comment(s) for too long, consider discarding.
 cf. <xmqqv7c13o5l.fsf@gitster.g>
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>

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

* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-07) 3 commits
 - b4: introduce configuration for the Git project
 - MyFirstContribution: recommend the use of b4
 - MyFirstContribution: recommend shallow threading of cover letters

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Comments?
 source: <20260608-pks-b4-v3-0-f5e497d10c56@pks.im>


* kk/streaming-walk-pqueue (2026-05-27) 3 commits
 - revision: use priority queue for non-limited streaming walks
 - revision: introduce rev_walk_mode to clarify get_revision_1()
 - pack-objects: call release_revisions() after cruft traversal

 Streaming revision walks have been optimized by using a priority queue
 for date-sorting commits, speeding up walks repositories with many
 merges.

 Will merge to 'next'?
 source: <pull.2127.git.1779897003.gitgitgadget@gmail.com>


* kk/wildmatch-windows-ls-files-prereq (2026-05-28) 1 commit
  (merged to 'next' on 2026-06-04 at 6dc748aa63)
 + t3070: skip ls-files tests with backslash patterns on Windows

 In t3070-wildmatch, "via ls-files" test variants with patterns
 containing backslash escapes are now skipped on Windows, avoiding 36
 test failures caused by pathspec separator conversion.

 Will merge to 'master'.
 cf. <xmqqecivjn7k.fsf@gitster.g>
 source: <pull.2128.git.1779958849319.gitgitgadget@gmail.com>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <f982c386-e329-4ab0-b695-e540bcb9de3d@gmail.com>
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* lp/http-fetch-pack-index-leak-fix (2026-06-01) 2 commits
  (merged to 'next' on 2026-06-04 at f4090b5068)
 + http: fix memory leak in fetch_and_setup_pack_index()
 + http: cleanup function fetch_and_setup_pack_index()

 A memory leak in `fetch_and_setup_pack_index()` when verification of
 the downloaded pack index fails has been plugged. Also an obsolete
 `unlink()` call on parse failure has been cleaned up.

 Will merge to 'master'.
 cf. <20260529053659.GC1099450@coredump.intra.peff.net>
 source: <cover.1780321770.git.lorenzo.pegorari2002@gmail.com>


* jk/describe-contains-all-match-fix (2026-06-01) 1 commit
 - describe: fix --exclude, --match with --contains and --all

 The 'git describe --contains --all' command has been fixed to
 properly honor the '--match' and '--exclude' options by passing
 them down to 'git name-rev' with the appropriate reference
 prefixes.

 Will merge to 'next'?
 source: <20260601233727.43558-1-jacob.e.keller@intel.com>


* wy/docs-typofixes (2026-05-29) 1 commit
 - docs: fix typos and grammar

 Various typos, grammatical errors, and duplicated words in both
 documentation and code comments have been corrected.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q8x3nox.fsf@gitster.g>
 source: <7b502e20e9495cd4720496bd6738a1fbeb453410.1780041658.git.wy@wyuan.org>


* ab/index-pack-retain-child-bases (2026-06-02) 1 commit
 - index-pack: retain child bases in delta cache

 "git index-pack" has been optimized by retaining child bases in the
 delta cache instead of immediately freeing them, letting the existing
 cache limit policy decide eviction.

 Waiting for response(s) to review comment(s).
 cf. <c4a32a6f-70bf-4ff4-abbf-d6e301246b5b@gmail.com>
 source: <pull.2131.v3.git.1780445118653.gitgitgadget@gmail.com>


* hn/macos-linker-warning (2026-06-02) 1 commit
  (merged to 'next' on 2026-06-04 at db2ca164c4)
 + config.mak.uname: avoid macOS linker warning on Xcode 16.3+

 A linker warning on macOS when building with Xcode 16.3 or newer has
 been avoided by passing -fno-common to the compiler when a
 sufficiently new linker is detected.

 Will merge to 'master'.
 source: <pull.2313.v3.git.git.1780385878555.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-05-29) 6 commits
 . blame: consult diff process for no-hunk detection
 . diff: bypass diff process with --no-ext-diff and in format-patch
 . diff: add long-running diff process via diff.<driver>.process
 . sub-process: separate process lifecycle from hashmap management
 . userdiff: add diff.<driver>.process config
 . xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Expecting a reroll.
 cf. <CAC2QwmKNA6wv-jG07fgJj7Xj2J+dzzWEiqV5Q+8HJpjA_GtkFw@mail.gmail.com>
 source: <pull.2120.v3.git.1780087700.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-02) 5 commits
 - pack-objects: support `--delta-islands` with `--path-walk`
 - pack-objects: extract `record_tree_depth()` helper
 - pack-objects: support reachability bitmaps with `--path-walk`
 - t/perf: drop p5311's lookup-table permutation
 - Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Comments?
 source: <cover.1780438896.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-05-30) 4 commits
 - read-cache: pass 'istate' to stat/mode helper functions
 - environment: move 'trust_executable_bit' into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Waiting for response(s) to review comment(s).
 cf. <CAP8UFD1GJ=caPh-M97KLCfB1ZKtpomzosYN0uYBOnay+G23GcA@mail.gmail.com>
 cf. <CAP8UFD20yij=1ZEYnR74DoCJ3g=b39yOsUxZecYuuf7nFGaKyA@mail.gmail.com>
 source: <20260530160520.77859-1-cat@malon.dev>


* ak/typofixes (2026-05-31) 1 commit
 - doc: fix typos via codespell

 Typofixes.

 Will merge to 'next'.
 cf. <3398ef40-1547-4324-2cfc-97b9e2b24854@gmx.de>
 cf. <xmqq8q8p1ese.fsf@gitster.g>
 source: <20260531184428.55905-1-algonell@gmail.com>
 source: <20260506101631.18127-1-algonell@gmail.com>
 source: <3398ef40-1547-4324-2cfc-97b9e2b24854@gmx.de>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Expecting a reroll.
 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* mm/subprocess-handshake-fix (2026-06-01) 1 commit
 - sub-process: use gentle handshake to avoid die() on startup failure

 The subprocess handshake during startup has been made gentler by using
 packet_read_line_gently() instead of packet_read_line() to prevent the
 parent Git process from dying abruptly when a configured subprocess
 (e.g., a clean/smudge filter) fails to start.

 Will merge to 'next'?
 source: <pull.2133.v2.git.1780348848489.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-05) 4 commits
 - repo: add path.commondir with absolute and relative suffix formatting
 - repo: add path.gitdir with absolute and relative suffix formatting
 - rev-parse: use format_path for path formatting
 - path: introduce format_path() for centralized path formatting

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Comments?
 source: <20260605163012.181089-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-08) 9 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip reference updates
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Comments?
 source: <20260608-b4-pks-history-drop-v3-0-84ca8e43e937@pks.im>


* ls/doc-raw-timestamp-prefix (2026-06-02) 1 commit
 - doc: document and test `@` prefix for raw timestamps

 Documentation and tests have been added to clarify that Git's internal
 raw timestamp format requires a `@` prefix for values less than
 100,000,000 to prevent ambiguity with other formats like YYYYMMDD.

 Will merge to 'next'.
 cf. xmqqmrxdxq1r.fsf@gitster.g>
 source: <20260602081924.673763-2-dev@luna.gl>


* jk/setup-gitfile-diag-fix (2026-06-01) 1 commit
 - read_gitfile_gently(): return non-repo path on error

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Expecting a reroll?
 cf. <ah6WEtk2pXyViEQA@pks.im>
 source: <20260602061159.GA693928@coredump.intra.peff.net>


* jc/submitting-patches-cover-letter (2026-06-02) 2 commits
 - SubmittingPatches: describe cover letter
 - SubmittingPatches: separate typofixes section

 Guidelines on how to write a cover letter for a multi-patch series
 have been added to SubmittingPatches, which also got a new marker
 to separate the section for typofixes.

 Will merge to 'next'.
 cf. <c54f3571-ff7b-4caa-b75d-a739ed87ec9d@gmail.com>
 cf. <aiEgUdnL8dkszKFn@pks.im>
 source: <20260602144304.3341000-1-gitster@pobox.com>


* ps/t7527-fix-tap-output (2026-06-04) 8 commits
 - t: let prove fail when parsing invalid TAP output
 - t/lib-git-p4: silence output when killing p4d and its watchdog
 - t/test-lib: silence EBUSY errors on Windows during test cleanup
 - t7810: turn MB_REGEX check into a lazy prereq
 - t7527: fix broken TAP output
 - ci: unify Linux images across GitLab and GitHub
 - gitlab-ci: add missing Linux jobs
 - gitlab-ci: rearrange Linux jobs to match GitHub's order

 A recent regression in t7527 that broke TAP output has been fixed,
 some other test noise that also broke TAP output has been silenced,
 and 'prove' is now configured to fail on invalid TAP output to
 prevent future regressions.

 Comments?
 source: <20260604-pks-t7527-fix-tap-output-v3-0-7d766ed481e4@pks.im>


* ob/more-repo-config-values (2026-06-02) 8 commits
 - environment: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - environment: move "sparse_expect_files_outside_of_patterns" into `struct repo_config_values`
 - environment: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Many core configuration variables have been migrated from global
 variables into 'repo_config_values' to tie them to a specific
 repository instance, avoiding cross-repository state leakage.

 Will merge to 'next'.
 source: <20260602170921.35869-1-belkid98@gmail.com>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <5508ee49-2f78-4c3a-accf-a2350666bfb8@app.fastmail.com>
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* za/completion-hide-dotfiles (2026-05-26) 1 commit
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Comments?
 cf. <xmqqqzmxlep3.fsf@gitster.g>
 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>


* ib/doc-push-default-simple (2026-05-25) 1 commit
  (merged to 'next' on 2026-06-02 at 5c1ff2a769)
 + doc: clarify push.default=simple behavior

 The documentation for `push.default = simple` has been clarified to
 better explain its behavior, making it clear that it pushes the
 current branch to a same-named branch on the remote, and detailing
 the upstream requirements for centralized workflows.

 Will merge to 'master'.
 cf. <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>
 source: <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>


* jc/doc-monitor-ghci (2026-05-24) 1 commit
  (merged to 'next' on 2026-06-02 at 46fb5fe1c2)
 + SubmittingPatches: proactively monitor GHCI pages

 Encourage original authors to monitor the CI status.

 Will merge to 'master'.
 source: <xmqq1pf0gpp3.fsf@gitster.g>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Comments?
 source: <cover.1779792311.git.erik@cervined.in>


* gh/jump-auto-mode (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-02 at f70dd05c9c)
 + git-jump: pick a mode automatically when invoked without arguments

 The 'git-jump' command (in contrib/) has been taught to automatically
 pick a mode (merge, diff, or ws) when invoked without arguments.

 Will merge to 'master'.
 cf. <20260522052821.GC861761@coredump.intra.peff.net>
 source: <pull.2108.v3.git.1779371110195.gitgitgadget@gmail.com>


* ps/odb-source-loose (2026-06-01) 19 commits
  (merged to 'next' on 2026-06-04 at 660909ad66)
 + odb/source-loose: drop pointer to the "files" source
 + odb/source-loose: stub out remaining callbacks
 + odb/source-loose: wire up `write_object_stream()` callback
 + object-file: refactor writing objects to use loose source
 + odb/source-loose: wire up `write_object()` callback
 + loose: refactor object map to operate on `struct odb_source_loose`
 + odb/source-loose: wire up `freshen_object()` callback
 + odb/source-loose: drop `odb_source_loose_has_object()`
 + odb/source-loose: wire up `count_objects()` callback
 + odb/source-loose: wire up `find_abbrev_len()` callback
 + odb/source-loose: wire up `for_each_object()` callback
 + odb/source-loose: wire up `read_object_stream()` callback
 + odb/source-loose: wire up `read_object_info()` callback
 + odb/source-loose: wire up `close()` callback
 + odb/source-loose: wire up `reprepare()` callback
 + odb/source-loose: start converting to a proper `struct odb_source`
 + odb/source-loose: store pointer to "files" instead of generic source
 + odb/source-loose: move loose source into "odb/" subsystem
 + Merge branch 'ps/odb-in-memory' into ps/odb-source-loose
 (this branch is used by ps/odb-source-packed.)

 The loose object source has been refactored into a proper `struct
 odb_source`.

 Will merge to 'master'.
 source: <20260601-b4-pks-odb-source-loose-v2-0-90ff159430af@pks.im>


* ps/setup-centralize-odb-creation (2026-06-04) 9 commits
 - setup: construct object database in `apply_repository_format()`
 - repository: stop reading loose object map twice on repo init
 - setup: stop initializing object database without repository
 - setup: stop creating the object database in `setup_git_env()`
 - repository: stop initializing the object database in `repo_set_gitdir()`
 - setup: deduplicate logic to apply repository format
 - setup: drop `setup_git_env()`
 - t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
 - Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation

 The setup logic to discover and configure repositories has been
 refactored, and the initialization of the object database has been
 centralized.

 Will merge to 'next'.
 cf. <CAOLa=ZQwVbLsOcajaxQwtkTPm=4St7EiGEEyL6_B0o3Tt1v1pw@mail.gmail.com>
 source: <20260604-b4-pks-setup-centralize-odb-creation-v3-0-0691834f318a@pks.im>


* kh/doc-replay-config (2026-06-05) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Comments?
 source: <V3_CV_doc_replay_config.780@msgid.xyz>


* tb/bitmap-build-performance (2026-05-27) 9 commits
  (merged to 'next' on 2026-06-02 at d1a84a996a)
 + pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
 + pack-bitmap: remember pseudo-merge parents
 + pack-bitmap: sort bitmaps before XORing
 + pack-bitmap: cache object positions during fill
 + pack-bitmap: consolidate `find_object_pos()` success path
 + pack-bitmap: reuse stored selected bitmaps
 + pack-bitmap: check subtree bits before recursing
 + pack-bitmap: pass object position to `fill_bitmap_tree()`
 + Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance

 Reachability bitmap generation has been significantly optimized. By
 reordering tree traversal, caching object positions, and refining how
 pseudo-merge bitmaps are constructed, the performance of "git repack
 --write-midx-bitmaps" is improved, especially for large repositories
 and when using pseudo-merges.

 Will merge to 'master'.
 cf. <20260529083439.GD1106035@coredump.intra.peff.net>
 source: <cover.1779911733.git.me@ttaylorr.com>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
 - remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Comments?
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* rs/strbuf-add-uint (2026-05-12) 4 commits
  (merged to 'next' on 2026-06-02 at f5be02d8ec)
 + ls-tree: use strbuf_add_uint()
 + ls-files: use strbuf_add_uint()
 + cat-file: use strbuf_add_uint()
 + strbuf: add strbuf_add_uint()

 Adding a decimal integer with strbuf_addf("%u") appears commonly;
 they have been optimized by using a custom formatter.

 Will merge to 'master'.
 cf. <20260512184619.GD70851@coredump.intra.peff.net>
 source: <20260512115603.80780-1-l.s.r@web.de>


* mm/doc-word-diff (2026-05-28) 1 commit
  (merged to 'next' on 2026-06-04 at 9fa723ec63)
 + doc: clarify that --word-diff operates on line-level hunks

 The documentation for "--word-diff" has been extended with a bit of
 implementation detail of where these different words come from.

 Will merge to 'master'.
 source: <pull.2113.v2.git.1779996106005.gitgitgadget@gmail.com>


* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
  (merged to 'next' on 2026-06-02 at 4876f95de0)
 + hex: add and use strbuf_add_oid_hex()

 Formatting object name in full hexadecimal form has been optimized
 by using a new strbuf_add_oid_hex() helper function.

 Will merge to 'master'.
 cf. <20260513160155.GA103037@coredump.intra.peff.net>
 source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>


* hn/config-typo-advice (2026-06-02) 2 commits
 - config: improve diagnostic for "set" with missing value
 - config: add git_config_key_is_valid() for quiet validation

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.

 Will merge to 'next'.
 cf. <xmqq1penqfg2.fsf@gitster.g>
 source: <pull.2302.v6.git.git.1780425808.gitgitgadget@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s).
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hn/branch-prune-merged (2026-06-05) 6 commits
 . branch: add --dry-run for --prune-merged
 . branch: add branch.<name>.pruneMerged opt-out
 . branch: add --prune-merged <branch>
 . branch: prepare delete_branches for a bulk caller
 . branch: let delete_branches warn instead of error on bulk refusal
 . branch: add --forked filter for --list mode

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Breaks tests.
 source: <pull.2285.v13.git.git.1780684553.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-27) 3 commits
  (merged to 'next' on 2026-06-04 at 17684e6158)
 + daemon: guard NULL REMOTE_PORT in execute() logging
 + daemon: fix IPv6 address truncation in ip2str()
 + daemon: fix IPv6 address corruption in lookup_hostname()

 Correct use of sockaddr API in "git daemon".

 Will merge to 'master'.
 source: <pull.2300.v3.git.git.1779937016.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Comments?
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-23) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-18) 1 commit
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Will merge to 'next'.
 source: <8210d60832b9a58aa4d71fc3790e44d8989564ce.1779152064.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-05-28) 3 commits
  (merged to 'next' on 2026-06-04 at 02f8bea278)
 + line-log: allow non-patch diff formats with -L
 + line-log: integrate -L output with the standard log-tree pipeline
 + revision: move -L setup before output_format-to-diff derivation

 The `git log -L` implementation has been refactored to use the
 standard diff output pipeline, enabling pickaxe and diff-filter to
 work as expected. Additionally, metadata-only diff formats like
 --raw and --name-only are now supported with -L.

 Will merge to 'master'.
 cf. <B59BA5B1-184D-48A8-8BAD-11EB6F8EB50C@gmail.com>
 source: <pull.2094.v3.git.1780001267.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Waiting for response(s) to review comment(s).
 cf. <xmqqldcy4f07.fsf@gitster.g>
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Waiting for response(s) to review comment(s).
 cf. <xmqqbjdwcsno.fsf@gitster.g>
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Expecting a reroll.
 cf. <CAN5EUNQoKRqt3FGLmzRGpPU1nO5jCAogP8Wm9gBZXuPbMNbQAw@mail.gmail.com>
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
  (merged to 'next' on 2026-06-02 at 02a749d7fe)
 + promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Will merge to 'master'.
 cf. <c87f1f12-d0cc-4150-8f43-4dc9cc1fe24f@malon.dev>
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* ua/push-remote-group (2026-05-03) 3 commits
  (merged to 'next' on 2026-06-02 at ba5d6aebaa)
 + push: support pushing to a remote group
 + remote: move remote group resolution to remote.c
 + remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Will merge to 'master'.
 cf. <20260518182721.155070-1-usmanakinyemi202@gmail.com>
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold to help the base topic with wider exposure.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>

--------------------------------------------------
[Discarded]

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 - fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Retracted.
 cf. <CAL71e4MrVqC1=AR6x0_8S=8kVqPdDkhgCZRb4etFsxTzd6s_8Q@mail.gmail.com>
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Retracted.
 cf. <agx_GPfBKpkSc3Gx@lorenzo-VM>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


^ permalink raw reply	[relevance 17%]

* What's cooking in git.git (Jun 2026, #02)
@ 2026-06-04  2:35 19% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-04  2:35 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

I'll be away from my tree and the list, so expect not much change
in this report until next week.

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]

* ap/http-redirect-wwwauth-fix (2026-06-02) 1 commit
 - http: preserve wwwauth_headers across redirects

 When cURL follows a redirect, the WWW-Authenticate headers from the
 redirect target were lost because credential_from_url() cleared the
 credential state. This has been fixed by preserving the collected
 headers across the redirect update.

 Expecting a reroll.
 cf. <5144a29d-a53f-4446-beff-e1f549345bf9@nvidia.com>
 source: <20260602161150.1527493-1-aplattner@nvidia.com>


* ps/doc-recommend-b4 (2026-06-02) 3 commits
 - b4: introduce configuration for the Git project
 - Documentation/MyFirstContribution: recommend the use of b4
 - Documentation/MyFirstContribution: recommend shallow threading

 Project-specific configuration for b4 has been introduced, and the
 documentation has been updated to recommend using it as a
 streamlined method for submitting patches.

 Waiting for response(s) to review comment(s).
 cf. <aiACDLOtd_0_CCD7@wyuan.org>
 source: <20260603-pks-b4-v2-0-a8aea0aa2c23@pks.im>

--------------------------------------------------
[Stalled]

* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Waiting for response(s) to review comment(s) for too long, consider discarding.
 cf. <xmqqldf7y95a.fsf@gitster.g>
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Waiting for response(s) to review comment(s) for too long, consider discarding.
 cf. <xmqqv7c13o5l.fsf@gitster.g>
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>

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

* kh/free-commit-list (2026-05-28) 2 commits
  (merged to 'next' on 2026-05-31 at 154f83b192)
 + commit: remove deprecated functions
 + *: replace deprecated free_commit_list

 Code clean-up.

 Will merge to 'master'.
 source: <V2_CV_commit.h_remove_deprecated.732@msgid.xyz>


* kk/streaming-walk-pqueue (2026-05-27) 3 commits
 - revision: use priority queue for non-limited streaming walks
 - revision: introduce rev_walk_mode to clarify get_revision_1()
 - pack-objects: call release_revisions() after cruft traversal

 Streaming revision walks have been optimized by using a priority queue
 for date-sorting commits, speeding up walks repositories with many
 merges.

 Will merge to 'next'?
 source: <pull.2127.git.1779897003.gitgitgadget@gmail.com>


* kk/wildmatch-windows-ls-files-prereq (2026-05-28) 1 commit
  (merged to 'next' on 2026-06-04 at 6dc748aa63)
 + t3070: skip ls-files tests with backslash patterns on Windows

 In t3070-wildmatch, "via ls-files" test variants with patterns
 containing backslash escapes are now skipped on Windows, avoiding 36
 test failures caused by pathspec separator conversion.

 Will merge to 'master'.
 cf. <xmqqecivjn7k.fsf@gitster.g>
 source: <pull.2128.git.1779958849319.gitgitgadget@gmail.com>


* sn/rebase-update-refs-symrefs (2026-06-03) 1 commit
 - rebase: skip branch symref aliases

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Comments?
 source: <pull.2126.v2.git.1780482436865.gitgitgadget@gmail.com>


* lp/http-fetch-pack-index-leak-fix (2026-06-01) 2 commits
  (merged to 'next' on 2026-06-04 at f4090b5068)
 + http: fix memory leak in fetch_and_setup_pack_index()
 + http: cleanup function fetch_and_setup_pack_index()

 A memory leak in `fetch_and_setup_pack_index()` when verification of
 the downloaded pack index fails has been plugged. Also an obsolete
 `unlink()` call on parse failure has been cleaned up.

 Will merge to 'master'.
 cf. <20260529053659.GC1099450@coredump.intra.peff.net>
 source: <cover.1780321770.git.lorenzo.pegorari2002@gmail.com>


* jk/describe-contains-all-match-fix (2026-06-01) 1 commit
 - describe: fix --exclude, --match with --contains and --all

 The 'git describe --contains --all' command has been fixed to
 properly honor the '--match' and '--exclude' options by passing
 them down to 'git name-rev' with the appropriate reference
 prefixes.

 Will merge to 'next'?
 source: <20260601233727.43558-1-jacob.e.keller@intel.com>


* wy/docs-typofixes (2026-05-29) 1 commit
 - docs: fix typos and grammar

 Various typos, grammatical errors, and duplicated words in both
 documentation and code comments have been corrected.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q8x3nox.fsf@gitster.g>
 source: <7b502e20e9495cd4720496bd6738a1fbeb453410.1780041658.git.wy@wyuan.org>


* ab/index-pack-retain-child-bases (2026-06-02) 1 commit
 - index-pack: retain child bases in delta cache

 "git index-pack" has been optimized by retaining child bases in the
 delta cache instead of immediately freeing them, letting the existing
 cache limit policy decide eviction.

 Waiting for response(s) to review comment(s).
 cf. <c4a32a6f-70bf-4ff4-abbf-d6e301246b5b@gmail.com>
 source: <pull.2131.v3.git.1780445118653.gitgitgadget@gmail.com>


* hn/macos-linker-warning (2026-06-02) 1 commit
  (merged to 'next' on 2026-06-04 at db2ca164c4)
 + config.mak.uname: avoid macOS linker warning on Xcode 16.3+

 A linker warning on macOS when building with Xcode 16.3 or newer has
 been avoided by passing -fno-common to the compiler when a
 sufficiently new linker is detected.

 Will merge to 'master'.
 source: <pull.2313.v3.git.git.1780385878555.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-05-29) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Breaks CI.
 cf. <xmqq5x43dfk4.fsf@gitster.g>
 source: <pull.2120.v3.git.1780087700.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-06-02) 5 commits
 - pack-objects: support `--delta-islands` with `--path-walk`
 - pack-objects: extract `record_tree_depth()` helper
 - pack-objects: support reachability bitmaps with `--path-walk`
 - t/perf: drop p5311's lookup-table permutation
 - Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Comments?
 source: <cover.1780438896.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-05-30) 4 commits
 - read-cache: pass 'istate' to stat/mode helper functions
 - environment: move 'trust_executable_bit' into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Waiting for response(s) to review comment(s).
 cf. <CAP8UFD1GJ=caPh-M97KLCfB1ZKtpomzosYN0uYBOnay+G23GcA@mail.gmail.com>
 cf. <CAP8UFD20yij=1ZEYnR74DoCJ3g=b39yOsUxZecYuuf7nFGaKyA@mail.gmail.com>
 source: <20260530160520.77859-1-cat@malon.dev>


* ak/typofixes (2026-05-31) 1 commit
 - doc: fix typos via codespell

 Typofixes.

 Will merge to 'next'.
 source: <20260531184428.55905-1-algonell@gmail.com>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Expecting a reroll.
 cf. <CAL71e4Ob-B5MJ5DPY+_tzpj6nyrbQ5WutxED2T93SWJV6kJGPA@mail.gmail.com>
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* mm/subprocess-handshake-fix (2026-06-01) 1 commit
 - sub-process: use gentle handshake to avoid die() on startup failure

 The subprocess handshake during startup has been made gentler by using
 packet_read_line_gently() instead of packet_read_line() to prevent the
 parent Git process from dying abruptly when a configured subprocess
 (e.g., a clean/smudge filter) fails to start.

 Will merge to 'next'?
 source: <pull.2133.v2.git.1780348848489.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-01) 4 commits
 - repo: add path.commondir with absolute and relative suffix formatting
 - repo: add path.gitdir with absolute and relative suffix formatting
 - rev-parse: use strbuf_add_path for path formatting
 - path: add strbuf_add_path for formatting paths

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".

 Waiting for response(s) to review comment(s).
 cf. <8ebc3d98-40a5-4e99-a205-34254cf5172b@gmail.com>
 source: <20260601151950.30686-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-03) 9 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases
 - reset: stop assuming that the caller passes in a clean index
 - reset: allow the caller to specify the current HEAD object
 - reset: introduce ability to skip reference updates
 - reset: introduce dry-run mode
 - reset: modernize flags passed to `reset_head()`
 - reset: drop `USE_THE_REPOSITORY_VARIABLE`
 - read-cache: split out function to drop unmerged entries to stage 0

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Comments?
 source: <20260603-b4-pks-history-drop-v2-0-742cb5b5176d@pks.im>


* ls/doc-raw-timestamp-prefix (2026-06-02) 1 commit
 - doc: document and test `@` prefix for raw timestamps

 Documentation and tests have been added to clarify that Git's internal
 raw timestamp format requires a `@` prefix for values less than
 100,000,000 to prevent ambiguity with other formats like YYYYMMDD.

 Will merge to 'next'?
 cf. <xmqqmrxdxq1r.fsf@gitster.g>
 source: <20260602081924.673763-2-dev@luna.gl>


* jk/setup-gitfile-diag-fix (2026-06-01) 1 commit
 - read_gitfile_gently(): return non-repo path on error

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Expecting a reroll?
 cf. <ah6WEtk2pXyViEQA@pks.im>
 source: <20260602061159.GA693928@coredump.intra.peff.net>


* jc/submitting-patches-cover-letter (2026-06-02) 2 commits
 - SubmittingPatches: describe cover letter
 - SubmittingPatches: separate typofixes section

 Guidelines on how to write a cover letter for a multi-patch series
 have been added to SubmittingPatches, which also got a new marker
 to separate the section for typofixes.

 Will merge to 'next'?
 cf. <c54f3571-ff7b-4caa-b75d-a739ed87ec9d@gmail.com>
 source: <20260602144304.3341000-1-gitster@pobox.com>


* ps/t7527-fix-tap-output (2026-06-02) 4 commits
 - t: let prove fail when parsing invalid TAP output
 - t/lib-git-p4: silence output when killing p4d and its watchdog
 - t/test-lib: silence EBUSY errors on Windows during test cleanup
 - t7527: fix broken TAP output

 A recent regression in t7527 that broke TAP output has been fixed,
 some other test noise that also broke TAP output has been silenced,
 and 'prove' is now configured to fail on invalid TAP output to
 prevent future regressions.

 Expecting a (small and hopefully final) reroll.
 cf. <xmqqtsrlw09t.fsf@gitster.g>
 source: <20260603-pks-t7527-fix-tap-output-v2-0-cf3af5694e20@pks.im>


* ob/more-repo-config-values (2026-06-02) 8 commits
 - environment: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - environment: move "sparse_expect_files_outside_of_patterns" into `struct repo_config_values`
 - environment: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Many core configuration variables have been migrated from global
 variables into 'repo_config_values' to tie them to a specific
 repository instance, avoiding cross-repository state leakage.

 Will merge to 'next'?
 source: <20260602170921.35869-1-belkid98@gmail.com>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <5508ee49-2f78-4c3a-accf-a2350666bfb8@app.fastmail.com>
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* za/completion-hide-dotfiles (2026-05-26) 1 commit
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Comments?
 cf. <xmqqqzmxlep3.fsf@gitster.g>
 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>


* ds/restore-sparse-index (2026-05-26) 2 commits
  (merged to 'next' on 2026-05-31 at e85a961bc7)
 + restore: avoid sparse index expansion
 + t1092: test 'git restore' with sparse index

 'git restore --staged' has been optimized to avoid unnecessarily expanding
 the sparse index when operating on paths within the sparse checkout
 definition, by handling sparse directory entries at the tree level.

 Will merge to 'master'.
 source: <pull.2121.v2.git.1779827195.gitgitgadget@gmail.com>


* kk/commit-reach-optim (2026-05-25) 3 commits
  (merged to 'next' on 2026-05-31 at eeb8d0c207)
 + commit-reach: replace queue_has_nonstale() scan with O(1) tracking
 + commit-reach: deduplicate queue entries in paint_down_to_common
 + object.h: fix stale entries in object flag allocation table

 The check for non-stale commits in the priority queue used by
 `paint_down_to_common` and `ahead_behind` has been optimized by
 replacing an O(N) scan with an O(1) counter, yielding performance
 improvements in repositories with wide histories.

 Will merge to 'master'.
 cf. <xmqqzf1ncded.fsf@gitster.g>
 source: <pull.2124.v2.git.1779719286.gitgitgadget@gmail.com>


* ar/receive-pack-worktree-env (2026-05-25) 1 commit
  (merged to 'next' on 2026-05-27 at 9c246d1969)
 + receive-pack: fix updateInstead with core.worktree

 The GIT_WORK_TREE variable prepared to invoke the push-to-checkout
 hook was leaking into the environment even when there was no hook
 used and broke the default push-to-deploy (i.e., let "git checkout"
 update the working tree only when the working tree is clean).

 Will merge to 'master'.
 source: <20260525162311.66240-2-hi@alyssa.is>


* ib/doc-push-default-simple (2026-05-25) 1 commit
  (merged to 'next' on 2026-06-02 at 5c1ff2a769)
 + doc: clarify push.default=simple behavior

 The documentation for `push.default = simple` has been clarified to
 better explain its behavior, making it clear that it pushes the
 current branch to a same-named branch on the remote, and detailing
 the upstream requirements for centralized workflows.

 Will merge to 'master'.
 cf. <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>
 source: <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>


* jc/doc-monitor-ghci (2026-05-24) 1 commit
  (merged to 'next' on 2026-06-02 at 46fb5fe1c2)
 + SubmittingPatches: proactively monitor GHCI pages

 Encourage original authors to monitor the CI status.

 Will merge to 'master'.
 source: <xmqq1pf0gpp3.fsf@gitster.g>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Comments?
 source: <cover.1779792311.git.erik@cervined.in>


* gh/jump-auto-mode (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-02 at f70dd05c9c)
 + git-jump: pick a mode automatically when invoked without arguments

 The 'git-jump' command (in contrib/) has been taught to automatically
 pick a mode (merge, diff, or ws) when invoked without arguments.

 Will merge to 'master'.
 cf. <20260522052821.GC861761@coredump.intra.peff.net>
 source: <pull.2108.v3.git.1779371110195.gitgitgadget@gmail.com>


* ps/odb-source-loose (2026-06-01) 19 commits
  (merged to 'next' on 2026-06-04 at 660909ad66)
 + odb/source-loose: drop pointer to the "files" source
 + odb/source-loose: stub out remaining callbacks
 + odb/source-loose: wire up `write_object_stream()` callback
 + object-file: refactor writing objects to use loose source
 + odb/source-loose: wire up `write_object()` callback
 + loose: refactor object map to operate on `struct odb_source_loose`
 + odb/source-loose: wire up `freshen_object()` callback
 + odb/source-loose: drop `odb_source_loose_has_object()`
 + odb/source-loose: wire up `count_objects()` callback
 + odb/source-loose: wire up `find_abbrev_len()` callback
 + odb/source-loose: wire up `for_each_object()` callback
 + odb/source-loose: wire up `read_object_stream()` callback
 + odb/source-loose: wire up `read_object_info()` callback
 + odb/source-loose: wire up `close()` callback
 + odb/source-loose: wire up `reprepare()` callback
 + odb/source-loose: start converting to a proper `struct odb_source`
 + odb/source-loose: store pointer to "files" instead of generic source
 + odb/source-loose: move loose source into "odb/" subsystem
 + Merge branch 'ps/odb-in-memory' into ps/odb-source-loose

 The loose object source has been refactored into a proper `struct
 odb_source`.

 Will merge to 'master'.
 source: <20260601-b4-pks-odb-source-loose-v2-0-90ff159430af@pks.im>


* ps/setup-centralize-odb-creation (2026-05-25) 9 commits
 - setup: construct object database in `apply_repository_format()`
 - repository: stop reading loose object map twice on repo init
 - setup: stop initializing object database without repository
 - setup: stop creating the object database in `setup_git_env()`
 - repository: stop initializing the object database in `repo_set_gitdir()`
 - setup: deduplicate logic to apply repository format
 - setup: drop `setup_git_env()`
 - t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
 - Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation

 The setup logic to discover and configure repositories has been
 refactored, and the initialization of the object database has been
 centralized.

 Comments?
 source: <20260526-b4-pks-setup-centralize-odb-creation-v2-0-2fa5b385c13e@pks.im>


* kh/doc-replay-config (2026-06-03) 4 commits
 - doc: replay: move “default” to the right-hand side
 - doc: replay: use a nested description list
 - doc: replay: improve config description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Comments?
 source: <V2_CV_doc_replay_config.767@msgid.xyz>


* aj/stash-patch-optimize-temporary-index (2026-05-22) 1 commit
  (merged to 'next' on 2026-05-31 at d1b1dd94f5)
 + stash: reuse cached index entries in --patch temporary index

 "git stash -p" has been optimized by reusing cached index
 entries in its temporary index, avoiding unnecessary lstat()
 calls on unchanged files.

 Will merge to 'master'.
 cf. <xmqqse7m6deh.fsf@gitster.g>
 source: <pull.2306.v2.git.git.1779491545531.gitgitgadget@gmail.com>


* tb/bitmap-build-performance (2026-05-27) 9 commits
  (merged to 'next' on 2026-06-02 at d1a84a996a)
 + pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
 + pack-bitmap: remember pseudo-merge parents
 + pack-bitmap: sort bitmaps before XORing
 + pack-bitmap: cache object positions during fill
 + pack-bitmap: consolidate `find_object_pos()` success path
 + pack-bitmap: reuse stored selected bitmaps
 + pack-bitmap: check subtree bits before recursing
 + pack-bitmap: pass object position to `fill_bitmap_tree()`
 + Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance

 Reachability bitmap generation has been significantly optimized. By
 reordering tree traversal, caching object positions, and refining how
 pseudo-merge bitmaps are constructed, the performance of "git repack
 --write-midx-bitmaps" is improved, especially for large repositories
 and when using pseudo-merges.

 Will merge to 'master'.
 cf. <20260529083439.GD1106035@coredump.intra.peff.net>
 source: <cover.1779911733.git.me@ttaylorr.com>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
 - remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Comments?
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* rs/strbuf-add-uint (2026-05-12) 4 commits
  (merged to 'next' on 2026-06-02 at f5be02d8ec)
 + ls-tree: use strbuf_add_uint()
 + ls-files: use strbuf_add_uint()
 + cat-file: use strbuf_add_uint()
 + strbuf: add strbuf_add_uint()

 Adding a decimal integer with strbuf_addf("%u") appears commonly;
 they have been optimized by using a custom formatter.

 Will merge to 'master'.
 cf. <20260512184619.GD70851@coredump.intra.peff.net>
 source: <20260512115603.80780-1-l.s.r@web.de>


* mm/doc-word-diff (2026-05-28) 1 commit
  (merged to 'next' on 2026-06-04 at 9fa723ec63)
 + doc: clarify that --word-diff operates on line-level hunks

 The documentation for "--word-diff" has been extended with a bit of
 implementation detail of where these different words come from.

 Will merge to 'master'.
 source: <pull.2113.v2.git.1779996106005.gitgitgadget@gmail.com>


* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
  (merged to 'next' on 2026-06-02 at 4876f95de0)
 + hex: add and use strbuf_add_oid_hex()

 Formatting object name in full hexadecimal form has been optimized
 by using a new strbuf_add_oid_hex() helper function.

 Will merge to 'master'.
 cf. <20260513160155.GA103037@coredump.intra.peff.net>
 source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>


* hn/config-typo-advice (2026-06-02) 2 commits
 - config: improve diagnostic for "set" with missing value
 - config: add git_config_key_is_valid() for quiet validation

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.

 Will merge to 'next'?
 source: <pull.2302.v6.git.git.1780425808.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-again (2026-05-25) 6 commits
  (merged to 'next' on 2026-05-31 at cc4fe82d87)
 + doc: convert git-imap-send synopsis and options to new style
 + doc: convert git-apply synopsis and options to new style
 + doc: convert git-am synopsis and options to new style
 + doc: convert git-grep synopsis and options to new style
 + doc: git bisect: clarify the usage of the synopsis vs actual command
 + doc: convert git-bisect to synopsis style

 A batch of documentation pages has been updated to use the modern
 synopsis style.

 Will merge to 'master'.
 cf. <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>
 source: <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s).
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hn/branch-prune-merged (2026-06-03) 6 commits
 - branch: add --dry-run for --prune-merged
 - branch: add branch.<name>.pruneMerged opt-out
 - branch: add --prune-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches warn instead of error on bulk refusal
 - branch: add --forked filter for --list mode

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Comments?
 source: <pull.2285.v12.git.git.1780477479.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-27) 3 commits
  (merged to 'next' on 2026-06-04 at 17684e6158)
 + daemon: guard NULL REMOTE_PORT in execute() logging
 + daemon: fix IPv6 address truncation in ip2str()
 + daemon: fix IPv6 address corruption in lookup_hostname()

 Correct use of sockaddr API in "git daemon".

 Will merge to 'master'.
 source: <pull.2300.v3.git.git.1779937016.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Comments?
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-23) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-18) 1 commit
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Will merge to 'next'.
 source: <8210d60832b9a58aa4d71fc3790e44d8989564ce.1779152064.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-05-28) 3 commits
  (merged to 'next' on 2026-06-04 at 02f8bea278)
 + line-log: allow non-patch diff formats with -L
 + line-log: integrate -L output with the standard log-tree pipeline
 + revision: move -L setup before output_format-to-diff derivation

 The `git log -L` implementation has been refactored to use the
 standard diff output pipeline, enabling pickaxe and diff-filter to
 work as expected. Additionally, metadata-only diff formats like
 --raw and --name-only are now supported with -L.

 Will merge to 'master'.
 cf. <B59BA5B1-184D-48A8-8BAD-11EB6F8EB50C@gmail.com>
 source: <pull.2094.v3.git.1780001267.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Waiting for response(s) to review comment(s).
 cf. <xmqqldcy4f07.fsf@gitster.g>
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Waiting for response(s) to review comment(s).
 cf. <xmqqbjdwcsno.fsf@gitster.g>
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Expecting a reroll.
 cf. <CAN5EUNQoKRqt3FGLmzRGpPU1nO5jCAogP8Wm9gBZXuPbMNbQAw@mail.gmail.com>
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
  (merged to 'next' on 2026-06-02 at 02a749d7fe)
 + promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Will merge to 'master'.
 cf. <c87f1f12-d0cc-4150-8f43-4dc9cc1fe24f@malon.dev>
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* ua/push-remote-group (2026-05-03) 3 commits
  (merged to 'next' on 2026-06-02 at ba5d6aebaa)
 + push: support pushing to a remote group
 + remote: move remote group resolution to remote.c
 + remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Will merge to 'master'.
 cf. <20260518182721.155070-1-usmanakinyemi202@gmail.com>
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold to help the base topic with wider exposure.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>

--------------------------------------------------
[Discarded]

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 - fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Retracted.
 cf. <CAL71e4MrVqC1=AR6x0_8S=8kVqPdDkhgCZRb4etFsxTzd6s_8Q@mail.gmail.com>
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Retracted.
 cf. <agx_GPfBKpkSc3Gx@lorenzo-VM>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


^ permalink raw reply	[relevance 19%]

* What's cooking in git.git (Jun 2026, #01)
@ 2026-06-02 11:23 17% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-06-02 11:23 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

This week is expected to be slow, as I am officially on vacation.

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

* ds/path-walk-filters (2026-05-22) 14 commits
  (merged to 'next' on 2026-05-25 at eccb829b10)
 + path-walk: support `combine` filter
 + path-walk: support `object:type` filter
 + path-walk: support `tree:0` filter
 + t6601: tag otherwise-unreachable trees
 + pack-objects: support sparse:oid filter with path-walk
 + path-walk: add pl_sparse_trees to control tree pruning
 + path-walk: support blob size limit filter
 + backfill: die on incompatible filter options
 + path-walk: support blobless filter
 + path-walk: always emit directly-requested objects
 + t/perf: add pack-objects filter and path-walk benchmark
 + pack-objects: pass --objects with --path-walk
 + t5620: make test work with path-walk var
 + Merge branch 'en/backfill-fixes-and-edges' into ds/path-walk-filters
 (this branch is used by tb/pack-path-walk-bitmap-delta-islands.)

 The "git pack-objects --path-walk" traversal has been integrated
 with several object filters, including blobless and sparse filters.
 source: <pull.2101.v5.git.1779474277.gitgitgadget@gmail.com>


* ed/check-connected-close-err-fd (2026-05-16) 1 commit
  (merged to 'next' on 2026-05-22 at 00d592399e)
 + Merge branch 'ed/check-connected-close-err-fd-2.53' into ed/check-connected-close-err-fd
 (this branch uses ed/check-connected-close-err-fd-2.53.)

 File descriptor leak fix.
 (this branch uses ed/check-connected-close-err-fd-2.53.)


* ed/check-connected-close-err-fd-2.53 (2026-05-14) 1 commit
  (merged to 'next' on 2026-05-22 at 1017d0e022)
 + connected: close err_fd in promisor fast-path
 (this branch is used by ed/check-connected-close-err-fd.)

 File descriptor leak fix (for 2.54 maintenance track).
 source: <pull.2303.git.git.1778827194448.gitgitgadget@gmail.com>


* jk/commit-graph-lazy-load-fallback (2026-05-18) 1 commit
  (merged to 'next' on 2026-05-22 at d1188df466)
 + commit: fall back to full read when maybe_tree is NULL

 The logic to lazy-load trees from the commit-graph has been made
 more robust by falling back to reading the commit object when
 the commit-graph is no longer available.
 source: <20260519061534.GA1709881@coredump.intra.peff.net>


* jk/connect-service-enum (2026-05-21) 2 commits
  (merged to 'next' on 2026-05-24 at 293561cbc5)
 + transport-helper: fix typo in BUG() message
  (merged to 'next' on 2026-05-21 at fd80c61e21)
 + connect: use "service" enum for "name" argument

 The "name" argument in git_connect() and related functions has been
 converted to a "service" enum to improve type safety and clarify its
 purpose.
 source: <20260519052219.GA1703179@coredump.intra.peff.net>
 source: <20260522044352.GA861761@coredump.intra.peff.net>


* jr/bisect-custom-terms-in-output (2026-05-14) 3 commits
  (merged to 'next' on 2026-05-22 at 1ccd1056c9)
 + rev-parse: use selected alternate terms to look up refs
 + bisect: print bisect terms in single quotes
 + bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.
 source: <20260514-bisect-terms-v4-0-b3e3cf1b06ce@schlaraffenlan.de>


* kh/doc-hook (2026-05-21) 4 commits
  (merged to 'next' on 2026-05-25 at 5e41d13adf)
 + doc: hook: don’t self-link via config include
 + doc: config: include existing git-hook(1) section
 + doc: hook: consistently capitalize Git
 + doc: hook: remove stray backtick

 Doc updates.
 cf. <2832179.mvXUDI8C0e@piment-oiseau>
 source: <CV_doc_hook.6f0@msgid.xyz>


* kk/tips-reachable-from-bases-optim (2026-05-16) 2 commits
  (merged to 'next' on 2026-05-22 at 87d6b8e666)
 + t6600: add tests for duplicate tips in tips_reachable_from_bases()
 + commit-reach: use object flags for tips_reachable_from_bases()

 Revision traversal optimization.
 source: <pull.2116.v3.git.1778947182.gitgitgadget@gmail.com>


* ps/gitlab-ci-macOS-improvements (2026-05-21) 2 commits
  (merged to 'next' on 2026-05-22 at aaa3c7021e)
 + gitlab-ci: update macOS image
 + gitlab-ci: upgrade macOS runners

 Update GitLab CI jobs that exercise macOS.
 source: <20260521-b4-pks-gitlab-ci-updates-v1-0-53bb46ed33e0@pks.im>


* ps/graph-lane-limit (2026-03-27) 3 commits
  (merged to 'next' on 2026-05-22 at ca1c5e8432)
 + graph: add truncation mark to capped lanes
 + graph: add --graph-lane-limit option
 + graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* pt/fsmonitor-linux (2026-04-15) 13 commits
  (merged to 'next' on 2026-05-22 at 5d99c1765d)
 + fsmonitor: convert shown khash to strset in do_handle_client
 + fsmonitor: add tests for Linux
 + fsmonitor: add timeout to daemon stop command
 + fsmonitor: close inherited file descriptors and detach in daemon
 + run-command: add close_fd_above_stderr option
 + fsmonitor: implement filesystem change listener for Linux
 + fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 + fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 + fsmonitor: use pthread_cond_timedwait for cookie wait
 + compat/win32: add pthread_cond_timedwait
 + fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 + fsmonitor: fix khash memory leak in do_handle_client
 + t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.
 cf. <xmqqa4u5nnxq.fsf@gitster.g>
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
  (merged to 'next' on 2026-05-22 at 197a9bad73)
 + cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.
 cf. <xmqqwlwy4v7t.fsf@gitster.g>
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* sp/doc-range-diff-takes-notes (2026-05-20) 1 commit
  (merged to 'next' on 2026-05-22 at 020bec81b7)
 + Documentation/git-range-diff: add missing notes options in synopsis

 Docfix.
 source: <20260521052841.73775-1-siddh.raman.pant@oracle.com>


* ta/approxidate-noon-fix (2026-05-21) 4 commits
  (merged to 'next' on 2026-05-25 at 2dd9ce3c54)
 + approxidate: use deferred mday adjustments for "specials"
 + approxidate: make "specials" respect fixed day-of-month
 + t0006: add support for approxidate test date adjustment
 + approxidate: make "today" wrap to midnight

 "Friday noon" asked in the morning on Sunday was parsed to be one
 day before the specified time, which has been corrected.
 source: <20260521105408.8222-1-taahol@utu.fi>


* tc/generate-configlist-fix-for-older-ninja (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-22 at 8322bfb8f2)
 + generate-configlist: collapse depfile for older Ninja

 Build update.
 source: <20260515-toon-fix-almalinux8-v3-1-b545a0647f0f@iotcl.com>

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

* kh/free-commit-list (2026-05-28) 2 commits
  (merged to 'next' on 2026-05-31 at 154f83b192)
 + commit: remove deprecated functions
 + *: replace deprecated free_commit_list

 Code clean-up.

 Will merge to 'master'.
 source: <V2_CV_commit.h_remove_deprecated.732@msgid.xyz>


* kk/streaming-walk-pqueue (2026-05-27) 3 commits
 - revision: use priority queue for non-limited streaming walks
 - revision: introduce rev_walk_mode to clarify get_revision_1()
 - pack-objects: call release_revisions() after cruft traversal

 Streaming revision walks have been optimized by using a priority queue
 for date-sorting commits, speeding up walks repositories with many
 merges.

 Will merge to 'next'?
 source: <pull.2127.git.1779897003.gitgitgadget@gmail.com>


* kk/wildmatch-windows-ls-files-prereq (2026-05-28) 1 commit
 - t3070: skip ls-files tests with backslash patterns on Windows

 In t3070-wildmatch, "via ls-files" test variants with patterns
 containing backslash escapes are now skipped on Windows, avoiding 36
 test failures caused by pathspec separator conversion.

 Will merge to 'next'.
 cf. <xmqqecivjn7k.fsf@gitster.g>
 source: <pull.2128.git.1779958849319.gitgitgadget@gmail.com>


* sn/rebase-update-refs-symrefs (2026-05-27) 2 commits
 - rebase: skip branch symref aliases
 - t3404: add failing branch symref test

 "git rebase --update-refs" has been taught to resolve local branch
 symrefs to their referents before queuing updates. This correctly
 skips aliases of the current branch and avoids duplicate updates for
 underlying real branches, fixing failures when branch aliases (like a
 default branch rename) are present.

 Waiting for response(s) to review comment(s).
 cf. <xmqqwlwni7vk.fsf@gitster.g>
 cf. <f1b662d5-f9bb-4274-ad42-3a2227d2a060@gmail.com>
 source: <pull.2126.git.1779946921.gitgitgadget@gmail.com>


* lp/http-fetch-pack-index-leak-fix (2026-06-01) 2 commits
 - http: fix memory leak in fetch_and_setup_pack_index()
 - http: cleanup function fetch_and_setup_pack_index()

 A memory leak in `fetch_and_setup_pack_index()` when verification of
 the downloaded pack index fails has been plugged. Also an obsolete
 `unlink()` call on parse failure has been cleaned up.

 Will merge to 'next'.
 cf. <20260529053659.GC1099450@coredump.intra.peff.net>
 source: <cover.1780321770.git.lorenzo.pegorari2002@gmail.com>


* jk/describe-contains-all-match-fix (2026-06-01) 1 commit
 - describe: fix --exclude, --match with --contains and --all

 The 'git describe --contains --all' command has been fixed to
 properly honor the '--match' and '--exclude' options by passing
 them down to 'git name-rev' with the appropriate reference
 prefixes.

 Will merge to 'next'?
 source: <20260601233727.43558-1-jacob.e.keller@intel.com>


* wy/docs-typofixes (2026-05-29) 1 commit
 - docs: fix typos and grammar

 Various typos, grammatical errors, and duplicated words in both
 documentation and code comments have been corrected.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q8x3nox.fsf@gitster.g>
 source: <7b502e20e9495cd4720496bd6738a1fbeb453410.1780041658.git.wy@wyuan.org>


* ab/index-pack-retain-child-bases (2026-06-01) 1 commit
 - index-pack: retain child bases in delta cache

 "git index-pack" has been optimized by retaining child bases in the
 delta cache instead of immediately freeing them, letting the existing
 cache limit policy decide eviction.

 Comments?
 cf. <4882be43-9bc5-48cf-b74c-4a05453b2fef@gmail.com>
 cf. <20260602064519.GD695568@coredump.intra.peff.net>
 source: <pull.2131.v2.git.1780330402264.gitgitgadget@gmail.com>


* hn/macos-linker-warning (2026-06-02) 1 commit
 - config.mak.uname: avoid macOS linker warning on Xcode 16.3+

 A linker warning on macOS when building with Xcode 16.3 or newer has
 been avoided by passing -fno-common to the compiler when a
 sufficiently new linker is detected.

 Will merge to 'next'.
 source: <pull.2313.v3.git.git.1780385878555.gitgitgadget@gmail.com>


* mm/diff-process-hunks (2026-05-29) 6 commits
 - blame: consult diff process for no-hunk detection
 - diff: bypass diff process with --no-ext-diff and in format-patch
 - diff: add long-running diff process via diff.<driver>.process
 - sub-process: separate process lifecycle from hashmap management
 - userdiff: add diff.<driver>.process config
 - xdiff: support external hunks via xpparam_t

 A new `diff.<driver>.process` configuration has been introduced to
 allow a long-running external process to act as a hunk provider to
 allows external tools to control which lines Git considers changed
 while leaving all output formatting (word diff, color, blame, etc.) to
 Git's standard pipeline.

 Breaks CI.
 cf. <xmqq5x43dfk4.fsf@gitster.g>
 source: <pull.2120.v3.git.1780087700.gitgitgadget@gmail.com>


* tb/pack-path-walk-bitmap-delta-islands (2026-05-27) 4 commits
 - pack-objects: support `--delta-islands` with `--path-walk`
 - pack-objects: extract `record_tree_depth()` helper
 - pack-objects: support reachability bitmaps with `--path-walk`
 - Merge branch 'ds/path-walk-filters' into tb/pack-path-walk-bitmap-delta-islands

 The pack-objects command now supports using reachability bitmaps and
 delta-islands concurrently with the `--path-walk` option, allowing
 faster packaging by falling back to path-walk when bitmaps cannot
 fully satisfy the request.

 Expecting a reroll.
 cf. <ahoRQZX6OXYKPCmd@nand.local>
 source: <cover.1779923907.git.me@ttaylorr.com>


* ty/migrate-trust-executable-bit (2026-05-30) 4 commits
 - read-cache: pass 'istate' to stat/mode helper functions
 - environment: move 'trust_executable_bit' into repo_config_values
 - read-cache: move 'ce_mode_from_stat()' to 'read-cache.c'
 - read-cache: remove redundant extern declarations

 The 'trust_executable_bit' (coming from 'core.filemode'
 configuration) has been migrated into 'repo_config_values' to tie it
 to a specific repository instance.

 Waiting for response(s) to review comment(s).
 cf. <CAP8UFD1GJ=caPh-M97KLCfB1ZKtpomzosYN0uYBOnay+G23GcA@mail.gmail.com>
 cf. <CAP8UFD20yij=1ZEYnR74DoCJ3g=b39yOsUxZecYuuf7nFGaKyA@mail.gmail.com>
 source: <20260530160520.77859-1-cat@malon.dev>


* ak/typofixes (2026-05-31) 2 commits
 - SQUASH???
 - doc: fix typos via codespell

 Typofixes.

 Waiting for response(s) to review comment(s).
 cf. <xmqqo6hv9i1w.fsf@gitster.g>
 source: <20260531184428.55905-1-algonell@gmail.com>


* kk/prio-queue-cascade-sift (2026-06-01) 1 commit
 - prio-queue: use cascade-down for faster extract-min

 prio_queue_get() has been optimized by using a cascade-down approach
 (promoting the smaller child at each level and sifting up the last
 element from the leaf vacancy), which halves the number of comparisons
 per extract-min operation in the common case.

 Comments?
 source: <pull.2132.v2.git.1780301856444.gitgitgadget@gmail.com>


* mm/subprocess-handshake-fix (2026-06-01) 1 commit
 - sub-process: use gentle handshake to avoid die() on startup failure

 The subprocess handshake during startup has been made gentler by using
 packet_read_line_gently() instead of packet_read_line() to prevent the
 parent Git process from dying abruptly when a configured subprocess
 (e.g., a clean/smudge filter) fails to start.

 Will merge to 'next'?
 source: <pull.2133.v2.git.1780348848489.gitgitgadget@gmail.com>


* jk/repo-info-path-keys (2026-06-01) 4 commits
 - repo: add path.commondir with absolute and relative suffix formatting
 - repo: add path.gitdir with absolute and relative suffix formatting
 - rev-parse: use strbuf_add_path for path formatting
 - path: add strbuf_add_path for formatting paths

 The "git repo info" command has been taught new keys to output both
 absolute and relative paths for "gitdir" and "commondir", supported by
 a new path-formatting helper extracted from "git rev-parse".
 source: <20260601151950.30686-1-jayatheerthkulkarni2005@gmail.com>


* ps/history-drop (2026-06-01) 2 commits
 - builtin/history: implement "drop" subcommand
 - builtin/history: split handling of ref updates into two phases

 The experimental "git history" command has been taught a new "drop"
 subcommand to remove a commit and replay its descendants onto its
 parent.

 Waiting for response(s) to review comment(s).
 cf. <xmqqbjdt25e3.fsf@gitster.g>
 source: <20260601-b4-pks-history-drop-v1-0-643e32340d55@pks.im>


* ls/doc-raw-timestamp-prefix (2026-06-02) 1 commit
 - doc: document and test `@` prefix for raw timestamps

 Documentation and tests have been added to clarify that Git's internal
 raw timestamp format requires a `@` prefix for values less than
 100,000,000 to prevent ambiguity with other formats like YYYYMMDD.

 Will merge to 'next'?
 cf. <xmqqmrxdxq1r.fsf@gitster.g>
 source: <20260602081924.673763-2-dev@luna.gl>


* jk/setup-gitfile-diag-fix (2026-06-01) 1 commit
 - read_gitfile_gently(): return non-repo path on error

 A regression in the error diagnosis code for invalid .git files has
 been fixed, avoiding a potential NULL-pointer crash when reporting
 that a .git file does not point to a valid repository.

 Comments?
 source: <20260602061159.GA693928@coredump.intra.peff.net>


* wy/typofixes (2026-05-29) 1 commit
 - docs: fix typos and grammar

 Typofixes.
 source: <7b502e20e9495cd4720496bd6738a1fbeb453410.1780041658.git.wy@wyuan.org>


* jc/submitting-patches-cover-letter (2026-06-02) 2 commits
 - SubmittingPatches: describe cover letter
 - SubmittingPatches: separate typofixes section

 Guidelines on how to write a cover letter for a multi-patch series
 have been added to SubmittingPatches, which also got a new marker
 to separate the section for typofixes.

 Comments?
 source: <20260602090808.87837-1-gitster@pobox.com>


* ps/t7527-fix-tap-output (2026-06-02) 4 commits
 - t: let prove fail when parsing invalid TAP output
 - t/lib-git-p4: silence output when killing p4d and its watchdog
 - t/test-lib: silence EBUSY errors on Windows during test cleanup
 - t7527: fix broken TAP output

 A recent regression in t7527 that broke TAP output has been fixed,
 some other test noise that also broke TAP output has been silenced,
 and 'prove' is now configured to fail on invalid TAP output to
 prevent future regressions.

 Waiting for response(s) to review comment(s).
 cf. <xmqqecipxp6g.fsf@gitster.g>
 source: <20260602-pks-t7527-fix-tap-output-v1-0-db3da2a1b137@pks.im>

--------------------------------------------------
[Stalled]

* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Waiting for response(s) to review comment(s) for too long, consider discarding.
 cf. <xmqqldf7y95a.fsf@gitster.g>
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Waiting for response(s) to review comment(s) for too long, consider discarding.
 cf. <xmqqv7c13o5l.fsf@gitster.g>
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>

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

* ob/more-repo-config-values (2026-06-01) 8 commits
 - environment: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - environment: move "sparse_expect_files_outside_of_patterns" into `repo_config_values`
 - environment: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Many core configuration variables have been migrated from global
 variables into 'repo_config_values' to tie them to a specific
 repository instance, avoiding cross-repository state leakage.

 Waiting for response(s) to review comment(s).
 cf. <xmqqtsrlztzu.fsf@gitster.g>
 source: <20260601154211.82370-1-belkid98@gmail.com>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <5508ee49-2f78-4c3a-accf-a2350666bfb8@app.fastmail.com>
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* za/completion-hide-dotfiles (2026-05-26) 1 commit
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Comments?
 cf. <xmqqqzmxlep3.fsf@gitster.g>
 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>


* ds/restore-sparse-index (2026-05-26) 2 commits
  (merged to 'next' on 2026-05-31 at e85a961bc7)
 + restore: avoid sparse index expansion
 + t1092: test 'git restore' with sparse index

 'git restore --staged' has been optimized to avoid unnecessarily expanding
 the sparse index when operating on paths within the sparse checkout
 definition, by handling sparse directory entries at the tree level.

 Will merge to 'master'.
 source: <pull.2121.v2.git.1779827195.gitgitgadget@gmail.com>


* kk/commit-reach-optim (2026-05-25) 3 commits
  (merged to 'next' on 2026-05-31 at eeb8d0c207)
 + commit-reach: replace queue_has_nonstale() scan with O(1) tracking
 + commit-reach: deduplicate queue entries in paint_down_to_common
 + object.h: fix stale entries in object flag allocation table

 The check for non-stale commits in the priority queue used by
 `paint_down_to_common` and `ahead_behind` has been optimized by
 replacing an O(N) scan with an O(1) counter, yielding performance
 improvements in repositories with wide histories.

 Will merge to 'master'.
 cf. <xmqqzf1ncded.fsf@gitster.g>
 source: <pull.2124.v2.git.1779719286.gitgitgadget@gmail.com>


* ar/receive-pack-worktree-env (2026-05-25) 1 commit
  (merged to 'next' on 2026-05-27 at 9c246d1969)
 + receive-pack: fix updateInstead with core.worktree

 The GIT_WORK_TREE variable prepared to invoke the push-to-checkout
 hook was leaking into the environment even when there was no hook
 used and broke the default push-to-deploy (i.e., let "git checkout"
 update the working tree only when the working tree is clean).

 Will merge to 'master'.
 source: <20260525162311.66240-2-hi@alyssa.is>


* ib/doc-push-default-simple (2026-05-25) 1 commit
  (merged to 'next' on 2026-06-02 at 5c1ff2a769)
 + doc: clarify push.default=simple behavior

 The documentation for `push.default = simple` has been clarified to
 better explain its behavior, making it clear that it pushes the
 current branch to a same-named branch on the remote, and detailing
 the upstream requirements for centralized workflows.

 Will merge to 'master'.
 cf. <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>
 source: <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>


* jc/doc-monitor-ghci (2026-05-24) 1 commit
  (merged to 'next' on 2026-06-02 at 46fb5fe1c2)
 + SubmittingPatches: proactively monitor GHCI pages

 Encourage original authors to monitor the CI status.

 Will merge to 'master'.
 source: <xmqq1pf0gpp3.fsf@gitster.g>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Comments?
 source: <cover.1779792311.git.erik@cervined.in>


* gh/jump-auto-mode (2026-05-21) 1 commit
  (merged to 'next' on 2026-06-02 at f70dd05c9c)
 + git-jump: pick a mode automatically when invoked without arguments

 The 'git-jump' command (in contrib/) has been taught to automatically
 pick a mode (merge, diff, or ws) when invoked without arguments.

 Will merge to 'master'.
 cf. <20260522052821.GC861761@coredump.intra.peff.net>
 source: <pull.2108.v3.git.1779371110195.gitgitgadget@gmail.com>


* ps/odb-source-loose (2026-06-01) 19 commits
 - odb/source-loose: drop pointer to the "files" source
 - odb/source-loose: stub out remaining callbacks
 - odb/source-loose: wire up `write_object_stream()` callback
 - object-file: refactor writing objects to use loose source
 - odb/source-loose: wire up `write_object()` callback
 - loose: refactor object map to operate on `struct odb_source_loose`
 - odb/source-loose: wire up `freshen_object()` callback
 - odb/source-loose: drop `odb_source_loose_has_object()`
 - odb/source-loose: wire up `count_objects()` callback
 - odb/source-loose: wire up `find_abbrev_len()` callback
 - odb/source-loose: wire up `for_each_object()` callback
 - odb/source-loose: wire up `read_object_stream()` callback
 - odb/source-loose: wire up `read_object_info()` callback
 - odb/source-loose: wire up `close()` callback
 - odb/source-loose: wire up `reprepare()` callback
 - odb/source-loose: start converting to a proper `struct odb_source`
 - odb/source-loose: store pointer to "files" instead of generic source
 - odb/source-loose: move loose source into "odb/" subsystem
 - Merge branch 'ps/odb-in-memory' into ps/odb-source-loose

 The loose object source has been refactored into a proper `struct
 odb_source`.

 Will merge to 'next'.
 source: <20260601-b4-pks-odb-source-loose-v2-0-90ff159430af@pks.im>


* ps/setup-centralize-odb-creation (2026-05-25) 9 commits
 - setup: construct object database in `apply_repository_format()`
 - repository: stop reading loose object map twice on repo init
 - setup: stop initializing object database without repository
 - setup: stop creating the object database in `setup_git_env()`
 - repository: stop initializing the object database in `repo_set_gitdir()`
 - setup: deduplicate logic to apply repository format
 - setup: drop `setup_git_env()`
 - t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
 - Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation

 The setup logic to discover and configure repositories has been
 refactored, and the initialization of the object database has been
 centralized.

 Comments?
 source: <20260526-b4-pks-setup-centralize-odb-creation-v2-0-2fa5b385c13e@pks.im>


* kh/doc-replay-config (2026-05-21) 4 commits
 - doc: replay: move “default” to the right-hand-side
 - doc: replay: use a nested definition list
 - doc: replay: simplify replay.refAction description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Will merge to 'next'.
 cf. <xmqqpl2ced7d.fsf@gitster.g>
 source: <CV_doc_replay_config.709@msgid.xyz>


* aj/stash-patch-optimize-temporary-index (2026-05-22) 1 commit
  (merged to 'next' on 2026-05-31 at d1b1dd94f5)
 + stash: reuse cached index entries in --patch temporary index

 "git stash -p" has been optimized by reusing cached index
 entries in its temporary index, avoiding unnecessary lstat()
 calls on unchanged files.

 Will merge to 'master'.
 cf. <xmqqse7m6deh.fsf@gitster.g>
 source: <pull.2306.v2.git.git.1779491545531.gitgitgadget@gmail.com>


* tb/bitmap-build-performance (2026-05-27) 9 commits
  (merged to 'next' on 2026-06-02 at d1a84a996a)
 + pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
 + pack-bitmap: remember pseudo-merge parents
 + pack-bitmap: sort bitmaps before XORing
 + pack-bitmap: cache object positions during fill
 + pack-bitmap: consolidate `find_object_pos()` success path
 + pack-bitmap: reuse stored selected bitmaps
 + pack-bitmap: check subtree bits before recursing
 + pack-bitmap: pass object position to `fill_bitmap_tree()`
 + Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance

 Reachability bitmap generation has been significantly optimized. By
 reordering tree traversal, caching object positions, and refining how
 pseudo-merge bitmaps are constructed, the performance of "git repack
 --write-midx-bitmaps" is improved, especially for large repositories
 and when using pseudo-merges.

 Will merge to 'master'.
 cf. <20260529083439.GD1106035@coredump.intra.peff.net>
 source: <cover.1779911733.git.me@ttaylorr.com>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
 - remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Comments?
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* rs/strbuf-add-uint (2026-05-12) 4 commits
  (merged to 'next' on 2026-06-02 at f5be02d8ec)
 + ls-tree: use strbuf_add_uint()
 + ls-files: use strbuf_add_uint()
 + cat-file: use strbuf_add_uint()
 + strbuf: add strbuf_add_uint()

 Adding a decimal integer with strbuf_addf("%u") appears commonly;
 they have been optimized by using a custom formatter.

 Will merge to 'master'.
 cf. <20260512184619.GD70851@coredump.intra.peff.net>
 source: <20260512115603.80780-1-l.s.r@web.de>


* mm/doc-word-diff (2026-05-28) 1 commit
 - doc: clarify that --word-diff operates on line-level hunks

 The documentation for "--word-diff" has been extended with a bit of
 implementation detail of where these different words come from.

 Will merge to 'next'.
 source: <pull.2113.v2.git.1779996106005.gitgitgadget@gmail.com>


* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
  (merged to 'next' on 2026-06-02 at 4876f95de0)
 + hex: add and use strbuf_add_oid_hex()

 Formatting object name in full hexadecimal form has been optimized
 by using a new strbuf_add_oid_hex() helper function.

 Will merge to 'master'.
 cf. <20260513160155.GA103037@coredump.intra.peff.net>
 source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>


* hn/config-typo-advice (2026-05-26) 1 commit
 - config: improve diagnostic for "set" with missing value

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.

 Waiting for response(s) to review comment(s).
 cf. <xmqq33z524yh.fsf@gitster.g>
 source: <pull.2302.v4.git.git.1779823288005.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-again (2026-05-25) 6 commits
  (merged to 'next' on 2026-05-31 at cc4fe82d87)
 + doc: convert git-imap-send synopsis and options to new style
 + doc: convert git-apply synopsis and options to new style
 + doc: convert git-am synopsis and options to new style
 + doc: convert git-grep synopsis and options to new style
 + doc: git bisect: clarify the usage of the synopsis vs actual command
 + doc: convert git-bisect to synopsis style

 A batch of documentation pages has been updated to use the modern
 synopsis style.

 Will merge to 'master'.
 cf. <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>
 source: <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Waiting for response(s) to review comment(s).
 cf. <agrIrGwSMFlKTx9x@pks.im>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hn/branch-prune-merged (2026-05-22) 6 commits
 - branch: add --dry-run for --prune-merged
 - branch: add branch.<name>.pruneMerged opt-out
 - branch: add --prune-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches warn instead of error on bulk refusal
 - branch: add --forked <branch>

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Comments?
 source: <pull.2285.v11.git.git.1779449498.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-27) 3 commits
 - daemon: guard NULL REMOTE_PORT in execute() logging
 - daemon: fix IPv6 address truncation in ip2str()
 - daemon: fix IPv6 address corruption in lookup_hostname()

 Correct use of sockaddr API in "git daemon".

 Will merge to 'next'.
 source: <pull.2300.v3.git.git.1779937016.gitgitgadget@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-27) 8 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Comments?
 source: <20260527140820.1438165-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-23) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-18) 1 commit
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Waiting for response(s) to review comment(s).
 cf. <xmqq7boy4o05.fsf@gitster.g>
 source: <8210d60832b9a58aa4d71fc3790e44d8989564ce.1779152064.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-05-28) 3 commits
 - line-log: allow non-patch diff formats with -L
 - line-log: integrate -L output with the standard log-tree pipeline
 - revision: move -L setup before output_format-to-diff derivation

 The `git log -L` implementation has been refactored to use the
 standard diff output pipeline, enabling pickaxe and diff-filter to
 work as expected. Additionally, metadata-only diff formats like
 --raw and --name-only are now supported with -L.

 Will merge to 'next'.
 cf. <B59BA5B1-184D-48A8-8BAD-11EB6F8EB50C@gmail.com>
 source: <pull.2094.v3.git.1780001267.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Waiting for response(s) to review comment(s).
 cf. <xmqqldcy4f07.fsf@gitster.g>
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Waiting for response(s) to review comment(s).
 cf. <xmqqbjdwcsno.fsf@gitster.g>
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Waiting for response(s) to review comment(s).
 cf. <xmqq8q97et9b.fsf@gitster.g>
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Expecting a reroll.
 cf. <CAN5EUNQoKRqt3FGLmzRGpPU1nO5jCAogP8Wm9gBZXuPbMNbQAw@mail.gmail.com>
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
  (merged to 'next' on 2026-06-02 at 02a749d7fe)
 + promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Will merge to 'master'.
 cf. <c87f1f12-d0cc-4150-8f43-4dc9cc1fe24f@malon.dev>
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* ua/push-remote-group (2026-05-03) 3 commits
  (merged to 'next' on 2026-06-02 at ba5d6aebaa)
 + push: support pushing to a remote group
 + remote: move remote group resolution to remote.c
 + remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Will merge to 'master'.
 cf. <20260518182721.155070-1-usmanakinyemi202@gmail.com>
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <SY0P300MB0801E50FCB7EB2F45CD15208CE042@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold to help the base topic with wider exposure.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>

--------------------------------------------------
[Discarded]

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 - fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Retracted.
 cf. <CAL71e4MrVqC1=AR6x0_8S=8kVqPdDkhgCZRb4etFsxTzd6s_8Q@mail.gmail.com>
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Retracted.
 cf. <agx_GPfBKpkSc3Gx@lorenzo-VM>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


^ permalink raw reply	[relevance 17%]

* What's cooking in git.git (May 2026, #08)
@ 2026-05-27 16:06 18% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-27 16:06 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* ds/fetch-negotiation-options (2026-05-19) 8 commits
  (merged to 'next' on 2026-05-21 at ff57fd9c97)
 + send-pack: pass negotiation config in push
 + remote: add remote.*.negotiationInclude config
 + fetch: add --negotiation-include option for negotiation
 + negotiator: add have_sent() interface
 + remote: add remote.*.negotiationRestrict config
 + transport: rename negotiation_tips
 + fetch: add --negotiation-restrict option
 + t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.
 source: <pull.2085.v6.git.1779207896.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-05-14) 4 commits
  (merged to 'next' on 2026-05-20 at 722acf81c8)
 + grep: prefetch necessary blobs
 + builtin/log: prefetch necessary blobs for `git cherry`
 + patch-ids.h: add missing trailing parenthesis in documentation comment
 + promisor-remote: document caller filtering contract

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.
 cf. <0da4f159-8d4b-49e2-93c1-25aa0bf69371@gmail.com>
 source: <pull.2089.v3.git.1778775928.gitgitgadget@gmail.com>


* jk/sq-dequote-cleanup (2026-05-18) 3 commits
  (merged to 'next' on 2026-05-21 at fbedf2daea)
 + quote: simplify internals of dequoting
 + quote: drop sq_dequote_to_argv()
 + quote.h: bump strvec forward declaration to the top

 Code simplification.
 source: <20260519011837.GA1615637@coredump.intra.peff.net>


* jt/odb-transaction-write (2026-05-14) 7 commits
  (merged to 'next' on 2026-05-21 at 61108abe4d)
 + odb/transaction: make `write_object_stream()` pluggable
 + object-file: generalize packfile writes to use odb_write_stream
 + object-file: avoid fd seekback by checking object size upfront
 + object-file: remove flags from transaction packfile writes
 + odb: update `struct odb_write_stream` read() callback
 + odb/transaction: use pluggable `begin_transaction()`
 + odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory and ps/odb-source-loose.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.
 source: <20260514183740.1505171-1-jltobler@gmail.com>


* kk/limit-list-optim (2026-05-14) 1 commit
  (merged to 'next' on 2026-05-19 at f17450dd1b)
 + revision: use priority queue in limit_list()

 The limit_list() function that is one of the core part of the
 revision traversal infrastructure has been optimized by replacing
 its use of linear list with priority queue.
 source: <pull.2114.git.1778777491939.gitgitgadget@gmail.com>


* kk/merge-octopus-optim (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-20 at afe427dc66)
 + merge: use repo_in_merge_bases for octopus up-to-date check

 The logic to determine that branches in an octopus merge are
 independent has been optimized.
 cf. <c5b333f1-0db6-4aec-a369-6503cb924e7f@gmail.com>
 source: <pull.2110.git.1778566286543.gitgitgadget@gmail.com>


* kn/refs-fsck-skip-lock-files (2026-05-17) 1 commit
  (merged to 'next' on 2026-05-21 at 91e30e3543)
 + refs/files: skip lock files during consistency checks

 The consistency checks for the files reference backend have been updated
 to skip lock files earlier, avoiding unnecessary parsing of
 intermediate files.
 source: <20260517-refs-fsck-skip-lock-files-v3-1-b24dfd673c7e@gmail.com>


* pb/doc-diff-format-updates (2026-05-15) 3 commits
  (merged to 'next' on 2026-05-20 at fe8d31e9f9)
 + diff-format.adoc: mode and hash are 0* for unmerged paths from index only
 + diff-format.adoc: 'git diff-files' prints two lines for unmerged files
 + diff-format.adoc: remove mention of diff-tree specific output

 Doc updates.
 source: <pull.2304.git.git.1778860091.gitgitgadget@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
  (merged to 'next' on 2026-05-21 at c8709aa17f)
 + t/unit-tests: add tests for the in-memory object source
 + odb: generic in-memory source
 + odb/source-inmemory: stub out remaining functions
 + odb/source-inmemory: implement `freshen_object()` callback
 + odb/source-inmemory: implement `count_objects()` callback
 + odb/source-inmemory: implement `find_abbrev_len()` callback
 + odb/source-inmemory: implement `for_each_object()` callback
 + odb/source-inmemory: convert to use oidtree
 + oidtree: add ability to store data
 + cbtree: allow using arbitrary wrapper structures for nodes
 + odb/source-inmemory: implement `write_object_stream()` callback
 + odb/source-inmemory: implement `write_object()` callback
 + odb/source-inmemory: implement `read_object_stream()` callback
 + odb/source-inmemory: implement `read_object_info()` callback
 + odb: fix unnecessary call to `find_cached_object()`
 + odb/source-inmemory: implement `free()` callback
 + odb: introduce "in-memory" source
 + Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch is used by ps/odb-source-loose; uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* ps/setup-wo-the-repository (2026-05-19) 18 commits
  (merged to 'next' on 2026-05-21 at d8fb5a7b3e)
 + setup: stop using `the_repository` in `init_db()`
 + setup: stop using `the_repository` in `create_reference_database()`
 + setup: stop using `the_repository` in `initialize_repository_version()`
 + setup: stop using `the_repository` in `check_repository_format()`
 + setup: stop using `the_repository` in `upgrade_repository_format()`
 + setup: stop using `the_repository` in `setup_git_directory()`
 + setup: stop using `the_repository` in `setup_git_directory_gently()`
 + setup: stop using `the_repository` in `setup_git_env()`
 + setup: stop using `the_repository` in `set_git_work_tree()`
 + setup: stop using `the_repository` in `setup_work_tree()`
 + setup: stop using `the_repository` in `enter_repo()`
 + setup: stop using `the_repository` in `verify_non_filename()`
 + setup: stop using `the_repository` in `verify_filename()`
 + setup: stop using `the_repository` in `path_inside_repo()`
 + setup: stop using `the_repository` in `prefix_path()`
 + setup: stop using `the_repository` in `is_inside_work_tree()`
 + setup: stop using `the_repository` in `is_inside_git_dir()`
 + setup: replace use of `the_repository` in static functions
 (this branch is used by ps/setup-centralize-odb-creation.)

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.
 source: <20260519-pks-setup-wo-the-repository-v3-0-a00d8ea8b07f@pks.im>


* ps/t3903-cover-stash-include-untracked (2026-05-16) 1 commit
  (merged to 'next' on 2026-05-20 at f1e7ac1cbd)
 + stash: add coverage for show --include-untracked

 Test coverage has been added to "git stash --include-untracked".
 source: <20260516183347.4323-2-pushkarkumarsingh1970@gmail.com>


* rs/trailer-fold-optim (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-20 at 38c9fb15c2)
 + trailer: change strbuf in-place in unfold_value()

 Code simplification.
 source: <816be07e-2cd6-48fe-ae93-57fa0f2543ed@web.de>


* rs/use-builtin-add-overflow-explicitly-on-clang (2026-05-18) 2 commits
  (merged to 'next' on 2026-05-21 at c223b71079)
 + use __builtin_add_overflow() in st_add() with Clang
 + strbuf: use st_add3() in strbuf_grow()

 Micro optimization of codepaths that compute allocation sizes carefully.
 source: <20260518202502.25682-1-l.s.r@web.de>


* tb/incremental-midx-part-3.3 (2026-05-19) 16 commits
  (merged to 'next' on 2026-05-21 at 6c11c1a739)
 + repack: allow `--write-midx=incremental` without `--geometric`
 + repack: introduce `--write-midx=incremental`
 + repack: implement incremental MIDX repacking
 + packfile: ensure `close_pack_revindex()` frees in-memory revindex
 + builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 + repack-geometry: prepare for incremental MIDX repacking
 + repack-midx: extract `repack_fill_midx_stdin_packs()`
 + repack-midx: factor out `repack_prepare_midx_command()`
 + midx: expose `midx_layer_contains_pack()`
 + repack: track the ODB source via existing_packs
 + midx: support custom `--base` for incremental MIDX writes
 + midx: introduce `--no-write-chain-file` for incremental MIDX writes
 + midx: use `strvec` for `keep_hashes`
 + midx: build `keep_hashes` array in order
 + midx: use `strset` for retained MIDX files
 + midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.
 source: <cover.1779206239.git.me@ttaylorr.com>


* tb/pseudo-merge-bugfixes (2026-05-11) 9 commits
  (merged to 'next' on 2026-05-19 at ecee155d5c)
 + pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 + Documentation: fix broken `sampleRate` in gitpacking(7)
 + pack-bitmap: reject pseudo-merge "sampleRate" of 0
 + pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 + pack-bitmap: fix pseudo-merge lookup for shared commits
 + pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 + pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 + t5333: demonstrate various pseudo-merge bugs
 + t/helper: add 'test-tool bitmap write' subcommand
 (this branch is used by tb/bitmap-build-performance.)

 Fixes many bugs in pseudo-merge code.
 source: <cover.1778546804.git.me@ttaylorr.com>

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

* za/completion-hide-dotfiles (2026-05-26) 1 commit
 - completion: hide dotfiles for selected path completion

 The path completion for commands like `git rm` and `git mv`, is being
 updated to hide dotfiles by default, unless the user explicitly starts
 the path with a dot, matching standard shell-completion behavior.

 Will merge to 'next'?
 source: <pull.2311.v2.git.git.1779808987825.gitgitgadget@gmail.com>

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

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 - fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Will merge to 'next'?
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* ds/restore-sparse-index (2026-05-26) 2 commits
 - restore: avoid sparse index expansion
 - t1092: test 'git restore' with sparse index

 'git restore --staged' has been optimized to avoid unnecessarily expanding
 the sparse index when operating on paths within the sparse checkout
 definition, by handling sparse directory entries at the tree level.

 Will merge to 'next'.
 source: <pull.2121.v2.git.1779827195.gitgitgadget@gmail.com>


* kk/commit-reach-optim (2026-05-25) 3 commits
 - commit-reach: replace queue_has_nonstale() scan with O(1) tracking
 - commit-reach: deduplicate queue entries in paint_down_to_common
 - object.h: fix stale entries in object flag allocation table

 The check for non-stale commits in the priority queue used by
 `paint_down_to_common` and `ahead_behind` has been optimized by
 replacing an O(N) scan with an O(1) counter, yielding performance
 improvements in repositories with wide histories.

 Will merge to 'next'?
 source: <pull.2124.v2.git.1779719286.gitgitgadget@gmail.com>


* ar/receive-pack-worktree-env (2026-05-25) 1 commit
  (merged to 'next' on 2026-05-27 at 9c246d1969)
 + receive-pack: fix updateInstead with core.worktree

 The GIT_WORK_TREE variable prepared to invoke the push-to-checkout
 hook was leaking into the environment even when there was no hook
 used and broke the default push-to-deploy (i.e., let "git checkout"
 update the working tree only when the working tree is clean).

 Will merge to 'master'.
 source: <20260525162311.66240-2-hi@alyssa.is>


* ib/doc-push-default-simple (2026-05-25) 1 commit
 - doc: clarify push.default=simple behavior

 The documentation for `push.default = simple` has been clarified to
 better explain its behavior, making it clear that it pushes the
 current branch to a same-named branch on the remote, and detailing
 the upstream requirements for centralized workflows.

 Comments?
 source: <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>


* jc/doc-monitor-ghci (2026-05-24) 1 commit
 - SubmittingPatches: proactively monitor GHCI pages

 Encourage original authors to monitor the CI status.

 Will merge to 'next'?
 source: <xmqq1pf0gpp3.fsf@gitster.g>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Comments?
 source: <cover.1779792311.git.erik@cervined.in>


* gh/jump-auto-mode (2026-05-21) 1 commit
 - git-jump: pick a mode automatically when invoked without arguments

 The 'git-jump' command (in contrib/) has been taught to automatically
 pick a mode (merge, diff, or ws) when invoked without arguments.

 Comments?
 source: <pull.2108.v3.git.1779371110195.gitgitgadget@gmail.com>


* sp/doc-range-diff-takes-notes (2026-05-20) 1 commit
  (merged to 'next' on 2026-05-22 at 020bec81b7)
 + Documentation/git-range-diff: add missing notes options in synopsis

 Docfix.

 Will merge to 'master'.
 source: <20260521052841.73775-1-siddh.raman.pant@oracle.com>


* ps/odb-source-loose (2026-05-21) 19 commits
 - odb/source-loose: drop pointer to the "files" source
 - odb/source-loose: stub out remaining callbacks
 - odb/source-loose: wire up `write_object_stream()` callback
 - object-file: refactor writing objects to use loose source
 - odb/source-loose: wire up `write_object()` callback
 - loose: refactor object map to operate on `struct odb_source_loose`
 - odb/source-loose: wire up `freshen_object()` callback
 - odb/source-loose: drop `odb_source_loose_has_object()`
 - odb/source-loose: wire up `count_objects()` callback
 - odb/source-loose: wire up `find_abbrev_len()` callback
 - odb/source-loose: wire up `for_each_object()` callback
 - odb/source-loose: wire up `read_object_stream()` callback
 - odb/source-loose: wire up `read_object_info()` callback
 - odb/source-loose: wire up `close()` callback
 - odb/source-loose: wire up `reprepare()` callback
 - odb/source-loose: start converting to a proper `struct odb_source`
 - odb/source-loose: store pointer to "files" instead of generic source
 - odb/source-loose: move loose source into "odb/" subsystem
 - Merge branch 'ps/odb-in-memory' into ps/odb-source-loose

 The loose object source has been refactored into a proper `struct
 odb_source`.

 Comments?
 source: <20260521-b4-pks-odb-source-loose-v1-0-6553b399be2d@pks.im>


* ps/setup-centralize-odb-creation (2026-05-25) 9 commits
 - setup: construct object database in `apply_repository_format()`
 - repository: stop reading loose object map twice on repo init
 - setup: stop initializing object database without repository
 - setup: stop creating the object database in `setup_git_env()`
 - repository: stop initializing the object database in `repo_set_gitdir()`
 - setup: deduplicate logic to apply repository format
 - setup: drop `setup_git_env()`
 - t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
 - Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation

 The setup logic to discover and configure repositories has been
 refactored, and the initialization of the object database has been
 centralized.

 Comments?
 source: <20260526-b4-pks-setup-centralize-odb-creation-v2-0-2fa5b385c13e@pks.im>


* ps/gitlab-ci-macOS-improvements (2026-05-21) 2 commits
  (merged to 'next' on 2026-05-22 at aaa3c7021e)
 + gitlab-ci: update macOS image
 + gitlab-ci: upgrade macOS runners

 Update GitLab CI jobs that exercise macOS.

 Will merge to 'master'.
 source: <20260521-b4-pks-gitlab-ci-updates-v1-0-53bb46ed33e0@pks.im>


* kh/doc-hook (2026-05-21) 4 commits
  (merged to 'next' on 2026-05-25 at 5e41d13adf)
 + doc: hook: don’t self-link via config include
 + doc: config: include existing git-hook(1) section
 + doc: hook: consistently capitalize Git
 + doc: hook: remove stray backtick

 Doc updates.

 Will merge to 'master'.
 cf. <2832179.mvXUDI8C0e@piment-oiseau>
 source: <CV_doc_hook.6f0@msgid.xyz>


* kh/doc-replay-config (2026-05-21) 4 commits
 - doc: replay: move “default” to the right-hand-side
 - doc: replay: use a nested definition list
 - doc: replay: simplify replay.refAction description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Comments?
 source: <CV_doc_replay_config.709@msgid.xyz>


* jk/commit-graph-lazy-load-fallback (2026-05-18) 1 commit
  (merged to 'next' on 2026-05-22 at d1188df466)
 + commit: fall back to full read when maybe_tree is NULL

 The logic to lazy-load trees from the commit-graph has been made
 more robust by falling back to reading the commit object when
 the commit-graph is no longer available.

 Will merge to 'master'.
 source: <20260519061534.GA1709881@coredump.intra.peff.net>


* jk/connect-service-enum (2026-05-21) 2 commits
  (merged to 'next' on 2026-05-24 at 293561cbc5)
 + transport-helper: fix typo in BUG() message
  (merged to 'next' on 2026-05-21 at fd80c61e21)
 + connect: use "service" enum for "name" argument

 The "name" argument in git_connect() and related functions has been
 converted to a "service" enum to improve type safety and clarify its
 purpose.

 Will merge to 'master'.
 source: <20260519052219.GA1703179@coredump.intra.peff.net>
 source: <20260522044352.GA861761@coredump.intra.peff.net>


* aj/stash-patch-optimize-temporary-index (2026-05-22) 1 commit
 - stash: reuse cached index entries in --patch temporary index

 "git stash -p" has been optimized by reusing cached index
 entries in its temporary index, avoiding unnecessary lstat()
 calls on unchanged files.

 Will merge to 'next'?
 source: <pull.2306.v2.git.git.1779491545531.gitgitgadget@gmail.com>


* tb/bitmap-build-performance (2026-05-19) 9 commits
 - pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
 - pack-bitmap: remember pseudo-merge parents
 - pack-bitmap: sort bitmaps before XORing
 - pack-bitmap: cache object positions during fill
 - pack-bitmap: consolidate `find_object_pos()` success path
 - pack-bitmap: reuse stored selected bitmaps
 - pack-bitmap: check subtree bits before recursing
 - pack-bitmap: pass object position to `fill_bitmap_tree()`
 - Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance

 Reachability bitmap generation has been significantly optimized. By
 reordering tree traversal, caching object positions, and refining how
 pseudo-merge bitmaps are constructed, the performance of "git repack
 --write-midx-bitmaps" is improved, especially for large repositories
 and when using pseudo-merges.

 Comments?
 source: <cover.1779207127.git.me@ttaylorr.com>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
 - remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Comments?
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* rs/strbuf-add-uint (2026-05-12) 4 commits
 - ls-tree: use strbuf_add_uint()
 - ls-files: use strbuf_add_uint()
 - cat-file: use strbuf_add_uint()
 - strbuf: add strbuf_add_uint()

 Adding a decimal integer with strbuf_addf("%u") appears commonly;
 they have been optimized by using a custom formatter.

 Comments?
 source: <20260512115603.80780-1-l.s.r@web.de>


* ta/approxidate-noon-fix (2026-05-21) 4 commits
  (merged to 'next' on 2026-05-25 at 2dd9ce3c54)
 + approxidate: use deferred mday adjustments for "specials"
 + approxidate: make "specials" respect fixed day-of-month
 + t0006: add support for approxidate test date adjustment
 + approxidate: make "today" wrap to midnight

 "Friday noon" asked in the morning on Sunday was parsed to be one
 day before the specified time, which has been corrected.

 Will merge to 'master'.
 source: <20260521105408.8222-1-taahol@utu.fi>


* mm/doc-word-diff (2026-05-13) 1 commit
 - doc: clarify that --word-diff operates on line-level hunks

 The documentation for "--word-diff" has been extended with a bit of
 implementation detail of where these different words come from.

 Comments?
 source: <pull.2113.git.1778686956622.gitgitgadget@gmail.com>


* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
 - hex: add and use strbuf_add_oid_hex()

 Formatting object name in full hexadecimal form has been optimized
 by using a new strbuf_add_oid_hex() helper function.

 Comments?
 source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>


* ed/check-connected-close-err-fd (2026-05-16) 1 commit
  (merged to 'next' on 2026-05-22 at 00d592399e)
 + Merge branch 'ed/check-connected-close-err-fd-2.53' into ed/check-connected-close-err-fd
 (this branch uses ed/check-connected-close-err-fd-2.53.)

 File descriptor leak fix.

 Will merge to 'master'.
 (this branch uses ed/check-connected-close-err-fd-2.53.)


* ed/check-connected-close-err-fd-2.53 (2026-05-14) 1 commit
  (merged to 'next' on 2026-05-22 at 1017d0e022)
 + connected: close err_fd in promisor fast-path
 (this branch is used by ed/check-connected-close-err-fd.)

 File descriptor leak fix (for 2.54 maintenance track).

 Will merge to 'master'.
 source: <pull.2303.git.git.1778827194448.gitgitgadget@gmail.com>


* kk/tips-reachable-from-bases-optim (2026-05-16) 2 commits
  (merged to 'next' on 2026-05-22 at 87d6b8e666)
 + t6600: add tests for duplicate tips in tips_reachable_from_bases()
 + commit-reach: use object flags for tips_reachable_from_bases()

 Revision traversal optimization.

 Will merge to 'master'.
 source: <pull.2116.v3.git.1778947182.gitgitgadget@gmail.com>


* tc/generate-configlist-fix-for-older-ninja (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-22 at 8322bfb8f2)
 + generate-configlist: collapse depfile for older Ninja

 Build update.

 Will merge to 'master'.
 source: <20260515-toon-fix-almalinux8-v3-1-b545a0647f0f@iotcl.com>


* hn/config-typo-advice (2026-05-25) 1 commit
 - config: suggest the correct form when key contains "=" in set context

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.

 Comments?
 source: <pull.2302.v3.git.git.1779697995418.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-again (2026-05-25) 6 commits
 - doc: convert git-imap-send synopsis and options to new style
 - doc: convert git-apply synopsis and options to new style
 - doc: convert git-am synopsis and options to new style
 - doc: convert git-grep synopsis and options to new style
 - doc: git bisect: clarify the usage of the synopsis vs actual command
 - doc: convert git-bisect to synopsis style

 A batch of documentation pages has been updated to use the modern
 synopsis style.

 Will merge to 'next'?
 source: <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Comments?
 cf. <xmqqzf1xbl4i.fsf@gitster.g>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hn/branch-prune-merged (2026-05-22) 6 commits
 - branch: add --dry-run for --prune-merged
 - branch: add branch.<name>.pruneMerged opt-out
 - branch: add --prune-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches warn instead of error on bulk refusal
 - branch: add --forked <branch>

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Comments?
 source: <pull.2285.v11.git.git.1779449498.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-14) 3 commits
 - daemon: guard NULL REMOTE_PORT in execute() logging
 - daemon: fix IPv6 address truncation in ip2str()
 - daemon: fix IPv6 address corruption in lookup_hostname()

 Correct use of sockaddr API in "git daemon".

 Waiting for response(s) to review comment(s).
 cf. <agGLRC1ziF5F8Okh@pks.im>
 source: <pull.2300.git.git.1778773592.gitgitgadget@gmail.com>


* ob/more-repo-config-values (2026-04-23) 8 commits
 - env: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - env: move "sparse_expect_files_outside_of_patterns" into `repo_config_values`
 - env: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Expecting a reroll.
 cf. <CAD=f0L8-_3sDGGkCzF4WA0xmUtaY_qiz__3zq5AemLgwTsqvsg@mail.gmail.com>
 cf. <xmqqlddqu013.fsf@gitster.g>
 source: <20260423165432.143598-1-belkid98@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-19) 9 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'
 - Merge branch 'cc/promisor-auto-config-url' into cc/promisor-auto-config-url-more

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Comments?
 source: <20260519153808.494105-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-23) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-18) 1 commit
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Comments?
 source: <8210d60832b9a58aa4d71fc3790e44d8989564ce.1779152064.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-05-25) 3 commits
 - line-log: allow non-patch diff formats with -L
 - line-log: integrate -L output with the standard log-tree pipeline
 - revision: move -L setup before output_format-to-diff derivation

 The `git log -L` implementation has been refactored to use the
 standard diff output pipeline, enabling pickaxe and diff-filter to
 work as expected. Additionally, metadata-only diff formats like
 --raw and --name-only are now supported with -L.

 Will merge to 'next'?
 source: <pull.2120.v2.git.1779733799.gitgitgadget@gmail.com>


* ds/path-walk-filters (2026-05-22) 14 commits
  (merged to 'next' on 2026-05-25 at eccb829b10)
 + path-walk: support `combine` filter
 + path-walk: support `object:type` filter
 + path-walk: support `tree:0` filter
 + t6601: tag otherwise-unreachable trees
 + pack-objects: support sparse:oid filter with path-walk
 + path-walk: add pl_sparse_trees to control tree pruning
 + path-walk: support blob size limit filter
 + backfill: die on incompatible filter options
 + path-walk: support blobless filter
 + path-walk: always emit directly-requested objects
 + t/perf: add pack-objects filter and path-walk benchmark
 + pack-objects: pass --objects with --path-walk
 + t5620: make test work with path-walk var
 + Merge branch 'en/backfill-fixes-and-edges' into ds/path-walk-filters

 The "git pack-objects --path-walk" traversal has been integrated
 with several object filters, including blobless and sparse filters.

 Will merge to 'master'.
 source: <pull.2101.v5.git.1779474277.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Needs review.
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Ready?
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Waiting for response(s) to review comment(s).
 cf. <20260513230216.GA1378627@coredump.intra.peff.net>
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Needs review.
 cf. <xmqqse7xm8av.fsf@gitster.g>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
  (merged to 'next' on 2026-05-22 at 197a9bad73)
 + cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'master'.
 cf. <xmqqwlwy4v7t.fsf@gitster.g>
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 cf. <xmqq1pfivfa3.fsf@gitster.g>
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
  (merged to 'next' on 2026-05-22 at ca1c5e8432)
 + graph: add truncation mark to capped lanes
 + graph: add --graph-lane-limit option
 + graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Will merge to 'master'.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* jr/bisect-custom-terms-in-output (2026-05-14) 3 commits
  (merged to 'next' on 2026-05-22 at 1ccd1056c9)
 + rev-parse: use selected alternate terms to look up refs
 + bisect: print bisect terms in single quotes
 + bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Will merge to 'master'.
 source: <20260514-bisect-terms-v4-0-b3e3cf1b06ce@schlaraffenlan.de>


* ua/push-remote-group (2026-05-03) 3 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c
 - remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Comments?
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <xmqqcxz2tzpr.fsf@gitster.g>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold to help the base topic with wider exposure.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/fsmonitor-linux (2026-04-15) 13 commits
  (merged to 'next' on 2026-05-22 at 5d99c1765d)
 + fsmonitor: convert shown khash to strset in do_handle_client
 + fsmonitor: add tests for Linux
 + fsmonitor: add timeout to daemon stop command
 + fsmonitor: close inherited file descriptors and detach in daemon
 + run-command: add close_fd_above_stderr option
 + fsmonitor: implement filesystem change listener for Linux
 + fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 + fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 + fsmonitor: use pthread_cond_timedwait for cookie wait
 + compat/win32: add pthread_cond_timedwait
 + fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 + fsmonitor: fix khash memory leak in do_handle_client
 + t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'master'.
 cf. <xmqqa4u5nnxq.fsf@gitster.g>
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 18%]

* What's cooking in git.git (May 2026, #07)
@ 2026-05-26 13:56 17% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-26 13:56 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* ag/sequencer-remove-unused-struct-member (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-17 at 8553437ae1)
 + sequencer: remove todo_add_branch_context.commit

 Code clean-up.
 cf. <agLKVn6RF4UBYd_8@pks.im>
 source: <pull.2111.git.1778502113485.gitgitgadget@gmail.com>


* dk/doc-exclude-is-shared-per-repo (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at ddc761aec6)
 + ignore: note info/exclude lives in GIT_COMMON_DIR, not GIT_DIR

 Document the fact that .git/info/exclude is shared across worktrees
 linked to the same repository.
 cf. <bea48414-217b-4860-9279-fe94e3687c28@gmail.com>
 source: <ec97ad3f054e90b675f099a36a81a23bb4b2a0ed.1778620784.git.ben.knoble+github@gmail.com>


* jk/dumb-http-alternate-fix (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at c1a51214fb)
 + http: handle absolute-path alternates from server root

 The HTTP walker misinterpreted the alternates file that gives an
 absolute path when the server URL does not have the final slash
 (i.e., "https://example.com" not "https://example.com/").
 source: <20260512162619.GA69813@coredump.intra.peff.net>


* jk/pretty-no-strbuf-presizing (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at ee684c614f)
 + pretty: drop strbuf pre-sizing from add_rfc2047()

 Remove ineffective strbuf presizing that would have computed an
 allocation that would not have fit in the available memory anyway,
 or too small due to integer wraparound to cause immediate automatic
 growing.
 source: <20260512162022.GA69669@coredump.intra.peff.net>


* kk/paint-down-to-common-optim (2026-05-11) 2 commits
  (merged to 'next' on 2026-05-17 at 2e39c767e5)
 + commit-reach: early exit paint_down_to_common for single merge-base
 + commit-reach: introduce merge_base_flags enum

 "git merge-base" optimization.
 source: <pull.2109.v4.git.1778504352.gitgitgadget@gmail.com>


* mm/diff-U-takes-no-negative-values (2026-05-12) 4 commits
  (merged to 'next' on 2026-05-17 at d81439a049)
 + parse-options: clarify what "negated" means for PARSE_OPT_NONEG
 + xdiff: guard against negative context lengths
 + diff: reject negative values for -U/--unified
 + diff: reject negative values for --inter-hunk-context

 The command line parser for "git diff" learned a few options take
 only non-negative integers.
 source: <pull.2105.v2.git.1778609423.gitgitgadget@gmail.com>

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

* kk/fetch-store-ref-optimization (2026-05-24) 1 commit
 - fetch: pass transport to post-fetch connectivity check

 When fetching from a transport that provides a self-contained pack,
 pass the transport pointer to the post-fetch `check_connected()` call
 to optimize connectivity check.

 Will merge to 'next'?
 source: <pull.2123.git.1779625693328.gitgitgadget@gmail.com>


* ds/restore-sparse-index (2026-05-24) 2 commits
 - restore: avoid sparse index expansion
 - t1092: test 'git restore' with sparse index

 'git restore --staged' has been optimized to avoid unnecessarily expanding
 the sparse index when operating on paths within the sparse checkout
 definition, by handling sparse directory entries at the tree level.

 Will merge to 'next'?
 source: <pull.2121.git.1779644412.gitgitgadget@gmail.com>


* kk/commit-reach-optim (2026-05-25) 3 commits
 - commit-reach: replace queue_has_nonstale() scan with O(1) tracking
 - commit-reach: deduplicate queue entries in paint_down_to_common
 - object.h: fix stale entries in object flag allocation table

 The check for non-stale commits in the priority queue used by
 `paint_down_to_common` and `ahead_behind` has been optimized by
 replacing an O(N) scan with an O(1) counter, yielding performance
 improvements in repositories with wide histories.

 Will merge to 'next'?
 source: <pull.2124.v2.git.1779719286.gitgitgadget@gmail.com>


* ar/receive-pack-worktree-env (2026-05-25) 1 commit
 - receive-pack: fix updateInstead with core.worktree

 The GIT_WORK_TREE variable prepared to invoke the push-to-checkout
 hook was leaking into the environment even when there was no hook
 used and broke the default push-to-deploy (i.e., let "git checkout"
 update the working tree only when the working tree is clean).

 Will merge to 'next'.
 source: <20260525162311.66240-2-hi@alyssa.is>


* ib/doc-push-default-simple (2026-05-25) 1 commit
 - doc: clarify push.default=simple behavior

 The documentation for `push.default = simple` has been clarified to
 better explain its behavior, making it clear that it pushes the
 current branch to a same-named branch on the remote, and detailing
 the upstream requirements for centralized workflows.

 Comments?
 source: <pull.2115.v2.git.1779767888508.gitgitgadget@gmail.com>


* jc/doc-monitor-ghci (2026-05-24) 1 commit
 - SubmittingPatches: proactively monitor GHCI pages

 Encourage original authors to monitor the CI status.

 Will merge to 'next'?
 source: <xmqq1pf0gpp3.fsf@gitster.g>


* ec/commit-fixup-options (2026-05-26) 2 commits
 - commit: allow -c/-C for all kinds of --fixup
 - commit: allow -m/-F for all kinds of --fixup

 The -m/-F/-c/-C options to supply commit log message from outside the
 editor are now supported for all "git commit --fixup" variations.

 Comments?
 source: <cover.1779792311.git.erik@cervined.in>

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

* gh/jump-auto-mode (2026-05-21) 1 commit
 - git-jump: pick a mode automatically when invoked without arguments

 The 'git-jump' command (in contrib/) has been taught to automatically
 pick a mode (merge, diff, or ws) when invoked without arguments.

 Comments?
 source: <pull.2108.v3.git.1779371110195.gitgitgadget@gmail.com>


* sp/doc-range-diff-takes-notes (2026-05-20) 1 commit
  (merged to 'next' on 2026-05-22 at 020bec81b7)
 + Documentation/git-range-diff: add missing notes options in synopsis

 Docfix.

 Will merge to 'master'.
 source: <20260521052841.73775-1-siddh.raman.pant@oracle.com>


* ps/odb-source-loose (2026-05-21) 19 commits
 - odb/source-loose: drop pointer to the "files" source
 - odb/source-loose: stub out remaining callbacks
 - odb/source-loose: wire up `write_object_stream()` callback
 - object-file: refactor writing objects to use loose source
 - odb/source-loose: wire up `write_object()` callback
 - loose: refactor object map to operate on `struct odb_source_loose`
 - odb/source-loose: wire up `freshen_object()` callback
 - odb/source-loose: drop `odb_source_loose_has_object()`
 - odb/source-loose: wire up `count_objects()` callback
 - odb/source-loose: wire up `find_abbrev_len()` callback
 - odb/source-loose: wire up `for_each_object()` callback
 - odb/source-loose: wire up `read_object_stream()` callback
 - odb/source-loose: wire up `read_object_info()` callback
 - odb/source-loose: wire up `close()` callback
 - odb/source-loose: wire up `reprepare()` callback
 - odb/source-loose: start converting to a proper `struct odb_source`
 - odb/source-loose: store pointer to "files" instead of generic source
 - odb/source-loose: move loose source into "odb/" subsystem
 - Merge branch 'ps/odb-in-memory' into ps/odb-source-loose
 (this branch uses jt/odb-transaction-write and ps/odb-in-memory.)

 The loose object source has been refactored into a proper `struct
 odb_source`.

 Comments?
 source: <20260521-b4-pks-odb-source-loose-v1-0-6553b399be2d@pks.im>


* ps/setup-centralize-odb-creation (2026-05-25) 9 commits
 - setup: construct object database in `apply_repository_format()`
 - repository: stop reading loose object map twice on repo init
 - setup: stop initializing object database without repository
 - setup: stop creating the object database in `setup_git_env()`
 - repository: stop initializing the object database in `repo_set_gitdir()`
 - setup: deduplicate logic to apply repository format
 - setup: drop `setup_git_env()`
 - t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
 - Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation
 (this branch uses ps/setup-wo-the-repository.)

 The setup logic to discover and configure repositories has been
 refactored, and the initialization of the object database has been
 centralized.

 Comments?
 source: <20260526-b4-pks-setup-centralize-odb-creation-v2-0-2fa5b385c13e@pks.im>


* ps/gitlab-ci-macOS-improvements (2026-05-21) 2 commits
  (merged to 'next' on 2026-05-22 at aaa3c7021e)
 + gitlab-ci: update macOS image
 + gitlab-ci: upgrade macOS runners

 Update GitLab CI jobs that exercise macOS.

 Will merge to 'master'.
 source: <20260521-b4-pks-gitlab-ci-updates-v1-0-53bb46ed33e0@pks.im>


* kh/doc-hook (2026-05-21) 4 commits
  (merged to 'next' on 2026-05-25 at 5e41d13adf)
 + doc: hook: don’t self-link via config include
 + doc: config: include existing git-hook(1) section
 + doc: hook: consistently capitalize Git
 + doc: hook: remove stray backtick

 Doc updates.

 Will merge to 'master'.
 cf. <2832179.mvXUDI8C0e@piment-oiseau>
 source: <CV_doc_hook.6f0@msgid.xyz>


* kh/doc-replay-config (2026-05-21) 4 commits
 - doc: replay: move “default” to the right-hand-side
 - doc: replay: use a nested definition list
 - doc: replay: simplify replay.refAction description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Comments?
 source: <CV_doc_replay_config.709@msgid.xyz>


* jk/commit-graph-lazy-load-fallback (2026-05-18) 1 commit
  (merged to 'next' on 2026-05-22 at d1188df466)
 + commit: fall back to full read when maybe_tree is NULL

 The logic to lazy-load trees from the commit-graph has been made
 more robust by falling back to reading the commit object when
 the commit-graph is no longer available.

 Will merge to 'master'.
 source: <20260519061534.GA1709881@coredump.intra.peff.net>


* jk/connect-service-enum (2026-05-21) 2 commits
  (merged to 'next' on 2026-05-24 at 293561cbc5)
 + transport-helper: fix typo in BUG() message
  (merged to 'next' on 2026-05-21 at fd80c61e21)
 + connect: use "service" enum for "name" argument

 The "name" argument in git_connect() and related functions has been
 converted to a "service" enum to improve type safety and clarify its
 purpose.

 Will merge to 'master'.
 source: <20260519052219.GA1703179@coredump.intra.peff.net>
 source: <20260522044352.GA861761@coredump.intra.peff.net>


* jk/sq-dequote-cleanup (2026-05-18) 3 commits
  (merged to 'next' on 2026-05-21 at fbedf2daea)
 + quote: simplify internals of dequoting
 + quote: drop sq_dequote_to_argv()
 + quote.h: bump strvec forward declaration to the top

 Code simplification.

 Will merge to 'master'.
 source: <20260519011837.GA1615637@coredump.intra.peff.net>


* aj/stash-patch-optimize-temporary-index (2026-05-22) 1 commit
 - stash: reuse cached index entries in --patch temporary index

 "git stash -p" has been optimized by reusing cached index
 entries in its temporary index, avoiding unnecessary lstat()
 calls on unchanged files.

 Will merge to 'next'?
 source: <pull.2306.v2.git.git.1779491545531.gitgitgadget@gmail.com>


* tb/bitmap-build-performance (2026-05-19) 9 commits
 - pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
 - pack-bitmap: remember pseudo-merge parents
 - pack-bitmap: sort bitmaps before XORing
 - pack-bitmap: cache object positions during fill
 - pack-bitmap: consolidate `find_object_pos()` success path
 - pack-bitmap: reuse stored selected bitmaps
 - pack-bitmap: check subtree bits before recursing
 - pack-bitmap: pass object position to `fill_bitmap_tree()`
 - Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance
 (this branch uses tb/pseudo-merge-bugfixes.)

 Reachability bitmap generation has been significantly optimized. By
 reordering tree traversal, caching object positions, and refining how
 pseudo-merge bitmaps are constructed, the performance of "git repack
 --write-midx-bitmaps" is improved, especially for large repositories
 and when using pseudo-merges.
 source: <cover.1779207127.git.me@ttaylorr.com>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
 - remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Comments?
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* kk/merge-octopus-optim (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-20 at afe427dc66)
 + merge: use repo_in_merge_bases for octopus up-to-date check

 The logic to determine that branches in an octopus merge are
 independent has been optimized.

 Will merge to 'master'.
 cf. <c5b333f1-0db6-4aec-a369-6503cb924e7f@gmail.com>
 source: <pull.2110.git.1778566286543.gitgitgadget@gmail.com>


* rs/strbuf-add-uint (2026-05-12) 4 commits
 - ls-tree: use strbuf_add_uint()
 - ls-files: use strbuf_add_uint()
 - cat-file: use strbuf_add_uint()
 - strbuf: add strbuf_add_uint()

 Adding a decimal integer with strbuf_addf("%u") appears commonly;
 they have been optimized by using a custom formatter.

 Comments?
 source: <20260512115603.80780-1-l.s.r@web.de>


* ta/approxidate-noon-fix (2026-05-21) 4 commits
  (merged to 'next' on 2026-05-25 at 2dd9ce3c54)
 + approxidate: use deferred mday adjustments for "specials"
 + approxidate: make "specials" respect fixed day-of-month
 + t0006: add support for approxidate test date adjustment
 + approxidate: make "today" wrap to midnight

 "Friday noon" asked in the morning on Sunday was parsed to be one
 day before the specified time, which has been corrected.

 Will merge to 'master'.
 source: <20260521105408.8222-1-taahol@utu.fi>


* mm/doc-word-diff (2026-05-13) 1 commit
 - doc: clarify that --word-diff operates on line-level hunks

 The documentation for "--word-diff" has been extended with a bit of
 implementation detail of where these different words come from.

 Comments?
 source: <pull.2113.git.1778686956622.gitgitgadget@gmail.com>


* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
 - hex: add and use strbuf_add_oid_hex()

 Formatting object name in full hexadecimal form has been optimized
 by using a new strbuf_add_oid_hex() helper function.

 Comments?
 source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>


* kk/limit-list-optim (2026-05-14) 1 commit
  (merged to 'next' on 2026-05-19 at f17450dd1b)
 + revision: use priority queue in limit_list()

 The limit_list() function that is one of the core part of the
 revision traversal infrastructure has been optimized by replacing
 its use of linear list with priority queue.

 Will merge to 'master'.
 source: <pull.2114.git.1778777491939.gitgitgadget@gmail.com>


* ed/check-connected-close-err-fd (2026-05-16) 1 commit
  (merged to 'next' on 2026-05-22 at 00d592399e)
 + Merge branch 'ed/check-connected-close-err-fd-2.53' into ed/check-connected-close-err-fd
 (this branch uses ed/check-connected-close-err-fd-2.53.)

 File descriptor leak fix.

 Will merge to 'master'.
 (this branch uses ed/check-connected-close-err-fd-2.53.)


* ed/check-connected-close-err-fd-2.53 (2026-05-14) 1 commit
  (merged to 'next' on 2026-05-22 at 1017d0e022)
 + connected: close err_fd in promisor fast-path
 (this branch is used by ed/check-connected-close-err-fd.)

 File descriptor leak fix (for 2.54 maintenance track).

 Will merge to 'master'.
 source: <pull.2303.git.git.1778827194448.gitgitgadget@gmail.com>


* kk/tips-reachable-from-bases-optim (2026-05-16) 2 commits
  (merged to 'next' on 2026-05-22 at 87d6b8e666)
 + t6600: add tests for duplicate tips in tips_reachable_from_bases()
 + commit-reach: use object flags for tips_reachable_from_bases()

 Revision traversal optimization.

 Will merge to 'master'.
 source: <pull.2116.v3.git.1778947182.gitgitgadget@gmail.com>


* pb/doc-diff-format-updates (2026-05-15) 3 commits
  (merged to 'next' on 2026-05-20 at fe8d31e9f9)
 + diff-format.adoc: mode and hash are 0* for unmerged paths from index only
 + diff-format.adoc: 'git diff-files' prints two lines for unmerged files
 + diff-format.adoc: remove mention of diff-tree specific output

 Doc updates.

 Will merge to 'master'.
 source: <pull.2304.git.git.1778860091.gitgitgadget@gmail.com>


* ps/t3903-cover-stash-include-untracked (2026-05-16) 1 commit
  (merged to 'next' on 2026-05-20 at f1e7ac1cbd)
 + stash: add coverage for show --include-untracked

 Test coverage has been added to "git stash --include-untracked".

 Will merge to 'master'.
 source: <20260516183347.4323-2-pushkarkumarsingh1970@gmail.com>


* rs/trailer-fold-optim (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-20 at 38c9fb15c2)
 + trailer: change strbuf in-place in unfold_value()

 Code simplification.

 Will merge to 'master'.
 source: <816be07e-2cd6-48fe-ae93-57fa0f2543ed@web.de>


* rs/use-builtin-add-overflow-explicitly-on-clang (2026-05-18) 2 commits
  (merged to 'next' on 2026-05-21 at c223b71079)
 + use __builtin_add_overflow() in st_add() with Clang
 + strbuf: use st_add3() in strbuf_grow()

 Micro optimization of codepaths that compute allocation sizes carefully.

 Will merge to 'master'.
 source: <20260518202502.25682-1-l.s.r@web.de>


* tc/generate-configlist-fix-for-older-ninja (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-22 at 8322bfb8f2)
 + generate-configlist: collapse depfile for older Ninja

 Build update.

 Will merge to 'master'.
 source: <20260515-toon-fix-almalinux8-v3-1-b545a0647f0f@iotcl.com>


* hn/config-typo-advice (2026-05-25) 1 commit
 - config: suggest the correct form when key contains "=" in set context

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.

 Comments?
 source: <pull.2302.v3.git.git.1779697995418.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-again (2026-05-25) 6 commits
 - doc: convert git-imap-send synopsis and options to new style
 - doc: convert git-apply synopsis and options to new style
 - doc: convert git-am synopsis and options to new style
 - doc: convert git-grep synopsis and options to new style
 - doc: git bisect: clarify the usage of the synopsis vs actual command
 - doc: convert git-bisect to synopsis style

 A batch of documentation pages has been updated to use the modern
 synopsis style.

 Will merge to 'next'?
 source: <pull.2117.v2.git.1779704908.gitgitgadget@gmail.com>


* kn/refs-fsck-skip-lock-files (2026-05-17) 1 commit
  (merged to 'next' on 2026-05-21 at 91e30e3543)
 + refs/files: skip lock files during consistency checks

 The consistency checks for the files reference backend have been updated
 to skip lock files earlier, avoiding unnecessary parsing of
 intermediate files.

 Will merge to 'master'.
 source: <20260517-refs-fsck-skip-lock-files-v3-1-b24dfd673c7e@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Comments?
 cf. <xmqqzf1xbl4i.fsf@gitster.g>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* hn/branch-prune-merged (2026-05-22) 6 commits
 - branch: add --dry-run for --prune-merged
 - branch: add branch.<name>.pruneMerged opt-out
 - branch: add --prune-merged <branch>
 - branch: prepare delete_branches for a bulk caller
 - branch: let delete_branches warn instead of error on bulk refusal
 - branch: add --forked <branch>

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Comments?
 source: <pull.2285.v11.git.git.1779449498.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-14) 3 commits
 - daemon: guard NULL REMOTE_PORT in execute() logging
 - daemon: fix IPv6 address truncation in ip2str()
 - daemon: fix IPv6 address corruption in lookup_hostname()

 Correct use of sockaddr API in "git daemon".

 Waiting for response(s) to review comment(s).
 cf. <agGLRC1ziF5F8Okh@pks.im>
 source: <pull.2300.git.git.1778773592.gitgitgadget@gmail.com>


* ob/more-repo-config-values (2026-04-23) 8 commits
 - env: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - env: move "sparse_expect_files_outside_of_patterns" into `repo_config_values`
 - env: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Expecting a reroll.
 cf. <CAD=f0L8-_3sDGGkCzF4WA0xmUtaY_qiz__3zq5AemLgwTsqvsg@mail.gmail.com>
 cf. <xmqqlddqu013.fsf@gitster.g>
 source: <20260423165432.143598-1-belkid98@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-19) 9 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'
 - Merge branch 'cc/promisor-auto-config-url' into cc/promisor-auto-config-url-more

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Comments?
 source: <20260519153808.494105-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-23) 2 commits
 - checkout: extend --track with a "fetch" mode to refresh start-point
 - branch: expose helpers for finding the remote owning a tracking ref

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 source: <pull.2281.v13.git.git.1779565714.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-18) 1 commit
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Comments?
 source: <8210d60832b9a58aa4d71fc3790e44d8989564ce.1779152064.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-05-25) 3 commits
 - line-log: allow non-patch diff formats with -L
 - line-log: integrate -L output with the standard log-tree pipeline
 - revision: move -L setup before output_format-to-diff derivation

 The `git log -L` implementation has been refactored to use the
 standard diff output pipeline, enabling pickaxe and diff-filter to
 work as expected. Additionally, metadata-only diff formats like
 --raw and --name-only are now supported with -L.

 Will merge to 'next'?
 source: <pull.2120.v2.git.1779733799.gitgitgadget@gmail.com>


* ds/path-walk-filters (2026-05-22) 14 commits
  (merged to 'next' on 2026-05-25 at eccb829b10)
 + path-walk: support `combine` filter
 + path-walk: support `object:type` filter
 + path-walk: support `tree:0` filter
 + t6601: tag otherwise-unreachable trees
 + pack-objects: support sparse:oid filter with path-walk
 + path-walk: add pl_sparse_trees to control tree pruning
 + path-walk: support blob size limit filter
 + backfill: die on incompatible filter options
 + path-walk: support blobless filter
 + path-walk: always emit directly-requested objects
 + t/perf: add pack-objects filter and path-walk benchmark
 + pack-objects: pass --objects with --path-walk
 + t5620: make test work with path-walk var
 + Merge branch 'en/backfill-fixes-and-edges' into ds/path-walk-filters

 The "git pack-objects --path-walk" traversal has been integrated
 with several object filters, including blobless and sparse filters.

 Will merge to 'master'.
 source: <pull.2101.v5.git.1779474277.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Needs review.
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* tb/pseudo-merge-bugfixes (2026-05-11) 9 commits
  (merged to 'next' on 2026-05-19 at ecee155d5c)
 + pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 + Documentation: fix broken `sampleRate` in gitpacking(7)
 + pack-bitmap: reject pseudo-merge "sampleRate" of 0
 + pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 + pack-bitmap: fix pseudo-merge lookup for shared commits
 + pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 + pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 + t5333: demonstrate various pseudo-merge bugs
 + t/helper: add 'test-tool bitmap write' subcommand
 (this branch is used by tb/bitmap-build-performance.)

 Fixes many bugs in pseudo-merge code.

 Will merge to 'master'.
 source: <cover.1778546804.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-05-19) 8 commits
  (merged to 'next' on 2026-05-21 at ff57fd9c97)
 + send-pack: pass negotiation config in push
 + remote: add remote.*.negotiationInclude config
 + fetch: add --negotiation-include option for negotiation
 + negotiator: add have_sent() interface
 + remote: add remote.*.negotiationRestrict config
 + transport: rename negotiation_tips
 + fetch: add --negotiation-restrict option
 + t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Will merge to 'master'.
 source: <pull.2085.v6.git.1779207896.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-05-14) 4 commits
  (merged to 'next' on 2026-05-20 at 722acf81c8)
 + grep: prefetch necessary blobs
 + builtin/log: prefetch necessary blobs for `git cherry`
 + patch-ids.h: add missing trailing parenthesis in documentation comment
 + promisor-remote: document caller filtering contract

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Will merge to 'master'.
 cf. <0da4f159-8d4b-49e2-93c1-25aa0bf69371@gmail.com>
 source: <pull.2089.v3.git.1778775928.gitgitgadget@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
  (merged to 'next' on 2026-05-21 at c8709aa17f)
 + t/unit-tests: add tests for the in-memory object source
 + odb: generic in-memory source
 + odb/source-inmemory: stub out remaining functions
 + odb/source-inmemory: implement `freshen_object()` callback
 + odb/source-inmemory: implement `count_objects()` callback
 + odb/source-inmemory: implement `find_abbrev_len()` callback
 + odb/source-inmemory: implement `for_each_object()` callback
 + odb/source-inmemory: convert to use oidtree
 + oidtree: add ability to store data
 + cbtree: allow using arbitrary wrapper structures for nodes
 + odb/source-inmemory: implement `write_object_stream()` callback
 + odb/source-inmemory: implement `write_object()` callback
 + odb/source-inmemory: implement `read_object_stream()` callback
 + odb/source-inmemory: implement `read_object_info()` callback
 + odb: fix unnecessary call to `find_cached_object()`
 + odb/source-inmemory: implement `free()` callback
 + odb: introduce "in-memory" source
 + Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch is used by ps/odb-source-loose; uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Will merge to 'master'.
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* cl/conditional-config-on-worktree-path (2026-05-24) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Ready?
 source: <20260525-includeif-worktree-v5-0-1efe525d025a@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Waiting for response(s) to review comment(s).
 cf. <20260513230216.GA1378627@coredump.intra.peff.net>
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Needs review.
 cf. <xmqqse7xm8av.fsf@gitster.g>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-05-14) 7 commits
  (merged to 'next' on 2026-05-21 at 61108abe4d)
 + odb/transaction: make `write_object_stream()` pluggable
 + object-file: generalize packfile writes to use odb_write_stream
 + object-file: avoid fd seekback by checking object size upfront
 + object-file: remove flags from transaction packfile writes
 + odb: update `struct odb_write_stream` read() callback
 + odb/transaction: use pluggable `begin_transaction()`
 + odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory and ps/odb-source-loose.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Will merge to 'master'.
 source: <20260514183740.1505171-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
  (merged to 'next' on 2026-05-22 at 197a9bad73)
 + cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'master'.
 cf. <xmqqwlwy4v7t.fsf@gitster.g>
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-05-19) 16 commits
  (merged to 'next' on 2026-05-21 at 6c11c1a739)
 + repack: allow `--write-midx=incremental` without `--geometric`
 + repack: introduce `--write-midx=incremental`
 + repack: implement incremental MIDX repacking
 + packfile: ensure `close_pack_revindex()` frees in-memory revindex
 + builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 + repack-geometry: prepare for incremental MIDX repacking
 + repack-midx: extract `repack_fill_midx_stdin_packs()`
 + repack-midx: factor out `repack_prepare_midx_command()`
 + midx: expose `midx_layer_contains_pack()`
 + repack: track the ODB source via existing_packs
 + midx: support custom `--base` for incremental MIDX writes
 + midx: introduce `--no-write-chain-file` for incremental MIDX writes
 + midx: use `strvec` for `keep_hashes`
 + midx: build `keep_hashes` array in order
 + midx: use `strset` for retained MIDX files
 + midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Will merge to 'master'.
 source: <cover.1779206239.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-05-19) 18 commits
  (merged to 'next' on 2026-05-21 at d8fb5a7b3e)
 + setup: stop using `the_repository` in `init_db()`
 + setup: stop using `the_repository` in `create_reference_database()`
 + setup: stop using `the_repository` in `initialize_repository_version()`
 + setup: stop using `the_repository` in `check_repository_format()`
 + setup: stop using `the_repository` in `upgrade_repository_format()`
 + setup: stop using `the_repository` in `setup_git_directory()`
 + setup: stop using `the_repository` in `setup_git_directory_gently()`
 + setup: stop using `the_repository` in `setup_git_env()`
 + setup: stop using `the_repository` in `set_git_work_tree()`
 + setup: stop using `the_repository` in `setup_work_tree()`
 + setup: stop using `the_repository` in `enter_repo()`
 + setup: stop using `the_repository` in `verify_non_filename()`
 + setup: stop using `the_repository` in `verify_filename()`
 + setup: stop using `the_repository` in `path_inside_repo()`
 + setup: stop using `the_repository` in `prefix_path()`
 + setup: stop using `the_repository` in `is_inside_work_tree()`
 + setup: stop using `the_repository` in `is_inside_git_dir()`
 + setup: replace use of `the_repository` in static functions
 (this branch is used by ps/setup-centralize-odb-creation.)

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Will merge to 'master'.
 source: <20260519-pks-setup-wo-the-repository-v3-0-a00d8ea8b07f@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 cf. <xmqq1pfivfa3.fsf@gitster.g>
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
  (merged to 'next' on 2026-05-22 at ca1c5e8432)
 + graph: add truncation mark to capped lanes
 + graph: add --graph-lane-limit option
 + graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Will merge to 'master'.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* jr/bisect-custom-terms-in-output (2026-05-14) 3 commits
  (merged to 'next' on 2026-05-22 at 1ccd1056c9)
 + rev-parse: use selected alternate terms to look up refs
 + bisect: print bisect terms in single quotes
 + bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Will merge to 'master'.
 source: <20260514-bisect-terms-v4-0-b3e3cf1b06ce@schlaraffenlan.de>


* ua/push-remote-group (2026-05-03) 3 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c
 - remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Comments?
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <xmqqcxz2tzpr.fsf@gitster.g>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold to help the base topic with wider exposure.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/fsmonitor-linux (2026-04-15) 13 commits
  (merged to 'next' on 2026-05-22 at 5d99c1765d)
 + fsmonitor: convert shown khash to strset in do_handle_client
 + fsmonitor: add tests for Linux
 + fsmonitor: add timeout to daemon stop command
 + fsmonitor: close inherited file descriptors and detach in daemon
 + run-command: add close_fd_above_stderr option
 + fsmonitor: implement filesystem change listener for Linux
 + fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 + fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 + fsmonitor: use pthread_cond_timedwait for cookie wait
 + compat/win32: add pthread_cond_timedwait
 + fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 + fsmonitor: fix khash memory leak in do_handle_client
 + t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'master'.
 cf. <xmqqa4u5nnxq.fsf@gitster.g>
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 17%]

* What's cooking in git.git (May 2026, #06)
@ 2026-05-23  9:06 16% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-23  9:06 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* aw/validate-proxy-url-scheme (2026-05-05) 1 commit
  (merged to 'next' on 2026-05-15 at da9c1b71d7)
 + http: reject unsupported proxy URL schemes

 Misspelt proxy URL (e.g., httt://...) did not trigger any warning
 or failure, which has been corrected.
 source: <20260505091941.1825-2-aminnimaj@gmail.com>


* jc/ci-enable-expensive (2026-05-10) 2 commits
  (merged to 'next' on 2026-05-15 at d258bb5e55)
 + ci: enable EXPENSIVE for contributor builds
 + Merge branch 'js/objects-larger-than-4gb-on-windows' into jc/ci-enable-expensive

 Enable expensive tests to catch topics that may cause breakages on
 integration branches closer to their origin in the contributor PR
 builds.
 source: <xmqqjyta9630.fsf@gitster.g>


* jk/apply-leakfix (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-20 at 725a20bf93)
 + apply: plug leak on "patch too large" error

 Leakfix.
 source: <20260516021622.GA744303@coredump.intra.peff.net>


* jk/commit-sign-overflow-fix (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-20 at e1a320d4e5)
 + commit: handle large commit messages in utf8 verification

 Leakfix.
 source: <20260516022310.GB744303@coredump.intra.peff.net>


* kh/doc-log-decorate-list (2026-04-27) 2 commits
  (merged to 'next' on 2026-05-15 at f740311a37)
 + doc: log: use the same delimiter in description list
 + doc: log: fix --decorate description list

 Doc update.
 cf. <xmqqpl31np0l.fsf@gitster.g>
 source: <CV_doc_log_--decorate_list.626@msgid.xyz>


* kn/refs-generic-helpers (2026-05-04) 9 commits
  (merged to 'next' on 2026-05-15 at 62cb4e0ce2)
 + refs: use peeled tag values in reference backends
 + refs: add peeled object ID to the `ref_update` struct
 + refs: move object parsing to the generic layer
 + update-ref: handle rejections while adding updates
 + update-ref: move `print_rejected_refs()` up
 + refs: return `ref_transaction_error` from `ref_transaction_update()`
 + refs: extract out reflog config to generic layer
 + refs: introduce `ref_store_init_options`
 + refs: remove unused typedef 'ref_transaction_commit_fn'

 Refactor service routines in the ref subsystem backends.
 cf. <afmFmGo_Sg33Rv6V@pks.im>
 cf. <87o6isqq4q.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260504-refs-move-to-generic-layer-v4-0-936ac2f0b1a3@gmail.com>


* mm/git-url-parse (2026-05-01) 8 commits
  (merged to 'next' on 2026-05-15 at 416deceeeb)
 + t9904: add tests for the new url-parse builtin
 + doc: describe the url-parse builtin
 + builtin: create url-parse command
 + urlmatch: define url_parse function
 + url: return URL_SCHEME_UNKNOWN instead of dying
 + url: move scheme detection to URL header/source
 + url: move url_is_local_not_ssh to url.h
 + connect: rename enum protocol to url_scheme

 The internal URL parsing logic has been made accessible via a new
 subcommand "git url-parse".
 cf. <xmqqjyt9p9pk.fsf@gitster.g>
 cf. <20260512085734.GA26769@tb-raspi4>
 source: <pull.1715.v3.git.git.1777699722.gitgitgadget@gmail.com>


* ps/maintenance-daemonize-lockfix (2026-05-13) 2 commits
  (merged to 'next' on 2026-05-21 at 9b7fa37559)
 + run-command: honor "gc.auto" for auto-maintenance
 + builtin/maintenance: fix locking with "--detach"

 "git maintenance" that goes background did not use the lockfile to
 prevent multiple maintenance processes from running at the same
 time, which has been corrected.
 cf. <ag1MHje6-C6nmcO4@pks.im>
 source: <20260513-pks-maintenance-fix-lock-with-detach-v3-0-f27a1ac82891@pks.im>


* pw/xdiff-shrink-memory-consumption (2026-05-04) 5 commits
  (merged to 'next' on 2026-05-15 at 7a867909d2)
 + xdiff: reduce the size of array
 + xprepare: simplify error handling
 + xdiff: cleanup xdl_clean_mmatch()
 + xdiff: reduce size of action arrays
 + Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.
 source: <cover.1777903579.git.phillip.wood@dunelm.org.uk>


* sp/shallow-deepen-on-non-shallow-repo-fix (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-15 at 67dd491aae)
 + shallow: fix relative deepen on non-shallow repositories

 "git fetch --deepen=<n>" in a full clone truncated the history to <n>
 commits deep, which has been corrected to be a no-op instead.
 source: <20260511192044.169557-1-samo_pogacnik@t-2.net>


* za/t2000-modernise-more (2026-04-29) 1 commit
  (merged to 'next' on 2026-05-15 at 3b524d0ba5)
 + t2000: consolidate second scenario into a single test block

 Test update.
 cf. <xmqqfr3xnofn.fsf@gitster.g>
 source: <20260429103607.406339-1-zakariyahali100@gmail.com>

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

* gh/jump-auto-mode (2026-05-21) 1 commit
 - git-jump: pick a mode automatically when invoked without arguments

 The 'git-jump' command (in contrib/) has been taught to automatically
 pick a mode (merge, diff, or ws) when invoked without arguments.

 Comments?
 source: <pull.2108.v3.git.1779371110195.gitgitgadget@gmail.com>


* sp/doc-range-diff-takes-notes (2026-05-20) 1 commit
  (merged to 'next' on 2026-05-22 at 020bec81b7)
 + Documentation/git-range-diff: add missing notes options in synopsis

 Doxfix.

 Will merge to 'master'.
 source: <20260521052841.73775-1-siddh.raman.pant@oracle.com>


* ps/odb-source-loose (2026-05-21) 19 commits
 - odb/source-loose: drop pointer to the "files" source
 - odb/source-loose: stub out remaining callbacks
 - odb/source-loose: wire up `write_object_stream()` callback
 - object-file: refactor writing objects to use loose source
 - odb/source-loose: wire up `write_object()` callback
 - loose: refactor object map to operate on `struct odb_source_loose`
 - odb/source-loose: wire up `freshen_object()` callback
 - odb/source-loose: drop `odb_source_loose_has_object()`
 - odb/source-loose: wire up `count_objects()` callback
 - odb/source-loose: wire up `find_abbrev_len()` callback
 - odb/source-loose: wire up `for_each_object()` callback
 - odb/source-loose: wire up `read_object_stream()` callback
 - odb/source-loose: wire up `read_object_info()` callback
 - odb/source-loose: wire up `close()` callback
 - odb/source-loose: wire up `reprepare()` callback
 - odb/source-loose: start converting to a proper `struct odb_source`
 - odb/source-loose: store pointer to "files" instead of generic source
 - odb/source-loose: move loose source into "odb/" subsystem
 - Merge branch 'ps/odb-in-memory' into ps/odb-source-loose
 (this branch uses jt/odb-transaction-write and ps/odb-in-memory.)

 The loose object source has been refactored into a proper `struct
 odb_source`.

 Comments?
 source: <20260521-b4-pks-odb-source-loose-v1-0-6553b399be2d@pks.im>


* ps/setup-centralize-odb-creation (2026-05-21) 9 commits
 - setup: construct object database in `apply_repository_format()`
 - repository: stop reading loose object map twice on repo init
 - setup: stop initializing object database without repository
 - setup: stop creating the object database in `setup_git_env()`
 - repository: stop initializing the object database in `repo_set_gitdir()`
 - setup: deduplicate logic to apply repository format
 - setup: drop `setup_git_env()`
 - t0001: plug test gaps for git-init(1) with GIT_OBJECT_DIRECTORY
 - Merge branch 'ps/setup-wo-the-repository' into ps/setup-centralize-odb-creation
 (this branch uses ps/setup-wo-the-repository.)

 The setup logic to discover and configure repositories has been
 refactored, and the initialization of the object database has been
 centralized.

 Comments?
 source: <20260521-b4-pks-setup-centralize-odb-creation-v1-0-f130d2a7e8ae@pks.im>


* ps/gitlab-ci-macOS-improvements (2026-05-21) 2 commits
  (merged to 'next' on 2026-05-22 at aaa3c7021e)
 + gitlab-ci: update macOS image
 + gitlab-ci: upgrade macOS runners

 Update GitLab CI jobs that exercise macOS.

 Will merge to 'master'.
 source: <20260521-b4-pks-gitlab-ci-updates-v1-0-53bb46ed33e0@pks.im>


* kh/doc-hook (2026-05-21) 4 commits
 - doc: hook: don’t self-link via config include
 - doc: config: include existing git-hook(1) section
 - doc: hook: consistently capitalize Git
 - doc: hook: remove stray backtick

 Doc updates.

 Comments?
 source: <CV_doc_hook.6f0@msgid.xyz>


* kh/doc-replay-config (2026-05-21) 4 commits
 - doc: replay: move “default” to the right-hand-side
 - doc: replay: use a nested definition list
 - doc: replay: simplify replay.refAction description
 - doc: link to config for git-replay(1)

 Doc update for "git replay" to actually refer to its configuration
 variables.

 Comments?
 source: <CV_doc_replay_config.709@msgid.xyz>

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

* jk/commit-graph-lazy-load-fallback (2026-05-18) 1 commit
  (merged to 'next' on 2026-05-22 at d1188df466)
 + commit: fall back to full read when maybe_tree is NULL

 The logic to lazy-load trees from the commit-graph has been made
 more robust by falling back to reading the commit object when
 the commit-graph is no longer available.

 Will merge to 'master'.
 source: <20260519061534.GA1709881@coredump.intra.peff.net>


* jk/connect-service-enum (2026-05-21) 2 commits
 - transport-helper: fix typo in BUG() message
  (merged to 'next' on 2026-05-21 at fd80c61e21)
 + connect: use "service" enum for "name" argument

 The "name" argument in git_connect() and related functions has been
 converted to a "service" enum to improve type safety and clarify its
 purpose.

 Will merge to 'next' and then to 'master'.
 source: <20260519052219.GA1703179@coredump.intra.peff.net>
 source: <20260522044352.GA861761@coredump.intra.peff.net>


* jk/sq-dequote-cleanup (2026-05-18) 3 commits
  (merged to 'next' on 2026-05-21 at fbedf2daea)
 + quote: simplify internals of dequoting
 + quote: drop sq_dequote_to_argv()
 + quote.h: bump strvec forward declaration to the top

 Code simplification.

 Will merge to 'master'.
 source: <20260519011837.GA1615637@coredump.intra.peff.net>


* aj/stash-patch-optimize-temporary-index (2026-05-19) 1 commit
 - stash: reuse cached index entries in --patch temporary index

 "git stash -p" has been optimized by reusing cached index
 entries in its temporary index, avoiding unnecessary lstat()
 calls on unchanged files.
 source: <pull.2306.git.git.1779194605735.gitgitgadget@gmail.com>


* tb/bitmap-build-performance (2026-05-19) 9 commits
 - pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
 - pack-bitmap: remember pseudo-merge parents
 - pack-bitmap: sort bitmaps before XORing
 - pack-bitmap: cache object positions during fill
 - pack-bitmap: consolidate `find_object_pos()` success path
 - pack-bitmap: reuse stored selected bitmaps
 - pack-bitmap: check subtree bits before recursing
 - pack-bitmap: pass object position to `fill_bitmap_tree()`
 - Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance
 (this branch uses tb/pseudo-merge-bugfixes.)

 Reachability bitmap generation has been significantly optimized. By
 reordering tree traversal, caching object positions, and refining how
 pseudo-merge bitmaps are constructed, the performance of "git repack
 --write-midx-bitmaps" is improved, especially for large repositories
 and when using pseudo-merges.
 source: <cover.1779207127.git.me@ttaylorr.com>


* hn/status-pull-advice-qualified (2026-05-21) 1 commit
 - remote: qualify "git pull" advice for non-upstream compareBranches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Comments?
 source: <pull.2301.v4.git.git.1779372367317.gitgitgadget@gmail.com>


* jk/dumb-http-alternate-fix (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at c1a51214fb)
 + http: handle absolute-path alternates from server root

 The HTTP walker misinterpreted the alternates file that gives an
 absolute path when the server URL does not have the final slash
 (i.e., "https://example.com" not "https://example.com/").

 Will merge to 'master'.
 source: <20260512162619.GA69813@coredump.intra.peff.net>


* jk/pretty-no-strbuf-presizing (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at ee684c614f)
 + pretty: drop strbuf pre-sizing from add_rfc2047()

 Remove ineffective strbuf presizing that would have computed an
 allocation that would not have fit in the available memory anyway,
 or too small due to integer wraparound to cause immediate automatic
 growing.

 Will merge to 'master'.
 source: <20260512162022.GA69669@coredump.intra.peff.net>


* kk/merge-octopus-optim (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-20 at afe427dc66)
 + merge: use repo_in_merge_bases for octopus up-to-date check

 The logic to determine that branches in an octopus merge are
 independent has been optimized.

 Will merge to 'master'.
 cf. <c5b333f1-0db6-4aec-a369-6503cb924e7f@gmail.com>
 source: <pull.2110.git.1778566286543.gitgitgadget@gmail.com>


* rs/strbuf-add-uint (2026-05-12) 4 commits
 - ls-tree: use strbuf_add_uint()
 - ls-files: use strbuf_add_uint()
 - cat-file: use strbuf_add_uint()
 - strbuf: add strbuf_add_uint()

 Adding a decimal integer with strbuf_addf("%u") appears commonly;
 they have been optimized by using a custom formatter.

 Comments?
 source: <20260512115603.80780-1-l.s.r@web.de>


* ta/approxidate-noon-fix (2026-05-21) 4 commits
 - approxidate: use deferred mday adjustments for "specials"
 - approxidate: make "specials" respect fixed day-of-month
 - t0006: add support for approxidate test date adjustment
 - approxidate: make "today" wrap to midnight

 "Friday noon" asked in the morning on Sunday was parsed to be one
 day before the specified time, which has been corrected.

 Will merge to 'next'.
 source: <20260521105408.8222-1-taahol@utu.fi>


* mm/doc-word-diff (2026-05-13) 1 commit
 - doc: clarify that --word-diff operates on line-level hunks

 The documentation for "--word-diff" has been extended with a bit of
 implementation detail of where these different words come from.

 Comments?
 source: <pull.2113.git.1778686956622.gitgitgadget@gmail.com>


* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
 - hex: add and use strbuf_add_oid_hex()

 Formatting object name in full hexadecimal form has been optimized
 by using a new strbuf_add_oid_hex() helper function.

 Comments?
 source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>


* kk/limit-list-optim (2026-05-14) 1 commit
  (merged to 'next' on 2026-05-19 at f17450dd1b)
 + revision: use priority queue in limit_list()

 The limit_list() function that is one of the core part of the
 revision traversal infrastructure has been optimized by replacing
 its use of linear list with priority queue.

 Will merge to 'master'.
 source: <pull.2114.git.1778777491939.gitgitgadget@gmail.com>


* ed/check-connected-close-err-fd (2026-05-16) 1 commit
  (merged to 'next' on 2026-05-22 at 00d592399e)
 + Merge branch 'ed/check-connected-close-err-fd-2.53' into ed/check-connected-close-err-fd
 (this branch uses ed/check-connected-close-err-fd-2.53.)

 File descriptor leak fix.

 Will merge to 'master'.
 (this branch uses ed/check-connected-close-err-fd-2.53.)


* ed/check-connected-close-err-fd-2.53 (2026-05-14) 1 commit
  (merged to 'next' on 2026-05-22 at 1017d0e022)
 + connected: close err_fd in promisor fast-path
 (this branch is used by ed/check-connected-close-err-fd.)

 File descriptor leak fix (for 2.54 maintenance track).

 Will merge to 'master'.
 source: <pull.2303.git.git.1778827194448.gitgitgadget@gmail.com>


* kk/tips-reachable-from-bases-optim (2026-05-16) 2 commits
  (merged to 'next' on 2026-05-22 at 87d6b8e666)
 + t6600: add tests for duplicate tips in tips_reachable_from_bases()
 + commit-reach: use object flags for tips_reachable_from_bases()

 Revision traversal optimization.

 Will merge to 'master'.
 source: <pull.2116.v3.git.1778947182.gitgitgadget@gmail.com>


* pb/doc-diff-format-updates (2026-05-15) 3 commits
  (merged to 'next' on 2026-05-20 at fe8d31e9f9)
 + diff-format.adoc: mode and hash are 0* for unmerged paths from index only
 + diff-format.adoc: 'git diff-files' prints two lines for unmerged files
 + diff-format.adoc: remove mention of diff-tree specific output

 Doc updates.

 Will merge to 'master'.
 source: <pull.2304.git.git.1778860091.gitgitgadget@gmail.com>


* ps/t3903-cover-stash-include-untracked (2026-05-16) 1 commit
  (merged to 'next' on 2026-05-20 at f1e7ac1cbd)
 + stash: add coverage for show --include-untracked

 Test coverage has been added to "git stash --include-untracked".

 Will merge to 'master'.
 source: <20260516183347.4323-2-pushkarkumarsingh1970@gmail.com>


* rs/trailer-fold-optim (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-20 at 38c9fb15c2)
 + trailer: change strbuf in-place in unfold_value()

 Code simplification.

 Will merge to 'master'.
 source: <816be07e-2cd6-48fe-ae93-57fa0f2543ed@web.de>


* rs/use-builtin-add-overflow-explicitly-on-clang (2026-05-18) 2 commits
  (merged to 'next' on 2026-05-21 at c223b71079)
 + use __builtin_add_overflow() in st_add() with Clang
 + strbuf: use st_add3() in strbuf_grow()

 Micro optimization of codepaths that compute allocation sizes carefully.

 Will merge to 'master'.
 source: <20260518202502.25682-1-l.s.r@web.de>


* tc/generate-configlist-fix-for-older-ninja (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-22 at 8322bfb8f2)
 + generate-configlist: collapse depfile for older Ninja

 Build update.

 Will merge to 'master'.
 source: <20260515-toon-fix-almalinux8-v3-1-b545a0647f0f@iotcl.com>


* hn/config-typo-advice (2026-05-16) 1 commit
 - config: suggest the correct form when key contains "=" in set context

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.

 Comments?
 source: <pull.2302.v2.git.git.1778935976330.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-again (2026-05-17) 5 commits
 - doc: convert git-imap-send synopsis and options to new style
 - doc: convert git-apply synopsis and options to new style
 - doc: convert git-am synopsis and options to new style
 - doc: convert git-grep synopsis and options to new style
 - doc: convert git-bisect to synopsis style

 A batch of documentation pages has been updated to use the modern
 synopsis style.

 Comments?
 source: <pull.2117.git.1779049615.gitgitgadget@gmail.com>


* kn/refs-fsck-skip-lock-files (2026-05-17) 1 commit
  (merged to 'next' on 2026-05-21 at 91e30e3543)
 + refs/files: skip lock files during consistency checks

 The consistency checks for the files reference backend have been updated
 to skip lock files earlier, avoiding unnecessary parsing of
 intermediate files.

 Will merge to 'master'.
 source: <20260517-refs-fsck-skip-lock-files-v3-1-b24dfd673c7e@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Comments?
 cf. <xmqqzf1xbl4i.fsf@gitster.g>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* ag/sequencer-remove-unused-struct-member (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-17 at 8553437ae1)
 + sequencer: remove todo_add_branch_context.commit

 Code clean-up.

 Will merge to 'master'.
 cf. <agLKVn6RF4UBYd_8@pks.im>
 source: <pull.2111.git.1778502113485.gitgitgadget@gmail.com>


* hn/branch-prune-merged (2026-05-21) 4 commits
 - branch: add --dry-run for --prune-merged
 - branch: add branch.<name>.pruneMerged opt-out
 - branch: add --prune-merged <branch>
 - branch: add --forked <branch>

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Comments?
 source: <pull.2285.v10.git.git.1779403204.gitgitgadget@gmail.com>


* mm/diff-U-takes-no-negative-values (2026-05-12) 4 commits
  (merged to 'next' on 2026-05-17 at d81439a049)
 + parse-options: clarify what "negated" means for PARSE_OPT_NONEG
 + xdiff: guard against negative context lengths
 + diff: reject negative values for -U/--unified
 + diff: reject negative values for --inter-hunk-context

 The command line parser for "git diff" learned a few options take
 only non-negative integers.

 Will merge to 'master'.
 source: <pull.2105.v2.git.1778609423.gitgitgadget@gmail.com>


* dk/doc-exclude-is-shared-per-repo (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at ddc761aec6)
 + ignore: note info/exclude lives in GIT_COMMON_DIR, not GIT_DIR

 Document the fact that .git/info/exclude is shared across worktrees
 linked to the same repository.

 Will merge to 'master'.
 cf. <bea48414-217b-4860-9279-fe94e3687c28@gmail.com>
 source: <ec97ad3f054e90b675f099a36a81a23bb4b2a0ed.1778620784.git.ben.knoble+github@gmail.com>


* kk/paint-down-to-common-optim (2026-05-11) 2 commits
  (merged to 'next' on 2026-05-17 at 2e39c767e5)
 + commit-reach: early exit paint_down_to_common for single merge-base
 + commit-reach: introduce merge_base_flags enum

 "git merge-base" optimization.

 Will merge to 'master'.
 source: <pull.2109.v4.git.1778504352.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-14) 3 commits
 - daemon: guard NULL REMOTE_PORT in execute() logging
 - daemon: fix IPv6 address truncation in ip2str()
 - daemon: fix IPv6 address corruption in lookup_hostname()

 Correct use of sockaddr API in "git daemon".

 Waiting for response(s) to review comment(s).
 cf. <agGLRC1ziF5F8Okh@pks.im>
 source: <pull.2300.git.git.1778773592.gitgitgadget@gmail.com>


* ob/more-repo-config-values (2026-04-23) 8 commits
 - env: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - env: move "sparse_expect_files_outside_of_patterns" into `repo_config_values`
 - env: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Expecting a reroll.
 cf. <CAD=f0L8-_3sDGGkCzF4WA0xmUtaY_qiz__3zq5AemLgwTsqvsg@mail.gmail.com>
 cf. <xmqqlddqu013.fsf@gitster.g>
 source: <20260423165432.143598-1-belkid98@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-19) 9 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'
 - Merge branch 'cc/promisor-auto-config-url' into cc/promisor-auto-config-url-more

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Comments?
 source: <20260519153808.494105-1-christian.couder@gmail.com>


* hn/checkout-track-fetch (2026-05-21) 1 commit
 - checkout: extend --track with a "fetch" mode to refresh start-point

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 source: <pull.2281.v12.git.git.1779358803652.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-18) 1 commit
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Comments?
 source: <8210d60832b9a58aa4d71fc3790e44d8989564ce.1779152064.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-04-27) 3 commits
 - line-log: allow non-patch diff formats with -L
 - line-log: integrate -L output with the standard log-tree pipeline
 - revision: move -L setup before output_format-to-diff derivation

 Code clean-up.

 Comments?
 cf. <xmqqfr3xp98b.fsf@gitster.g>
 source: <pull.2094.git.1777349126.gitgitgadget@gmail.com>


* ds/path-walk-filters (2026-05-13) 14 commits
 - path-walk: support `combine` filter
 - path-walk: support `object:type` filter
 - path-walk: support `tree:0` filter
 - t6601: tag otherwise-unreachable trees
 - pack-objects: support sparse:oid filter with path-walk
 - path-walk: add pl_sparse_trees to control tree pruning
 - path-walk: support blob size limit filter
 - backfill: die on incompatible filter options
 - path-walk: support blobless filter
 - path-walk: always emit directly-requested objects
 - t/perf: add pack-objects filter and path-walk benchmark
 - pack-objects: pass --objects with --path-walk
 - t5620: make test work with path-walk var
 - Merge branch 'en/backfill-fixes-and-edges' into ds/path-walk-filters

 The "git pack-objects --path-walk" traversal has been integrated
 with several object filters, including blobless and sparse filters.

 Comments?
 source: <pull.2101.v4.git.1778707135.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Needs review.
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* tb/pseudo-merge-bugfixes (2026-05-11) 9 commits
  (merged to 'next' on 2026-05-19 at ecee155d5c)
 + pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 + Documentation: fix broken `sampleRate` in gitpacking(7)
 + pack-bitmap: reject pseudo-merge "sampleRate" of 0
 + pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 + pack-bitmap: fix pseudo-merge lookup for shared commits
 + pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 + pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 + t5333: demonstrate various pseudo-merge bugs
 + t/helper: add 'test-tool bitmap write' subcommand
 (this branch is used by tb/bitmap-build-performance.)

 Fixes many bugs in pseudo-merge code.

 Will merge to 'master'.
 source: <cover.1778546804.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-05-19) 8 commits
  (merged to 'next' on 2026-05-21 at ff57fd9c97)
 + send-pack: pass negotiation config in push
 + remote: add remote.*.negotiationInclude config
 + fetch: add --negotiation-include option for negotiation
 + negotiator: add have_sent() interface
 + remote: add remote.*.negotiationRestrict config
 + transport: rename negotiation_tips
 + fetch: add --negotiation-restrict option
 + t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Will merge to 'master'.
 source: <pull.2085.v6.git.1779207896.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-05-14) 4 commits
  (merged to 'next' on 2026-05-20 at 722acf81c8)
 + grep: prefetch necessary blobs
 + builtin/log: prefetch necessary blobs for `git cherry`
 + patch-ids.h: add missing trailing parenthesis in documentation comment
 + promisor-remote: document caller filtering contract

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Will merge to 'master'.
 cf. <0da4f159-8d4b-49e2-93c1-25aa0bf69371@gmail.com>
 source: <pull.2089.v3.git.1778775928.gitgitgadget@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
  (merged to 'next' on 2026-05-21 at c8709aa17f)
 + t/unit-tests: add tests for the in-memory object source
 + odb: generic in-memory source
 + odb/source-inmemory: stub out remaining functions
 + odb/source-inmemory: implement `freshen_object()` callback
 + odb/source-inmemory: implement `count_objects()` callback
 + odb/source-inmemory: implement `find_abbrev_len()` callback
 + odb/source-inmemory: implement `for_each_object()` callback
 + odb/source-inmemory: convert to use oidtree
 + oidtree: add ability to store data
 + cbtree: allow using arbitrary wrapper structures for nodes
 + odb/source-inmemory: implement `write_object_stream()` callback
 + odb/source-inmemory: implement `write_object()` callback
 + odb/source-inmemory: implement `read_object_stream()` callback
 + odb/source-inmemory: implement `read_object_info()` callback
 + odb: fix unnecessary call to `find_cached_object()`
 + odb/source-inmemory: implement `free()` callback
 + odb: introduce "in-memory" source
 + Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch is used by ps/odb-source-loose; uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Will merge to 'master'.
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* cl/conditional-config-on-worktree-path (2026-05-13) 2 commits
  (merged to 'next' on 2026-05-22 at 7851f494ae)
 + config: add "worktree" and "worktree/i" includeIf conditions
 + config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Will merge to 'master'.
 cf. <2989eb07-2933-4b5a-9e5c-33ef9b805528@gmail.com>
 source: <20260513-includeif-worktree-v4-0-f8e6212d1fba@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Waiting for response(s) to review comment(s).
 cf. <20260513230216.GA1378627@coredump.intra.peff.net>
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Needs review.
 cf. <xmqqse7xm8av.fsf@gitster.g>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-05-14) 7 commits
  (merged to 'next' on 2026-05-21 at 61108abe4d)
 + odb/transaction: make `write_object_stream()` pluggable
 + object-file: generalize packfile writes to use odb_write_stream
 + object-file: avoid fd seekback by checking object size upfront
 + object-file: remove flags from transaction packfile writes
 + odb: update `struct odb_write_stream` read() callback
 + odb/transaction: use pluggable `begin_transaction()`
 + odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory and ps/odb-source-loose.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Will merge to 'master'.
 source: <20260514183740.1505171-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
  (merged to 'next' on 2026-05-22 at 197a9bad73)
 + cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'master'.
 cf. <xmqqwlwy4v7t.fsf@gitster.g>
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-05-19) 16 commits
  (merged to 'next' on 2026-05-21 at 6c11c1a739)
 + repack: allow `--write-midx=incremental` without `--geometric`
 + repack: introduce `--write-midx=incremental`
 + repack: implement incremental MIDX repacking
 + packfile: ensure `close_pack_revindex()` frees in-memory revindex
 + builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 + repack-geometry: prepare for incremental MIDX repacking
 + repack-midx: extract `repack_fill_midx_stdin_packs()`
 + repack-midx: factor out `repack_prepare_midx_command()`
 + midx: expose `midx_layer_contains_pack()`
 + repack: track the ODB source via existing_packs
 + midx: support custom `--base` for incremental MIDX writes
 + midx: introduce `--no-write-chain-file` for incremental MIDX writes
 + midx: use `strvec` for `keep_hashes`
 + midx: build `keep_hashes` array in order
 + midx: use `strset` for retained MIDX files
 + midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Will merge to 'master'.
 source: <cover.1779206239.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-05-19) 18 commits
  (merged to 'next' on 2026-05-21 at d8fb5a7b3e)
 + setup: stop using `the_repository` in `init_db()`
 + setup: stop using `the_repository` in `create_reference_database()`
 + setup: stop using `the_repository` in `initialize_repository_version()`
 + setup: stop using `the_repository` in `check_repository_format()`
 + setup: stop using `the_repository` in `upgrade_repository_format()`
 + setup: stop using `the_repository` in `setup_git_directory()`
 + setup: stop using `the_repository` in `setup_git_directory_gently()`
 + setup: stop using `the_repository` in `setup_git_env()`
 + setup: stop using `the_repository` in `set_git_work_tree()`
 + setup: stop using `the_repository` in `setup_work_tree()`
 + setup: stop using `the_repository` in `enter_repo()`
 + setup: stop using `the_repository` in `verify_non_filename()`
 + setup: stop using `the_repository` in `verify_filename()`
 + setup: stop using `the_repository` in `path_inside_repo()`
 + setup: stop using `the_repository` in `prefix_path()`
 + setup: stop using `the_repository` in `is_inside_work_tree()`
 + setup: stop using `the_repository` in `is_inside_git_dir()`
 + setup: replace use of `the_repository` in static functions
 (this branch is used by ps/setup-centralize-odb-creation.)

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Will merge to 'master'.
 source: <20260519-pks-setup-wo-the-repository-v3-0-a00d8ea8b07f@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 cf. <xmqq1pfivfa3.fsf@gitster.g>
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
  (merged to 'next' on 2026-05-22 at ca1c5e8432)
 + graph: add truncation mark to capped lanes
 + graph: add --graph-lane-limit option
 + graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Will merge to 'master'.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* jr/bisect-custom-terms-in-output (2026-05-14) 3 commits
  (merged to 'next' on 2026-05-22 at 1ccd1056c9)
 + rev-parse: use selected alternate terms to look up refs
 + bisect: print bisect terms in single quotes
 + bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Will merge to 'master'.
 source: <20260514-bisect-terms-v4-0-b3e3cf1b06ce@schlaraffenlan.de>


* ua/push-remote-group (2026-05-03) 3 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c
 - remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Comments?
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <xmqqcxz2tzpr.fsf@gitster.g>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold to help the base topic with wider exposure.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/fsmonitor-linux (2026-04-15) 13 commits
  (merged to 'next' on 2026-05-22 at 5d99c1765d)
 + fsmonitor: convert shown khash to strset in do_handle_client
 + fsmonitor: add tests for Linux
 + fsmonitor: add timeout to daemon stop command
 + fsmonitor: close inherited file descriptors and detach in daemon
 + run-command: add close_fd_above_stderr option
 + fsmonitor: implement filesystem change listener for Linux
 + fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 + fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 + fsmonitor: use pthread_cond_timedwait for cookie wait
 + compat/win32: add pthread_cond_timedwait
 + fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 + fsmonitor: fix khash memory leak in do_handle_client
 + t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'master'.
 cf. <xmqqa4u5nnxq.fsf@gitster.g>
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 16%]

* Re: What's cooking in git.git (May 2026, #05)
  @ 2026-05-20  6:38 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-20  6:38 UTC (permalink / raw)
  To: Jeff King; +Cc: git

Jeff King <peff@peff.net> writes:

> On Wed, May 20, 2026 at 02:19:24PM +0900, Junio C Hamano wrote:
>
>> * jk/commit-graph-lazy-load-fallback (2026-05-18) 1 commit
>>  - commit: fall back to full read when maybe_tree is NULL
>> 
>>  The logic to lazy-load trees from the commit-graph has been made
>>  more robust by falling back to reading the commit object when
>>  the commit-graph is no longer available.
>> 
>>  Will merge to 'next'?
>>  source: <20260519050513.GA1635924@coredump.intra.peff.net>
>
> I posted an updated patch in response to your suggestion to use
> parse_oid_hex_algop(), but it looks like the topic in your repo has the
> original.

Indeed, with sufficient amount of front matter before the scissors
line, I missed the patch X-<.

Applied.  Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (May 2026, #05)
  2026-05-20  5:19 15% What's cooking in git.git (May 2026, #05) Junio C Hamano
@ 2026-05-20  5:27 59% ` Junio C Hamano
    1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-20  5:27 UTC (permalink / raw)
  To: git

Junio C Hamano <gitster@pobox.com> writes:

> 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 is a candidate to be in a
> future release).

The following shows status of various topics.  The information
contained there can mechanically be produced from the contents of
the "What's cooking" report I am responding to, but I am sending it
out as an experiment to see if people find it easier to grok to have
something like this near the top as "table of contents", perhaps
before the main report.

------------------------------------------------------------

Comments?
 - cs/subtree-split-recursion                                   03-05          #3
   <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>
 - jd/unpack-trees-wo-the-repository                            03-31          #2
   <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>
 - th/promisor-quiet-per-repo                                   04-06          #1
   <20260406183041.783800-1-vikingtc4@gmail.com>
 - mm/line-log-cleanup                                          04-27          #3
   <xmqqfr3xp98b.fsf@gitster.g>
   <pull.2094.git.1777349126.gitgitgadget@gmail.com>
 - ua/push-remote-group                                         05-03          #3
   <20260503153402.1333220-1-usmanakinyemi202@gmail.com>
 - rs/strbuf-add-uint                                           05-12          #4
   <20260512115603.80780-1-l.s.r@web.de>
 - hn/status-pull-advice-qualified                              05-13          #1
   <pull.2301.v2.git.git.1778665812261.gitgitgadget@gmail.com>
 - mm/doc-word-diff                                             05-13          #1
   <pull.2113.git.1778686956622.gitgitgadget@gmail.com>
 - rs/strbuf-add-oid-hex                                        05-13          #1
   <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>
 - ps/maintenance-daemonize-lockfix                             05-13          #2
   <20260513-pks-maintenance-fix-lock-with-detach-v3-0-f27a1ac82891@pks.im>
 - hn/branch-prune-merged                                       05-13          #5
   <pull.2285.v9.git.git.1778700883.gitgitgadget@gmail.com>
 - ds/path-walk-filters                                         05-13         #14
   <pull.2101.v4.git.1778707135.gitgitgadget@gmail.com>
 - ta/approxidate-noon-fix                                      05-16          #4
   <20260516151540.9611-1-taahol@utu.fi>
 - hn/config-typo-advice                                        05-16          #1
   <pull.2302.v2.git.git.1778935976330.gitgitgadget@gmail.com>
 - ja/doc-synopsis-style-again                                  05-17          #5
   <pull.2117.git.1779049615.gitgitgadget@gmail.com>
 - jt/config-lock-timeout                                       05-17          #1
   <xmqqzf1xbl4i.fsf@gitster.g>
   <20260517132111.1014901-1-joerg@thalheim.io>
 - hn/checkout-track-fetch                                      05-18          #1
   <pull.2301.git.git.1778623888178.gitgitgadget@gmail.com>
   <pull.2281.v10.git.git.1779091483321.gitgitgadget@gmail.com>
 - mf/revision-max-count-oldest                                 05-18          #1
   <8210d60832b9a58aa4d71fc3790e44d8989564ce.1779152064.git.mroik@delayed.space>
 - cc/promisor-auto-config-url-more                             05-19          #9
   <20260519153808.494105-1-christian.couder@gmail.com>

Expecting a reroll.
 - ob/more-repo-config-values                                   04-23          #8
   <CAD=f0L8-_3sDGGkCzF4WA0xmUtaY_qiz__3zq5AemLgwTsqvsg@mail.gmail.com>
   <xmqqlddqu013.fsf@gitster.g>
   <20260423165432.143598-1-belkid98@gmail.com>
 - js/parseopt-subcommand-autocorrection                        04-27         #11
   <xmqqcxz2tzpr.fsf@gitster.g>
   <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>

Need to wait for the base topic.
 - ps/odb-in-memory                                             04-10         #18
   <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>

Needs review.
 - kh/doc-trailers                                              04-13          #9
   <xmqq1pfivfa3.fsf@gitster.g>
   <V2_CV_doc_int-tr_key_format.613@msgid.xyz>
 - lp/repack-propagate-promisor-debugging-info                  04-18          #6
   <xmqqse7xm8av.fsf@gitster.g>
   <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>
 - en/ort-harden-against-corrupt-trees                          04-20          #5
   <pull.2096.git.1776731171.gitgitgadget@gmail.com>
 - pw/status-rebase-todo                                        05-01          #2
   <cover.1777648598.git.phillip.wood@dunelm.org.uk>

On hold to help the base topic with wider exposure.
 - jc/neuter-sideband-post-3.0                                  03-05          #2
   <20260305233452.3727126-8-gitster@pobox.com>

Unclassified.
 - ed/check-connected-close-err-fd-2.53                         05-14          #1
   <pull.2303.git.git.1778827194448.gitgitgadget@gmail.com>
 - aj/stash-patch-optimize-temporary-index                      05-19          #1
   <pull.2306.git.git.1779194605735.gitgitgadget@gmail.com>
 - tb/bitmap-build-performance                                  05-19          #9
   <cover.1779207127.git.me@ttaylorr.com>

Waiting for response(s) to review comment(s).
 - ps/shift-root-in-graph                                       04-27          #1
   <20260513230216.GA1378627@coredump.intra.peff.net>
   <20260427102838.44867-2-pabloosabaterr@gmail.com>
 - st/daemon-sockaddr-fixes                                     05-14          #3
   <agGLRC1ziF5F8Okh@pks.im>
   <pull.2300.git.git.1778773592.gitgitgadget@gmail.com>

Will merge to 'master'.
 + kh/doc-log-decorate-list                                     04-27/05-15    #2
 + za/t2000-modernise-more                                      04-29/05-15    #1
 + mm/git-url-parse                                             05-01/05-15    #8
 + kn/refs-generic-helpers                                      05-04/05-15    #9
 + pw/xdiff-shrink-memory-consumption                           05-04/05-15    #5
 + aw/validate-proxy-url-scheme                                 05-05/05-15    #1
 + jc/ci-enable-expensive                                       05-10/05-15    #2
 + sp/shallow-deepen-on-non-shallow-repo-fix                    05-11/05-15    #1
 + ag/sequencer-remove-unused-struct-member                     05-11/05-17    #1
 + kk/paint-down-to-common-optim                                05-11/05-17    #2
 + jk/dumb-http-alternate-fix                                   05-12/05-17    #1
 + jk/pretty-no-strbuf-presizing                                05-12/05-17    #1
 + mm/diff-U-takes-no-negative-values                           05-12/05-17    #4
 + dk/doc-exclude-is-shared-per-repo                            05-12/05-17    #1
 + tb/pseudo-merge-bugfixes                                     05-11/05-19    #9
 + kk/limit-list-optim                                          05-14/05-19    #1
 + kk/merge-octopus-optim                                       05-11/05-20    #1
 + en/batch-prefetch                                            05-14/05-20    #4
 + jk/apply-leakfix                                             05-15/05-20    #1
 + jk/commit-sign-overflow-fix                                  05-15/05-20    #1
 + pb/doc-diff-format-updates                                   05-15/05-20    #3
 + rs/trailer-fold-optim                                        05-15/05-20    #1
 + ps/t3903-cover-stash-include-untracked                       05-16/05-20    #1

Will merge to 'next'.
 - jt/odb-transaction-write                                     05-14          #7
 - kn/refs-fsck-skip-lock-files                                 05-17          #1
 - jk/connect-service-enum                                      05-18          #1
 - jk/sq-dequote-cleanup                                        05-18          #3
 - rs/use-builtin-add-overflow-explicitly-on-clang              05-18          #2
 - ds/fetch-negotiation-options                                 05-19          #8
 - tb/incremental-midx-part-3.3                                 05-19         #16

Will merge to 'next'?
 - ps/graph-lane-limit                                          03-27          #3
   <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
   <20260328001113.1275291-1-pabloosabaterr@gmail.com>
 - sa/cat-file-batch-mailmap-switch                             04-15          #1
   <20260416033250.4327-2-siddharthasthana31@gmail.com>
 - pt/fsmonitor-linux                                           04-15         #13
   <xmqqa4u5nnxq.fsf@gitster.g>
   <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>
 - cl/conditional-config-on-worktree-path                       05-13          #2
   <2989eb07-2933-4b5a-9e5c-33ef9b805528@gmail.com>
   <20260513-includeif-worktree-v4-0-f8e6212d1fba@black-desk.cn>
 - jr/bisect-custom-terms-in-output                             05-14          #3
   <20260514-bisect-terms-v4-0-b3e3cf1b06ce@schlaraffenlan.de>
 - tc/generate-configlist-fix-for-older-ninja                   05-15          #1
   <20260515-toon-fix-almalinux8-v3-1-b545a0647f0f@iotcl.com>
 - ed/check-connected-close-err-fd                              05-16          #1
 - kk/tips-reachable-from-bases-optim                           05-16          #2
   <pull.2116.v3.git.1778947182.gitgitgadget@gmail.com>
 - jk/commit-graph-lazy-load-fallback                           05-18          #1
   <20260519050513.GA1635924@coredump.intra.peff.net>
 - ps/setup-wo-the-repository                                   05-19         #18
   <20260519-pks-setup-wo-the-repository-v3-0-a00d8ea8b07f@pks.im>



^ permalink raw reply	[relevance 59%]

* What's cooking in git.git (May 2026, #05)
@ 2026-05-20  5:19 15% Junio C Hamano
  2026-05-20  5:27 59% ` Junio C Hamano
    0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-05-20  5:19 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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]

* jk/commit-graph-lazy-load-fallback (2026-05-18) 1 commit
 - commit: fall back to full read when maybe_tree is NULL

 The logic to lazy-load trees from the commit-graph has been made
 more robust by falling back to reading the commit object when
 the commit-graph is no longer available.

 Will merge to 'next'?
 source: <20260519050513.GA1635924@coredump.intra.peff.net>


* jk/connect-service-enum (2026-05-18) 1 commit
 - connect: use "service" enum for "name" argument

 The "name" argument in git_connect() and related functions has been
 converted to a "service" enum to improve type safety and clarify its
 purpose.

 Will merge to 'next'.
 source: <20260519052219.GA1703179@coredump.intra.peff.net>


* jk/sq-dequote-cleanup (2026-05-18) 3 commits
 - quote: simplify internals of dequoting
 - quote: drop sq_dequote_to_argv()
 - quote.h: bump strvec forward declaration to the top

 Code simplification.

 Will merge to 'next'.
 source: <20260519011837.GA1615637@coredump.intra.peff.net>


* aj/stash-patch-optimize-temporary-index (2026-05-19) 1 commit
 - stash: reuse cached index entries in --patch temporary index

 "git stash -p" has been optimized by reusing cached index
 entries in its temporary index, avoiding unnecessary lstat()
 calls on unchanged files.
 source: <pull.2306.git.git.1779194605735.gitgitgadget@gmail.com>


* tb/bitmap-build-performance (2026-05-19) 9 commits
 - pack-bitmap: build pseudo-merge bitmaps after regular bitmaps
 - pack-bitmap: remember pseudo-merge parents
 - pack-bitmap: sort bitmaps before XORing
 - pack-bitmap: cache object positions during fill
 - pack-bitmap: consolidate `find_object_pos()` success path
 - pack-bitmap: reuse stored selected bitmaps
 - pack-bitmap: check subtree bits before recursing
 - pack-bitmap: pass object position to `fill_bitmap_tree()`
 - Merge branch 'tb/pseudo-merge-bugfixes' into tb/bitmap-build-performance
 (this branch uses tb/pseudo-merge-bugfixes.)

 Reachability bitmap generation has been significantly optimized. By
 reordering tree traversal, caching object positions, and refining how
 pseudo-merge bitmaps are constructed, the performance of "git repack
 --write-midx-bitmaps" is improved, especially for large repositories
 and when using pseudo-merges.
 source: <cover.1779207127.git.me@ttaylorr.com>

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

* ag/rebase-update-refs-limit-to-branches (2026-05-10) 1 commit
  (merged to 'next' on 2026-05-12 at 5222da09bb)
 + rebase: ignore non-branch update-refs

 "git rebase --update-refs", when used with an rebase.instructionFormat
 with "%d" (describe) in it, tried to update local branch HEAD by
 mistake, which has been corrected.
 source: <20260510224111.64467-2-mail@abhinavg.net>


* bc/sign-commit-with-custom-encoding (2026-04-27) 2 commits
  (merged to 'next' on 2026-05-13 at e82a4966c0)
 + commit: sign commit after mutating buffer
 + commit: name UTF-8 function appropriately

 Signing commit with custom encoding was passing the data to be
 signed at a wrong stage in the pipeline, which has been corrected.
 cf. <xmqqtssdnpf7.fsf@gitster.g>
 source: <20260427221834.1824543-1-sandals@crustytoothpaste.net>


* en/diffstat-utf8-truncation-fix (2026-04-20) 1 commit
  (merged to 'next' on 2026-05-13 at adf801eb1d)
 + diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation

 The computation to shorten the filenames shown in diffstat measured
 width of individual UTF-8 characters to add up, but forgot to take
 into account error cases (e.g., an invalid UTF-8 sequence, or a
 control character).
 source: <pull.2093.v3.git.1776699778177.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-04-29) 6 commits
  (merged to 'next' on 2026-05-12 at e4e72e0f34)
 + xdiff/xdl_cleanup_records: make execution of action easier to follow
 + xdiff/xdl_cleanup_records: make setting action easier to follow
 + xdiff/xdl_cleanup_records: make limits more clear
 + xdiff/xdl_cleanup_records: use unambiguous types
 + xdiff: use unambiguous types in xdl_bogo_sqrt()
 + xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.
 source: <pull.2156.v6.git.git.1777500495.gitgitgadget@gmail.com>


* jh/alias-i18n-fixes (2026-04-24) 1 commit
  (merged to 'next' on 2026-05-13 at c7cd30d414)
 + alias: restore support for simple dotted aliases

 Further update to the i18n alias support to avoid regressions.
 source: <20260424161707.1514255-1-jonatan@jontes.page>


* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-26) 8 commits
  (merged to 'next' on 2026-05-13 at 48695e1cb0)
 + safe.bareRepository: default to "explicit" with WITH_BREAKING_CHANGES
 + status tests: filter `.gitconfig` from status output
 + ls-files tests: filter `.gitconfig` from `--others` output
 + t5601: restore `.gitconfig` after includeIf test
 + t1305: use `--git-dir=.` for bare repo in include cycle test
 + t1300: remove global config settings injected by test-lib.sh
 + t7900: do not let `$HOME/.gitconfig` interfere with XDG tests
 + test-lib: allow bare repository access when breaking changes are enabled

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.
 source: <pull.2098.v2.git.1777214316.gitgitgadget@gmail.com>


* js/mingw-no-nedmalloc (2026-05-08) 3 commits
  (merged to 'next' on 2026-05-13 at 2116a6bcc9)
 + mingw: remove the vendored compat/nedmalloc/ subtree
 + mingw: drop the build-system plumbing for nedmalloc
 + mingw: stop using nedmalloc

 Stop using unmaintained custom allocator in Windows build which was
 the last user of the code.
 source: <pull.2104.v3.git.1778244661.gitgitgadget@gmail.com>


* js/objects-larger-than-4gb-on-windows (2026-05-08) 11 commits
  (merged to 'next' on 2026-05-13 at 843d2ac470)
 + ci: run expensive tests on push builds to integration branches
 + t5608: mark >4GB tests as EXPENSIVE
 + test-tool synthesize: add precomputed SHA-256 pack for 4 GiB + 1
 + test-tool synthesize: precompute pack for 4 GiB + 1
 + test-tool synthesize: use the unsafe hash for speed
 + t5608: add regression test for >4GB object clone
 + test-tool: add a helper to synthesize large packfiles
 + delta, packfile: use size_t for delta header sizes
 + odb, packfile: use size_t for streaming object sizes
 + git-zlib: handle data streams larger than 4GB
 + index-pack, unpack-objects: use size_t for object size
 (this branch is used by jc/ci-enable-expensive.)

 Update code paths that assumed "unsigned long" was long enough for
 "size_t".
 source: <pull.2102.v3.git.1778228209.gitgitgadget@gmail.com>


* kh/doc-commit-graph (2026-05-07) 1 commit
  (merged to 'next' on 2026-05-12 at b9cafeb32d)
 + doc: add caveat about turning off commit-graph

 Ramifications of turning off commit-graph has been documented a bit
 more clearly.
 source: <V3_caveat_commit-graph.6b6@msgid.xyz>


* kh/doc-restore-double-underscores-fix (2026-05-05) 1 commit
  (merged to 'next' on 2026-05-12 at 2e8fc7cdac)
 + doc: restore: remove double underscore

 Doc update.
 source: <double_underscore.670@msgid.xyz>


* kh/name-rev-custom-format (2026-05-11) 5 commits
  (merged to 'next' on 2026-05-12 at c944d6131e)
 + format-rev: introduce builtin for on-demand pretty formatting
 + name-rev: make dedicated --annotate-stdin --name-only test
 + name-rev: factor code for sharing with a new command
 + name-rev: run clang-format before factoring code
 + name-rev: wrap both blocks in braces

 A new builtin "git format-rev" is introduced for pretty formatting
 one revision expression per line or commit object names found in
 running text.
 source: <V5_CV_format-rev.6c9@msgid.xyz>


* mc/http-emptyauth-negotiate-fix (2026-04-30) 4 commits
  (merged to 'next' on 2026-05-12 at 843ae82cd0)
 + doc: clarify http.emptyAuth values
  (merged to 'next' on 2026-04-20 at 6539524ca2)
 + t5563: add tests for http.emptyAuth with Negotiate
 + http: attempt Negotiate auth in http.emptyAuth=auto mode
 + http: extract http_reauth_prepare() from retry paths

 The 'http.emptyAuth=auto' configuration now correctly attempts
 Negotiate authentication before falling back to manual credentials.
 This allows seamless Kerberos ticket-based authentication without
 requiring users to explicitly set 'http.emptyAuth=true'.
 source: <e0f236767f81ea60f90749d1bc00ab78081efd0e.1777546472.git.gitgitgadget@gmail.com>
 source: <pull.2087.git.1776331259.gitgitgadget@gmail.com>


* ps/history-fixup (2026-04-26) 3 commits
  (merged to 'next' on 2026-05-13 at e6154b6272)
 + builtin/history: introduce "fixup" subcommand
 + builtin/history: generalize function to commit trees
 + replay: allow callers to control what happens with empty commits

 "git history" learned "fixup" command.
 cf. <xmqq33zxp4aq.fsf@gitster.g>
 source: <20260427-b4-pks-history-fixup-v3-0-cb908f06264b@pks.im>


* rs/sideband-clear-line-before-print (2026-05-10) 1 commit
  (merged to 'next' on 2026-05-12 at 83880f8ce6)
 + sideband: clear full line when printing remote messages

 Tweak the way how sideband messages from remote are printed while
 we talk with a remote repository to avoid tickling terminal
 emulator glitches.
 source: <9826dabf-c9a6-4397-8ae6-a24f9c507f1b@web.de>


* sb/unpack-index-pack-buffer-resize (2026-04-28) 1 commit
  (merged to 'next' on 2026-05-13 at 2edd54bcfe)
 + index-pack, unpack-objects: increase input buffer from 4 KiB to 128 KiB

 Use a larger buffer size in the code paths to ingest pack stream.
 cf. <xmqqy0hpnpkb.fsf@gitster.g>
 source: <pull.2282.v4.git.git.1777387660841.gitgitgadget@gmail.com>


* sg/t6112-unwanted-tilde-expansion-fix (2026-04-21) 1 commit
  (merged to 'next' on 2026-05-12 at ad2d08eb44)
 + t6112: avoid tilde expansion

 Test fix.
 source: <20260421192132.51172-1-szeder.dev@gmail.com>


* sj/submodule-update-clone-config-fix (2026-05-09) 1 commit
  (merged to 'next' on 2026-05-12 at 5a0094838a)
 + submodule-config: fix reading submodule.fetchJobs

 The configuration variable submodule.fetchJobs was not read correctly,
 which has been corrected.
 source: <pull.2287.v4.git.git.1778385022964.gitgitgadget@gmail.com>

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

* hn/status-pull-advice-qualified (2026-05-13) 1 commit
 - remote: qualify "git pull" advice for non-upstream branches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Comments?
 source: <pull.2301.v2.git.git.1778665812261.gitgitgadget@gmail.com>


* jk/dumb-http-alternate-fix (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at c1a51214fb)
 + http: handle absolute-path alternates from server root

 The HTTP walker misinterpreted the alternates file that gives an
 absolute path when the server URL does not have the final slash
 (i.e., "https://example.com" not "https://example.com/").

 Will merge to 'master'.
 source: <20260512162619.GA69813@coredump.intra.peff.net>


* jk/pretty-no-strbuf-presizing (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at ee684c614f)
 + pretty: drop strbuf pre-sizing from add_rfc2047()

 Remove ineffective strbuf presizing that would have computed an
 allocation that would not have fit in the available memory anyway,
 or too small due to integer wraparound to cause immediate automatic
 growing.

 Will merge to 'master'.
 source: <20260512162022.GA69669@coredump.intra.peff.net>


* kk/merge-octopus-optim (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-20 at afe427dc66)
 + merge: use repo_in_merge_bases for octopus up-to-date check

 The logic to determine that branches in an octopus merge are
 independent has been optimized.

 Will merge to 'master'.
 cf. <c5b333f1-0db6-4aec-a369-6503cb924e7f@gmail.com>
 source: <pull.2110.git.1778566286543.gitgitgadget@gmail.com>


* rs/strbuf-add-uint (2026-05-12) 4 commits
 - ls-tree: use strbuf_add_uint()
 - ls-files: use strbuf_add_uint()
 - cat-file: use strbuf_add_uint()
 - strbuf: add strbuf_add_uint()

 Adding a decimal integer with strbuf_addf("%u") appears commonly;
 they have been optimized by using a custom formatter.

 Comments?
 source: <20260512115603.80780-1-l.s.r@web.de>


* ta/approxidate-noon-fix (2026-05-16) 4 commits
 - approxidate: use deferred mday adjustments for "specials"
 - approxidate: make "specials" respect fixed day-of-month
 - t0006: add support for approxidate test date adjustment
 - approxidate: make "today" wrap to midnight

 "Friday noon" asked in the morning on Sunday was parsed to be one
 day before the specified time, which has been corrected.

 Comments?
 source: <20260516151540.9611-1-taahol@utu.fi>


* mm/doc-word-diff (2026-05-13) 1 commit
 - doc: clarify that --word-diff operates on line-level hunks

 The documentation for "--word-diff" has been extended with a bit of
 implementation detail of where these different words come from.

 Comments?
 source: <pull.2113.git.1778686956622.gitgitgadget@gmail.com>


* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
 - hex: add and use strbuf_add_oid_hex()

 Formatting object name in full hexadecimal form has been optimized
 by using a new strbuf_add_oid_hex() helper function.

 Comments?
 source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>


* kk/limit-list-optim (2026-05-14) 1 commit
  (merged to 'next' on 2026-05-19 at f17450dd1b)
 + revision: use priority queue in limit_list()

 The limit_list() function that is one of the core part of the
 revision traversal infrastructure has been optimized by replacing
 its use of linear list with priority queue.

 Will merge to 'master'.
 source: <pull.2114.git.1778777491939.gitgitgadget@gmail.com>


* ed/check-connected-close-err-fd (2026-05-16) 1 commit
 - Merge branch 'ed/check-connected-close-err-fd-2.53' into ed/check-connected-close-err-fd
 (this branch uses ed/check-connected-close-err-fd-2.53.)

 File descriptor leak fix.

 Will merge to 'next'?
 (this branch uses ed/check-connected-close-err-fd-2.53.)


* ed/check-connected-close-err-fd-2.53 (2026-05-14) 1 commit
 - connected: close err_fd in promisor fast-path
 (this branch is used by ed/check-connected-close-err-fd.)

 File descriptor leak fix (for 2.54 maintenance track).

 Will be merged together with ed/check-connected-close-err-fd topic.
 source: <pull.2303.git.git.1778827194448.gitgitgadget@gmail.com>


* jk/apply-leakfix (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-20 at 725a20bf93)
 + apply: plug leak on "patch too large" error

 Leakfix.

 Will merge to 'master'.
 source: <20260516021622.GA744303@coredump.intra.peff.net>


* jk/commit-sign-overflow-fix (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-20 at e1a320d4e5)
 + commit: handle large commit messages in utf8 verification

 Leakfix.

 Will merge to 'master'.
 source: <20260516022310.GB744303@coredump.intra.peff.net>


* kk/tips-reachable-from-bases-optim (2026-05-16) 2 commits
 - t6600: add tests for duplicate tips in tips_reachable_from_bases()
 - commit-reach: use object flags for tips_reachable_from_bases()

 Revision traversal optimization.

 Will merge to 'next'?
 source: <pull.2116.v3.git.1778947182.gitgitgadget@gmail.com>


* pb/doc-diff-format-updates (2026-05-15) 3 commits
  (merged to 'next' on 2026-05-20 at fe8d31e9f9)
 + diff-format.adoc: mode and hash are 0* for unmerged paths from index only
 + diff-format.adoc: 'git diff-files' prints two lines for unmerged files
 + diff-format.adoc: remove mention of diff-tree specific output

 Doc updates.

 Will merge to 'master'.
 source: <pull.2304.git.git.1778860091.gitgitgadget@gmail.com>


* ps/t3903-cover-stash-include-untracked (2026-05-16) 1 commit
  (merged to 'next' on 2026-05-20 at f1e7ac1cbd)
 + stash: add coverage for show --include-untracked

 Test coverage has been added to "git stash --include-untracked".

 Will merge to 'master'.
 source: <20260516183347.4323-2-pushkarkumarsingh1970@gmail.com>


* rs/trailer-fold-optim (2026-05-15) 1 commit
  (merged to 'next' on 2026-05-20 at 38c9fb15c2)
 + trailer: change strbuf in-place in unfold_value()

 Code simplification.

 Will merge to 'master'.
 source: <816be07e-2cd6-48fe-ae93-57fa0f2543ed@web.de>


* rs/use-builtin-add-overflow-explicitly-on-clang (2026-05-18) 2 commits
 - use __builtin_add_overflow() in st_add() with Clang
 - strbuf: use st_add3() in strbuf_grow()

 Micro optimization of codepaths that compute allocation sizes carefully.

 Will merge to 'next'.
 source: <20260518202502.25682-1-l.s.r@web.de>


* tc/generate-configlist-fix-for-older-ninja (2026-05-15) 1 commit
 - generate-configlist: collapse depfile for older Ninja

 Build update.

 Will merge to 'next'?
 source: <20260515-toon-fix-almalinux8-v3-1-b545a0647f0f@iotcl.com>


* hn/config-typo-advice (2026-05-16) 1 commit
 - config: suggest the correct form when key contains "=" in set context

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.

 Comments?
 source: <pull.2302.v2.git.git.1778935976330.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-again (2026-05-17) 5 commits
 - doc: convert git-imap-send synopsis and options to new style
 - doc: convert git-apply synopsis and options to new style
 - doc: convert git-am synopsis and options to new style
 - doc: convert git-grep synopsis and options to new style
 - doc: convert git-bisect to synopsis style

 A batch of documentation pages has been updated to use the modern
 synopsis style.

 Comments?
 source: <pull.2117.git.1779049615.gitgitgadget@gmail.com>


* kn/refs-fsck-skip-lock-files (2026-05-17) 1 commit
 - refs/files: skip lock files during consistency checks

 The consistency checks for the files reference backend have been updated
 to skip lock files earlier, avoiding unnecessary parsing of
 intermediate files.

 Will merge to 'next'.
 source: <20260517-refs-fsck-skip-lock-files-v3-1-b24dfd673c7e@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Comments?
 cf. <xmqqzf1xbl4i.fsf@gitster.g>
 source: <20260517132111.1014901-1-joerg@thalheim.io>


* sp/shallow-deepen-on-non-shallow-repo-fix (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-15 at 67dd491aae)
 + shallow: fix relative deepen on non-shallow repositories

 "git fetch --deepen=<n>" in a full clone truncated the history to <n>
 commits deep, which has been corrected to be a no-op instead.

 Will merge to 'master'.
 source: <20260511192044.169557-1-samo_pogacnik@t-2.net>


* ag/sequencer-remove-unused-struct-member (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-17 at 8553437ae1)
 + sequencer: remove todo_add_branch_context.commit

 Code clean-up.

 Will merge to 'master'.
 cf. <agLKVn6RF4UBYd_8@pks.im>
 source: <pull.2111.git.1778502113485.gitgitgadget@gmail.com>


* ps/maintenance-daemonize-lockfix (2026-05-13) 2 commits
 - run-command: honor "gc.auto" for auto-maintenance
 - builtin/maintenance: fix locking with "--detach"

 "git maintenance" that goes background did not use the lockfile to
 prevent multiple maintenance processes from running at the same
 time, which has been corrected..

 Comments?
 source: <20260513-pks-maintenance-fix-lock-with-detach-v3-0-f27a1ac82891@pks.im>


* aw/validate-proxy-url-scheme (2026-05-05) 1 commit
  (merged to 'next' on 2026-05-15 at da9c1b71d7)
 + http: reject unsupported proxy URL schemes

 Misspelt proxy URL (e.g., httt://...) did not trigger any warning
 or failure, which has been corrected.

 Will merge to 'master'.
 source: <20260505091941.1825-2-aminnimaj@gmail.com>


* hn/branch-prune-merged (2026-05-13) 5 commits
 - branch: add --all-remotes flag
 - branch: add branch.<name>.pruneMerged opt-out
 - branch: add --prune-merged <remote>
 - branch: let delete_branches warn instead of error on bulk refusal
 - branch: add --forked <remote>

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Comments?
 source: <pull.2285.v9.git.git.1778700883.gitgitgadget@gmail.com>


* mm/diff-U-takes-no-negative-values (2026-05-12) 4 commits
  (merged to 'next' on 2026-05-17 at d81439a049)
 + parse-options: clarify what "negated" means for PARSE_OPT_NONEG
 + xdiff: guard against negative context lengths
 + diff: reject negative values for -U/--unified
 + diff: reject negative values for --inter-hunk-context

 The command line parser for "git diff" learned a few options take
 only non-negative integers.

 Will merge to 'master'.
 source: <pull.2105.v2.git.1778609423.gitgitgadget@gmail.com>


* mm/git-url-parse (2026-05-01) 8 commits
  (merged to 'next' on 2026-05-15 at 416deceeeb)
 + t9904: add tests for the new url-parse builtin
 + doc: describe the url-parse builtin
 + builtin: create url-parse command
 + urlmatch: define url_parse function
 + url: return URL_SCHEME_UNKNOWN instead of dying
 + url: move scheme detection to URL header/source
 + url: move url_is_local_not_ssh to url.h
 + connect: rename enum protocol to url_scheme

 The internal URL parsing logic has been made accessible via a new
 subcommand "git url-parse".

 Will merge to 'master'.
 cf. <xmqqjyt9p9pk.fsf@gitster.g>
 cf. <20260512085734.GA26769@tb-raspi4>
 source: <pull.1715.v3.git.git.1777699722.gitgitgadget@gmail.com>


* dk/doc-exclude-is-shared-per-repo (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at ddc761aec6)
 + ignore: note info/exclude lives in GIT_COMMON_DIR, not GIT_DIR

 Document the fact that .git/info/exclude is shared across worktrees
 linked to the same repository.

 Will merge to 'master'.
 cf. <bea48414-217b-4860-9279-fe94e3687c28@gmail.com>
 source: <ec97ad3f054e90b675f099a36a81a23bb4b2a0ed.1778620784.git.ben.knoble+github@gmail.com>


* kk/paint-down-to-common-optim (2026-05-11) 2 commits
  (merged to 'next' on 2026-05-17 at 2e39c767e5)
 + commit-reach: early exit paint_down_to_common for single merge-base
 + commit-reach: introduce merge_base_flags enum

 "git merge-base" optimization.

 Will merge to 'master'.
 source: <pull.2109.v4.git.1778504352.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-14) 3 commits
 - daemon: guard NULL REMOTE_PORT in execute() logging
 - daemon: fix IPv6 address truncation in ip2str()
 - daemon: fix IPv6 address corruption in lookup_hostname()

 Correct use of sockaddr API in "git daemon".

 Waiting for response(s) to review comment(s).
 cf. <agGLRC1ziF5F8Okh@pks.im>
 source: <pull.2300.git.git.1778773592.gitgitgadget@gmail.com>


* jc/ci-enable-expensive (2026-05-10) 2 commits
  (merged to 'next' on 2026-05-15 at d258bb5e55)
 + ci: enable EXPENSIVE for contributor builds
 + Merge branch 'js/objects-larger-than-4gb-on-windows' into jc/ci-enable-expensive

 Enable expensive tests to catch topics that may cause breakages on
 integration branches closer to their origin in the contributor PR
 builds.

 Will merge to 'master'.
 source: <xmqqjyta9630.fsf@gitster.g>


* kn/refs-generic-helpers (2026-05-04) 9 commits
  (merged to 'next' on 2026-05-15 at 62cb4e0ce2)
 + refs: use peeled tag values in reference backends
 + refs: add peeled object ID to the `ref_update` struct
 + refs: move object parsing to the generic layer
 + update-ref: handle rejections while adding updates
 + update-ref: move `print_rejected_refs()` up
 + refs: return `ref_transaction_error` from `ref_transaction_update()`
 + refs: extract out reflog config to generic layer
 + refs: introduce `ref_store_init_options`
 + refs: remove unused typedef 'ref_transaction_commit_fn'

 Refactor service routines in the ref subsystem backends.

 Will merge to 'master'.
 cf. <afmFmGo_Sg33Rv6V@pks.im>
 cf. <87o6isqq4q.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260504-refs-move-to-generic-layer-v4-0-936ac2f0b1a3@gmail.com>


* ob/more-repo-config-values (2026-04-23) 8 commits
 - env: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - env: move "sparse_expect_files_outside_of_patterns" into `repo_config_values`
 - env: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Expecting a reroll.
 cf. <CAD=f0L8-_3sDGGkCzF4WA0xmUtaY_qiz__3zq5AemLgwTsqvsg@mail.gmail.com>
 cf. <xmqqlddqu013.fsf@gitster.g>
 source: <20260423165432.143598-1-belkid98@gmail.com>


* cc/promisor-auto-config-url-more (2026-05-19) 9 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'
 - Merge branch 'cc/promisor-auto-config-url' into cc/promisor-auto-config-url-more

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Comments?
 source: <20260519153808.494105-1-christian.couder@gmail.com>


* kh/doc-log-decorate-list (2026-04-27) 2 commits
  (merged to 'next' on 2026-05-15 at f740311a37)
 + doc: log: use the same delimiter in description list
 + doc: log: fix --decorate description list

 Doc update.

 Will merge to 'master'.
 cf. <xmqqpl31np0l.fsf@gitster.g>
 source: <CV_doc_log_--decorate_list.626@msgid.xyz>


* za/t2000-modernise-more (2026-04-29) 1 commit
  (merged to 'next' on 2026-05-15 at 3b524d0ba5)
 + t2000: consolidate second scenario into a single test block

 Test update.

 Will merge to 'master'.
 cf. <xmqqfr3xnofn.fsf@gitster.g>
 source: <20260429103607.406339-1-zakariyahali100@gmail.com>


* hn/checkout-track-fetch (2026-05-18) 1 commit
 - checkout: extend --track with a "fetch" mode to refresh start-point

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 cf. <pull.2301.git.git.1778623888178.gitgitgadget@gmail.com>
 source: <pull.2281.v10.git.git.1779091483321.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-18) 1 commit
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Comments?
 source: <8210d60832b9a58aa4d71fc3790e44d8989564ce.1779152064.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-04-27) 3 commits
 - line-log: allow non-patch diff formats with -L
 - line-log: integrate -L output with the standard log-tree pipeline
 - revision: move -L setup before output_format-to-diff derivation

 Code clean-up.

 Comments?
 cf. <xmqqfr3xp98b.fsf@gitster.g>
 source: <pull.2094.git.1777349126.gitgitgadget@gmail.com>


* ds/path-walk-filters (2026-05-13) 14 commits
 - path-walk: support `combine` filter
 - path-walk: support `object:type` filter
 - path-walk: support `tree:0` filter
 - t6601: tag otherwise-unreachable trees
 - pack-objects: support sparse:oid filter with path-walk
 - path-walk: add pl_sparse_trees to control tree pruning
 - path-walk: support blob size limit filter
 - backfill: die on incompatible filter options
 - path-walk: support blobless filter
 - path-walk: always emit directly-requested objects
 - t/perf: add pack-objects filter and path-walk benchmark
 - pack-objects: pass --objects with --path-walk
 - t5620: make test work with path-walk var
 - Merge branch 'en/backfill-fixes-and-edges' into ds/path-walk-filters

 The "git pack-objects --path-walk" traversal has been integrated
 with several object filters, including blobless and sparse filters.

 Comments?
 source: <pull.2101.v4.git.1778707135.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Needs review.
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* tb/pseudo-merge-bugfixes (2026-05-11) 9 commits
  (merged to 'next' on 2026-05-19 at ecee155d5c)
 + pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 + Documentation: fix broken `sampleRate` in gitpacking(7)
 + pack-bitmap: reject pseudo-merge "sampleRate" of 0
 + pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 + pack-bitmap: fix pseudo-merge lookup for shared commits
 + pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 + pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 + t5333: demonstrate various pseudo-merge bugs
 + t/helper: add 'test-tool bitmap write' subcommand
 (this branch is used by tb/bitmap-build-performance.)

 Fixes many bugs in pseudo-merge code.

 Will merge to 'master'.
 source: <cover.1778546804.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-05-19) 8 commits
 - send-pack: pass negotiation config in push
 - remote: add remote.*.negotiationInclude config
 - fetch: add --negotiation-include option for negotiation
 - negotiator: add have_sent() interface
 - remote: add remote.*.negotiationRestrict config
 - transport: rename negotiation_tips
 - fetch: add --negotiation-restrict option
 - t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Will merge to 'next'.
 source: <pull.2085.v6.git.1779207896.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-05-14) 4 commits
  (merged to 'next' on 2026-05-20 at 722acf81c8)
 + grep: prefetch necessary blobs
 + builtin/log: prefetch necessary blobs for `git cherry`
 + patch-ids.h: add missing trailing parenthesis in documentation comment
 + promisor-remote: document caller filtering contract

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Will merge to 'master'.
 cf. <0da4f159-8d4b-49e2-93c1-25aa0bf69371@gmail.com>
 source: <pull.2089.v3.git.1778775928.gitgitgadget@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Need to wait for the base topic.
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* cl/conditional-config-on-worktree-path (2026-05-13) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Will merge to 'next'?
 cf. <2989eb07-2933-4b5a-9e5c-33ef9b805528@gmail.com>
 source: <20260513-includeif-worktree-v4-0-f8e6212d1fba@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Waiting for response(s) to review comment(s).
 cf. <20260513230216.GA1378627@coredump.intra.peff.net>
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Needs review.
 cf. <xmqqse7xm8av.fsf@gitster.g>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-05-14) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Will merge to 'next'.
 source: <20260514183740.1505171-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-05-19) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--no-write-chain-file` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - midx: build `keep_hashes` array in order
 - midx: use `strset` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Will merge to 'next'.
 source: <cover.1779206239.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-05-19) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_work_tree()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Will merge to 'next'?
 source: <20260519-pks-setup-wo-the-repository-v3-0-a00d8ea8b07f@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 cf. <xmqq1pfivfa3.fsf@gitster.g>
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Will merge to 'next'?
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* jr/bisect-custom-terms-in-output (2026-05-14) 3 commits
 - rev-parse: use selected alternate terms to look up refs
 - bisect: print bisect terms in single quotes
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Will merge to 'next'?
 source: <20260514-bisect-terms-v4-0-b3e3cf1b06ce@schlaraffenlan.de>


* ua/push-remote-group (2026-05-03) 3 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c
 - remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Comments?
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <xmqqcxz2tzpr.fsf@gitster.g>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold to help the base topic with wider exposure.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/fsmonitor-linux (2026-04-15) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 cf. <xmqqa4u5nnxq.fsf@gitster.g>
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* pw/xdiff-shrink-memory-consumption (2026-05-04) 5 commits
  (merged to 'next' on 2026-05-15 at 7a867909d2)
 + xdiff: reduce the size of array
 + xprepare: simplify error handling
 + xdiff: cleanup xdl_clean_mmatch()
 + xdiff: reduce size of action arrays
 + Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 Will merge to 'master'.
 source: <cover.1777903579.git.phillip.wood@dunelm.org.uk>


^ permalink raw reply	[relevance 15%]

* Re: What's cooking in git.git (May 2026, #04)
  @ 2026-05-20  2:37 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-20  2:37 UTC (permalink / raw)
  To: Justin Tobler; +Cc: git

Justin Tobler <jltobler@gmail.com> writes:

> On 26/05/18 10:32AM, Junio C Hamano wrote:
>> * jt/odb-transaction-write (2026-05-14) 7 commits
>>  - odb/transaction: make `write_object_stream()` pluggable
>>  - object-file: generalize packfile writes to use odb_write_stream
>>  - object-file: avoid fd seekback by checking object size upfront
>>  - object-file: remove flags from transaction packfile writes
>>  - odb: update `struct odb_write_stream` read() callback
>>  - odb/transaction: use pluggable `begin_transaction()`
>>  - odb: split `struct odb_transaction` into separate header
>>  (this branch is used by ps/odb-in-memory.)
>> 
>>  ODB transaction interface is being reworked to explicitly handle
>>  object writes.
>> 
>>  Will merge to 'next'?
>>  source: <20260514183740.1505171-1-jltobler@gmail.com>
>
> I think this series should be ready to go now. The last version
> submitted fixed the leak reported by Peff.

Great.  As there is another topic that builds on it, finally seeing
the topic stabilized enough is a great thing.

Let's merge it down to 'next'.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (May 2026, #04)
  @ 2026-05-20  2:35 99%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-20  2:35 UTC (permalink / raw)
  To: Jeff King; +Cc: Taylor Blau, git

Jeff King <peff@peff.net> writes:

> On Tue, May 19, 2026 at 12:26:13PM -0400, Taylor Blau wrote:
>
>> > * tb/incremental-midx-part-3.3 (2026-04-29) 16 commits
>> [...]
>> Apologies, I didn't realize you were waiting on these until seeing this
>> WC report. I sent an extremely tiny reroll
>> 
>>     https://lore.kernel.org/git/cover.1779206239.git.me@ttaylorr.com/
>> 
>> that addresses the two outstanding comments you linked. They are very
>> minor changes, and queueing either version of the series would be
>> equally fine IMHO.
>
> I peeked at the v4 range diff, and it looks good to me.

Thanks.

I went back to the list archive to check, because these "cf."
entries are not meant to be exhaustive and "I've addressed only
them" was a bad sign in general, but it seems that the latest round
is in very good shape.

Let's mark the topic for 'next'.



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (May 2026, #04)
@ 2026-05-18  1:32 15% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-05-18  1:32 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* en/backfill-fixes-and-edges (2026-04-15) 3 commits
  (merged to 'next' on 2026-05-11 at baccbdf26d)
 + backfill: default to grabbing edge blobs too
 + backfill: document acceptance of revision-range in more standard manner
 + backfill: reject rev-list arguments that do not make sense
 (this branch is used by ds/path-walk-filters.)

 The 'git backfill' command now rejects revision-limiting options that
 are incompatible with its operation, uses standard documentation for
 revision ranges, and includes blobs from boundary commits by default
 to improve performance of subsequent operations.
 cf. <6e95b82a-19e3-460e-86f7-f899c2df261d@gmail.com>
 source: <pull.2088.git.1776297482.gitgitgadget@gmail.com>


* en/ort-cached-rename-with-trivial-resolution (2026-04-20) 1 commit
  (merged to 'next' on 2026-05-11 at 9fe24668d9)
 + merge-ort: handle cached rename & trivial resolution interaction better

 "ort" merge backend improvements.
 source: <pull.2095.git.1776724214171.gitgitgadget@gmail.com>


* hn/git-checkout-m-with-stash (2026-04-28) 5 commits
  (merged to 'next' on 2026-05-11 at 46adae5e5d)
 + checkout -m: autostash when switching branches
 + checkout: rollback lock on early returns in merge_working_tree
 + sequencer: teach autostash apply to take optional conflict marker labels
 + sequencer: allow create_autostash to run silently
 + stash: add --label-ours, --label-theirs, --label-base for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.
 source: <pull.2234.v16.git.git.1777401552.gitgitgadget@gmail.com>


* mf/format-patch-cover-letter-format-docfix (2026-04-22) 1 commit
  (merged to 'next' on 2026-05-11 at 3cca9cc117)
 + Fix docs for format.commitListFormat

 Docfix.
 source: <576d29f15e016889e02c253713656cd8cbf1f04c.1776894255.git.mroik@delayed.space>


* ps/clang-w-glibc-2.43-and-_Generic (2026-05-10) 1 commit
  (merged to 'next' on 2026-05-12 at fca23344f2)
 + build: tolerate use of _Generic from glibc 2.43 with Clang

 Headers from glibc 2.43 when used with clang does not allow
 disabling C11 language features, causing build failures..
 source: <xmqqqzniset2.fsf@gitster.g>


* pw/rename-to-get-current-worktree (2026-05-01) 1 commit
  (merged to 'next' on 2026-05-11 at 36ca1d49e2)
 + worktree: rename get_worktree_from_repository()

 Code clean-up.
 source: <bd48396137f8d1352d11b3bd2dca2848f24a347d.1777648798.git.phillip.wood@dunelm.org.uk>


* rs/grep-column-only-match-fix (2026-04-24) 1 commit
  (merged to 'next' on 2026-05-11 at a0d87e3104)
 + grep: fix --column --only-match for 2nd and later matches

 "git grep" update.
 source: <9bd69678-f04b-41d2-ad74-a386820d34c8@web.de>


* ss/t7004-unhide-git-failures (2026-04-20) 3 commits
  (merged to 'next' on 2026-05-11 at 9ee9feacb7)
 + t7004: avoid subshells to capture git exit codes
 + t7004: dynamically grab expected state in tests
 + t7004: drop hardcoded tag count for state verification

 Test clean-up.
 cf. <aecNc-BNwaqFlg5c@pks.im>
 source: <20260421053334.5414-1-r.siddharth.shrimali@gmail.com>

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

* hn/status-pull-advice-qualified (2026-05-13) 1 commit
 - remote: qualify "git pull" advice for non-upstream branches

 Advice shown by "git status" when the local branch is behind or has
 diverged from its push branch has been updated to suggest "git pull
 <remote> <branch>".

 Comments?
 source: <pull.2301.v2.git.git.1778665812261.gitgitgadget@gmail.com>


* jk/dumb-http-alternate-fix (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at c1a51214fb)
 + http: handle absolute-path alternates from server root

 The HTTP walker misinterpreted the alternates file that gives an
 absolute path when the server URL does not have the final slash
 (i.e., "https://example.com" not "https://example.com/").

 Will merge to 'master'.
 source: <20260512162619.GA69813@coredump.intra.peff.net>


* jk/pretty-no-strbuf-presizing (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at ee684c614f)
 + pretty: drop strbuf pre-sizing from add_rfc2047()

 Remove ineffective strbuf presizing that would have computed an
 allocation that would not have fit in the available memory anyway,
 or too small due to integer wraparound to cause immediate automatic
 growing.

 Will merge to 'master'.
 source: <20260512162022.GA69669@coredump.intra.peff.net>


* kk/merge-octopus-optim (2026-05-11) 1 commit
 - merge: use repo_in_merge_bases for octopus up-to-date check

 The logic to determine that branches in an octopus merge are
 independent has been optimized.

 Comments?
 source: <pull.2110.git.1778566286543.gitgitgadget@gmail.com>


* rs/strbuf-add-uint (2026-05-12) 4 commits
 - ls-tree: use strbuf_add_uint()
 - ls-files: use strbuf_add_uint()
 - cat-file: use strbuf_add_uint()
 - strbuf: add strbuf_add_uint()

 Adding a decimal integer with strbuf_addf("%u") appears commonly;
 they have been optimized by using a custom formatter.

 Comments?
 source: <20260512115603.80780-1-l.s.r@web.de>


* ta/approxidate-noon-fix (2026-05-16) 4 commits
 - approxidate: use deferred mday adjustments for "specials"
 - approxidate: make "specials" respect fixed day-of-month
 - t0006: add support for approxidate test date adjustment
 - approxidate: make "today" wrap to midnight

 "Friday noon" asked in the morning on Sunday was parsed to be one
 day before the specified time, which has been corrected.

 Comments?
 source: <20260516151540.9611-1-taahol@utu.fi>


* mm/doc-word-diff (2026-05-13) 1 commit
 - doc: clarify that --word-diff operates on line-level hunks

 The documentation for "--word-diff" has been extended with a bit of
 implementation detail of where these different words come from.

 Comments?
 source: <pull.2113.git.1778686956622.gitgitgadget@gmail.com>


* rs/strbuf-add-oid-hex (2026-05-13) 1 commit
 - hex: add and use strbuf_add_oid_hex()

 Formatting object name in full hexadecimal form has been optimized
 by using a new strbuf_add_oid_hex() helper function.

 Comments?
 source: <183aa0fd-d455-4ec9-9c42-d511fac8b3e4@web.de>


* kk/limit-list-optim (2026-05-14) 1 commit
 - revision: use priority queue in limit_list()

 The limit_list() function that is one of the core part of the
 revision traversal infrastructure has been optimized by replacing
 its use of linear list with priority queue.

 Will merge to 'next'.
 source: <pull.2114.git.1778777491939.gitgitgadget@gmail.com>


* ed/check-connected-close-err-fd (2026-05-16) 1 commit
 - Merge branch 'ed/check-connected-close-err-fd-2.53' into ed/check-connected-close-err-fd
 (this branch uses ed/check-connected-close-err-fd-2.53.)

 File descriptor leak fix.

 Will merge to 'next'?
 (this branch uses ed/check-connected-close-err-fd-2.53.)


* ed/check-connected-close-err-fd-2.53 (2026-05-14) 1 commit
 - connected: close err_fd in promisor fast-path
 (this branch is used by ed/check-connected-close-err-fd.)

 File descriptor leak fix (for 2.54 maintenance track).

 Will be merged together with ed/check-connected-close-err-fd topic.
 source: <pull.2303.git.git.1778827194448.gitgitgadget@gmail.com>


* jk/apply-leakfix (2026-05-15) 1 commit
 - apply: plug leak on "patch too large" error

 Leakfix.

 Will merge to 'next'.
 source: <20260516021622.GA744303@coredump.intra.peff.net>


* jk/commit-sign-overflow-fix (2026-05-15) 1 commit
 - commit: handle large commit messages in utf8 verification

 Leakfix.

 Will merge to 'next'.
 source: <20260516022310.GB744303@coredump.intra.peff.net>


* kk/tips-reachable-from-bases-optim (2026-05-16) 2 commits
 - t6600: add tests for duplicate tips in tips_reachable_from_bases()
 - commit-reach: use object flags for tips_reachable_from_bases()

 Revision traversal optimization.

 Will merge to 'next'?
 source: <pull.2116.v3.git.1778947182.gitgitgadget@gmail.com>


* pb/doc-diff-format-updates (2026-05-15) 3 commits
 - diff-format.adoc: mode and hash are 0* for unmerged paths from index only
 - diff-format.adoc: 'git diff-files' prints two lines for unmerged files
 - diff-format.adoc: remove mention of diff-tree specific output

 Doc updates.

 Will merge to 'next'.
 source: <pull.2304.git.git.1778860091.gitgitgadget@gmail.com>


* ps/t3903-cover-stash-include-untracked (2026-05-16) 1 commit
 - stash: add coverage for show --include-untracked

 Test coverage has been added to "git stash --include-untracked".

 Will merge to 'next'.
 source: <20260516183347.4323-2-pushkarkumarsingh1970@gmail.com>


* rs/trailer-fold-optim (2026-05-15) 1 commit
 - trailer: change strbuf in-place in unfold_value()

 Code simplification.

 Will merge to 'next'.
 source: <816be07e-2cd6-48fe-ae93-57fa0f2543ed@web.de>


* rs/use-builtin-add-overflow-explicitly-on-clang (2026-05-14) 2 commits
 - use __builtin_add_overflow() in st_add() with Clang
 - strbuf: use st_add3() in strbuf_grow()

 Micro optimization of codepaths that compute allocation sizes carefully.

 What's the status of this topic?
 source: <0ded6062-f66a-4713-af24-d1b5aa654823@web.de>
 source: <c6e9b337-c4fc-4cbd-ac32-e8d3814749b0@web.de>


* tc/generate-configlist-fix-for-older-ninja (2026-05-15) 1 commit
 - generate-configlist: collapse depfile for older Ninja

 Build update.

 Will merge to 'next'?
 source: <20260515-toon-fix-almalinux8-v3-1-b545a0647f0f@iotcl.com>


* hn/config-typo-advice (2026-05-16) 1 commit
 - config: suggest the correct form when key contains "=" in set context

 "git config foo.bar=baz" is not likely to be a request to read the
 value of such a variable with '=' in its name; rather it is plausible
 that the user meant "git config set foo.bar baz".  Give advice when
 giving an error message.

 Comments?
 source: <pull.2302.v2.git.git.1778935976330.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-again (2026-05-17) 5 commits
 - doc: convert git-imap-send synopsis and options to new style
 - doc: convert git-apply synopsis and options to new style
 - doc: convert git-am synopsis and options to new style
 - doc: convert git-grep synopsis and options to new style
 - doc: convert git-bisect to synopsis style

 A batch of documentation pages has been updated to use the modern
 synopsis style.

 Comments?
 source: <pull.2117.git.1779049615.gitgitgadget@gmail.com>


* kn/refs-fsck-skip-lock-files (2026-05-17) 1 commit
 - refs/files: skip lock files during consistency checks

 The consistency checks for the files reference backend have been updated
 to skip lock files earlier, avoiding unnecessary parsing of
 intermediate files.

 Will merge to 'next'.
 source: <20260517-refs-fsck-skip-lock-files-v3-1-b24dfd673c7e@gmail.com>


* jt/config-lock-timeout (2026-05-17) 1 commit
 - config: retry acquiring config.lock, configurable via core.configLockTimeout

 Configuration file locking now retries for a short period, avoiding
 failures when multiple processes attempt to update the configuration
 simultaneously.

 Comments?
 cf. <xmqqzf1xbl4i.fsf@gitster.g>
 source: <20260517132111.1014901-1-joerg@thalheim.io>

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

* sp/shallow-deepen-on-non-shallow-repo-fix (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-15 at 67dd491aae)
 + shallow: fix relative deepen on non-shallow repositories

 "git fetch --deepen=<n>" in a full clone truncated the history to <n>
 commits deep, which has been corrected to be a no-op instead.

 Will merge to 'master'.
 source: <20260511192044.169557-1-samo_pogacnik@t-2.net>


* ag/sequencer-remove-unused-struct-member (2026-05-11) 1 commit
  (merged to 'next' on 2026-05-17 at 8553437ae1)
 + sequencer: remove todo_add_branch_context.commit

 Code clean-up.

 Will merge to 'master'.
 cf. <agLKVn6RF4UBYd_8@pks.im>
 source: <pull.2111.git.1778502113485.gitgitgadget@gmail.com>


* ps/maintenance-daemonize-lockfix (2026-05-13) 2 commits
 - run-command: honor "gc.auto" for auto-maintenance
 - builtin/maintenance: fix locking with "--detach"

 "git maintenance" that goes background did not use the lockfile to
 prevent multiple maintenance processes from running at the same
 time, which has been corrected..

 Comments?
 source: <20260513-pks-maintenance-fix-lock-with-detach-v3-0-f27a1ac82891@pks.im>


* js/mingw-no-nedmalloc (2026-05-08) 3 commits
  (merged to 'next' on 2026-05-13 at 2116a6bcc9)
 + mingw: remove the vendored compat/nedmalloc/ subtree
 + mingw: drop the build-system plumbing for nedmalloc
 + mingw: stop using nedmalloc

 Stop using unmaintained custom allocator in Windows build which was
 the last user of the code.

 Will merge to 'master'.
 source: <pull.2104.v3.git.1778244661.gitgitgadget@gmail.com>


* sj/submodule-update-clone-config-fix (2026-05-09) 1 commit
  (merged to 'next' on 2026-05-12 at 5a0094838a)
 + submodule-config: fix reading submodule.fetchJobs

 The configuration variable submodule.fetchJobs was not read correctly,
 which has been corrected.

 Will merge to 'master'.
 source: <pull.2287.v4.git.git.1778385022964.gitgitgadget@gmail.com>


* aw/validate-proxy-url-scheme (2026-05-05) 1 commit
  (merged to 'next' on 2026-05-15 at da9c1b71d7)
 + http: reject unsupported proxy URL schemes

 Misspelt proxy URL (e.g., httt://...) did not trigger any warning
 or failure, which has been corrected.

 Will merge to 'master'.
 source: <20260505091941.1825-2-aminnimaj@gmail.com>


* hn/branch-prune-merged (2026-05-13) 5 commits
 - branch: add --all-remotes flag
 - branch: add branch.<name>.pruneMerged opt-out
 - branch: add --prune-merged <remote>
 - branch: let delete_branches warn instead of error on bulk refusal
 - branch: add --forked <remote>

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Comments?
 source: <pull.2285.v9.git.git.1778700883.gitgitgadget@gmail.com>


* kh/doc-restore-double-underscores-fix (2026-05-05) 1 commit
  (merged to 'next' on 2026-05-12 at 2e8fc7cdac)
 + doc: restore: remove double underscore

 Doc update.

 Will merge to 'master'.
 source: <double_underscore.670@msgid.xyz>


* mm/diff-U-takes-no-negative-values (2026-05-12) 4 commits
  (merged to 'next' on 2026-05-17 at d81439a049)
 + parse-options: clarify what "negated" means for PARSE_OPT_NONEG
 + xdiff: guard against negative context lengths
 + diff: reject negative values for -U/--unified
 + diff: reject negative values for --inter-hunk-context

 The command line parser for "git diff" learned a few options take
 only non-negative integers.

 Will merge to 'master'.
 source: <pull.2105.v2.git.1778609423.gitgitgadget@gmail.com>


* mm/git-url-parse (2026-05-01) 8 commits
  (merged to 'next' on 2026-05-15 at 416deceeeb)
 + t9904: add tests for the new url-parse builtin
 + doc: describe the url-parse builtin
 + builtin: create url-parse command
 + urlmatch: define url_parse function
 + url: return URL_SCHEME_UNKNOWN instead of dying
 + url: move scheme detection to URL header/source
 + url: move url_is_local_not_ssh to url.h
 + connect: rename enum protocol to url_scheme

 The internal URL parsing logic has been made accessible via a new
 subcommand "git url-parse".

 Will merge to 'master'.
 cf. <xmqqjyt9p9pk.fsf@gitster.g>
 cf. <20260512085734.GA26769@tb-raspi4>
 source: <pull.1715.v3.git.git.1777699722.gitgitgadget@gmail.com>


* kh/doc-commit-graph (2026-05-07) 1 commit
  (merged to 'next' on 2026-05-12 at b9cafeb32d)
 + doc: add caveat about turning off commit-graph

 Ramifications of turning off commit-graph has been documented a bit
 more clearly.

 Will merge to 'master'.
 source: <V3_caveat_commit-graph.6b6@msgid.xyz>


* dk/doc-exclude-is-shared-per-repo (2026-05-12) 1 commit
  (merged to 'next' on 2026-05-17 at ddc761aec6)
 + ignore: note info/exclude lives in GIT_COMMON_DIR, not GIT_DIR

 Document the fact that .git/info/exclude is shared across worktrees
 linked to the same repository.

 Will merge to 'master'.
 cf. <bea48414-217b-4860-9279-fe94e3687c28@gmail.com>
 source: <ec97ad3f054e90b675f099a36a81a23bb4b2a0ed.1778620784.git.ben.knoble+github@gmail.com>


* kk/paint-down-to-common-optim (2026-05-11) 2 commits
  (merged to 'next' on 2026-05-17 at 2e39c767e5)
 + commit-reach: early exit paint_down_to_common for single merge-base
 + commit-reach: introduce merge_base_flags enum

 "git merge-base" optimization.

 Will merge to 'master'.
 source: <pull.2109.v4.git.1778504352.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-14) 3 commits
 - daemon: guard NULL REMOTE_PORT in execute() logging
 - daemon: fix IPv6 address truncation in ip2str()
 - daemon: fix IPv6 address corruption in lookup_hostname()

 Correct use of sockaddr API in "git daemon".

 Waiting for response(s) to review comment(s).
 cf. <agGLRC1ziF5F8Okh@pks.im>
 source: <pull.2300.git.git.1778773592.gitgitgadget@gmail.com>


* ag/rebase-update-refs-limit-to-branches (2026-05-10) 1 commit
  (merged to 'next' on 2026-05-12 at 5222da09bb)
 + rebase: ignore non-branch update-refs

 "git rebase --update-refs", when used with an rebase.instructionFormat
 with "%d" (describe) in it, tried to update local branch HEAD by
 mistake, which has been corrected.

 Will merge to 'master'.
 source: <20260510224111.64467-2-mail@abhinavg.net>


* jc/ci-enable-expensive (2026-05-10) 2 commits
  (merged to 'next' on 2026-05-15 at d258bb5e55)
 + ci: enable EXPENSIVE for contributor builds
 + Merge branch 'js/objects-larger-than-4gb-on-windows' into jc/ci-enable-expensive
 (this branch uses js/objects-larger-than-4gb-on-windows.)

 Enable expensive tests to catch topics that may cause breakages on
 integration branches closer to their origin in the contributor PR
 builds.

 Will merge to 'master'.
 source: <xmqqjyta9630.fsf@gitster.g>


* rs/sideband-clear-line-before-print (2026-05-10) 1 commit
  (merged to 'next' on 2026-05-12 at 83880f8ce6)
 + sideband: clear full line when printing remote messages

 Tweak the way how sideband messages from remote are printed while
 we talk with a remote repository to avoid tickling terminal
 emulator glitches.

 Will merge to 'master'.
 source: <9826dabf-c9a6-4397-8ae6-a24f9c507f1b@web.de>


* jh/alias-i18n-fixes (2026-04-24) 1 commit
  (merged to 'next' on 2026-05-13 at c7cd30d414)
 + alias: restore support for simple dotted aliases

 Further update to the i18n alias support to avoid regressions.

 Will merge to 'master'.
 source: <20260424161707.1514255-1-jonatan@jontes.page>


* kn/refs-generic-helpers (2026-05-04) 9 commits
  (merged to 'next' on 2026-05-15 at 62cb4e0ce2)
 + refs: use peeled tag values in reference backends
 + refs: add peeled object ID to the `ref_update` struct
 + refs: move object parsing to the generic layer
 + update-ref: handle rejections while adding updates
 + update-ref: move `print_rejected_refs()` up
 + refs: return `ref_transaction_error` from `ref_transaction_update()`
 + refs: extract out reflog config to generic layer
 + refs: introduce `ref_store_init_options`
 + refs: remove unused typedef 'ref_transaction_commit_fn'

 Refactor service routines in the ref subsystem backends.

 Will merge to 'master'.
 cf. <afmFmGo_Sg33Rv6V@pks.im>
 cf. <87o6isqq4q.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260504-refs-move-to-generic-layer-v4-0-936ac2f0b1a3@gmail.com>


* ob/more-repo-config-values (2026-04-23) 8 commits
 - env: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - env: move "sparse_expect_files_outside_of_patterns" into `repo_config_values`
 - env: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Expecting a reroll.
 cf. <CAD=f0L8-_3sDGGkCzF4WA0xmUtaY_qiz__3zq5AemLgwTsqvsg@mail.gmail.com>
 cf. <xmqqlddqu013.fsf@gitster.g>
 source: <20260423165432.143598-1-belkid98@gmail.com>


* ps/history-fixup (2026-04-26) 3 commits
  (merged to 'next' on 2026-05-13 at e6154b6272)
 + builtin/history: introduce "fixup" subcommand
 + builtin/history: generalize function to commit trees
 + replay: allow callers to control what happens with empty commits

 "git history" learned "fixup" command.

 Will merge to 'master'.
 cf. <xmqq33zxp4aq.fsf@gitster.g>
 source: <20260427-b4-pks-history-fixup-v3-0-cb908f06264b@pks.im>


* sb/unpack-index-pack-buffer-resize (2026-04-28) 1 commit
  (merged to 'next' on 2026-05-13 at 2edd54bcfe)
 + index-pack, unpack-objects: increase input buffer from 4 KiB to 128 KiB

 Use a larger buffer size in the code paths to ingest pack stream.

 Will merge to 'master'.
 cf. <xmqqy0hpnpkb.fsf@gitster.g>
 source: <pull.2282.v4.git.git.1777387660841.gitgitgadget@gmail.com>


* bc/sign-commit-with-custom-encoding (2026-04-27) 2 commits
  (merged to 'next' on 2026-05-13 at e82a4966c0)
 + commit: sign commit after mutating buffer
 + commit: name UTF-8 function appropriately

 Signing commit with custom encoding was passing the data to be
 signed at a wrong stage in the pipeline, which has been corrected.

 Will merge to 'master'.
 cf. <xmqqtssdnpf7.fsf@gitster.g>
 source: <20260427221834.1824543-1-sandals@crustytoothpaste.net>


* cc/promisor-auto-config-url-more (2026-04-27) 9 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'
 - Merge branch 'cc/promisor-auto-config-url' into cc/promisor-auto-config-url-more

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Waiting for response(s) to review comment(s).
 cf. <875x4yoys5.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260427124108.3524129-1-christian.couder@gmail.com>


* js/objects-larger-than-4gb-on-windows (2026-05-08) 11 commits
  (merged to 'next' on 2026-05-13 at 843d2ac470)
 + ci: run expensive tests on push builds to integration branches
 + t5608: mark >4GB tests as EXPENSIVE
 + test-tool synthesize: add precomputed SHA-256 pack for 4 GiB + 1
 + test-tool synthesize: precompute pack for 4 GiB + 1
 + test-tool synthesize: use the unsafe hash for speed
 + t5608: add regression test for >4GB object clone
 + test-tool: add a helper to synthesize large packfiles
 + delta, packfile: use size_t for delta header sizes
 + odb, packfile: use size_t for streaming object sizes
 + git-zlib: handle data streams larger than 4GB
 + index-pack, unpack-objects: use size_t for object size
 (this branch is used by jc/ci-enable-expensive.)

 Update code paths that assumed "unsigned long" was long enough for
 "size_t".

 Will merge to 'master'.
 source: <pull.2102.v3.git.1778228209.gitgitgadget@gmail.com>


* kh/doc-log-decorate-list (2026-04-27) 2 commits
  (merged to 'next' on 2026-05-15 at f740311a37)
 + doc: log: use the same delimiter in description list
 + doc: log: fix --decorate description list

 Doc update.

 Will merge to 'master'.
 cf. <xmqqpl31np0l.fsf@gitster.g>
 source: <CV_doc_log_--decorate_list.626@msgid.xyz>


* za/t2000-modernise-more (2026-04-29) 1 commit
  (merged to 'next' on 2026-05-15 at 3b524d0ba5)
 + t2000: consolidate second scenario into a single test block

 Test update.

 Will merge to 'master'.
 cf. <xmqqfr3xnofn.fsf@gitster.g>
 source: <20260429103607.406339-1-zakariyahali100@gmail.com>


* hn/checkout-track-fetch (2026-05-11) 1 commit
 - checkout: extend --track with a "fetch" mode to refresh start-point

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 cf. <xmqqh5odqxh2.fsf@gitster.g>
 source: <pull.2281.v8.git.git.1778507225500.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-15) 1 commit
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Will merge to 'next'?
 source: <463cc8e2764edb7de3d379f615f5cfbd0919bfa3.1778887662.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-04-27) 3 commits
 - line-log: allow non-patch diff formats with -L
 - line-log: integrate -L output with the standard log-tree pipeline
 - revision: move -L setup before output_format-to-diff derivation

 Code clean-up.

 Comments?
 cf. <xmqqfr3xp98b.fsf@gitster.g>
 source: <pull.2094.git.1777349126.gitgitgadget@gmail.com>


* ds/path-walk-filters (2026-05-13) 14 commits
 - path-walk: support `combine` filter
 - path-walk: support `object:type` filter
 - path-walk: support `tree:0` filter
 - t6601: tag otherwise-unreachable trees
 - pack-objects: support sparse:oid filter with path-walk
 - path-walk: add pl_sparse_trees to control tree pruning
 - path-walk: support blob size limit filter
 - backfill: die on incompatible filter options
 - path-walk: support blobless filter
 - path-walk: always emit directly-requested objects
 - t/perf: add pack-objects filter and path-walk benchmark
 - pack-objects: pass --objects with --path-walk
 - t5620: make test work with path-walk var
 - Merge branch 'en/backfill-fixes-and-edges' into ds/path-walk-filters

 The "git pack-objects --path-walk" traversal has been integrated
 with several object filters, including blobless and sparse filters.

 Comments?
 source: <pull.2101.v4.git.1778707135.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Needs review.
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* sg/t6112-unwanted-tilde-expansion-fix (2026-04-21) 1 commit
  (merged to 'next' on 2026-05-12 at ad2d08eb44)
 + t6112: avoid tilde expansion

 Test fix.

 Will merge to 'master'.
 source: <20260421192132.51172-1-szeder.dev@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* tb/pseudo-merge-bugfixes (2026-05-11) 9 commits
 - pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 - Documentation: fix broken `sampleRate` in gitpacking(7)
 - pack-bitmap: reject pseudo-merge "sampleRate" of 0
 - pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 - pack-bitmap: fix pseudo-merge lookup for shared commits
 - pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 - pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 - t5333: demonstrate various pseudo-merge bugs
 - t/helper: add 'test-tool bitmap write' subcommand

 Fixes many bugs in pseudo-merge code.

 Will merge to 'next'.
 source: <cover.1778546804.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-05-14) 8 commits
 - send-pack: pass negotiation config in push
 - remote: add remote.*.negotiationInclude config
 - fetch: add --negotiation-include option for negotiation
 - negotiator: add have_sent() interface
 - remote: add remote.*.negotiationRestrict config
 - transport: rename negotiation_tips
 - fetch: add --negotiation-restrict option
 - t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Comments?
 source: <pull.2085.v4.git.1778762495.gitgitgadget@gmail.com>


* mc/http-emptyauth-negotiate-fix (2026-04-30) 4 commits
  (merged to 'next' on 2026-05-12 at 843ae82cd0)
 + doc: clarify http.emptyAuth values
  (merged to 'next' on 2026-04-20 at 6539524ca2)
 + t5563: add tests for http.emptyAuth with Negotiate
 + http: attempt Negotiate auth in http.emptyAuth=auto mode
 + http: extract http_reauth_prepare() from retry paths

 The 'http.emptyAuth=auto' configuration now correctly attempts
 Negotiate authentication before falling back to manual credentials.
 This allows seamless Kerberos ticket-based authentication without
 requiring users to explicitly set 'http.emptyAuth=true'.

 Will merge to 'master'.
 source: <e0f236767f81ea60f90749d1bc00ab78081efd0e.1777546472.git.gitgitgadget@gmail.com>
 source: <pull.2087.git.1776331259.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-05-14) 4 commits
 - grep: prefetch necessary blobs
 - builtin/log: prefetch necessary blobs for `git cherry`
 - patch-ids.h: add missing trailing parenthesis in documentation comment
 - promisor-remote: document caller filtering contract

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Comments?
 source: <pull.2089.v3.git.1778775928.gitgitgadget@gmail.com>


* en/diffstat-utf8-truncation-fix (2026-04-20) 1 commit
  (merged to 'next' on 2026-05-13 at adf801eb1d)
 + diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation

 The computation to shorten the filenames shown in diffstat measured
 width of individual UTF-8 characters to add up, but forgot to take
 into account error cases (e.g., an invalid UTF-8 sequence, or a
 control character).

 Will merge to 'master'.
 source: <pull.2093.v3.git.1776699778177.gitgitgadget@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Need to wait for the base topic.
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-26) 8 commits
  (merged to 'next' on 2026-05-13 at 48695e1cb0)
 + safe.bareRepository: default to "explicit" with WITH_BREAKING_CHANGES
 + status tests: filter `.gitconfig` from status output
 + ls-files tests: filter `.gitconfig` from `--others` output
 + t5601: restore `.gitconfig` after includeIf test
 + t1305: use `--git-dir=.` for bare repo in include cycle test
 + t1300: remove global config settings injected by test-lib.sh
 + t7900: do not let `$HOME/.gitconfig` interfere with XDG tests
 + test-lib: allow bare repository access when breaking changes are enabled

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Will merge to 'master'.
 source: <pull.2098.v2.git.1777214316.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-05-13) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Will merge to 'next'?
 cf. <2989eb07-2933-4b5a-9e5c-33ef9b805528@gmail.com>
 source: <20260513-includeif-worktree-v4-0-f8e6212d1fba@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Waiting for response(s) to review comment(s).
 cf. <20260513230216.GA1378627@coredump.intra.peff.net>
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Needs review.
 cf. <xmqqse7xm8av.fsf@gitster.g>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-05-14) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Will merge to 'next'?
 source: <20260514183740.1505171-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-04-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--no-write-chain-file` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - midx: build `keep_hashes` array in order
 - midx: use `strset` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Waiting for response(s) to review comment(s).
 cf. <agTw579yuy4iHoMq@szeder.dev>
 cf. <20260513230825.GA1378716@coredump.intra.peff.net>
 source: <cover.1777507303.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-04-20) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260420-pks-setup-wo-the-repository-v1-0-f4a81c4988e8@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 cf. <xmqq1pfivfa3.fsf@gitster.g>
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Will merge to 'next'?
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* jr/bisect-custom-terms-in-output (2026-05-14) 3 commits
 - rev-parse: use selected alternate terms to look up refs
 - bisect: print bisect terms in single quotes
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Will merge to 'next'?
 source: <20260514-bisect-terms-v4-0-b3e3cf1b06ce@schlaraffenlan.de>


* ua/push-remote-group (2026-05-03) 3 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c
 - remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Waiting for response(s) to review comment(s).
 cf. <d6566004-f803-4824-b050-f086b6d6d76c@app.fastmail.com>
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* kh/name-rev-custom-format (2026-05-11) 5 commits
  (merged to 'next' on 2026-05-12 at c944d6131e)
 + format-rev: introduce builtin for on-demand pretty formatting
 + name-rev: make dedicated --annotate-stdin --name-only test
 + name-rev: factor code for sharing with a new command
 + name-rev: run clang-format before factoring code
 + name-rev: wrap both blocks in braces

 A new builtin "git format-rev" is introduced for pretty formatting
 one revision expression per line or commit object names found in
 running text.

 Will merge to 'master'.
 source: <V5_CV_format-rev.6c9@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <xmqqcxz2tzpr.fsf@gitster.g>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold to help the base topic with wider exposure.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/fsmonitor-linux (2026-04-15) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 cf. <xmqqa4u5nnxq.fsf@gitster.g>
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* pw/xdiff-shrink-memory-consumption (2026-05-04) 5 commits
  (merged to 'next' on 2026-05-15 at 7a867909d2)
 + xdiff: reduce the size of array
 + xprepare: simplify error handling
 + xdiff: cleanup xdl_clean_mmatch()
 + xdiff: reduce size of action arrays
 + Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 Will merge to 'master'.
 source: <cover.1777903579.git.phillip.wood@dunelm.org.uk>


* en/xdiff-cleanup-3 (2026-04-29) 6 commits
  (merged to 'next' on 2026-05-12 at e4e72e0f34)
 + xdiff/xdl_cleanup_records: make execution of action easier to follow
 + xdiff/xdl_cleanup_records: make setting action easier to follow
 + xdiff/xdl_cleanup_records: make limits more clear
 + xdiff/xdl_cleanup_records: use unambiguous types
 + xdiff: use unambiguous types in xdl_bogo_sqrt()
 + xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Will merge to 'master'.
 source: <pull.2156.v6.git.git.1777500495.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 15%]

* Re: What's cooking in git.git (May 2026, #03)
  @ 2026-05-15 17:06 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-15 17:06 UTC (permalink / raw)
  To: Karthik Nayak; +Cc: git

Karthik Nayak <karthik.188@gmail.com> writes:

> Hello Junio,
>
> I've not been active on the list past few weeks, did we reach a
> consensus about
> 20260420-refs-fsck-skip-lock-files-v1-1-c2595e206a76@gmail.com ? Or was
> it missed, I thought it was in a ready state, but happy to reiterate as
> needed.
>
> Lore: https://lore.kernel.org/git/20260420-refs-fsck-skip-lock-files-v1-1-c2595e206a76@gmail.com/#t

I've not been active on the list past few weeks, either, so please
don't expect me to know anything that happened during my 3-week
absense ;-)

My understanding of the status of that thread is that after

https://lore.kernel.org/git/CAOLa=ZT1zE+MLeaYE_5jWmNzSvtTTBw3ZAopai+2Ei27kmYm2g@mail.gmail.com/

that said you "Will add ... locally", we are all waiting for you to
say either "after waiting for sufficient amount of time, there
wasn't any other major change necessary, so I won't add it locally
after all" or "we have waited for sufficient amount of time, so here
is the hopefully final edition that includes what I added locally
following Patrick's review".



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (May 2026, #03)
  @ 2026-05-15  1:46 99%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-15  1:46 UTC (permalink / raw)
  To: Pushkar Singh; +Cc: git

Pushkar Singh <pushkarkumarsingh1970@gmail.com> writes:

> My thinking was mainly that git stash show normally omits untracked
> changes, while --include-untracked consults the additional untracked
> parent of the stash commit.
>
> I did not see existing coverage specifically checking that behavior,

Ah, OK.  Please more explicitly state that it is filling a gap in
test coverage in the proposed log message; it would have helped to
sell the patch better.  Adding even more when we already have
adequate coverage is one thing, covering the cases we had no
coverage is totally different matter.

Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (May 2026, #03)
  @ 2026-05-13 16:06 99%   ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-05-13 16:06 UTC (permalink / raw)
  To: Pushkar Singh; +Cc: git

Pushkar Singh <pushkarkumarsingh1970@gmail.com> writes:

> I noticed my stash test patch did not appear in the list, so I just
> wanted to gently follow up in case it got missed.
>
> Patch Link: https://lore.kernel.org/git/20260505103332.43702-2-pushkarkumarsingh1970@gmail.com/T/#u

When somebody else discussed on the topic or if I find the topic may
be interesting, I often pick up such patches to keep in 'seen'.

I am not sure if it qualifies as "got missed", but it seems nobody
discussed the topic, and I wasn't sure what the point was myself.
Surely we can pile on tests that demonstrates a command works in a
certain way, but is this particular test demonstrate something we
are likely to break, or something?



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (May 2026, #03)
@ 2026-05-12  9:23 16% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-05-12  9:23 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

The first batch of topics marked for graduation for quite a while
since 2.54-rc2 have all been merged to 'master'.

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]

* sp/shallow-deepen-on-non-shallow-repo-fix (2026-05-11) 1 commit
 - shallow: fix relative deepen on non-shallow repositories

 "git fetch --deepen=<n>" in a full clone truncated the history to <n>
 commits deep, which has been corrected to be a no-op instead.

 Will merge to 'next'.
 source: <20260511192044.169557-1-samo_pogacnik@t-2.net>


* ag/sequencer-remove-unused-struct-member (2026-05-11) 1 commit
 - sequencer: remove todo_add_branch_context.commit

 Code clean-up.

 Will merge to 'next'.
 source: <pull.2111.git.1778502113485.gitgitgadget@gmail.com>


* ps/maintenance-daemonize-lockfix (2026-05-11) 2 commits
 - run-command: honor "gc.auto" for auto-maintenance
 - builtin/maintenance: fix locking with "--detach"

 "git maintenance" that goes background did not use the lockfile to
 prevent multiple maintenance processes from running at the same
 time, which has been corrected..

 Comments?
 source: <20260511-pks-maintenance-fix-lock-with-detach-v1-0-ccd7d62c9a40@pks.im>

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

* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.

 Merged early in the cycle to 'master', *without* the final "for
 now, let's tone it down and allow everything" step, which would
 give us a chance to prove that the more stricter form that we were
 planning to postpone until Git 3.0 may not be needed.

 Or people may find issues in the stricter form already.  We'll see.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/t5551-fix-expensive (2026-05-07) 1 commit
  (merged to 'next' on 2026-05-11 at 1bafedde58)
 + t5551: "GIT_TEST_LONG=Yes make test" is broken

 Test fix.
 source: <xmqqqznmeaco.fsf@gitster.g>


* jk/revert-aa-reap-transport-child-processes (2026-04-22) 1 commit
  (merged to 'next' on 2026-05-11 at b41904c1d3)
 + Revert "transport-helper, connect: use clean_on_exit to reap children on abnormal exit"

 Revert a recent change that introduced a regression to help mksh users.
 source: <20260422230020.GA1839627@coredump.intra.peff.net>


* js/ci-github-actions-update (2026-04-30) 6 commits
  (merged to 'next' on 2026-05-11 at ba87f84054)
 + l10n: bump mshick/add-pr-comment from v2 to v3
 + ci: bump git-for-windows/setup-git-for-windows-sdk from v1 to v2
 + ci: bump actions/checkout from v5 to v6
 + ci: bump actions/github-script from v8 to v9
 + ci: bump actions/{upload,download}-artifact to v7 and v8
 + ci: bump microsoft/setup-msbuild from v2 to v3

 Update various GitHub Actions versions.
 source: <pull.2097.v3.git.1777534500.gitgitgadget@gmail.com>


* js/maintenance-fix-deadlock-on-win10 (2026-05-07) 2 commits
  (merged to 'next' on 2026-05-11 at e1b05301d1)
 + maintenance(geometric): do release the `.idx` files before repacking
 + mingw: optionally use legacy (non-POSIX) delete semantics

 To help Windows 10 installations, avoid removing files whose
 contents are still mmap()'ed.
 source: <pull.2103.v2.git.1778158273.gitgitgadget@gmail.com>


* js/t5564-socks-use-short-path (2026-04-29) 1 commit
  (merged to 'next' on 2026-05-11 at fbb23860ca)
 + t5564: use a short path for the SOCKS proxy socket

 Avoid hitting the pathname limit for socks proxy socket during the
 test.
 source: <pull.2100.v2.git.1777450974159.gitgitgadget@gmail.com>

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

* js/mingw-no-nedmalloc (2026-05-08) 3 commits
 - mingw: remove the vendored compat/nedmalloc/ subtree
 - mingw: drop the build-system plumbing for nedmalloc
 - mingw: stop using nedmalloc

 Stop using unmaintained custom allocator in Windows build which was
 the last user of the code.

 Will merge to 'next'.
 source: <pull.2104.v3.git.1778244661.gitgitgadget@gmail.com>


* sj/submodule-update-clone-config-fix (2026-05-09) 1 commit
  (merged to 'next' on 2026-05-12 at 5a0094838a)
 + submodule-config: fix reading submodule.fetchJobs

 The configuration variable submodule.fetchJobs was not read correctly,
 which has been corrected.

 Will merge to 'master'.
 source: <pull.2287.v4.git.git.1778385022964.gitgitgadget@gmail.com>


* aw/validate-proxy-url-scheme (2026-05-05) 1 commit
 - http: reject unsupported proxy URL schemes

 Misspelt proxy URL (e.g., httt://...) did not trigger any warning
 or failure, which has been corrected.

 Will merge to 'next'.
 source: <20260505091941.1825-2-aminnimaj@gmail.com>


* hn/branch-prune-merged (2026-05-11) 5 commits
 - branch: add --all-remotes flag
 - branch: add branch.<name>.pruneMerged opt-out
 - branch: add --prune-merged <remote>
 - branch: let delete_branches warn instead of error on bulk refusal
 - branch: add --forked <remote>

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Expecting a reroll.
 cf. <xmqqse7xr0t7.fsf@gitster.g>
 source: <pull.2285.v6.git.git.1778492691.gitgitgadget@gmail.com>


* kh/doc-restore-double-underscores-fix (2026-05-05) 1 commit
  (merged to 'next' on 2026-05-12 at 2e8fc7cdac)
 + doc: restore: remove double underscore

 Doc update.

 Will merge to 'master'.
 source: <double_underscore.670@msgid.xyz>


* mm/diff-U-takes-no-negative-values (2026-05-05) 3 commits
 - xdiff: guard against negative context lengths
 - diff: reject negative values for -U/--unified
 - diff: reject negative values for --inter-hunk-context

 The command line parser for "git diff" learned a few options take
 only non-negative integers.

 Expecting a (hopefully small and final) reroll.
 cf. <CAC2QwmLH19+LHNaP=13c9Ov8x1zXvyDmEhN69_RpbOY+OqEVZA@mail.gmail.com>
 source: <pull.2105.git.1778022144.gitgitgadget@gmail.com>


* ps/clang-w-glibc-2.43-and-_Generic (2026-05-10) 1 commit
  (merged to 'next' on 2026-05-12 at fca23344f2)
 + build: tolerate use of _Generic from glibc 2.43 with Clang

 Headers from glibc 2.43 when used with clang does not allow
 disabling C11 language features, causing build failures..

 Will merge to 'master'.
 source: <xmqqqzniset2.fsf@gitster.g>


* mm/git-url-parse (2026-05-01) 8 commits
 - t9904: add tests for the new url-parse builtin
 - doc: describe the url-parse builtin
 - builtin: create url-parse command
 - urlmatch: define url_parse function
 - url: return URL_SCHEME_UNKNOWN instead of dying
 - url: move scheme detection to URL header/source
 - url: move url_is_local_not_ssh to url.h
 - connect: rename enum protocol to url_scheme

 The internal URL parsing logic has been made accessible via a new
 subcommand "git url-parse".

 Will merge to 'next'?
 cf. <xmqqjyt9p9pk.fsf@gitster.g>
 source: <pull.1715.v3.git.git.1777699722.gitgitgadget@gmail.com>


* kh/doc-commit-graph (2026-05-07) 1 commit
  (merged to 'next' on 2026-05-12 at b9cafeb32d)
 + doc: add caveat about turning off commit-graph

 Ramifications of turning off commit-graph has been documented a bit
 more clearly.

 Will merge to 'master'.
 source: <V3_caveat_commit-graph.6b6@msgid.xyz>


* dk/doc-exclude-is-shared-per-repo (2026-05-08) 1 commit
 - ignore: note info/exclude lives in GIT_COMMON_DIR, not GIT_DIR

 Document the fact that .git/info/exclude is shared across worktrees
 linked to the same repository.

 Needs more coverage.
 cf. <fd05eba1-d821-4cbe-ada6-ccab97308e56@gmail.com>
 source: <d58b6e921d3005c6170fc6c47f175214acb3fa68.1778249267.git.ben.knoble+github@gmail.com>


* kk/paint-down-to-common-optim (2026-05-11) 2 commits
 - commit-reach: early exit paint_down_to_common for single merge-base
 - commit-reach: introduce merge_base_flags enum

 "git merge-base" optimization.

 Will merge to 'next'.
 source: <pull.2109.v4.git.1778504352.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-08) 1 commit
 - daemon: fix network address handling bugs

 Correct use of sockaddr API in "git daemon".

 Waiting for response(s) to review comment(s).
 cf. <agGLRC1ziF5F8Okh@pks.im>
 source: <pull.2299.git.git.1778291290159.gitgitgadget@gmail.com>


* ag/rebase-update-refs-limit-to-branches (2026-05-10) 1 commit
  (merged to 'next' on 2026-05-12 at 5222da09bb)
 + rebase: ignore non-branch update-refs

 "git rebase --update-refs", when used with an rebase.instructionFormat
 with "%d" (describe) in it, tried to update local branch HEAD by
 mistake, which has been corrected.

 Will merge to 'master'.
 source: <20260510224111.64467-2-mail@abhinavg.net>


* jc/ci-enable-expensive (2026-05-10) 2 commits
 - ci: enable EXPENSIVE for contributor builds
 - Merge branch 'js/objects-larger-than-4gb-on-windows' into jc/ci-enable-expensive
 (this branch uses js/objects-larger-than-4gb-on-windows.)

 Enable expensive tests to catch topics that may cause breakages on
 integration branches closer to their origin in the contributor PR
 builds.

 Will merge to 'next'.
 source: <xmqqjyta9630.fsf@gitster.g>


* rs/sideband-clear-line-before-print (2026-05-10) 1 commit
  (merged to 'next' on 2026-05-12 at 83880f8ce6)
 + sideband: clear full line when printing remote messages

 Tweak the way how sideband messages from remote are printed while
 we talk with a remote repository to avoid tickling terminal
 emulator glitches.

 Will merge to 'master'.
 source: <9826dabf-c9a6-4397-8ae6-a24f9c507f1b@web.de>


* jh/alias-i18n-fixes (2026-04-24) 1 commit
 - alias: restore support for simple dotted aliases

 Further update to the i18n alias support to avoid regressions.

 Will merge to 'next'.
 source: <20260424161707.1514255-1-jonatan@jontes.page>


* kn/refs-generic-helpers (2026-05-04) 9 commits
 - refs: use peeled tag values in reference backends
 - refs: add peeled object ID to the `ref_update` struct
 - refs: move object parsing to the generic layer
 - update-ref: handle rejections while adding updates
 - update-ref: move `print_rejected_refs()` up
 - refs: return `ref_transaction_error` from `ref_transaction_update()`
 - refs: extract out reflog config to generic layer
 - refs: introduce `ref_store_init_options`
 - refs: remove unused typedef 'ref_transaction_commit_fn'

 Refactor service routines in the ref subsystem backends.

 Will merge to 'next'.
 cf. <afmFmGo_Sg33Rv6V@pks.im>
 cf. <87o6isqq4q.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260504-refs-move-to-generic-layer-v4-0-936ac2f0b1a3@gmail.com>


* ob/more-repo-config-values (2026-04-23) 8 commits
 - env: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - env: move "sparse_expect_files_outside_of_patterns" into `repo_config_values`
 - env: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Expecting a reroll.
 cf. <CAD=f0L8-_3sDGGkCzF4WA0xmUtaY_qiz__3zq5AemLgwTsqvsg@mail.gmail.com>
 cf. <xmqqlddqu013.fsf@gitster.g>
 source: <20260423165432.143598-1-belkid98@gmail.com>


* ps/history-fixup (2026-04-26) 3 commits
 - builtin/history: introduce "fixup" subcommand
 - builtin/history: generalize function to commit trees
 - replay: allow callers to control what happens with empty commits

 "git history" learned "fixup" command.

 Will merge to 'next'.
 cf. <xmqq33zxp4aq.fsf@gitster.g>
 source: <20260427-b4-pks-history-fixup-v3-0-cb908f06264b@pks.im>


* rs/grep-column-only-match-fix (2026-04-24) 1 commit
  (merged to 'next' on 2026-05-11 at a0d87e3104)
 + grep: fix --column --only-match for 2nd and later matches

 "git grep" update.

 Will merge to 'master'.
 source: <9bd69678-f04b-41d2-ad74-a386820d34c8@web.de>


* sb/unpack-index-pack-buffer-resize (2026-04-28) 1 commit
 - index-pack, unpack-objects: increase input buffer from 4 KiB to 128 KiB

 Use a larger buffer size in the code paths to ingest pack stream.

 Will merge to 'next'.
 cf. <xmqqy0hpnpkb.fsf@gitster.g>
 source: <pull.2282.v4.git.git.1777387660841.gitgitgadget@gmail.com>


* bc/sign-commit-with-custom-encoding (2026-04-27) 2 commits
 - commit: sign commit after mutating buffer
 - commit: name UTF-8 function appropriately

 Signing commit with custom encoding was passing the data to be
 signed at a wrong stage in the pipeline, which has been corrected.

 Will merge to 'next'.
 cf. <xmqqtssdnpf7.fsf@gitster.g>
 source: <20260427221834.1824543-1-sandals@crustytoothpaste.net>


* cc/promisor-auto-config-url-more (2026-04-27) 9 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'
 - Merge branch 'cc/promisor-auto-config-url' into cc/promisor-auto-config-url-more

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Waiting for response(s) to review comment(s).
 cf. <875x4yoys5.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260427124108.3524129-1-christian.couder@gmail.com>


* js/objects-larger-than-4gb-on-windows (2026-05-08) 11 commits
 - ci: run expensive tests on push builds to integration branches
 - t5608: mark >4GB tests as EXPENSIVE
 - test-tool synthesize: add precomputed SHA-256 pack for 4 GiB + 1
 - test-tool synthesize: precompute pack for 4 GiB + 1
 - test-tool synthesize: use the unsafe hash for speed
 - t5608: add regression test for >4GB object clone
 - test-tool: add a helper to synthesize large packfiles
 - delta, packfile: use size_t for delta header sizes
 - odb, packfile: use size_t for streaming object sizes
 - git-zlib: handle data streams larger than 4GB
 - index-pack, unpack-objects: use size_t for object size
 (this branch is used by jc/ci-enable-expensive.)

 Update code paths that assumed "unsigned long" was long enough for
 "size_t".

 Will merge to 'next'.
 source: <pull.2102.v3.git.1778228209.gitgitgadget@gmail.com>


* kh/doc-log-decorate-list (2026-04-27) 2 commits
 - doc: log: use the same delimiter in description list
 - doc: log: fix --decorate description list

 Doc update.

 Will merge to 'next'.
 cf. <xmqqpl31np0l.fsf@gitster.g>
 source: <CV_doc_log_--decorate_list.626@msgid.xyz>


* za/t2000-modernise-more (2026-04-29) 1 commit
 - t2000: consolidate second scenario into a single test block

 Test update.

 Will merge to 'next'.
 cf. <xmqqfr3xnofn.fsf@gitster.g>
 source: <20260429103607.406339-1-zakariyahali100@gmail.com>


* hn/checkout-track-fetch (2026-05-11) 1 commit
 - checkout: extend --track with a "fetch" mode to refresh start-point

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 cf. <xmqqh5odqxh2.fsf@gitster.g>
 source: <pull.2281.v8.git.git.1778507225500.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-09) 2 commits
 - SQUASH??? tac is not portable
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Expecting a (hopefully small and final) reroll.
 cf. <af_SX9mQPLxolg4k@exploit>
 source: <2f71a00b035e25b971641b77a6fa7626f1e2459c.1777578676.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-04-27) 3 commits
 - line-log: allow non-patch diff formats with -L
 - line-log: integrate -L output with the standard log-tree pipeline
 - revision: move -L setup before output_format-to-diff derivation

 Code clean-up.

 Comments?
 cf. <xmqqfr3xp98b.fsf@gitster.g>
 source: <pull.2094.git.1777349126.gitgitgadget@gmail.com>


* pw/rename-to-get-current-worktree (2026-05-01) 1 commit
  (merged to 'next' on 2026-05-11 at 36ca1d49e2)
 + worktree: rename get_worktree_from_repository()

 Code clean-up.

 Will merge to 'master'.
 source: <bd48396137f8d1352d11b3bd2dca2848f24a347d.1777648798.git.phillip.wood@dunelm.org.uk>


* ds/path-walk-filters (2026-05-11) 13 commits
 - path-walk: support `combine` filter
 - path-walk: support `object:type` filter
 - path-walk: support `tree:0` filter
 - pack-objects: support sparse:oid filter with path-walk
 - path-walk: add pl_sparse_trees to control tree pruning
 - path-walk: support blob size limit filter
 - backfill: die on incompatible filter options
 - path-walk: support blobless filter
 - path-walk: always emit directly-requested objects
 - t/perf: add pack-objects filter and path-walk benchmark
 - pack-objects: pass --objects with --path-walk
 - t5620: make test work with path-walk var
 - Merge branch 'en/backfill-fixes-and-edges' into ds/path-walk-filters
 (this branch uses en/backfill-fixes-and-edges.)

 The "git pack-objects --path-walk" traversal has been integrated
 with several object filters, including blobless and sparse filters.

 Expecting a (hopefully small and final) reroll.
 cf. <0b4a8595-63e3-427c-8920-af4271ae1714@gmail.com>
 source: <pull.2101.v3.git.1778523189.gitgitgadget@gmail.com>


* en/ort-cached-rename-with-trivial-resolution (2026-04-20) 1 commit
  (merged to 'next' on 2026-05-11 at 9fe24668d9)
 + merge-ort: handle cached rename & trivial resolution interaction better

 "ort" merge backend improvements.

 Will merge to 'master'.
 source: <pull.2095.git.1776724214171.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Needs review.
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* mf/format-patch-cover-letter-format-docfix (2026-04-22) 1 commit
  (merged to 'next' on 2026-05-11 at 3cca9cc117)
 + Fix docs for format.commitListFormat

 Docfix.

 Will merge to 'master'.
 source: <576d29f15e016889e02c253713656cd8cbf1f04c.1776894255.git.mroik@delayed.space>


* sg/t6112-unwanted-tilde-expansion-fix (2026-04-21) 1 commit
  (merged to 'next' on 2026-05-12 at ad2d08eb44)
 + t6112: avoid tilde expansion

 Test fix.

 Will merge to 'master'.
 source: <20260421192132.51172-1-szeder.dev@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* ss/t7004-unhide-git-failures (2026-04-20) 3 commits
  (merged to 'next' on 2026-05-11 at 9ee9feacb7)
 + t7004: avoid subshells to capture git exit codes
 + t7004: dynamically grab expected state in tests
 + t7004: drop hardcoded tag count for state verification

 Test clean-up.

 Will merge to 'master'.
 cf. <aecNc-BNwaqFlg5c@pks.im>
 source: <20260421053334.5414-1-r.siddharth.shrimali@gmail.com>


* tb/pseudo-merge-bugfixes (2026-05-11) 9 commits
 - pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 - Documentation: fix broken `sampleRate` in gitpacking(7)
 - pack-bitmap: reject pseudo-merge "sampleRate" of 0
 - pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 - pack-bitmap: fix pseudo-merge lookup for shared commits
 - pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 - pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 - t5333: demonstrate various pseudo-merge bugs
 - t/helper: add 'test-tool bitmap write' subcommand

 Fixes many bugs in pseudo-merge code.

 Will merge to 'next'.
 source: <cover.1778546804.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-04-22) 7 commits
 - send-pack: pass negotiation config in push
 - remote: add remote.*.negotiationInclude config
 - fetch: add --negotiation-include option for negotiation
 - remote: add remote.*.negotiationRestrict config
 - transport: rename negotiation_tips
 - fetch: add --negotiation-restrict option
 - t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Needs review.
 source: <pull.2085.v3.git.1776871546.gitgitgadget@gmail.com>


* en/backfill-fixes-and-edges (2026-04-15) 3 commits
  (merged to 'next' on 2026-05-11 at baccbdf26d)
 + backfill: default to grabbing edge blobs too
 + backfill: document acceptance of revision-range in more standard manner
 + backfill: reject rev-list arguments that do not make sense
 (this branch is used by ds/path-walk-filters.)

 The 'git backfill' command now rejects revision-limiting options that
 are incompatible with its operation, uses standard documentation for
 revision ranges, and includes blobs from boundary commits by default
 to improve performance of subsequent operations.

 Will merge to 'master'.
 cf. <6e95b82a-19e3-460e-86f7-f899c2df261d@gmail.com>
 source: <pull.2088.git.1776297482.gitgitgadget@gmail.com>


* mc/http-emptyauth-negotiate-fix (2026-04-30) 4 commits
  (merged to 'next' on 2026-05-12 at 843ae82cd0)
 + doc: clarify http.emptyAuth values
  (merged to 'next' on 2026-04-20 at 6539524ca2)
 + t5563: add tests for http.emptyAuth with Negotiate
 + http: attempt Negotiate auth in http.emptyAuth=auto mode
 + http: extract http_reauth_prepare() from retry paths

 The 'http.emptyAuth=auto' configuration now correctly attempts
 Negotiate authentication before falling back to manual credentials.
 This allows seamless Kerberos ticket-based authentication without
 requiring users to explicitly set 'http.emptyAuth=true'.

 Will merge to 'master'.
 source: <e0f236767f81ea60f90749d1bc00ab78081efd0e.1777546472.git.gitgitgadget@gmail.com>
 source: <pull.2087.git.1776331259.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-04-17) 3 commits
 - grep: prefetch necessary blobs
 - builtin/log: prefetch necessary blobs for `git cherry`
 - patch-ids.h: add missing trailing parenthesis in documentation comment

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Expecting a reroll.
 cf. <CABPp-BFdYjnjhSrjEBf8kjYYY2jtrQ_=w0jYR+DDWh3szmtvqQ@mail.gmail.com>
 source: <pull.2089.v2.git.1776472347.gitgitgadget@gmail.com>


* en/diffstat-utf8-truncation-fix (2026-04-20) 1 commit
 - diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation

 The computation to shorten the filenames shown in diffstat measured
 width of individual UTF-8 characters to add up, but forgot to take
 into account error cases (e.g., an invalid UTF-8 sequence, or a
 control character).

 Will merge to 'next'.
 source: <pull.2093.v3.git.1776699778177.gitgitgadget@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Need to wait for the base topioc.
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-26) 8 commits
 - safe.bareRepository: default to "explicit" with WITH_BREAKING_CHANGES
 - status tests: filter `.gitconfig` from status output
 - ls-files tests: filter `.gitconfig` from `--others` output
 - t5601: restore `.gitconfig` after includeIf test
 - t1305: use `--git-dir=.` for bare repo in include cycle test
 - t1300: remove global config settings injected by test-lib.sh
 - t7900: do not let `$HOME/.gitconfig` interfere with XDG tests
 - test-lib: allow bare repository access when breaking changes are enabled

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Will merge to 'next'.
 source: <pull.2098.v2.git.1777214316.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Needs review.
 cf. <xmqq4ikdnn8g.fsf@gitster.g>
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Will merge to 'next'.
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Needs review.
 cf. <xmqqse7xm8av.fsf@gitster.g>
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Needs leakfix.
 cf. <20260511175835.GA4811@coredump.intra.peff.net>
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-04-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--no-write-chain-file` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - midx: build `keep_hashes` array in order
 - midx: use `strset` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Will merge to 'next'.
 source: <cover.1777507303.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-04-20) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260420-pks-setup-wo-the-repository-v1-0-f4a81c4988e8@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 cf. <xmqq1pfivfa3.fsf@gitster.g>
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Will merge to 'next'?
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* jr/bisect-custom-terms-in-output (2026-04-17) 2 commits
 - rev-parse: use selected alternate terms to look up refs
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Waiting for response(s) to review comment(s).
 cf. <xmqqjyu5weli.fsf@gitster.g>
 source: <20260417-bisect-terms-v3-0-d659fa547261@schlaraffenlan.de>


* ua/push-remote-group (2026-05-03) 3 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c
 - remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Comments?
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-04-28) 5 commits
  (merged to 'next' on 2026-05-11 at 46adae5e5d)
 + checkout -m: autostash when switching branches
 + checkout: rollback lock on early returns in merge_working_tree
 + sequencer: teach autostash apply to take optional conflict marker labels
 + sequencer: allow create_autostash to run silently
 + stash: add --label-ours, --label-theirs, --label-base for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Will merge to 'master'.
 source: <pull.2234.v16.git.git.1777401552.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-05-11) 5 commits
  (merged to 'next' on 2026-05-12 at c944d6131e)
 + format-rev: introduce builtin for on-demand pretty formatting
 + name-rev: make dedicated --annotate-stdin --name-only test
 + name-rev: factor code for sharing with a new command
 + name-rev: run clang-format before factoring code
 + name-rev: wrap both blocks in braces

 A new builtin "git format-rev" is introduced for pretty formatting
 one revision expression per line or commit object names found in
 running text.

 Will merge to 'master'.
 source: <V5_CV_format-rev.6c9@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 cf. <xmqqcxz2tzpr.fsf@gitster.g>
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold to help the base topic with wider exposure.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/fsmonitor-linux (2026-04-15) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 cf. <xmqqa4u5nnxq.fsf@gitster.g>
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* pw/xdiff-shrink-memory-consumption (2026-05-04) 5 commits
 - xdiff: reduce the size of array
 - xprepare: simplify error handling
 - xdiff: cleanup xdl_clean_mmatch()
 - xdiff: reduce size of action arrays
 - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 Will merge to 'next'.
 source: <cover.1777903579.git.phillip.wood@dunelm.org.uk>


* en/xdiff-cleanup-3 (2026-04-29) 6 commits
  (merged to 'next' on 2026-05-12 at e4e72e0f34)
 + xdiff/xdl_cleanup_records: make execution of action easier to follow
 + xdiff/xdl_cleanup_records: make setting action easier to follow
 + xdiff/xdl_cleanup_records: make limits more clear
 + xdiff/xdl_cleanup_records: use unambiguous types
 + xdiff: use unambiguous types in xdl_bogo_sqrt()
 + xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Will merge to 'master'.
 source: <pull.2156.v6.git.git.1777500495.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 . promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Dropped due to a long silence and inactivity.
 cf. <xmqqik9s6qvd.fsf@gitster.g>
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 . config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Dropped due to a long silence and inactivity.
 cf. <adYvSZeN0ZVqwRhi@pks.im>
 cf. <xmqqcxz2vfpa.fsf@gitster.g>
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 . clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Dropped due to a long silence and inactivity.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 cf. <xmqq8q9qvffs.fsf@gitster.g>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 16%]

* Re: What's cooking in git.git (May 2026, #02)
  2026-05-11  3:08 16% What's cooking in git.git (May 2026, #02) Junio C Hamano
@ 2026-05-11  5:51 90% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-11  5:51 UTC (permalink / raw)
  To: git
  Cc: brian m. carlson, Phillip Wood, Andreas Schwab, Ondrej Pohorelsky,
	Patrick Steinhardt, Jeff King, D. Ben Knoble, Johannes Schindelin

Junio C Hamano <gitster@pobox.com> writes:

[cc: list taken from <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>]

> * jc/neuter-sideband-fixup (2026-03-05) 6 commits
>   (merged to 'next' on 2026-03-13 at 5a4098b0cd)
>  + sideband: drop 'default' configuration
>  + sideband: offer to configure sanitizing on a per-URL basis
>  + sideband: add options to allow more control sequences to be passed through
>  + sideband: do allow ANSI color sequences by default
>  + sideband: introduce an "escape hatch" to allow control characters
>  + sideband: mask control characters
>  (this branch is used by jc/neuter-sideband-post-3.0.)
>
>  Try to resurrect and reboot a stalled "avoid sending risky escape
>  sequences taken from sideband to the terminal" topic by Dscho.  The
>  plan is to keep it in 'next' long enough to see if anybody screams
>  with the "everything dropped except for ANSI color escape sequences"
>  default.

This topic has cooked sufficiently long in 'next'.  I'd push it to
'master' so that it now would have enough exposure time before the
next release.

But I'd do so with a bit of twist.

I plan to hold off the final step.  That step allows to pass
anything until Git 3.0.  That way, those who work with the version
in 'master' will see how things would look like with these strict
checks that allowlist only a few types of selected control sequences
by default.  With luck, we might not hear any complaints from
anybody, in which case we may not have to apply the last step at all.

Of course, if there are huge complaints, then we may have to
reconsider the approach to allow only the selected sequences and
instead blacklist known bad/risky sequences.  In such a case, we may
have to revert the merge first before we regroup, but it is more
than likely that we won't have to do so---after all, the topic
(without the final "loosen rules for now" step) has been used by
those who are on 'next' for quite a while already.  Knock wood...


^ permalink raw reply	[relevance 90%]

* What's cooking in git.git (May 2026, #02)
@ 2026-05-11  3:08 16% Junio C Hamano
  2026-05-11  5:51 90% ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-05-11  3:08 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

The first batch of topics marked for graduation for quite a while
since 2.54-rc2 have all been merged to 'master'.

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

* ar/parallel-hooks (2026-04-10) 13 commits
  (merged to 'next' on 2026-04-13 at 0a6acf0d17)
 + t1800: test SIGPIPE with parallel hooks
 + hook: allow hook.jobs=-1 to use all available CPU cores
 + hook: add hook.<event>.enabled switch
 + hook: move is_known_hook() to hook.c for wider use
 + hook: warn when hook.<friendly-name>.jobs is set
 + hook: add per-event jobs config
 + hook: add -j/--jobs option to git hook run
 + hook: mark non-parallelizable hooks
 + hook: allow pre-push parallel execution
 + hook: allow parallel hook execution
 + hook: parse the hook.jobs config
 + config: add a repo_config_get_uint() helper
 + repository: fix repo_init() memleak due to missing _clear()

 Hook scripts defined via the configuration system can now be
 configured to run in parallel.
 source: <20260410090608.75283-1-adrian.ratiu@collabora.com>


* bc/rust-by-default (2026-04-09) 4 commits
  (merged to 'next' on 2026-04-23 at fb9310bfae)
 + Enable Rust by default
 + Linux: link against libdl
 + ci: install cargo on Alpine
 + docs: update version with default Rust support

 Rust support is enabled by default (but still allows opting out) in
 some future version of Git.
 source: <20260409224434.1861422-1-sandals@crustytoothpaste.net>


* cc/promisor-auto-config-url (2026-04-07) 10 commits
  (merged to 'next' on 2026-04-13 at 289fcba081)
 + t5710: use proper file:// URIs for absolute paths
 + promisor-remote: remove the 'accepted' strvec
 + promisor-remote: keep accepted promisor_info structs alive
 + promisor-remote: refactor accept_from_server()
 + promisor-remote: refactor has_control_char()
 + promisor-remote: refactor should_accept_remote() control flow
 + promisor-remote: reject empty name or URL in advertised remote
 + promisor-remote: clarify that a remote is ignored
 + promisor-remote: pass config entry to all_fields_match() directly
 + promisor-remote: try accepted remotes before others in get_direct()
 (this branch is used by cc/promisor-auto-config-url-more.)

 Promisor remote handling has been refactored and fixed in
 preparation for auto-configuration of advertised remotes.
 source: <20260407115243.358642-1-christian.couder@gmail.com>


* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
  (merged to 'next' on 2026-04-13 at 68c82a9f37)
 + cache-tree: fix inverted object existence check in cache_tree_fully_valid

 The check that implements the logic to see if an in-core cache-tree
 is fully ready to write out a tree object was broken, which has
 been corrected.
 source: <20260406192711.68870-1-davidlin@stripe.com>


* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
  (merged to 'next' on 2026-04-13 at 0e6c98f313)
 + doc: convert git-describe manual page to synopsis style
 + doc: convert git-shortlog manual page to synopsis style
 + doc: convert git-range-diff manual page to synopsis style
 + doc: convert git-difftool manual page to synopsis style

 Doc mark-up updates.
 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>


* jc/doc-timestamps-in-stat (2026-04-10) 1 commit
  (merged to 'next' on 2026-04-20 at 0680260012)
 + CodingGuidelines: st_mtimespec vs st_mtim vs st_mtime

 Doc update.
 source: <xmqqzf3aofdj.fsf_-_@gitster.g>


* ps/test-set-e-clean (2026-04-21) 12 commits
  (merged to 'next' on 2026-04-23 at 4f69b47b94)
 + t: detect errors outside of test cases
 + t9902: fix use of `read` with `set -e`
 + t6002: fix use of `expr` with `set -e`
 + t1301: don't fail in case setfacl(1) doesn't exist or fails
 + t0008: silence error in subshell when using `grep -v`
 + t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
 + t: prepare execution of potentially failing commands for `set -e`
 + t: prepare conditional test execution for `set -e`
 + t: prepare `git config --unset` calls for `set -e`
 + t: prepare `stop_git_daemon ()` for `set -e`
 + t: prepare `test_must_fail ()` for `set -e`
 + t: prepare `test_match_signal ()` calls for `set -e`

 The test suite harness and many individual test scripts have been
 updated to work correctly when 'set -e' is in effect, which helps
 detect misspelled test commands.
 source: <20260421-b4-pks-tests-with-set-e-v6-0-26330e3061ab@pks.im>


* sb/userdiff-lisp-family (2026-04-14) 2 commits
  (merged to 'next' on 2026-04-20 at 5897c04899)
 + userdiff: extend Scheme support to cover other Lisp dialects
 + userdiff: tighten word-diff test case of the scheme driver

 The userdiff driver for the Scheme language has been extended to
 cover other Lisp dialects.
 source: <pull.2000.v4.git.1776220063.gitgitgadget@gmail.com>


* sp/refs-reduce-the-repository (2026-04-04) 3 commits
  (merged to 'next' on 2026-04-09 at bb1d626802)
 + refs/reftable-backend: drop uses of the_repository
 + refs: remove the_hash_algo global state
 + refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Code clean-up to use the right instance of a repository instance in
 calls inside refs subsystem.
 source: <20260404135914.61195-1-shreyanshpaliwalcmsmn@gmail.com>

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

* js/mingw-no-nedmalloc (2026-05-08) 3 commits
 - mingw: remove the vendored compat/nedmalloc/ subtree
 - mingw: drop the build-system plumbing for nedmalloc
 - mingw: stop using nedmalloc

 Stop using unmaintained custom allocator in Windows build which was
 the last user of the code.

 Will merge to 'next'.
 source: <pull.2104.v3.git.1778244661.gitgitgadget@gmail.com>


* sj/submodule-update-clone-config-fix (2026-05-09) 1 commit
 - submodule-config: fix reading submodule.fetchJobs

 The configuration variable submodule.fetchJobs was not read correctly,
 which has been corrected.

 Will merge to 'next'.
 source: <pull.2287.v4.git.git.1778385022964.gitgitgadget@gmail.com>


* aw/validate-proxy-url-scheme (2026-05-05) 1 commit
 - http: reject unsupported proxy URL schemes

 Misspelt proxy URL (e.g., httt://...) did not trigger any warning
 or failure, which has been corrected.

 Will merge to 'next'?
 source: <20260505091941.1825-2-aminnimaj@gmail.com>


* hn/branch-prune-merged (2026-05-05) 6 commits
 - branch: add --all-remotes flag
 - branch: add branch.<name>.pruneMerged opt-out
 - fetch: add --prune-merged
 - branch: add --prune-merged <remote>
 - branch: let delete_branches warn instead of error on bulk refusal
 - branch: add --forked <remote>

 "git branch" command learned "--prune-merged" option to remove
 local branches that have already been merged to the remote-tracking
 branches they track.

 Expecting a reroll to remove "fetch" part?
 cf. <20260505220712.93952-1-haraldnordgren@gmail.com>
 source: <pull.2285.v4.git.git.1778009038.gitgitgadget@gmail.com>


* kh/doc-restore-double-underscores-fix (2026-05-05) 1 commit
 - doc: restore: remove double underscore

 Doc update.

 Will merge to 'next'.
 source: <double_underscore.670@msgid.xyz>


* mm/diff-U-takes-no-negative-values (2026-05-05) 3 commits
 - xdiff: guard against negative context lengths
 - diff: reject negative values for -U/--unified
 - diff: reject negative values for --inter-hunk-context

 The command line parser for "git diff" learned a few options take
 only non-negative integers.

 Will merge to 'next'?
 source: <pull.2105.git.1778022144.gitgitgadget@gmail.com>


* ps/clang-w-glibc-2.43-and-_Generic (2026-05-05) 1 commit
 - build: tolerate use of _Generic from glibc 2.43 with Clang

 Headers from glibc 2.43 when used with clang does not allow
 disabling C11 language features, causing build failures..

 Will merge to 'next'.
 source: <20260505-b4-pks-ci-tolerate-glibc-generic-v1-1-5786386fe512@pks.im>


* mm/git-url-parse (2026-05-01) 8 commits
 - t9904: add tests for the new url-parse builtin
 - doc: describe the url-parse builtin
 - builtin: create url-parse command
 - urlmatch: define url_parse function
 - url: return URL_SCHEME_UNKNOWN instead of dying
 - url: move scheme detection to URL header/source
 - url: move url_is_local_not_ssh to url.h
 - connect: rename enum protocol to url_scheme

 The internal URL parsing logic has been made accessible via a new
 subcommand "git url-parse".

 Will merge to 'next'?
 source: <pull.1715.v3.git.git.1777699722.gitgitgadget@gmail.com>


* kh/doc-commit-graph (2026-05-07) 1 commit
 - doc: add caveat about turning off commit-graph

 Ramifications of turning off commit-graph has been documented a bit
 more clearly.
 source: <V3_caveat_commit-graph.6b6@msgid.xyz>


* dk/doc-exclude-is-shared-per-repo (2026-05-08) 1 commit
 - ignore: note info/exclude lives in GIT_COMMON_DIR, not GIT_DIR

 Document the fact that .git/info/exclude is shared across worktrees
 linked to the same repository.

 Will merge to 'next'?
 source: <d58b6e921d3005c6170fc6c47f175214acb3fa68.1778249267.git.ben.knoble+github@gmail.com>


* jc/t5551-fix-expensive (2026-05-07) 1 commit
 - t5551: "GIT_TEST_LONG=Yes make test" is broken

 Test fix.

 Will merge to 'next'.
 source: <xmqqqznmeaco.fsf@gitster.g>


* kk/paint-down-to-common-optim (2026-05-08) 1 commit
 - commit-reach: early exit paint_down_to_common for single merge-base

 "git merge-base" optimization.

 Comments?
 source: <pull.2109.git.1778252837132.gitgitgadget@gmail.com>


* st/daemon-sockaddr-fixes (2026-05-08) 1 commit
 - daemon: fix network address handling bugs

 Correct use of sockaddr API in "git daemon".

 Comments?
 source: <pull.2299.git.git.1778291290159.gitgitgadget@gmail.com>


* ag/rebase-update-refs-limit-to-branches (2026-05-10) 1 commit
 - rebase: ignore non-branch update-refs

 "git rebase --update-refs", when used with an rebase.instructionFormat
 with "%d" (describe) in it, tried to update local branch HEAD by
 mistake, which has been corrected.

 Will merge to 'next'.
 source: <20260510224111.64467-2-mail@abhinavg.net>


* jc/ci-enable-expensive (2026-05-10) 2 commits
 - ci: enable EXPENSIVE for contributor builds
 - Merge branch 'js/objects-larger-than-4gb-on-windows' into jc/ci-enable-expensive
 (this branch uses js/objects-larger-than-4gb-on-windows.)

 Enable expensive tests to catch topics that may cause breakages on
 integration branches closer to their origin in the contributor PR
 builds.

 Comments?
 source: <xmqqjyta9630.fsf@gitster.g>


* rs/sideband-clear-line-before-print (2026-05-10) 1 commit
 - sideband: clear full line when printing remote messages

 Tweak the way how sideband messages from remote are printed while
 we talk with a remote repository to avoid tickling terminal
 emulator glitches.

 Will merge to 'next'.
 source: <9826dabf-c9a6-4397-8ae6-a24f9c507f1b@web.de>

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

* jh/alias-i18n-fixes (2026-04-24) 1 commit
 - alias: restore support for simple dotted aliases

 Further update to the i18n alias support to avoid regressions.

 Will merge to 'next'?
 source: <20260424161707.1514255-1-jonatan@jontes.page>


* kn/refs-generic-helpers (2026-05-04) 9 commits
 - refs: use peeled tag values in reference backends
 - refs: add peeled object ID to the `ref_update` struct
 - refs: move object parsing to the generic layer
 - update-ref: handle rejections while adding updates
 - update-ref: move `print_rejected_refs()` up
 - refs: return `ref_transaction_error` from `ref_transaction_update()`
 - refs: extract out reflog config to generic layer
 - refs: introduce `ref_store_init_options`
 - refs: remove unused typedef 'ref_transaction_commit_fn'

 Refactor service routines in the ref subsystem backends.

 Will merge to 'next'?
 source: <20260504-refs-move-to-generic-layer-v4-0-936ac2f0b1a3@gmail.com>


* ob/more-repo-config-values (2026-04-23) 8 commits
 - env: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - env: move "sparse_expect_files_outside_of_patterns" into `repo_config_values`
 - env: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Expecting a reroll.
 cf. <CAD=f0L8-_3sDGGkCzF4WA0xmUtaY_qiz__3zq5AemLgwTsqvsg@mail.gmail.com>
 source: <20260423165432.143598-1-belkid98@gmail.com>


* ps/history-fixup (2026-04-26) 3 commits
 - builtin/history: introduce "fixup" subcommand
 - builtin/history: generalize function to commit trees
 - replay: allow callers to control what happens with empty commits

 "git history" learned "fixup" command.

 Comments?
 source: <20260427-b4-pks-history-fixup-v3-0-cb908f06264b@pks.im>


* rs/grep-column-only-match-fix (2026-04-24) 1 commit
 - grep: fix --column --only-match for 2nd and later matches

 "git grep" update.

 Will merge to 'next'.
 source: <9bd69678-f04b-41d2-ad74-a386820d34c8@web.de>


* sb/unpack-index-pack-buffer-resize (2026-04-28) 1 commit
 - index-pack, unpack-objects: increase input buffer from 4 KiB to 128 KiB

 Use a larger buffer size in the code paths to ingest pack stream.

 Will merge to 'next'?
 source: <pull.2282.v4.git.git.1777387660841.gitgitgadget@gmail.com>


* bc/sign-commit-with-custom-encoding (2026-04-27) 2 commits
 - commit: sign commit after mutating buffer
 - commit: name UTF-8 function appropriately

 Signing commit with custom encoding was passing the data to be
 signed at a wrong stage in the pipeline, which has been corrected.

 Will merge to 'next'?
 source: <20260427221834.1824543-1-sandals@crustytoothpaste.net>


* cc/promisor-auto-config-url-more (2026-04-27) 9 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'
 - Merge branch 'cc/promisor-auto-config-url' into cc/promisor-auto-config-url-more

 The handling of promisor-remote protocol capability has been
 loosened to allow the other side to add to the list of promisor
 remotes via the promisor.acceptFromServerURL configuration
 variable.

 Comments?
 cf. <875x4yoys5.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260427124108.3524129-1-christian.couder@gmail.com>


* js/maintenance-fix-deadlock-on-win10 (2026-05-07) 2 commits
 - maintenance(geometric): do release the `.idx` files before repacking
 - mingw: optionally use legacy (non-POSIX) delete semantics

 To help Windows 10 installations, avoid removing files whose
 contents are still mmap()'ed.

 Will merge to 'next'.
 source: <pull.2103.v2.git.1778158273.gitgitgadget@gmail.com>


* js/objects-larger-than-4gb-on-windows (2026-05-08) 11 commits
 - ci: run expensive tests on push builds to integration branches
 - t5608: mark >4GB tests as EXPENSIVE
 - test-tool synthesize: add precomputed SHA-256 pack for 4 GiB + 1
 - test-tool synthesize: precompute pack for 4 GiB + 1
 - test-tool synthesize: use the unsafe hash for speed
 - t5608: add regression test for >4GB object clone
 - test-tool: add a helper to synthesize large packfiles
 - delta, packfile: use size_t for delta header sizes
 - odb, packfile: use size_t for streaming object sizes
 - git-zlib: handle data streams larger than 4GB
 - index-pack, unpack-objects: use size_t for object size
 (this branch is used by jc/ci-enable-expensive.)

 Update code paths that assumed "unsigned long" was long enough for
 "size_t".

 Will merge to 'next'.
 source: <pull.2102.v3.git.1778228209.gitgitgadget@gmail.com>


* js/t5564-socks-use-short-path (2026-04-29) 1 commit
  (merged to 'next' on 2026-05-11 at fbb23860ca)
 + t5564: use a short path for the SOCKS proxy socket

 Avoid hitting the pathname limit for socks proxy socket during the
 test..

 Will merge to 'master'.
 source: <pull.2100.v2.git.1777450974159.gitgitgadget@gmail.com>


* kh/doc-log-decorate-list (2026-04-27) 2 commits
 - doc: log: use the same delimiter in description list
 - doc: log: fix --decorate description list

 Doc update.

 Comments?
 source: <CV_doc_log_--decorate_list.626@msgid.xyz>


* za/t2000-modernise-more (2026-04-29) 1 commit
 - t2000: consolidate second scenario into a single test block

 Test update.

 Comments?
 source: <20260429103607.406339-1-zakariyahali100@gmail.com>


* hn/checkout-track-fetch (2026-05-08) 1 commit
 - checkout: extend --track with a "fetch" mode to refresh start-point

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 cf. <f23eb128-958f-475f-911b-eac4f6daddff@gmail.com>
 source: <pull.2281.v7.git.git.1778280727849.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-05-09) 2 commits
 - SQUASH??? tac is not portable
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Comments?
 source: <2f71a00b035e25b971641b77a6fa7626f1e2459c.1777578676.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-04-27) 3 commits
 - line-log: allow non-patch diff formats with -L
 - line-log: integrate -L output with the standard log-tree pipeline
 - revision: move -L setup before output_format-to-diff derivation

 Code clean-up.

 Comments?
 source: <pull.2094.git.1777349126.gitgitgadget@gmail.com>


* pw/rename-to-get-current-worktree (2026-05-01) 1 commit
 - worktree: rename get_worktree_from_repository()

 Code clean-up.

 Will merge to 'next'.
 source: <bd48396137f8d1352d11b3bd2dca2848f24a347d.1777648798.git.phillip.wood@dunelm.org.uk>


* ds/path-walk-filters (2026-05-04) 11 commits
 - path-walk: support `combine` filter
 - path-walk: support `object:type` filter
 - path-walk: support `tree:0` filter
 - pack-objects: support sparse:oid filter with path-walk
 - path-walk: add pl_sparse_trees to control tree pruning
 - path-walk: support blob size limit filter
 - backfill: die on incompatible filter options
 - path-walk: support blobless filter
 - t/perf: add pack-objects filter and path-walk benchmark
 - pack-objects: pass --objects with --path-walk
 - Merge branch 'en/backfill-fixes-and-edges' into ds/path-walk-filters
 (this branch uses en/backfill-fixes-and-edges.)

 The "git pack-objects --path-walk" traversal has been integrated
 with several object filters, including blobless and sparse filters.

 Expecting a reroll?
 cf. <07b36bd8-376b-4a98-a735-0c0f75452c24@gmail.com>
 source: <pull.2101.v2.git.1777926079.gitgitgadget@gmail.com>


* en/ort-cached-rename-with-trivial-resolution (2026-04-20) 1 commit
  (merged to 'next' on 2026-05-11 at 9fe24668d9)
 + merge-ort: handle cached rename & trivial resolution interaction better

 "ort" merge backend improvements.

 Will merge to 'master'.
 source: <pull.2095.git.1776724214171.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Needs review.
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* jk/revert-aa-reap-transport-child-processes (2026-04-22) 1 commit
  (merged to 'next' on 2026-05-11 at b41904c1d3)
 + Revert "transport-helper, connect: use clean_on_exit to reap children on abnormal exit"

 Revert a recent change that introduced a regression to help mksh users.

 Will merge to 'master'.
 source: <20260422230020.GA1839627@coredump.intra.peff.net>


* js/ci-github-actions-update (2026-04-30) 6 commits
  (merged to 'next' on 2026-05-11 at ba87f84054)
 + l10n: bump mshick/add-pr-comment from v2 to v3
 + ci: bump git-for-windows/setup-git-for-windows-sdk from v1 to v2
 + ci: bump actions/checkout from v5 to v6
 + ci: bump actions/github-script from v8 to v9
 + ci: bump actions/{upload,download}-artifact to v7 and v8
 + ci: bump microsoft/setup-msbuild from v2 to v3

 Update various GitHub Actions versions.

 Will merge to 'master'.
 source: <pull.2097.v3.git.1777534500.gitgitgadget@gmail.com>


* mf/format-patch-cover-letter-format-docfix (2026-04-22) 1 commit
  (merged to 'next' on 2026-05-11 at 3cca9cc117)
 + Fix docs for format.commitListFormat

 Docfix.

 Will merge to 'master'.
 source: <576d29f15e016889e02c253713656cd8cbf1f04c.1776894255.git.mroik@delayed.space>


* sg/t6112-unwanted-tilde-expansion-fix (2026-04-21) 1 commit
 - t6112: avoid tilde expansion

 Test fix.

 Will merge to 'next'.
 source: <20260421192132.51172-1-szeder.dev@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* ss/t7004-unhide-git-failures (2026-04-20) 3 commits
  (merged to 'next' on 2026-05-11 at 9ee9feacb7)
 + t7004: avoid subshells to capture git exit codes
 + t7004: dynamically grab expected state in tests
 + t7004: drop hardcoded tag count for state verification

 Test clean-up.

 Will merge to 'master'.
 cf. <aecNc-BNwaqFlg5c@pks.im>
 source: <20260421053334.5414-1-r.siddharth.shrimali@gmail.com>


* tb/pseudo-merge-bugfixes (2026-04-21) 9 commits
 - pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 - Documentation: fix broken `sampleRate` in gitpacking(7)
 - pack-bitmap: reject pseudo-merge "sampleRate" of 0
 - pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 - pack-bitmap: fix pseudo-merge lookup for shared commits
 - pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 - pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 - t5333: demonstrate various pseudo-merge bugs
 - t/helper: add 'test-tool bitmap write' subcommand

 Fixes many bugs in pseudo-merge code.

 Expecting (hopefully minor and final) reroll.
 cf. <CABPp-BGkfavqezk2SV3+K6iF8MLm8j_=ijHiPDLmv_U_o_Ykgg@mail.gmail.com>
 source: <cover.1776801694.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-04-22) 7 commits
 - send-pack: pass negotiation config in push
 - remote: add remote.*.negotiationInclude config
 - fetch: add --negotiation-include option for negotiation
 - remote: add remote.*.negotiationRestrict config
 - transport: rename negotiation_tips
 - fetch: add --negotiation-restrict option
 - t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Needs review.
 source: <pull.2085.v3.git.1776871546.gitgitgadget@gmail.com>


* en/backfill-fixes-and-edges (2026-04-15) 3 commits
  (merged to 'next' on 2026-05-11 at baccbdf26d)
 + backfill: default to grabbing edge blobs too
 + backfill: document acceptance of revision-range in more standard manner
 + backfill: reject rev-list arguments that do not make sense
 (this branch is used by ds/path-walk-filters.)

 The 'git backfill' command now rejects revision-limiting options that
 are incompatible with its operation, uses standard documentation for
 revision ranges, and includes blobs from boundary commits by default
 to improve performance of subsequent operations.

 Will merge to 'master'.
 cf. <6e95b82a-19e3-460e-86f7-f899c2df261d@gmail.com>
 source: <pull.2088.git.1776297482.gitgitgadget@gmail.com>


* mc/http-emptyauth-negotiate-fix (2026-04-30) 4 commits
 - doc: clarify http.emptyAuth values
  (merged to 'next' on 2026-04-20 at 6539524ca2)
 + t5563: add tests for http.emptyAuth with Negotiate
 + http: attempt Negotiate auth in http.emptyAuth=auto mode
 + http: extract http_reauth_prepare() from retry paths

 The 'http.emptyAuth=auto' configuration now correctly attempts
 Negotiate authentication before falling back to manual credentials.
 This allows seamless Kerberos ticket-based authentication without
 requiring users to explicitly set 'http.emptyAuth=true'.

 Will merge to 'next' and then to 'master'.
 source: <e0f236767f81ea60f90749d1bc00ab78081efd0e.1777546472.git.gitgitgadget@gmail.com>
 source: <pull.2087.git.1776331259.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-04-17) 3 commits
 - grep: prefetch necessary blobs
 - builtin/log: prefetch necessary blobs for `git cherry`
 - patch-ids.h: add missing trailing parenthesis in documentation comment

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Needs review.
 source: <pull.2089.v2.git.1776472347.gitgitgadget@gmail.com>


* en/diffstat-utf8-truncation-fix (2026-04-20) 1 commit
 - diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation

 The computation to shorten the filenames shown in diffstat measured
 width of individual UTF-8 characters to add up, but forgot to take
 into account error cases (e.g., an invalid UTF-8 sequence, or a
 control character).

 Will merge to 'next'?
 source: <pull.2093.v3.git.1776699778177.gitgitgadget@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Will merge to 'next'.
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-26) 8 commits
 - safe.bareRepository: default to "explicit" with WITH_BREAKING_CHANGES
 - status tests: filter `.gitconfig` from status output
 - ls-files tests: filter `.gitconfig` from `--others` output
 - t5601: restore `.gitconfig` after includeIf test
 - t1305: use `--git-dir=.` for bare repo in include cycle test
 - t1300: remove global config settings injected by test-lib.sh
 - t7900: do not let `$HOME/.gitconfig` interfere with XDG tests
 - test-lib: allow bare repository access when breaking changes are enabled

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Will merge to 'next'?
 source: <pull.2098.v2.git.1777214316.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Comments?
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Will merge to 'next'?
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 - config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Waiting for a review response.
 cf. <adYvSZeN0ZVqwRhi@pks.im>
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Comments?
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Will merge to 'next'.
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-04-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--no-write-chain-file` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - midx: build `keep_hashes` array in order
 - midx: use `strset` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Will merge to 'next'?
 source: <cover.1777507303.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-04-20) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260420-pks-setup-wo-the-repository-v1-0-f4a81c4988e8@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* jr/bisect-custom-terms-in-output (2026-04-17) 2 commits
 - rev-parse: use selected alternate terms to look up refs
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Needs review.
 source: <20260417-bisect-terms-v3-0-d659fa547261@schlaraffenlan.de>


* ua/push-remote-group (2026-05-03) 3 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c
 - remote: fix sign-compare warnings in push_cas_option

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Comments?
 source: <20260503153402.1333220-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-04-28) 5 commits
 - checkout -m: autostash when switching branches
 - checkout: rollback lock on early returns in merge_working_tree
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --label-ours, --label-theirs, --label-base for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Will merge to 'next'.
 source: <pull.2234.v16.git.git.1777401552.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-05-07) 5 commits
 - format-rev: introduce builtin for on-demand pretty formatting
 - name-rev: make dedicated --annotate-stdin --name-only test
 - name-rev: factor code for sharing with a new command
 - name-rev: run clang-format before factoring code
 - name-rev: wrap both blocks in braces

 A new builtin "git format-rev" is introduced for pretty formatting
 one revision expression per line or commit object names found in
 running text.

 Will merge to 'next'.
 source: <V4_CV_format-rev.6aa@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Will discard.
 cf. <xmqqik9s6qvd.fsf@gitster.g>
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-04-15) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* pw/xdiff-shrink-memory-consumption (2026-05-04) 5 commits
 - xdiff: reduce the size of array
 - xprepare: simplify error handling
 - xdiff: cleanup xdl_clean_mmatch()
 - xdiff: reduce size of action arrays
 - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 Will merge to 'next'?
 source: <cover.1777903579.git.phillip.wood@dunelm.org.uk>


* en/xdiff-cleanup-3 (2026-04-29) 6 commits
 - xdiff/xdl_cleanup_records: make execution of action easier to follow
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Will merge to 'next'.
 source: <pull.2156.v6.git.git.1777500495.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 16%]

* What's cooking in git.git (May 2026, #01)
@ 2026-05-03  3:47 18% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-05-03  3:47 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.54 has been released, and the tip of 'next' has acquired a
handful more topics, but no update to 'master' yet to kick off the
new cycle has happened (yet).  I am still mostly offline for another
week, but just had a chance to pick up updates to a handful of
topics.

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]

* jh/alias-i18n-fixes (2026-04-24) 1 commit
 - alias: restore support for simple dotted aliases

 Further update to the i18n alias support to avoid regressions.
 source: <20260424161707.1514255-1-jonatan@jontes.page>


* kn/refs-generic-helpers (2026-04-27) 9 commits
 - refs: use peeled tag values in reference backends
 - refs: add peeled object ID to the `ref_update` struct
 - refs: move object parsing to the generic layer
 - update-ref: handle rejections while adding updates
 - update-ref: move `print_rejected_refs()` up
 - refs: return `ref_transaction_error` from `ref_transaction_update()`
 - refs: extract out reflog config to generic layer
 - refs: introduce `ref_store_init_options`
 - refs: remove unused typedef 'ref_transaction_commit_fn'

 Refactor service routines in the ref subsystem backends.

 Will merge to 'next'?
 source: <20260427-refs-move-to-generic-layer-v3-0-e4638dfb7897@gmail.com>


* ob/more-repo-config-values (2026-04-23) 8 commits
 - env: move "warn_on_object_refname_ambiguity" into `struct repo_config_values`
 - env: move "sparse_expect_files_outside_of_patterns" into `repo_config_values`
 - env: move "core_sparse_checkout_cone" into `struct repo_config_values`
 - environment: move "precomposed_unicode" into `struct repo_config_values`
 - environment: move "pack_compression_level" into `struct repo_config_values`
 - environment: move `zlib_compression_level` into `struct repo_config_values`
 - environment: move "check_stat" into `struct repo_config_values`
 - environment: move "trust_ctime" into `struct repo_config_values`

 Expecting a reroll.
 cf. <CAD=f0L8-_3sDGGkCzF4WA0xmUtaY_qiz__3zq5AemLgwTsqvsg@mail.gmail.com>
 source: <20260423165432.143598-1-belkid98@gmail.com>


* ps/history-fixup (2026-04-26) 3 commits
 - builtin/history: introduce "fixup" subcommand
 - builtin/history: generalize function to commit trees
 - replay: allow callers to control what happens with empty commits

 "git history" learned "fixup" command.

 Comments?
 source: <20260427-b4-pks-history-fixup-v3-0-cb908f06264b@pks.im>


* rs/grep-column-only-match-fix (2026-04-24) 1 commit
 - grep: fix --column --only-match for 2nd and later matches

 "git grep" update.

 Will merge to 'next'?
 source: <9bd69678-f04b-41d2-ad74-a386820d34c8@web.de>


* sb/unpack-index-pack-buffer-resize (2026-04-28) 1 commit
 - index-pack, unpack-objects: increase input buffer from 4 KiB to 128 KiB

 Use a larger buffer size in the code paths to ingest pack stream.

 Will merge to 'next'?
 source: <pull.2282.v4.git.git.1777387660841.gitgitgadget@gmail.com>


* bc/sign-commit-with-custom-encoding (2026-04-27) 2 commits
 - commit: sign commit after mutating buffer
 - commit: name UTF-8 function appropriately

 Signing commit with custom encoding was passing the data to be
 signed at a wrong stage in the pipeline, which has been corrected.

 Will merge to 'next'?
 source: <20260427221834.1824543-1-sandals@crustytoothpaste.net>


* cc/promisor-auto-config-url-more (2026-04-27) 9 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - urlmatch: add url_normalize_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - t5710: simplify 'mkdir X' followed by 'git -C X init'
 - Merge branch 'cc/promisor-auto-config-url' into cc/promisor-auto-config-url-more
 (this branch uses cc/promisor-auto-config-url.)

 source: <20260427124108.3524129-1-christian.couder@gmail.com>


* js/maintenance-fix-deadlock-on-win10 (2026-04-28) 2 commits
 - maintenance(geometric): do release the `.idx` files before repacking
 - mingw: optionally use legacy (non-POSIX) delete semantics

 To help Windows 10 installations, avoid removing files whose
 contents are still mmap()'ed.

 Will merge to 'next'?
 source: <pull.2103.git.1777380768.gitgitgadget@gmail.com>


* js/objects-larger-than-4gb-on-windows (2026-04-28) 6 commits
 - t5608: add regression test for >4GB object clone
 - test-tool: add a helper to synthesize large packfiles
 - delta, packfile: use size_t for delta header sizes
 - odb, packfile: use size_t for streaming object sizes
 - git-zlib: handle data streams larger than 4GB
 - index-pack, unpack-objects: use size_t for object size

 Update code paths that assumed "unsigned long" was long enough for
 "size_t".

 Expecting a reroll to mark EXPENSIVE tests as such.
 source: <pull.2102.git.1777393580.gitgitgadget@gmail.com>


* js/t5564-socks-use-short-path (2026-04-29) 1 commit
 - t5564: use a short path for the SOCKS proxy socket

 Avoid hitting the pathname limit for socks proxy socket during the
 test..

 Will merge to 'next'.
 source: <pull.2100.v2.git.1777450974159.gitgitgadget@gmail.com>


* kh/doc-log-decorate-list (2026-04-27) 2 commits
 - doc: log: use the same delimiter in description list
 - doc: log: fix --decorate description list

 Doc update.

 Comments?
 source: <CV_doc_log_--decorate_list.626@msgid.xyz>


* za/t2000-modernise-more (2026-04-29) 1 commit
 - t2000: consolidate second scenario into a single test block

 Test update.

 Comments?
 source: <20260429103607.406339-1-zakariyahali100@gmail.com>


* hn/checkout-track-fetch (2026-04-28) 1 commit
 - checkout: extend --track with a "fetch" mode to refresh start-point

 "git checkout --track=..." learned to optionally fetch the branch
 from the remote the new branch will work with.

 Comments?
 source: <pull.2281.v5.git.git.1777367012441.gitgitgadget@gmail.com>


* mf/revision-max-count-oldest (2026-04-30) 1 commit
 - revision.c: implement --max-count-oldest

 "git rev-list" (and "git log" family of commands) learned a new "--max-count-oldest"
 that picks oldest N commits in the range instead of the usual newest.

 Comments?
 source: <2f71a00b035e25b971641b77a6fa7626f1e2459c.1777578676.git.mroik@delayed.space>


* mm/line-log-cleanup (2026-04-27) 3 commits
 - line-log: allow non-patch diff formats with -L
 - line-log: integrate -L output with the standard log-tree pipeline
 - revision: move -L setup before output_format-to-diff derivation

 Code clean-up.

 Comments?
 source: <pull.2094.git.1777349126.gitgitgadget@gmail.com>


* pw/rename-to-get-current-worktree (2026-05-01) 1 commit
 - worktree: rename get_worktree_from_repository()

 Code clean-up.

 Will merge to 'next'.
 source: <bd48396137f8d1352d11b3bd2dca2848f24a347d.1777648798.git.phillip.wood@dunelm.org.uk>


* ds/path-walk-filters (2026-05-02) 7 commits
 - pack-objects: support sparse:oid filter with path-walk
 - path-walk: add pl_sparse_trees to control tree pruning
 - path-walk: support blob size limit filter
 - backfill: die on incompatible filter options
 - path-walk: support blobless filter
 - t/perf: add pack-objects filter and path-walk benchmark
 - pack-objects: pass --objects with --path-walk

 The "git pack-objects --path-walk" traversal has been integrated
 with several object filters, including blobless and sparse filters.

 Comments?
 source: <pull.2101.git.1777731354.gitgitgadget@gmail.com>

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

* en/ort-cached-rename-with-trivial-resolution (2026-04-20) 1 commit
 - merge-ort: handle cached rename & trivial resolution interaction better

 "ort" merge backend improvements.

 Will merge to 'next'.
 source: <pull.2095.git.1776724214171.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Needs review.
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* jk/revert-aa-reap-transport-child-processes (2026-04-22) 1 commit
 - Revert "transport-helper, connect: use clean_on_exit to reap children on abnormal exit"

 Revert a recent change that introduced a regression to help mksh users.

 Will merge to 'next'.
 source: <20260422230020.GA1839627@coredump.intra.peff.net>


* js/ci-github-actions-update (2026-04-30) 6 commits
 - l10n: bump mshick/add-pr-comment from v2 to v3
 - ci: bump git-for-windows/setup-git-for-windows-sdk from v1 to v2
 - ci: bump actions/checkout from v5 to v6
 - ci: bump actions/github-script from v8 to v9
 - ci: bump actions/{upload,download}-artifact to v7 and v8
 - ci: bump microsoft/setup-msbuild from v2 to v3

 Update various GitHub Actions versions.

 Will merge to 'next'.
 source: <pull.2097.v3.git.1777534500.gitgitgadget@gmail.com>


* mf/format-patch-cover-letter-format-docfix (2026-04-22) 1 commit
 - Fix docs for format.commitListFormat

 Docfix.

 Will merge to 'next'.
 source: <576d29f15e016889e02c253713656cd8cbf1f04c.1776894255.git.mroik@delayed.space>


* sg/t6112-unwanted-tilde-expansion-fix (2026-04-21) 1 commit
 - t6112: avoid tilde expansion

 Test fix.

 Will merge to 'next'?
 source: <20260421192132.51172-1-szeder.dev@gmail.com>


* pw/status-rebase-todo (2026-05-01) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1777648598.git.phillip.wood@dunelm.org.uk>


* sb/userdiff-lisp-family (2026-04-14) 2 commits
  (merged to 'next' on 2026-04-20 at 5897c04899)
 + userdiff: extend Scheme support to cover other Lisp dialects
 + userdiff: tighten word-diff test case of the scheme driver

 The userdiff driver for the Scheme language has been extended to
 cover other Lisp dialects.

 Will merge to 'master'.
 source: <pull.2000.v4.git.1776220063.gitgitgadget@gmail.com>


* ss/t7004-unhide-git-failures (2026-04-20) 3 commits
 - t7004: avoid subshells to capture git exit codes
 - t7004: dynamically grab expected state in tests
 - t7004: drop hardcoded tag count for state verification

 Test clean-up.

 Will merge to 'next'.
 cf. <aecNc-BNwaqFlg5c@pks.im>
 source: <20260421053334.5414-1-r.siddharth.shrimali@gmail.com>


* tb/pseudo-merge-bugfixes (2026-04-21) 9 commits
 - pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 - Documentation: fix broken `sampleRate` in gitpacking(7)
 - pack-bitmap: reject pseudo-merge "sampleRate" of 0
 - pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 - pack-bitmap: fix pseudo-merge lookup for shared commits
 - pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 - pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 - t5333: demonstrate various pseudo-merge bugs
 - t/helper: add 'test-tool bitmap write' subcommand

 Fixes many bugs in pseudo-merge code.

 Expecting (hopefully minor and final) reroll.
 cf. <CABPp-BGkfavqezk2SV3+K6iF8MLm8j_=ijHiPDLmv_U_o_Ykgg@mail.gmail.com>
 source: <cover.1776801694.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-04-22) 7 commits
 - send-pack: pass negotiation config in push
 - remote: add remote.*.negotiationInclude config
 - fetch: add --negotiation-include option for negotiation
 - remote: add remote.*.negotiationRestrict config
 - transport: rename negotiation_tips
 - fetch: add --negotiation-restrict option
 - t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Needs review.
 source: <pull.2085.v3.git.1776871546.gitgitgadget@gmail.com>


* en/backfill-fixes-and-edges (2026-04-15) 3 commits
 - backfill: default to grabbing edge blobs too
 - backfill: document acceptance of revision-range in more standard manner
 - backfill: reject rev-list arguments that do not make sense

 The 'git backfill' command now rejects revision-limiting options that
 are incompatible with its operation, uses standard documentation for
 revision ranges, and includes blobs from boundary commits by default
 to improve performance of subsequent operations.

 Will merge to 'next'.
 cf. <6e95b82a-19e3-460e-86f7-f899c2df261d@gmail.com>
 source: <pull.2088.git.1776297482.gitgitgadget@gmail.com>


* mc/http-emptyauth-negotiate-fix (2026-04-30) 4 commits
 - doc: clarify http.emptyAuth values
  (merged to 'next' on 2026-04-20 at 6539524ca2)
 + t5563: add tests for http.emptyAuth with Negotiate
 + http: attempt Negotiate auth in http.emptyAuth=auto mode
 + http: extract http_reauth_prepare() from retry paths

 The 'http.emptyAuth=auto' configuration now correctly attempts
 Negotiate authentication before falling back to manual credentials.
 This allows seamless Kerberos ticket-based authentication without
 requiring users to explicitly set 'http.emptyAuth=true'.

 Will merge to 'next' and then to 'master'.
 source: <e0f236767f81ea60f90749d1bc00ab78081efd0e.1777546472.git.gitgitgadget@gmail.com>
 source: <pull.2087.git.1776331259.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-04-17) 3 commits
 - grep: prefetch necessary blobs
 - builtin/log: prefetch necessary blobs for `git cherry`
 - patch-ids.h: add missing trailing parenthesis in documentation comment

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Needs review.
 source: <pull.2089.v2.git.1776472347.gitgitgadget@gmail.com>


* en/diffstat-utf8-truncation-fix (2026-04-20) 1 commit
 - diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation

 The computation to shorten the filenames shown in diffstat measured
 width of individual UTF-8 characters to add up, but forgot to take
 into account error cases (e.g., an invalid UTF-8 sequence, or a
 control character).

 Will merge to 'next'?
 source: <pull.2093.v3.git.1776699778177.gitgitgadget@gmail.com>


* sp/refs-reduce-the-repository (2026-04-04) 3 commits
  (merged to 'next' on 2026-04-09 at bb1d626802)
 + refs/reftable-backend: drop uses of the_repository
 + refs: remove the_hash_algo global state
 + refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Code clean-up to use the right instance of a repository instance in
 calls inside refs subsystem.

 Will merge to 'master'.
 source: <20260404135914.61195-1-shreyanshpaliwalcmsmn@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Will merge to 'next'?
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* jc/doc-timestamps-in-stat (2026-04-10) 1 commit
  (merged to 'next' on 2026-04-20 at 0680260012)
 + CodingGuidelines: st_mtimespec vs st_mtim vs st_mtime

 Doc update.

 Will merge to 'master'.
 source: <xmqqzf3aofdj.fsf_-_@gitster.g>


* ps/test-set-e-clean (2026-04-21) 12 commits
  (merged to 'next' on 2026-04-23 at 4f69b47b94)
 + t: detect errors outside of test cases
 + t9902: fix use of `read` with `set -e`
 + t6002: fix use of `expr` with `set -e`
 + t1301: don't fail in case setfacl(1) doesn't exist or fails
 + t0008: silence error in subshell when using `grep -v`
 + t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
 + t: prepare execution of potentially failing commands for `set -e`
 + t: prepare conditional test execution for `set -e`
 + t: prepare `git config --unset` calls for `set -e`
 + t: prepare `stop_git_daemon ()` for `set -e`
 + t: prepare `test_must_fail ()` for `set -e`
 + t: prepare `test_match_signal ()` calls for `set -e`

 The test suite harness and many individual test scripts have been
 updated to work correctly when 'set -e' is in effect, which helps
 detect misspelled test commands.

 Will merge to 'master'.
 source: <20260421-b4-pks-tests-with-set-e-v6-0-26330e3061ab@pks.im>


* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-26) 8 commits
 - safe.bareRepository: default to "explicit" with WITH_BREAKING_CHANGES
 - status tests: filter `.gitconfig` from status output
 - ls-files tests: filter `.gitconfig` from `--others` output
 - t5601: restore `.gitconfig` after includeIf test
 - t1305: use `--git-dir=.` for bare repo in include cycle test
 - t1300: remove global config settings injected by test-lib.sh
 - t7900: do not let `$HOME/.gitconfig` interfere with XDG tests
 - test-lib: allow bare repository access when breaking changes are enabled

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Will merge to 'next'?
 source: <pull.2098.v2.git.1777214316.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Comments?
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* bc/rust-by-default (2026-04-09) 4 commits
  (merged to 'next' on 2026-04-23 at fb9310bfae)
 + Enable Rust by default
 + Linux: link against libdl
 + ci: install cargo on Alpine
 + docs: update version with default Rust support

 Rust support is enabled by default (but still allows opting out) in
 some future version of Git.

 Will merge to 'master'.
 source: <20260409224434.1861422-1-sandals@crustytoothpaste.net>


* ps/shift-root-in-graph (2026-04-27) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Will merge to 'next'?
 source: <20260427102838.44867-2-pabloosabaterr@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 - config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Waiting for a review response.
 cf. <adYvSZeN0ZVqwRhi@pks.im>
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
  (merged to 'next' on 2026-04-13 at 68c82a9f37)
 + cache-tree: fix inverted object existence check in cache_tree_fully_valid

 The check that implements the logic to see if an in-core cache-tree
 is fully ready to write out a tree object was broken, which has
 been corrected.

 Will merge to 'master'.
 source: <20260406192711.68870-1-davidlin@stripe.com>


* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
  (merged to 'next' on 2026-04-13 at 0e6c98f313)
 + doc: convert git-describe manual page to synopsis style
 + doc: convert git-shortlog manual page to synopsis style
 + doc: convert git-range-diff manual page to synopsis style
 + doc: convert git-difftool manual page to synopsis style

 Doc mark-up updates.

 Will merge to 'master'.
 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Comments?
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Will merge to 'next'?
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-04-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--no-write-chain-file` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - midx: build `keep_hashes` array in order
 - midx: use `strset` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Will merge to 'next'?
 source: <cover.1777507303.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-04-20) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260420-pks-setup-wo-the-repository-v1-0-f4a81c4988e8@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* cc/promisor-auto-config-url (2026-04-07) 10 commits
  (merged to 'next' on 2026-04-13 at 289fcba081)
 + t5710: use proper file:// URIs for absolute paths
 + promisor-remote: remove the 'accepted' strvec
 + promisor-remote: keep accepted promisor_info structs alive
 + promisor-remote: refactor accept_from_server()
 + promisor-remote: refactor has_control_char()
 + promisor-remote: refactor should_accept_remote() control flow
 + promisor-remote: reject empty name or URL in advertised remote
 + promisor-remote: clarify that a remote is ignored
 + promisor-remote: pass config entry to all_fields_match() directly
 + promisor-remote: try accepted remotes before others in get_direct()
 (this branch is used by cc/promisor-auto-config-url-more.)

 Promisor remote handling has been refactored and fixed in
 preparation for auto-configuration of advertised remotes.

 Will merge to 'master'.
 source: <20260407115243.358642-1-christian.couder@gmail.com>


* jr/bisect-custom-terms-in-output (2026-04-17) 2 commits
 - rev-parse: use selected alternate terms to look up refs
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Needs review.
 source: <20260417-bisect-terms-v3-0-d659fa547261@schlaraffenlan.de>


* ua/push-remote-group (2026-04-27) 3 commits
 - SQUASH??? -Werror=sign-compare workaround
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.
 source: <20260427140530.856125-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-04-28) 5 commits
 - checkout -m: autostash when switching branches
 - checkout: rollback lock on early returns in merge_working_tree
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --label-ours, --label-theirs, --label-base for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Will merge to 'next'?
 source: <pull.2234.v16.git.git.1777401552.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-04-30) 6 commits
 . SQUASH???
 . format-rev: introduce builtin for on-demand pretty formatting
 . name-rev: make dedicated --annotate-stdin --name-only test
 . name-rev: factor code for sharing with a new command
 . name-rev: run clang-format before factoring code
 . name-rev: wrap both blocks in braces

 A new builtin "git format-rev" is introduced for pretty formatting
 one revision expression per line or commit object names found in
 running text.

 Breaks CI.
 cf. <8cdfbf18-6137-47c0-8134-4cd9f767fa4f@app.fastmail.com>
 source: <V3_CV_format-rev.66a@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-04-27) 11 commits
 - SQUASH???
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting a reroll.
 source: <SY0P300MB0801677A2A1E0FD38D06A841CE2A2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Will discard.
 cf. <xmqqik9s6qvd.fsf@gitster.g>
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-04-15) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-04-10) 13 commits
  (merged to 'next' on 2026-04-13 at 0a6acf0d17)
 + t1800: test SIGPIPE with parallel hooks
 + hook: allow hook.jobs=-1 to use all available CPU cores
 + hook: add hook.<event>.enabled switch
 + hook: move is_known_hook() to hook.c for wider use
 + hook: warn when hook.<friendly-name>.jobs is set
 + hook: add per-event jobs config
 + hook: add -j/--jobs option to git hook run
 + hook: mark non-parallelizable hooks
 + hook: allow pre-push parallel execution
 + hook: allow parallel hook execution
 + hook: parse the hook.jobs config
 + config: add a repo_config_get_uint() helper
 + repository: fix repo_init() memleak due to missing _clear()

 Will merge to 'master'.
 source: <20260410090608.75283-1-adrian.ratiu@collabora.com>


* pw/xdiff-shrink-memory-consumption (2026-04-02) 4 commits
 . xdiff: reduce the size of array
 . xprepare: simplify error handling
 . xdiff: cleanup xdl_clean_mmatch()
 . xdiff: reduce size of action arrays

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 Needs to be rebased on updated en/xdiff-cleanup-3.
 source: <cover.1775141855.git.phillip.wood@dunelm.org.uk>


* en/xdiff-cleanup-3 (2026-04-29) 6 commits
 - xdiff/xdl_cleanup_records: make execution of action easier to follow
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer

 Preparation of the xdiff/ codebase to work with Rust.

 Will merge to 'next'?
 source: <pull.2156.v6.git.git.1777500495.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 18%]

* What's cooking in git.git (Apr 2026, #08)
@ 2026-04-23 10:38 21% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-04-23 10:38 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.54 has been released, and the tip of 'next' has acquired a
handful more topics, but no update to 'master' yet to kick off the
new cycle has happened (yet).  I am still mostly offline for a
couple of weeks, but just had a chance to pick up updates to a
handful of topics.

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]

* en/ort-cached-rename-with-trivial-resolution (2026-04-20) 1 commit
 - merge-ort: handle cached rename & trivial resolution interaction better

 "ort" merge backend improvements.

 Will merge to 'next'.
 source: <pull.2095.git.1776724214171.gitgitgadget@gmail.com>


* en/ort-harden-against-corrupt-trees (2026-04-20) 5 commits
 - cache-tree: fix verify_cache() to catch non-adjacent D/F conflicts
 - merge-ort: abort merge when trees have duplicate entries
 - merge-ort: free diff pairs queue in clear_or_reinit_internal_opts()
 - merge-ort: drop unnecessary show_all_errors from collect_merge_info()
 - merge-ort: propagate callback errors from traverse_trees_wrapper()

 "ort" merge backend handles merging corrupt trees better by
 aborting when it should.

 Needs review.
 source: <pull.2096.git.1776731171.gitgitgadget@gmail.com>


* jk/revert-aa-reap-transport-child-processes (2026-04-22) 1 commit
 - Revert "transport-helper, connect: use clean_on_exit to reap children on abnormal exit"

 Revert a recent change that introduced a regression to help mksh users.

 Will merge to 'next'.
 source: <20260422230020.GA1839627@coredump.intra.peff.net>


* js/ci-github-actions-update (2026-04-21) 4 commits
 - ci: bump actions/checkout from v5 to v6
 - ci: bump actions/github-script from v8 to v9
 - ci: bump actions/{upload,download}-artifact to v7 and v8
 - ci: bump microsoft/setup-msbuild from v2 to v3

 Update various GitHub Actions versions.

 Will merge to 'next'.
 source: <pull.2097.git.1776775319.gitgitgadget@gmail.com>


* mf/format-patch-cover-letter-format-docfix (2026-04-22) 1 commit
 - Fix docs for format.commitListFormat

 Docfix.

 Will merge to 'next'.
 source: <576d29f15e016889e02c253713656cd8cbf1f04c.1776894255.git.mroik@delayed.space>


* sg/t6112-unwanted-tilde-expansion-fix (2026-04-21) 1 commit
 - t6112: avoid tilde expansion

 Test fix.

 Will merge to 'next'?
 source: <20260421192132.51172-1-szeder.dev@gmail.com>

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

* pw/status-rebase-todo (2026-04-20) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1776697483.git.phillip.wood@dunelm.org.uk>


* sb/userdiff-lisp-family (2026-04-14) 2 commits
  (merged to 'next' on 2026-04-20 at 5897c04899)
 + userdiff: extend Scheme support to cover other Lisp dialects
 + userdiff: tighten word-diff test case of the scheme driver

 The userdiff driver for the Scheme language has been extended to
 cover other Lisp dialects.

 Will merge to 'master'.
 source: <pull.2000.v4.git.1776220063.gitgitgadget@gmail.com>


* ss/t7004-unhide-git-failures (2026-04-20) 3 commits
 - t7004: avoid subshells to capture git exit codes
 - t7004: dynamically grab expected state in tests
 - t7004: drop hardcoded tag count for state verification

 Test clean-up.

 Will merge to 'next'.
 cf. <aecNc-BNwaqFlg5c@pks.im>
 source: <20260421053334.5414-1-r.siddharth.shrimali@gmail.com>


* tb/pseudo-merge-bugfixes (2026-04-21) 9 commits
 - pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 - Documentation: fix broken `sampleRate` in gitpacking(7)
 - pack-bitmap: reject pseudo-merge "sampleRate" of 0
 - pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 - pack-bitmap: fix pseudo-merge lookup for shared commits
 - pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 - pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 - t5333: demonstrate various pseudo-merge bugs
 - t/helper: add 'test-tool bitmap write' subcommand

 Fixes many bugs in pseudo-merge code.

 Expecting (hopefully minor and final) reroll.
 cf. <CABPp-BGkfavqezk2SV3+K6iF8MLm8j_=ijHiPDLmv_U_o_Ykgg@mail.gmail.com>
 source: <cover.1776801694.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-04-22) 7 commits
 - send-pack: pass negotiation config in push
 - remote: add remote.*.negotiationInclude config
 - fetch: add --negotiation-include option for negotiation
 - remote: add remote.*.negotiationRestrict config
 - transport: rename negotiation_tips
 - fetch: add --negotiation-restrict option
 - t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Needs review.
 source: <pull.2085.v3.git.1776871546.gitgitgadget@gmail.com>


* en/backfill-fixes-and-edges (2026-04-15) 3 commits
 - backfill: default to grabbing edge blobs too
 - backfill: document acceptance of revision-range in more standard manner
 - backfill: reject rev-list arguments that do not make sense

 The 'git backfill' command now rejects revision-limiting options that
 are incompatible with its operation, uses standard documentation for
 revision ranges, and includes blobs from boundary commits by default
 to improve performance of subsequent operations.

 Needs review.
 source: <pull.2088.git.1776297482.gitgitgadget@gmail.com>


* mc/http-emptyauth-negotiate-fix (2026-04-16) 3 commits
  (merged to 'next' on 2026-04-20 at 6539524ca2)
 + t5563: add tests for http.emptyAuth with Negotiate
 + http: attempt Negotiate auth in http.emptyAuth=auto mode
 + http: extract http_reauth_prepare() from retry paths

 The 'http.emptyAuth=auto' configuration now correctly attempts
 Negotiate authentication before falling back to manual credentials.
 This allows seamless Kerberos ticket-based authentication without
 requiring users to explicitly set 'http.emptyAuth=true'.

 Will merge to 'master'.
 source: <pull.2087.git.1776331259.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-04-17) 3 commits
 - grep: prefetch necessary blobs
 - builtin/log: prefetch necessary blobs for `git cherry`
 - patch-ids.h: add missing trailing parenthesis in documentation comment

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Needs review.
 source: <pull.2089.v2.git.1776472347.gitgitgadget@gmail.com>


* en/diffstat-utf8-truncation-fix (2026-04-20) 1 commit
 - diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation

 The computation to shorten the filenames shown in diffstat measured
 width of individual UTF-8 characters to add up, but forgot to take
 into account error cases (e.g., an invalid UTF-8 sequence, or a
 control character).

 Will merge to 'next'?
 source: <pull.2093.v3.git.1776699778177.gitgitgadget@gmail.com>


* sp/refs-reduce-the-repository (2026-04-04) 3 commits
  (merged to 'next' on 2026-04-09 at bb1d626802)
 + refs/reftable-backend: drop uses of the_repository
 + refs: remove the_hash_algo global state
 + refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Code clean-up to use the right instance of a repository instance in
 calls inside refs subsystem.

 Will merge to 'master'.
 source: <20260404135914.61195-1-shreyanshpaliwalcmsmn@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Will merge to 'next'?
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* jc/doc-timestamps-in-stat (2026-04-10) 1 commit
  (merged to 'next' on 2026-04-20 at 0680260012)
 + CodingGuidelines: st_mtimespec vs st_mtim vs st_mtime

 Doc update.

 Will merge to 'master'.
 source: <xmqqzf3aofdj.fsf_-_@gitster.g>


* ps/test-set-e-clean (2026-04-21) 12 commits
  (merged to 'next' on 2026-04-23 at 4f69b47b94)
 + t: detect errors outside of test cases
 + t9902: fix use of `read` with `set -e`
 + t6002: fix use of `expr` with `set -e`
 + t1301: don't fail in case setfacl(1) doesn't exist or fails
 + t0008: silence error in subshell when using `grep -v`
 + t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
 + t: prepare execution of potentially failing commands for `set -e`
 + t: prepare conditional test execution for `set -e`
 + t: prepare `git config --unset` calls for `set -e`
 + t: prepare `stop_git_daemon ()` for `set -e`
 + t: prepare `test_must_fail ()` for `set -e`
 + t: prepare `test_match_signal ()` calls for `set -e`

 The test suite harness and many individual test scripts have been
 updated to work correctly when 'set -e' is in effect, which helps
 detect misspelled test commands.

 Will merge to 'master'.
 source: <20260421-b4-pks-tests-with-set-e-v6-0-26330e3061ab@pks.im>


* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-02) 17 commits
 - git p4 clone --bare: need to be explicit about the gitdir
 - t9700: stop relying on implicit bare repo discovery
 - t9210: pass `safe.bareRepository=all` to `scalar register`
 - t6020: use `-C` for worktree, `--git-dir` for bare repository
 - t5619: wrap `test_commit_bulk` in `GIT_DIR` subshell for bare repo
 - t5540/t5541: avoid accessing a bare repository via `-C <dir>`
 - t5509: specify bare repository path explicitly
 - t5505: export `GIT_DIR` after `git init --bare`
 - t5503: avoid discovering a bare repository
 - t2406: use `--git-dir=.` for bare repository worktree repair
 - t2400: explicitly specify bare repo for `git worktree add`
 - t1900: avoid using `-C <dir>` for a bare repository
 - t1020: use `--git-dir` instead of subshell for bare repo
 - t0056: allow implicit bare repo discovery for `-C` work-tree tests
 - t0003: use `--git-dir` for bare repo attribute tests
 - t0001: replace `cd`+`git` with `git --git-dir` in `check_config`
 - t0001: allow implicit bare repo discovery for aliased-command test

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Waiting for review response.
 cf. <xmqq1pgsdrdw.fsf@gitster.g>
 source: <pull.2076.git.1775140403.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Comments?
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* bc/rust-by-default (2026-04-09) 4 commits
  (merged to 'next' on 2026-04-23 at fb9310bfae)
 + Enable Rust by default
 + Linux: link against libdl
 + ci: install cargo on Alpine
 + docs: update version with default Rust support

 Rust support is enabled by default (but still allows opting out) in
 some future version of Git.

 Will merge to 'master'.
 source: <20260409224434.1861422-1-sandals@crustytoothpaste.net>


* ps/shift-root-in-graph (2026-04-04) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Will merge to 'next'?
 source: <20260404092425.550346-2-pabloosabaterr@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 - config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Waiting for a review response.
 cf. <adYvSZeN0ZVqwRhi@pks.im>
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
  (merged to 'next' on 2026-04-13 at 68c82a9f37)
 + cache-tree: fix inverted object existence check in cache_tree_fully_valid

 The check that implements the logic to see if an in-core cache-tree
 is fully ready to write out a tree object was broken, which has
 been corrected.

 Will merge to 'master'.
 source: <20260406192711.68870-1-davidlin@stripe.com>


* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
  (merged to 'next' on 2026-04-13 at 0e6c98f313)
 + doc: convert git-describe manual page to synopsis style
 + doc: convert git-shortlog manual page to synopsis style
 + doc: convert git-range-diff manual page to synopsis style
 + doc: convert git-difftool manual page to synopsis style

 Doc mark-up updates.

 Will merge to 'master'.
 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Comments?
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Will merge to 'next'?
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--checksum-only` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - strvec: introduce `strvec_init_alloc()`
 - midx: use `string_list` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Expecting a reroll.
 cf. <acxBUkHDolY9VCnR@nand.local>
 source: <cover.1774820449.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-04-20) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260420-pks-setup-wo-the-repository-v1-0-f4a81c4988e8@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* cc/promisor-auto-config-url (2026-04-07) 10 commits
  (merged to 'next' on 2026-04-13 at 289fcba081)
 + t5710: use proper file:// URIs for absolute paths
 + promisor-remote: remove the 'accepted' strvec
 + promisor-remote: keep accepted promisor_info structs alive
 + promisor-remote: refactor accept_from_server()
 + promisor-remote: refactor has_control_char()
 + promisor-remote: refactor should_accept_remote() control flow
 + promisor-remote: reject empty name or URL in advertised remote
 + promisor-remote: clarify that a remote is ignored
 + promisor-remote: pass config entry to all_fields_match() directly
 + promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling has been refactored and fixed in
 preparation for auto-configuration of advertised remotes.

 Will merge to 'master'.
 source: <20260407115243.358642-1-christian.couder@gmail.com>


* jr/bisect-custom-terms-in-output (2026-04-17) 2 commits
 - rev-parse: use selected alternate terms to look up refs
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Needs review.
 source: <20260417-bisect-terms-v3-0-d659fa547261@schlaraffenlan.de>


* ua/push-remote-group (2026-03-27) 3 commits
 - SQUASH??? - futureproof against the attack of the "main"
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a reroll.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 cf. <xmqqse9kj4rh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-04-15) 5 commits
 - checkout -m: autostash when switching branches
 - checkout: rollback lock on early returns in merge_working_tree
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --label-ours, --label-theirs, --label-base for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Will merge to 'next'?
 source: <pull.2234.v14.git.git.1776270259.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Expecting a reroll.
 cf. </1873f57e-76b4-48d0-8034-73f72f5fe93d@app.fastmail.com>
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-04-22) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Comments?
 source: <SY0P300MB0801AE56F740AD087D22B35ACE2D2@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Will discard.
 cf. <xmqqik9s6qvd.fsf@gitster.g>
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-04-15) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-04-10) 13 commits
  (merged to 'next' on 2026-04-13 at 0a6acf0d17)
 + t1800: test SIGPIPE with parallel hooks
 + hook: allow hook.jobs=-1 to use all available CPU cores
 + hook: add hook.<event>.enabled switch
 + hook: move is_known_hook() to hook.c for wider use
 + hook: warn when hook.<friendly-name>.jobs is set
 + hook: add per-event jobs config
 + hook: add -j/--jobs option to git hook run
 + hook: mark non-parallelizable hooks
 + hook: allow pre-push parallel execution
 + hook: allow parallel hook execution
 + hook: parse the hook.jobs config
 + config: add a repo_config_get_uint() helper
 + repository: fix repo_init() memleak due to missing _clear()

 Will merge to 'master'.
 source: <20260410090608.75283-1-adrian.ratiu@collabora.com>


* pw/xdiff-shrink-memory-consumption (2026-04-02) 5 commits
 - xdiff: reduce the size of array
 - xprepare: simplify error handling
 - xdiff: cleanup xdl_clean_mmatch()
 - xdiff: reduce size of action arrays
 - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 On hold, waiting for the base topic.
 source: <cover.1775141855.git.phillip.wood@dunelm.org.uk>


* en/xdiff-cleanup-3 (2026-04-08) 6 commits
 - xdiff/xdl_cleanup_records: put braces around the else clause
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Expecting a (hopefully small and final) reroll?
 cf. <32c34d0d-9358-43e3-9d58-5999b3ffd6c2@gmail.com>
 source: <pull.2156.v5.git.git.1775679988.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 21%]

* What's cooking in git.git (Apr 2026, #07)
@ 2026-04-20 22:46 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-04-20 22:46 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.54 has been released, and the tip of 'next' has acquired a
handful more topics, but no update to 'master' yet to kick off the
new cycle has happened (yet).  I will go offline for a couple of
weeks starting this evening.  There is no designated interim
maintainer this time, but I trust that the community can self
organize if the shape of the release and the tree turns out to be
super bad ;-).

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]

* pw/status-rebase-todo (2026-04-20) 2 commits
 - status: improve rebase todo list parsing
 - sequencer: factor out parsing of todo commands

 The display of the rebase todo list in "git status" has been
 improved to correctly abbreviate object IDs for more commands and
 avoid misinterpreting refs as object IDs.

 Needs review.
 source: <cover.1776697483.git.phillip.wood@dunelm.org.uk>

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

* sb/userdiff-lisp-family (2026-04-14) 2 commits
  (merged to 'next' on 2026-04-20 at 5897c04899)
 + userdiff: extend Scheme support to cover other Lisp dialects
 + userdiff: tighten word-diff test case of the scheme driver

 The userdiff driver for the Scheme language has been extended to
 cover other Lisp dialects.

 Will merge to 'master'.
 source: <pull.2000.v4.git.1776220063.gitgitgadget@gmail.com>


* ss/t7004-unhide-git-failures (2026-04-14) 3 commits
 - t7004: avoid subshells to capture git exit codes
 - t7004: dynamically grab expected state in tests
 - t7004: drop hardcoded tag count in invalid name test

 Test clean-up.

 Expecting a (hopefully trivial) reroll?
 cf. <aeXTcZ7K9a6kUIbk@pks.im>
 source: <20260414141828.27576-1-r.siddharth.shrimali@gmail.com>


* tb/pseudo-merge-bugfixes (2026-04-13) 8 commits
 - pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 - pack-bitmap: reject pseudo-merge "sampleRate" of 0
 - pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 - pack-bitmap: fix pseudo-merge lookup for shared commits
 - pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 - pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 - t5333: demonstrate various pseudo-merge bugs
 - t/helper: add 'test-tool bitmap write' subcommand

 Expecting a reroll.
 cf. <ad60PJ/pM/wG3krQ@nand.local>
 source: <cover.1776124588.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-04-15) 7 commits
 - send-pack: pass negotiation config in push
 - remote: add negotiationRequire config as default for --negotiation-require
 - fetch: add --negotiation-require option for negotiation
 - remote: add remote.*.negotiationRestrict config
 - transport: rename negotiation_tips
 - fetch: add --negotiation-restrict option
 - t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Needs review.
 source: <pull.2085.v2.git.1776266066.gitgitgadget@gmail.com>


* en/backfill-fixes-and-edges (2026-04-15) 3 commits
 - backfill: default to grabbing edge blobs too
 - backfill: document acceptance of revision-range in more standard manner
 - backfill: reject rev-list arguments that do not make sense

 The 'git backfill' command now rejects revision-limiting options that
 are incompatible with its operation, uses standard documentation for
 revision ranges, and includes blobs from boundary commits by default
 to improve performance of subsequent operations.

 Needs review.
 source: <pull.2088.git.1776297482.gitgitgadget@gmail.com>


* mc/http-emptyauth-negotiate-fix (2026-04-16) 3 commits
  (merged to 'next' on 2026-04-20 at 6539524ca2)
 + t5563: add tests for http.emptyAuth with Negotiate
 + http: attempt Negotiate auth in http.emptyAuth=auto mode
 + http: extract http_reauth_prepare() from retry paths

 The 'http.emptyAuth=auto' configuration now correctly attempts
 Negotiate authentication before falling back to manual credentials.
 This allows seamless Kerberos ticket-based authentication without
 requiring users to explicitly set 'http.emptyAuth=true'.

 Will merge to 'master'.
 source: <pull.2087.git.1776331259.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-04-17) 3 commits
 - grep: prefetch necessary blobs
 - builtin/log: prefetch necessary blobs for `git cherry`
 - patch-ids.h: add missing trailing parenthesis in documentation comment

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Needs review.
 source: <pull.2089.v2.git.1776472347.gitgitgadget@gmail.com>


* en/diffstat-utf8-truncation-fix (2026-04-20) 1 commit
 - diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation

 The computation to shorten the filenames shown in diffstat measured
 width of individual UTF-8 characters to add up, but forgot to take
 into account error cases (e.g., an invalid UTF-8 sequence, or a
 control character).

 Will merge to 'next'?
 source: <pull.2093.v3.git.1776699778177.gitgitgadget@gmail.com>


* sp/refs-reduce-the-repository (2026-04-04) 3 commits
  (merged to 'next' on 2026-04-09 at bb1d626802)
 + refs/reftable-backend: drop uses of the_repository
 + refs: remove the_hash_algo global state
 + refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Code clean-up to use the right instance of a repository instance in
 calls inside refs subsystem.

 Will merge to 'master'.
 source: <20260404135914.61195-1-shreyanshpaliwalcmsmn@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Will merge to 'next'?
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* jc/doc-timestamps-in-stat (2026-04-10) 1 commit
  (merged to 'next' on 2026-04-20 at 0680260012)
 + CodingGuidelines: st_mtimespec vs st_mtim vs st_mtime

 Doc update.

 Will merge to 'master'.
 source: <xmqqzf3aofdj.fsf_-_@gitster.g>


* ps/test-set-e-clean (2026-04-20) 12 commits
 - t: detect errors outside of test cases
 - t9902: fix use of `read` with `set -e`
 - t6002: fix use of `expr` with `set -e`
 - t1301: don't fail in case setfacl(1) doesn't exist or fails
 - t0008: silence error in subshell when using `grep -v`
 - t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
 - t: prepare execution of potentially failing commands for `set -e`
 - t: prepare conditional test execution for `set -e`
 - t: prepare `git config --unset` calls for `set -e`
 - t: prepare `stop_git_daemon ()` for `set -e`
 - t: prepare `test_must_fail ()` for `set -e`
 - t: prepare `test_match_signal ()` calls for `set -e`

 The test suite harness and many individual test scripts have been
 updated to work correctly when 'set -e' is in effect, which helps
 detect misspelled test commands.

 Will merge to 'next'.
 source: <20260420-b4-pks-tests-with-set-e-v5-0-7d3d68292f6b@pks.im>


* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-02) 17 commits
 - git p4 clone --bare: need to be explicit about the gitdir
 - t9700: stop relying on implicit bare repo discovery
 - t9210: pass `safe.bareRepository=all` to `scalar register`
 - t6020: use `-C` for worktree, `--git-dir` for bare repository
 - t5619: wrap `test_commit_bulk` in `GIT_DIR` subshell for bare repo
 - t5540/t5541: avoid accessing a bare repository via `-C <dir>`
 - t5509: specify bare repository path explicitly
 - t5505: export `GIT_DIR` after `git init --bare`
 - t5503: avoid discovering a bare repository
 - t2406: use `--git-dir=.` for bare repository worktree repair
 - t2400: explicitly specify bare repo for `git worktree add`
 - t1900: avoid using `-C <dir>` for a bare repository
 - t1020: use `--git-dir` instead of subshell for bare repo
 - t0056: allow implicit bare repo discovery for `-C` work-tree tests
 - t0003: use `--git-dir` for bare repo attribute tests
 - t0001: replace `cd`+`git` with `git --git-dir` in `check_config`
 - t0001: allow implicit bare repo discovery for aliased-command test

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Waiting for review response.
 cf. <xmqq1pgsdrdw.fsf@gitster.g>
 source: <pull.2076.git.1775140403.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Comments?
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* bc/rust-by-default (2026-04-09) 4 commits
 - Enable Rust by default
 - Linux: link against libdl
 - ci: install cargo on Alpine
 - docs: update version with default Rust support

 Rust support is enabled by default (but still allows opting out) in
 some future version of Git.

 Will merge to 'next'.
 source: <20260409224434.1861422-1-sandals@crustytoothpaste.net>


* ps/shift-root-in-graph (2026-04-04) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Will merge to 'next'?
 source: <20260404092425.550346-2-pabloosabaterr@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 - config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Waiting for a review response.
 cf. <adYvSZeN0ZVqwRhi@pks.im>
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
  (merged to 'next' on 2026-04-13 at 68c82a9f37)
 + cache-tree: fix inverted object existence check in cache_tree_fully_valid

 The check that implements the logic to see if an in-core cache-tree
 is fully ready to write out a tree object was broken, which has
 been corrected.

 Will merge to 'master'.
 source: <20260406192711.68870-1-davidlin@stripe.com>


* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
  (merged to 'next' on 2026-04-13 at 0e6c98f313)
 + doc: convert git-describe manual page to synopsis style
 + doc: convert git-shortlog manual page to synopsis style
 + doc: convert git-range-diff manual page to synopsis style
 + doc: convert git-difftool manual page to synopsis style

 Doc mark-up updates.

 Will merge to 'master'.
 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Comments?
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Will merge to 'next'?
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--checksum-only` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - strvec: introduce `strvec_init_alloc()`
 - midx: use `string_list` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Expecting a reroll.
 cf. <acxBUkHDolY9VCnR@nand.local>
 source: <cover.1774820449.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-04-20) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260420-pks-setup-wo-the-repository-v1-0-f4a81c4988e8@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* cc/promisor-auto-config-url (2026-04-07) 10 commits
  (merged to 'next' on 2026-04-13 at 289fcba081)
 + t5710: use proper file:// URIs for absolute paths
 + promisor-remote: remove the 'accepted' strvec
 + promisor-remote: keep accepted promisor_info structs alive
 + promisor-remote: refactor accept_from_server()
 + promisor-remote: refactor has_control_char()
 + promisor-remote: refactor should_accept_remote() control flow
 + promisor-remote: reject empty name or URL in advertised remote
 + promisor-remote: clarify that a remote is ignored
 + promisor-remote: pass config entry to all_fields_match() directly
 + promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling has been refactored and fixed in
 preparation for auto-configuration of advertised remotes.

 Will merge to 'master'.
 source: <20260407115243.358642-1-christian.couder@gmail.com>


* jr/bisect-custom-terms-in-output (2026-04-17) 2 commits
 - rev-parse: use selected alternate terms to look up refs
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Needs review.
 source: <20260417-bisect-terms-v3-0-d659fa547261@schlaraffenlan.de>


* ua/push-remote-group (2026-03-27) 3 commits
 - SQUASH??? - futureproof against the attack of the "main"
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a reroll.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 cf. <xmqqse9kj4rh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-04-15) 5 commits
 - checkout -m: autostash when switching branches
 - checkout: rollback lock on early returns in merge_working_tree
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --label-ours, --label-theirs, --label-base for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Will merge to 'next'?
 source: <pull.2234.v14.git.git.1776270259.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Expecting a reroll.
 cf. </1873f57e-76b4-48d0-8034-73f72f5fe93d@app.fastmail.com>
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Will discard.
 cf. <xmqqik9s6qvd.fsf@gitster.g>
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-04-15) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-04-10) 13 commits
  (merged to 'next' on 2026-04-13 at 0a6acf0d17)
 + t1800: test SIGPIPE with parallel hooks
 + hook: allow hook.jobs=-1 to use all available CPU cores
 + hook: add hook.<event>.enabled switch
 + hook: move is_known_hook() to hook.c for wider use
 + hook: warn when hook.<friendly-name>.jobs is set
 + hook: add per-event jobs config
 + hook: add -j/--jobs option to git hook run
 + hook: mark non-parallelizable hooks
 + hook: allow pre-push parallel execution
 + hook: allow parallel hook execution
 + hook: parse the hook.jobs config
 + config: add a repo_config_get_uint() helper
 + repository: fix repo_init() memleak due to missing _clear()

 Will merge to 'master'.
 source: <20260410090608.75283-1-adrian.ratiu@collabora.com>


* pw/xdiff-shrink-memory-consumption (2026-04-02) 5 commits
 - xdiff: reduce the size of array
 - xprepare: simplify error handling
 - xdiff: cleanup xdl_clean_mmatch()
 - xdiff: reduce size of action arrays
 - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 On hold, waiting for the base topic.
 source: <cover.1775141855.git.phillip.wood@dunelm.org.uk>


* en/xdiff-cleanup-3 (2026-04-08) 6 commits
 - xdiff/xdl_cleanup_records: put braces around the else clause
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Expecting a (hopefully small and final) reroll?
 cf. <32c34d0d-9358-43e3-9d58-5999b3ffd6c2@gmail.com>
 source: <pull.2156.v5.git.git.1775679988.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 23%]

* What's cooking in git.git (Apr 2026, #06)
@ 2026-04-20 16:15 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-04-20 16:15 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.54 (final) has been tagged.  Thank you, everybody, for
participating.  I will go offline for a couple of weeks starting
this evening, hopefully after updating 'next' and possibly also
pushing out the first batch of the new cycle.  There is no
designated interim maintainer this time, but I trust that the
community can self organize during my absense, if the shape of the
release and the tree turns out to be super bad ;-).

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/

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

* sb/userdiff-lisp-family (2026-04-14) 2 commits
 - userdiff: extend Scheme support to cover other Lisp dialects
 - userdiff: tighten word-diff test case of the scheme driver

 The userdiff driver for the Scheme language has been extended to
 cover other Lisp dialects.

 Will merge to 'next'.
 source: <pull.2000.v4.git.1776220063.gitgitgadget@gmail.com>


* ss/t7004-unhide-git-failures (2026-04-14) 3 commits
 - t7004: avoid subshells to capture git exit codes
 - t7004: dynamically grab expected state in tests
 - t7004: drop hardcoded tag count in invalid name test

 Test clean-up.

 Expecting a (hopefully trivial) reroll?
 cf. <aeXTcZ7K9a6kUIbk@pks.im>
 source: <20260414141828.27576-1-r.siddharth.shrimali@gmail.com>


* tb/pseudo-merge-bugfixes (2026-04-13) 8 commits
 - pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 - pack-bitmap: reject pseudo-merge "sampleRate" of 0
 - pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 - pack-bitmap: fix pseudo-merge lookup for shared commits
 - pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 - pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 - t5333: demonstrate various pseudo-merge bugs
 - t/helper: add 'test-tool bitmap write' subcommand

 Expecting a reroll.
 cf. <ad60PJ/pM/wG3krQ@nand.local>
 source: <cover.1776124588.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-04-15) 7 commits
 - send-pack: pass negotiation config in push
 - remote: add negotiationRequire config as default for --negotiation-require
 - fetch: add --negotiation-require option for negotiation
 - remote: add remote.*.negotiationRestrict config
 - transport: rename negotiation_tips
 - fetch: add --negotiation-restrict option
 - t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Needs review.
 source: <pull.2085.v2.git.1776266066.gitgitgadget@gmail.com>


* en/backfill-fixes-and-edges (2026-04-15) 3 commits
 - backfill: default to grabbing edge blobs too
 - backfill: document acceptance of revision-range in more standard manner
 - backfill: reject rev-list arguments that do not make sense

 The 'git backfill' command now rejects revision-limiting options that
 are incompatible with its operation, uses standard documentation for
 revision ranges, and includes blobs from boundary commits by default
 to improve performance of subsequent operations.

 Needs review.
 source: <pull.2088.git.1776297482.gitgitgadget@gmail.com>


* mc/http-emptyauth-negotiate-fix (2026-04-16) 3 commits
 - t5563: add tests for http.emptyAuth with Negotiate
 - http: attempt Negotiate auth in http.emptyAuth=auto mode
 - http: extract http_reauth_prepare() from retry paths

 The 'http.emptyAuth=auto' configuration now correctly attempts
 Negotiate authentication before falling back to manual credentials.
 This allows seamless Kerberos ticket-based authentication without
 requiring users to explicitly set 'http.emptyAuth=true'.

 Will merge to 'next'.
 source: <pull.2087.git.1776331259.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-04-17) 3 commits
 - grep: prefetch necessary blobs
 - builtin/log: prefetch necessary blobs for `git cherry`
 - patch-ids.h: add missing trailing parenthesis in documentation comment

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Needs review.
 source: <pull.2089.v2.git.1776472347.gitgitgadget@gmail.com>


* en/diffstat-utf8-truncation-fix (2026-04-17) 1 commit
 - diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation

 The computation to shorten the filenames shown in diffstat measured
 width of individual UTF-8 characters to add up, but forgot to take
 into account error cases (e.g., an invalid UTF-8 sequence, or a
 control character).

 Will merge to 'next' and then to 'master'?
 source: <pull.2093.v2.git.1776465910538.gitgitgadget@gmail.com>


* sp/refs-reduce-the-repository (2026-04-04) 3 commits
  (merged to 'next' on 2026-04-09 at bb1d626802)
 + refs/reftable-backend: drop uses of the_repository
 + refs: remove the_hash_algo global state
 + refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Code clean-up to use the right instance of a repository instance in
 calls inside refs subsystem.

 Will cook in 'next'.
 source: <20260404135914.61195-1-shreyanshpaliwalcmsmn@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Will merge to 'next'?
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* jc/doc-timestamps-in-stat (2026-04-10) 1 commit
 - CodingGuidelines: st_mtimespec vs st_mtim vs st_mtime

 Doc update.

 Will merge to 'next'.
 source: <xmqqzf3aofdj.fsf_-_@gitster.g>


* ps/test-set-e-clean (2026-04-17) 12 commits
 - t: detect errors outside of test cases
 - t9902: fix use of `read` with `set -e`
 - t6002: fix use of `expr` with `set -e`
 - t1301: don't fail in case setfacl(1) doesn't exist or fails
 - t0008: silence error in subshell when using `grep -v`
 - t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
 - t: prepare execution of potentially failing commands for `set -e`
 - t: prepare conditional test execution for `set -e`
 - t: prepare `git config --unset` calls for `set -e`
 - t: prepare `stop_git_daemon ()` for `set -e`
 - t: prepare `test_must_fail ()` for `set -e`
 - t: prepare `test_match_signal ()` calls for `set -e`

 The test suite harness and many individual test scripts have been
 updated to work correctly when 'set -e' is in effect, which helps
 detect misspelled test commands.

 Expecting a (hopefully final) reroll.
 cf. <aeXTcZ7K9a6kUIbk@pks.im>
 source: <20260417-b4-pks-tests-with-set-e-v4-0-44d43efdafb1@pks.im>


* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-02) 17 commits
 - git p4 clone --bare: need to be explicit about the gitdir
 - t9700: stop relying on implicit bare repo discovery
 - t9210: pass `safe.bareRepository=all` to `scalar register`
 - t6020: use `-C` for worktree, `--git-dir` for bare repository
 - t5619: wrap `test_commit_bulk` in `GIT_DIR` subshell for bare repo
 - t5540/t5541: avoid accessing a bare repository via `-C <dir>`
 - t5509: specify bare repository path explicitly
 - t5505: export `GIT_DIR` after `git init --bare`
 - t5503: avoid discovering a bare repository
 - t2406: use `--git-dir=.` for bare repository worktree repair
 - t2400: explicitly specify bare repo for `git worktree add`
 - t1900: avoid using `-C <dir>` for a bare repository
 - t1020: use `--git-dir` instead of subshell for bare repo
 - t0056: allow implicit bare repo discovery for `-C` work-tree tests
 - t0003: use `--git-dir` for bare repo attribute tests
 - t0001: replace `cd`+`git` with `git --git-dir` in `check_config`
 - t0001: allow implicit bare repo discovery for aliased-command test

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Waiting for review response.
 cf. <xmqq1pgsdrdw.fsf@gitster.g>
 source: <pull.2076.git.1775140403.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Comments?
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* bc/rust-by-default (2026-04-09) 4 commits
 - Enable Rust by default
 - Linux: link against libdl
 - ci: install cargo on Alpine
 - docs: update version with default Rust support

 Rust support is enabled by default (but still allows opting out) in
 some future version of Git.

 Will merge to 'next' after Git 2.54 final gets tagged.
 source: <20260409224434.1861422-1-sandals@crustytoothpaste.net>


* ps/shift-root-in-graph (2026-04-04) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Will merge to 'next'?
 source: <20260404092425.550346-2-pabloosabaterr@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 - config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Waiting for a review response.
 cf. <adYvSZeN0ZVqwRhi@pks.im>
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
  (merged to 'next' on 2026-04-13 at 68c82a9f37)
 + cache-tree: fix inverted object existence check in cache_tree_fully_valid

 The check that implements the logic to see if an in-core cache-tree
 is fully ready to write out a tree object was broken, which has
 been corrected.

 Will cook in 'next'.
 source: <20260406192711.68870-1-davidlin@stripe.com>


* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
  (merged to 'next' on 2026-04-13 at 0e6c98f313)
 + doc: convert git-describe manual page to synopsis style
 + doc: convert git-shortlog manual page to synopsis style
 + doc: convert git-range-diff manual page to synopsis style
 + doc: convert git-difftool manual page to synopsis style

 Doc mark-up updates.

 Will cook in 'next'.
 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-18) 6 commits
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Comments?
 source: <cover.1776384902.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Will merge to 'next'?
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--checksum-only` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - strvec: introduce `strvec_init_alloc()`
 - midx: use `string_list` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Expecting a reroll.
 cf. <acxBUkHDolY9VCnR@nand.local>
 source: <cover.1774820449.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-03-30) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260330-pks-setup-wo-the-repository-v1-0-0d2e822837aa@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* cc/promisor-auto-config-url (2026-04-07) 10 commits
  (merged to 'next' on 2026-04-13 at 289fcba081)
 + t5710: use proper file:// URIs for absolute paths
 + promisor-remote: remove the 'accepted' strvec
 + promisor-remote: keep accepted promisor_info structs alive
 + promisor-remote: refactor accept_from_server()
 + promisor-remote: refactor has_control_char()
 + promisor-remote: refactor should_accept_remote() control flow
 + promisor-remote: reject empty name or URL in advertised remote
 + promisor-remote: clarify that a remote is ignored
 + promisor-remote: pass config entry to all_fields_match() directly
 + promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling has been refactored and fixed in
 preparation for auto-configuration of advertised remotes.

 Will cook in 'next'.
 source: <20260407115243.358642-1-christian.couder@gmail.com>


* jr/bisect-custom-terms-in-output (2026-04-17) 2 commits
 - rev-parse: use selected alternate terms to look up refs
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Needs review.
 source: <20260417-bisect-terms-v3-0-d659fa547261@schlaraffenlan.de>


* ua/push-remote-group (2026-03-27) 3 commits
 - SQUASH??? - futureproof against the attack of the "main"
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a reroll.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 cf. <xmqqse9kj4rh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-04-15) 5 commits
 - checkout -m: autostash when switching branches
 - checkout: rollback lock on early returns in merge_working_tree
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --label-ours, --label-theirs, --label-base for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Will merge to 'next'?
 source: <pull.2234.v14.git.git.1776270259.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Expecting a reroll.
 cf. </1873f57e-76b4-48d0-8034-73f72f5fe93d@app.fastmail.com>
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Will discard.
 cf. <xmqqik9s6qvd.fsf@gitster.g>
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-04-15) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-04-10) 13 commits
  (merged to 'next' on 2026-04-13 at 0a6acf0d17)
 + t1800: test SIGPIPE with parallel hooks
 + hook: allow hook.jobs=-1 to use all available CPU cores
 + hook: add hook.<event>.enabled switch
 + hook: move is_known_hook() to hook.c for wider use
 + hook: warn when hook.<friendly-name>.jobs is set
 + hook: add per-event jobs config
 + hook: add -j/--jobs option to git hook run
 + hook: mark non-parallelizable hooks
 + hook: allow pre-push parallel execution
 + hook: allow parallel hook execution
 + hook: parse the hook.jobs config
 + config: add a repo_config_get_uint() helper
 + repository: fix repo_init() memleak due to missing _clear()

 Will cook in 'next'.
 source: <20260410090608.75283-1-adrian.ratiu@collabora.com>


* pw/xdiff-shrink-memory-consumption (2026-04-02) 5 commits
 - xdiff: reduce the size of array
 - xprepare: simplify error handling
 - xdiff: cleanup xdl_clean_mmatch()
 - xdiff: reduce size of action arrays
 - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 On hold, waiting for the base topic.
 source: <cover.1775141855.git.phillip.wood@dunelm.org.uk>


* en/xdiff-cleanup-3 (2026-04-08) 6 commits
 - xdiff/xdl_cleanup_records: put braces around the else clause
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Expecting a (hopefully small and final) reroll?
 cf. <32c34d0d-9358-43e3-9d58-5999b3ffd6c2@gmail.com>
 source: <pull.2156.v5.git.git.1775679988.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 23%]

* What's cooking in git.git (Apr 2026, #05)
@ 2026-04-17 22:40 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-04-17 22:40 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* jk/midx-write-v1-by-default (2026-04-16) 1 commit
  (merged to 'next' on 2026-04-16 at 1b296b0f55)
 + MIDX: revert the default version to v1

 As writing version 2 MIDX files by default breaks older versions of
 Git and its reimplementations, use V2 only when necessary.
 source: <20260416200659.GB1887222@coredump.intra.peff.net>

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

* sb/userdiff-lisp-family (2026-04-14) 2 commits
 - userdiff: extend Scheme support to cover other Lisp dialects
 - userdiff: tighten word-diff test case of the scheme driver

 The userdiff driver for the Scheme language has been extended to
 cover other Lisp dialects.

 Will merge to 'next'.
 source: <pull.2000.v4.git.1776220063.gitgitgadget@gmail.com>


* ss/t7004-unhide-git-failures (2026-04-14) 3 commits
 - t7004: avoid subshells to capture git exit codes
 - t7004: dynamically grab expected state in tests
 - t7004: drop hardcoded tag count in invalid name test

 Test clean-up.

 Will merge to 'next'?
 source: <20260414141828.27576-1-r.siddharth.shrimali@gmail.com>


* tb/pseudo-merge-bugfixes (2026-04-13) 8 commits
 - pack-bitmap: prevent pattern leak on pseudo-merge re-assignment
 - pack-bitmap: reject pseudo-merge "sampleRate" of 0
 - pack-bitmap: parse commits in `find_pseudo_merge_group_for_ref()`
 - pack-bitmap: fix pseudo-merge lookup for shared commits
 - pack-bitmap: fix inverted binary search in `pseudo_merge_at()`
 - pack-bitmap-write: sort pseudo-merge commit lookup table in pack order
 - t5333: demonstrate various pseudo-merge bugs
 - t/helper: add 'test-tool bitmap write' subcommand

 Expecting a reroll.
 cf. <ad60PJ/pM/wG3krQ@nand.local>
 source: <cover.1776124588.git.me@ttaylorr.com>


* ds/fetch-negotiation-options (2026-04-15) 7 commits
 - send-pack: pass negotiation config in push
 - remote: add negotiationRequire config as default for --negotiation-require
 - fetch: add --negotiation-require option for negotiation
 - remote: add remote.*.negotiationRestrict config
 - transport: rename negotiation_tips
 - fetch: add --negotiation-restrict option
 - t5516: fix test order flakiness

 The negotiation tip options in "git fetch" have been reworked to
 allow requiring certain refs to be sent as "have" lines, and to
 restrict negotiation to a specific set of refs.

 Needs review.
 source: <pull.2085.v2.git.1776266066.gitgitgadget@gmail.com>


* en/backfill-fixes-and-edges (2026-04-15) 3 commits
 - backfill: default to grabbing edge blobs too
 - backfill: document acceptance of revision-range in more standard manner
 - backfill: reject rev-list arguments that do not make sense

 The 'git backfill' command now rejects revision-limiting options that
 are incompatible with its operation, uses standard documentation for
 revision ranges, and includes blobs from boundary commits by default
 to improve performance of subsequent operations.

 Needs review.
 source: <pull.2088.git.1776297482.gitgitgadget@gmail.com>


* mc/http-emptyauth-negotiate-fix (2026-04-16) 3 commits
 - t5563: add tests for http.emptyAuth with Negotiate
 - http: attempt Negotiate auth in http.emptyAuth=auto mode
 - http: extract http_reauth_prepare() from retry paths

 The 'http.emptyAuth=auto' configuration now correctly attempts
 Negotiate authentication before falling back to manual credentials.
 This allows seamless Kerberos ticket-based authentication without
 requiring users to explicitly set 'http.emptyAuth=true'.

 Will merge to 'next'.
 source: <pull.2087.git.1776331259.gitgitgadget@gmail.com>


* en/batch-prefetch (2026-04-16) 3 commits
 - grep: prefetch necessary blobs
 - builtin/log: prefetch necessary blobs for `git cherry`
 - patch-ids.h: add missing trailing parenthesis in documentation comment

 In a lazy clone, "git cherry" and "git grep" often fetch necessary
 blob objects one by one from promisor remotes.  It has been corrected
 to collect necessary object names and fetch them in bulk to gain
 reasonable performance.

 Needs review.
 source: <pull.2089.git.1776379694.gitgitgadget@gmail.com>


* en/diffstat-utf8-truncation-fix (2026-04-17) 1 commit
 - diff: fix out-of-bounds reads and NULL deref in diffstat UTF-8 truncation

 The computation to shorten the filenames shown in diffstat measured
 width of individual UTF-8 characters to add up, but forgot to take
 into account error cases (e.g., an invalid UTF-8 sequence, or a
 control character).

 Needs review.
 source: <pull.2093.git.1776443163041.gitgitgadget@gmail.com>

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

* sp/refs-reduce-the-repository (2026-04-04) 3 commits
  (merged to 'next' on 2026-04-09 at bb1d626802)
 + refs/reftable-backend: drop uses of the_repository
 + refs: remove the_hash_algo global state
 + refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Code clean-up to use the right instance of a repository instance in
 calls inside refs subsystem.

 Will cook in 'next'.
 source: <20260404135914.61195-1-shreyanshpaliwalcmsmn@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Will merge to 'next'?
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* jc/doc-timestamps-in-stat (2026-04-10) 1 commit
 - CodingGuidelines: st_mtimespec vs st_mtim vs st_mtime

 Doc update.

 Will merge to 'next'.
 source: <xmqqzf3aofdj.fsf_-_@gitster.g>


* ps/test-set-e-clean (2026-04-17) 12 commits
 - t: detect errors outside of test cases
 - t9902: fix use of `read` with `set -e`
 - t6002: fix use of `expr` with `set -e`
 - t1301: don't fail in case setfacl(1) doesn't exist or fails
 - t0008: silence error in subshell when using `grep -v`
 - t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
 - t: prepare execution of potentially failing commands for `set -e`
 - t: prepare conditional test execution for `set -e`
 - t: prepare `git config --unset` calls for `set -e`
 - t: prepare `stop_git_daemon ()` for `set -e`
 - t: prepare `test_must_fail ()` for `set -e`
 - t: prepare `test_match_signal ()` calls for `set -e`

 The test suite harness and many individual test scripts have been
 updated to work correctly when 'set -e' is in effect, which helps
 detect misspelled test commands.

 Will merge to 'next'?
 source: <20260417-b4-pks-tests-with-set-e-v4-0-44d43efdafb1@pks.im>


* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-02) 17 commits
 - git p4 clone --bare: need to be explicit about the gitdir
 - t9700: stop relying on implicit bare repo discovery
 - t9210: pass `safe.bareRepository=all` to `scalar register`
 - t6020: use `-C` for worktree, `--git-dir` for bare repository
 - t5619: wrap `test_commit_bulk` in `GIT_DIR` subshell for bare repo
 - t5540/t5541: avoid accessing a bare repository via `-C <dir>`
 - t5509: specify bare repository path explicitly
 - t5505: export `GIT_DIR` after `git init --bare`
 - t5503: avoid discovering a bare repository
 - t2406: use `--git-dir=.` for bare repository worktree repair
 - t2400: explicitly specify bare repo for `git worktree add`
 - t1900: avoid using `-C <dir>` for a bare repository
 - t1020: use `--git-dir` instead of subshell for bare repo
 - t0056: allow implicit bare repo discovery for `-C` work-tree tests
 - t0003: use `--git-dir` for bare repo attribute tests
 - t0001: replace `cd`+`git` with `git --git-dir` in `check_config`
 - t0001: allow implicit bare repo discovery for aliased-command test

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Waiting for review response.
 cf. <xmqq1pgsdrdw.fsf@gitster.g>
 source: <pull.2076.git.1775140403.gitgitgadget@gmail.com>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Comments?
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* bc/rust-by-default (2026-04-09) 4 commits
 - Enable Rust by default
 - Linux: link against libdl
 - ci: install cargo on Alpine
 - docs: update version with default Rust support

 Rust support is enabled by default (but still allows opting out) in
 some future version of Git.

 Will merge to 'next' after Git 2.54 final gets tagged.
 source: <20260409224434.1861422-1-sandals@crustytoothpaste.net>


* ps/shift-root-in-graph (2026-04-04) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Will merge to 'next'?
 source: <20260404092425.550346-2-pabloosabaterr@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 - config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Waiting for a review response.
 cf. <adYvSZeN0ZVqwRhi@pks.im>
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* sp/refs-with-less-the-repository (2026-04-04) 3 commits
 - refs/reftable-backend: drop uses of the_repository
 - refs: remove the_hash_algo global state
 - refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Reduce the reference to the_repository in the refs subsystem.

 Will merge to 'next'.
 cf. <adYV6NK93Kzg1EYG@pks.im>
 source: <20260404135914.61195-1-shreyanshpaliwalcmsmn@gmail.com>


* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
  (merged to 'next' on 2026-04-13 at 68c82a9f37)
 + cache-tree: fix inverted object existence check in cache_tree_fully_valid

 The check that implements the logic to see if an in-core cache-tree
 is fully ready to write out a tree object was broken, which has
 been corrected.

 Will cook in 'next'.
 source: <20260406192711.68870-1-davidlin@stripe.com>


* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
  (merged to 'next' on 2026-04-13 at 0e6c98f313)
 + doc: convert git-describe manual page to synopsis style
 + doc: convert git-shortlog manual page to synopsis style
 + doc: convert git-range-diff manual page to synopsis style
 + doc: convert git-difftool manual page to synopsis style

 Doc mark-up updates.

 Will cook in 'next'.
 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-10) 7 commits
 - SQUASH???
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Expecting a (hopefully small and final) reroll.
 cf. <adpVMfHowCBY75I1@lorenzo-VM>
 source: <cover.1775861047.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 The "promisor.quiet" configuration variable was not used from
 relevant submodules when commands like "grep --recurse-submodules"
 triggered a lazy fetch, which has been corrected.

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Comments?
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-04-15) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260416033250.4327-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--checksum-only` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - strvec: introduce `strvec_init_alloc()`
 - midx: use `string_list` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Expecting a reroll.
 cf. <acxBUkHDolY9VCnR@nand.local>
 source: <cover.1774820449.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-03-30) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260330-pks-setup-wo-the-repository-v1-0-0d2e822837aa@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* cc/promisor-auto-config-url (2026-04-07) 10 commits
  (merged to 'next' on 2026-04-13 at 289fcba081)
 + t5710: use proper file:// URIs for absolute paths
 + promisor-remote: remove the 'accepted' strvec
 + promisor-remote: keep accepted promisor_info structs alive
 + promisor-remote: refactor accept_from_server()
 + promisor-remote: refactor has_control_char()
 + promisor-remote: refactor should_accept_remote() control flow
 + promisor-remote: reject empty name or URL in advertised remote
 + promisor-remote: clarify that a remote is ignored
 + promisor-remote: pass config entry to all_fields_match() directly
 + promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling has been refactored and fixed in
 preparation for auto-configuration of advertised remotes.

 Will cook in 'next'.
 source: <20260407115243.358642-1-christian.couder@gmail.com>


* jr/bisect-custom-terms-in-output (2026-04-17) 2 commits
 - rev-parse: use selected alternate terms to look up refs
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Needs review.
 source: <20260417-bisect-terms-v3-0-d659fa547261@schlaraffenlan.de>


* ua/push-remote-group (2026-03-27) 3 commits
 - SQUASH??? - futureproof against the attack of the "main"
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a reroll.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 cf. <xmqqse9kj4rh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-04-15) 5 commits
 - checkout -m: autostash when switching branches
 - checkout: rollback lock on early returns in merge_working_tree
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --label-ours, --label-theirs, --label-base for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Will merge to 'next'?
 source: <pull.2234.v14.git.git.1776270259.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Expecting a reroll.
 cf. </1873f57e-76b4-48d0-8034-73f72f5fe93d@app.fastmail.com>
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Will discard.
 cf. <xmqqik9s6qvd.fsf@gitster.g>
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-04-15) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 source: <pull.2147.v15.git.git.1776259657.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-04-10) 13 commits
  (merged to 'next' on 2026-04-13 at 0a6acf0d17)
 + t1800: test SIGPIPE with parallel hooks
 + hook: allow hook.jobs=-1 to use all available CPU cores
 + hook: add hook.<event>.enabled switch
 + hook: move is_known_hook() to hook.c for wider use
 + hook: warn when hook.<friendly-name>.jobs is set
 + hook: add per-event jobs config
 + hook: add -j/--jobs option to git hook run
 + hook: mark non-parallelizable hooks
 + hook: allow pre-push parallel execution
 + hook: allow parallel hook execution
 + hook: parse the hook.jobs config
 + config: add a repo_config_get_uint() helper
 + repository: fix repo_init() memleak due to missing _clear()

 Will cook in 'next'.
 source: <20260410090608.75283-1-adrian.ratiu@collabora.com>


* pw/xdiff-shrink-memory-consumption (2026-04-02) 5 commits
 - xdiff: reduce the size of array
 - xprepare: simplify error handling
 - xdiff: cleanup xdl_clean_mmatch()
 - xdiff: reduce size of action arrays
 - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 On hold, waiting for the base topic.
 source: <cover.1775141855.git.phillip.wood@dunelm.org.uk>


* en/xdiff-cleanup-3 (2026-04-08) 6 commits
 - xdiff/xdl_cleanup_records: put braces around the else clause
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Expecting a (hopefully small and final) reroll?
 cf. <32c34d0d-9358-43e3-9d58-5999b3ffd6c2@gmail.com>
 source: <pull.2156.v5.git.git.1775679988.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 23%]

* What's cooking in git.git (Apr 2026, #04)
@ 2026-04-14  2:32 21% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-04-14  2:32 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

The tip of the master is hopefully identical to what will be tagged
as Git 2.54-rc2 tomorrowy.

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]

* sp/refs-reduce-the-repository (2026-04-04) 3 commits
  (merged to 'next' on 2026-04-09 at bb1d626802)
 + refs/reftable-backend: drop uses of the_repository
 + refs: remove the_hash_algo global state
 + refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Code clean-up to use the right instance of a repository instance in
 calls inside refs subsystem.

 Will cook in 'next'.
 source: <20260404135914.61195-1-shreyanshpaliwalcmsmn@gmail.com>


* ps/odb-in-memory (2026-04-10) 18 commits
 - t/unit-tests: add tests for the in-memory object source
 - odb: generic in-memory source
 - odb/source-inmemory: stub out remaining functions
 - odb/source-inmemory: implement `freshen_object()` callback
 - odb/source-inmemory: implement `count_objects()` callback
 - odb/source-inmemory: implement `find_abbrev_len()` callback
 - odb/source-inmemory: implement `for_each_object()` callback
 - odb/source-inmemory: convert to use oidtree
 - oidtree: add ability to store data
 - cbtree: allow using arbitrary wrapper structures for nodes
 - odb/source-inmemory: implement `write_object_stream()` callback
 - odb/source-inmemory: implement `write_object()` callback
 - odb/source-inmemory: implement `read_object_stream()` callback
 - odb/source-inmemory: implement `read_object_info()` callback
 - odb: fix unnecessary call to `find_cached_object()`
 - odb/source-inmemory: implement `free()` callback
 - odb: introduce "in-memory" source
 - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
 (this branch uses jt/odb-transaction-write.)

 Add a new odb "in-memory" source that is meant to only hold
 tentative objects (like the virtual blob object that represents the
 working tree file used by "git blame").

 Comments?
 source: <20260410-b4-pks-odb-source-inmemory-v3-0-22fd0fad58fe@pks.im>


* jc/doc-timestamps-in-stat (2026-04-10) 1 commit
 - CodingGuidelines: st_mtimespec vs st_mtim vs st_mtime

 Doc update.
 source: <xmqqzf3aofdj.fsf_-_@gitster.g>


* ps/test-set-e-clean (2026-04-13) 12 commits
 . t: detect errors outside of test cases
 . t9902: fix use of `read` with `set -e`
 . t6002: fix use of `expr` with `set -e`
 . t1301: don't fail in case setfacl(1) doesn't exist or fails
 . t0008: silence error in subshell when using `grep -v`
 . t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
 . t: prepare execution of potentially failing commands for `set -e`
 . t: prepare conditional test execution for `set -e`
 . t: prepare `git config --unset` calls for `set -e`
 . t: prepare `stop_git_daemon ()` for `set -e`
 . t: prepare `test_must_fail ()` for `set -e`
 . t: prepare `test_match_signal ()` calls for `set -e`

 The test suite harness and many individual test scripts have been
 updated to work correctly when 'set -e' is in effect, which helps
 detect misspelled test commands.

 Comments?
 source: <20260413-b4-pks-tests-with-set-e-v1-0-5b83763a0e84@pks.im>

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

* bc/ref-storage-default-doc-update (2026-04-02) 1 commit
  (merged to 'next' on 2026-04-09 at 6b423ab8ba)
 + docs: correct information about reftable

 Doc update.
 source: <20260402224241.4104726-1-sandals@crustytoothpaste.net>


* ds/rev-list-maximal-only-optim (2026-04-06) 3 commits
  (merged to 'next' on 2026-04-07 at 7a70817efa)
 + rev-list: use reduce_heads() for --maximal-only
 + p6011: add perf test for rev-list --maximal-only
 + t6600: test --maximal-only and --independent

 "git rev-list --maximal-only" has been optimized by borrowing the
 logic used by "git show-branch --independent", which computes the
 same kind of information much more efficiently.
 source: <pull.2082.git.1775482048.gitgitgadget@gmail.com>


* jc/ci-github-actions-use-checkout-v5 (2026-04-13) 1 commit
  (merged to 'next' on 2026-04-13 at 9c883467ad)
 + CI: bump actions/checkout from 4 to 5 for rust-analysis job

 CI dependency updates.
 source: <xmqqfr4yhg5v.fsf@gitster.g>


* jc/no-writev-does-not-work (2026-04-09) 5 commits
  (merged to 'next' on 2026-04-10 at 779546e6a3)
 + writev: retract the topic until we have a better emulation
 + Revert "compat/posix: introduce writev(3p) wrapper"
 + Revert "wrapper: introduce writev(3p) wrappers"
 + Revert "sideband: use writev(3p) to send pktlines"
 + Revert "cmake: use writev(3p) wrapper as needed"

 We used writev() in limited code paths and supplied emulation for
 platforms without working writev(), but the emulation was too
 faithful to the spec to make the result useless to send even 64kB;
 revert the topic and plan to restart the effort later.
 source: <xmqqmrzbreav.fsf_-_@gitster.g>


* jd/cache-tree-trace-wo-the-repository (2026-03-31) 1 commit
  (merged to 'next' on 2026-04-02 at e36937bb5e)
 + cache-tree: use index state repository in trace2 calls

 Code cleanup.
 source: <pull.2259.git.git.1774951373588.gitgitgadget@gmail.com>


* jk/c23-const-preserving-fixes-more (2026-04-03) 13 commits
  (merged to 'next' on 2026-04-06 at 9eebe11338)
 + git-compat-util: fix CONST_OUTPARAM typo and indentation
  (merged to 'next' on 2026-04-02 at b060d988f4)
 + refs/files-backend: drop const to fix strchr() warning
 + http: drop const to fix strstr() warning
 + range-diff: drop const to fix strstr() warnings
 + pkt-line: make packet_reader.line non-const
 + skip_prefix(): check const match between in and out params
 + pseudo-merge: fix disk reads from find_pseudo_merge()
 + find_last_dir_sep(): convert inline function to macro
 + run-command: explicitly cast away constness when assigning to void
 + pager: explicitly cast away strchr() constness
 + transport-helper: drop const to fix strchr() warnings
 + http: add const to fix strchr() warnings
 + convert: add const to fix strchr() warnings

 Further work to adjust the codebase for C23 that changes functions
 like strchr() that discarded constness when they return a pointer into
 a const string to preserve constness.
 source: <20260402041433.GA3501120@coredump.intra.peff.net>
 source: <20260404054211.GA1346444@coredump.intra.peff.net>


* jk/doc-markup-sub-list-indentation (2026-04-11) 1 commit
  (merged to 'next' on 2026-04-13 at 738824c9ca)
 + gitglossary: fix indentation of sub-lists

 Doc mark-up update for entries in the glossary with bulleted lists.
 source: <20260411215518.GA1651019@coredump.intra.peff.net>


* jt/index-fd-wo-repo-regression-fix-maint (2026-04-07) 1 commit
 + object-file: avoid ODB transaction when not writing objects
 (this branch is used by jt/index-fd-wo-repo-regression-fix.)

 During Git 2.52 timeframe, we broke streaming computation of object
 hash outside a repository, which has been corrected.


* kh/doc-am-xref (2026-04-11) 2 commits
  (merged to 'next' on 2026-04-13 at 400039b45c)
 + doc: am: correct to full --no-message-id
 + doc: am: revert Message-ID trailer claim

 Doc update.
 source: <msg-id_is_not_trailer.570@msgid.xyz>
 source: <typo_--no-message-id.572@msgid.xyz>


* kh/doc-config-list (2026-04-05) 2 commits
  (merged to 'next' on 2026-04-07 at fb95f091cc)
 + doc: gitcvs-migration: rephrase “man page”
 + doc: replace git config --list/-l with `list`

 "git config list" is the official way to spell "git config -l" and
 "git config --list".  Use it to update the documentation.
 source: <V2_CV_doc_deprecation_config_--list.569@msgid.xyz>


* ng/add-files-to-cache-wo-rename (2026-04-01) 1 commit
  (merged to 'next' on 2026-04-02 at 8723880fc0)
 + read-cache: disable renames in add_files_to_cache

 add_files_to_cache() used diff_files() to detect only the paths that
 are different between the index and the working tree and add them,
 which does not need rename detection, which interfered with unnecessary
 conflicts.
 source: <20260401190033.11325-1-blindmansion@gmail.com>


* ps/archive-prefix-doc (2026-04-08) 1 commit
  (merged to 'next' on 2026-04-09 at ed6aa0e448)
 + archive: document --prefix handling of absolute and parent paths

 Doc update.
 source: <20260408160005.193621-2-pushkarkumarsingh1970@gmail.com>


* ps/odb-cleanup (2026-03-31) 7 commits
  (merged to 'next' on 2026-04-02 at 1dd8236dfb)
 + odb: drop unneeded headers and forward decls
 + odb: rename `odb_has_object()` flags
 + odb: use enum for `odb_write_object` flags
 + odb: rename `odb_write_object()` flags
 + treewide: use enum for `odb_for_each_object()` flags
 + CodingGuidelines: document our style for flags
 + Merge branch 'ps/odb-generic-object-name-handling' into ps/odb-cleanup
 (this branch is used by ps/odb-in-memory)

 Various code clean-up around odb subsystem.
 source: <20260401-pks-odb-cleanups-v1-0-89adba9ada68@pks.im>


* ps/reftable-portability (2026-04-02) 5 commits
  (merged to 'next' on 2026-04-02 at 04adce37b9)
 + reftable/system: add abstraction to mmap files
 + reftable/system: add abstraction to retrieve time in milliseconds
 + reftable/fsck: use REFTABLE_UNUSED instead of UNUSED
 + reftable/stack: provide fsync(3p) via system header
 + reftable: introduce "reftable-system.h" header

 Update reftable library part with what is used in libgit2 to improve
 portability to different target codebases and platforms.
 source: <20260402-pks-reftable-portability-fixes-v2-0-bc110cee0ae0@pks.im>


* ss/t7004-unhide-git-failures (2026-03-31) 1 commit
  (merged to 'next' on 2026-04-02 at fec00b153f)
 + t7004: replace wc -l with modern test helpers

 Test clean-up.
 source: <20260401062029.54757-1-r.siddharth.shrimali@gmail.com>


* tc/replay-ref (2026-04-01) 4 commits
  (merged to 'next' on 2026-04-03 at 196ecde80b)
 + replay: allow to specify a ref with option --ref
 + replay: use stuck form in documentation and help message
 + builtin/replay: mark options as not negatable
 + Merge branch 'sa/replay-revert' into tc/replay-ref

 The experimental `git replay` command learned the `--ref=<ref>` option
 to allow specifying which ref to update, overriding the default behavior.
 source: <20260401-toon-replay-arbitrary-ref-v3-0-a0b4fabb34b3@iotcl.com>

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

* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-02) 17 commits
 - git p4 clone --bare: need to be explicit about the gitdir
 - t9700: stop relying on implicit bare repo discovery
 - t9210: pass `safe.bareRepository=all` to `scalar register`
 - t6020: use `-C` for worktree, `--git-dir` for bare repository
 - t5619: wrap `test_commit_bulk` in `GIT_DIR` subshell for bare repo
 - t5540/t5541: avoid accessing a bare repository via `-C <dir>`
 - t5509: specify bare repository path explicitly
 - t5505: export `GIT_DIR` after `git init --bare`
 - t5503: avoid discovering a bare repository
 - t2406: use `--git-dir=.` for bare repository worktree repair
 - t2400: explicitly specify bare repo for `git worktree add`
 - t1900: avoid using `-C <dir>` for a bare repository
 - t1020: use `--git-dir` instead of subshell for bare repo
 - t0056: allow implicit bare repo discovery for `-C` work-tree tests
 - t0003: use `--git-dir` for bare repo attribute tests
 - t0001: replace `cd`+`git` with `git --git-dir` in `check_config`
 - t0001: allow implicit bare repo discovery for aliased-command test

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Comments?
 source: <pull.2076.git.1775140403.gitgitgadget@gmail.com>


* pw/xdiff-shrink-memory-consumption (2026-04-02) 5 commits
 - xdiff: reduce the size of array
 - xprepare: simplify error handling
 - xdiff: cleanup xdl_clean_mmatch()
 - xdiff: reduce size of action arrays
 - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 On hold, waiting for the base topic.
 source: <cover.1775141855.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Comments?
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* bc/rust-by-default (2026-04-09) 4 commits
 - Enable Rust by default
 - Linux: link against libdl
 - ci: install cargo on Alpine
 - docs: update version with default Rust support

 Rust support is enabled by default (but still allows opting out) in
 some future version of Git.

 Will merge to 'next' after Git 2.54 final gets tagged.
 source: <20260409224434.1861422-1-sandals@crustytoothpaste.net>


* ps/shift-root-in-graph (2026-04-04) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Comments?
 source: <20260404092425.550346-2-pabloosabaterr@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 - config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Comments?
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* sp/refs-with-less-the-repository (2026-04-03) 3 commits
 - refs/reftable-backend: drop uses of the_repository
 - refs: remove the_hash_algo global state
 - refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Reduce the reference to the_repository in the refs subsystem.

 Comments?
 source: <20260403120938.1142533-1-shreyanshpaliwalcmsmn@gmail.com>


* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
  (merged to 'next' on 2026-04-13 at 68c82a9f37)
 + cache-tree: fix inverted object existence check in cache_tree_fully_valid

 The check that implements the logic to see if an in-core cache-tree
 is fully ready to write out a tree object was broken, which has
 been corrected.

 Will cook in 'next'.
 source: <20260406192711.68870-1-davidlin@stripe.com>


* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
  (merged to 'next' on 2026-04-13 at 0e6c98f313)
 + doc: convert git-describe manual page to synopsis style
 + doc: convert git-shortlog manual page to synopsis style
 + doc: convert git-range-diff manual page to synopsis style
 + doc: convert git-difftool manual page to synopsis style

 Doc mark-up updates.

 Will cook in 'next'.
 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>


* lp/repack-propagate-promisor-debugging-info (2026-04-10) 7 commits
 - SQUASH???
 - repack-promisor: add missing headers
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - repack-promisor add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Waiting for a review response on use of parse_pack_index()
 source: <cover.1775861047.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header
 (this branch is used by ps/odb-in-memory.)

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Comments?
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-03-31) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Expecting a (hopefully small and final) reroll?
 cf. <xmqqo6k3ztxr.fsf@gitster.g>
 source: <20260331121111.9614-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--checksum-only` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - strvec: introduce `strvec_init_alloc()`
 - midx: use `string_list` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Expecting a reroll.
 cf. <acxBUkHDolY9VCnR@nand.local>
 source: <cover.1774820449.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-03-30) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260330-pks-setup-wo-the-repository-v1-0-0d2e822837aa@pks.im>


* kh/doc-trailers (2026-04-13) 9 commits
 - doc: interpret-trailers: document comment line treatment
 - doc: interpret-trailers: commit to “trailer block” term
 - doc: interpret-trailers: add key format example
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: explain the format after the intro
 - doc: interpret-trailers: not just for commit messages
 - doc: interpret-trailers: use “metadata” in Name as well
 - doc: interpret-trailers: replace “lines” with “metadata”
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Needs review.
 source: <V2_CV_doc_int-tr_key_format.613@msgid.xyz>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* cc/promisor-auto-config-url (2026-04-07) 10 commits
  (merged to 'next' on 2026-04-13 at 289fcba081)
 + t5710: use proper file:// URIs for absolute paths
 + promisor-remote: remove the 'accepted' strvec
 + promisor-remote: keep accepted promisor_info structs alive
 + promisor-remote: refactor accept_from_server()
 + promisor-remote: refactor has_control_char()
 + promisor-remote: refactor should_accept_remote() control flow
 + promisor-remote: reject empty name or URL in advertised remote
 + promisor-remote: clarify that a remote is ignored
 + promisor-remote: pass config entry to all_fields_match() directly
 + promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling has been refactored and fixed in
 preparation for auto-configuration of advertised remotes.

 Will cook in 'next'.
 source: <20260407115243.358642-1-christian.couder@gmail.com>


* jr/bisect-custom-terms-in-output (2026-03-20) 1 commit
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Expecting a reroll?
 cf. <xmqqfr5tdbpc.fsf@gitster.g>
 source: <20260320-bisect-terms-v1-1-c30c9540542a@schlaraffenlan.de>


* ua/push-remote-group (2026-03-27) 3 commits
 - SQUASH??? - futureproof against the attack of the "main"
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a reroll.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 cf. <xmqqse9kj4rh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-04-12) 4 commits
  (merged to 'next' on 2026-04-13 at b4e5a964fa)
 + checkout: -m (--merge) uses autostash when switching branches
 + sequencer: teach autostash apply to take optional conflict marker labels
 + sequencer: allow create_autostash to run silently
 + stash: add --label-ours, --label-theirs, --label-base for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Will cook in 'next'.
 source: <pull.2234.v10.git.git.1775994705.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Comments?
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-04-08) 13 commits
  (merged to 'next' on 2026-04-13 at 37fa47889d)
 + fsmonitor: convert shown khash to strset in do_handle_client
 + fsmonitor: add tests for Linux
 + fsmonitor: add timeout to daemon stop command
 + fsmonitor: close inherited file descriptors and detach in daemon
 + run-command: add close_fd_above_stderr option
 + fsmonitor: implement filesystem change listener for Linux
 + fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 + fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 + fsmonitor: use pthread_cond_timedwait for cookie wait
 + compat/win32: add pthread_cond_timedwait
 + fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 + fsmonitor: fix khash memory leak in do_handle_client
 + t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Will cook in 'next'.
 source: <pull.2147.v14.git.git.1775710775.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-04-10) 13 commits
  (merged to 'next' on 2026-04-13 at 0a6acf0d17)
 + t1800: test SIGPIPE with parallel hooks
 + hook: allow hook.jobs=-1 to use all available CPU cores
 + hook: add hook.<event>.enabled switch
 + hook: move is_known_hook() to hook.c for wider use
 + hook: warn when hook.<friendly-name>.jobs is set
 + hook: add per-event jobs config
 + hook: add -j/--jobs option to git hook run
 + hook: mark non-parallelizable hooks
 + hook: allow pre-push parallel execution
 + hook: allow parallel hook execution
 + hook: parse the hook.jobs config
 + config: add a repo_config_get_uint() helper
 + repository: fix repo_init() memleak due to missing _clear()

 Will cook in 'next'.
 source: <20260410090608.75283-1-adrian.ratiu@collabora.com>


* en/xdiff-cleanup-3 (2026-04-08) 6 commits
 - xdiff/xdl_cleanup_records: put braces around the else clause
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Will merge to 'next'?
 source: <pull.2156.v5.git.git.1775679988.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 21%]

* Re: What's cooking in git.git (Apr 2026, #01)
  @ 2026-04-09 20:09 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-04-09 20:09 UTC (permalink / raw)
  To: René Scharfe; +Cc: git

René Scharfe <l.s.r@web.de> writes:

> On 4/2/26 1:42 AM, Junio C Hamano wrote:
>> * rs/use-strvec-pushv (2026-03-24) 2 commits
>>   (merged to 'next' on 2026-03-24 at 7c6487dcaf)
>>  + use strvec_pushv() to add another strvec
>>  + Merge branch 'ps/build-tweaks' into rs/use-strvec-pushv
>> 
>>  Code paths that loop over another array to push each element into a
>>  strvec have been rewritten to use strvec_pushv() instead.
>>  source: <084f3b43-91ac-4553-8305-03944e97eaa6@web.de>
>
> Curious:
>
>    commit 250e977a2b0aa8cc1c8063c64c44597a166e79f5
>    Author: Junio C Hamano <gitster@pobox.com>
>    Date:   Tue Mar 24 12:26:58 2026 -0700
>
>        use strvec_pushv() to add another strvec
>
>        Add and apply a semantic patch that simplifies the code by letting
>        strvec_pushv() append the items of a second strvec instead of pushing
>        them one by one.
>
>        Suggested-by: Junio C Hamano <gitster@pobox.com>
>        Signed-off-by: René Scharfe <l.s.r@web.de>
>        Signed-off-by: Junio C Hamano <gitster@pobox.com>
>
> I guess you became the author when you resolved the merge conflict
> caused by moving contrib/coccinelle/ to tools/?
>
> René

Curious indeed, thanks for noticing, and sorry for the mistake.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Apr 2026, #03)
@ 2026-04-08 17:30 21% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-04-08 17:30 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted when new interests
arise).

Git 2.54-rc1 has been tagged.  Let's see how solid this is ;-)

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

* jc/whitespace-incomplete-line (2026-03-17) 1 commit
  (merged to 'next' on 2026-04-01 at 10a4d95236)
 + apply: fix new-style empty context line triggering incomplete-line check

 Fix whitespace correction for new-style empty context lines.
 source: <xmqqldfql4hp.fsf@gitster.g>


* jd/read-cache-trace-wo-the-repository (2026-03-30) 1 commit
  (merged to 'next' on 2026-04-01 at 7047e45a6d)
 + read-cache: use istate->repo for trace2 logging

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 read-cache.c codepath.
 source: <pull.2253.v4.git.git.1774895886678.gitgitgadget@gmail.com>


* jt/fast-import-signed-modes (2026-03-26) 5 commits
  (merged to 'next' on 2026-04-01 at bec92be5e9)
 + fast-import: add 'abort-if-invalid' mode to '--signed-tags=<mode>'
 + fast-import: add 'sign-if-invalid' mode to '--signed-tags=<mode>'
 + fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>'
 + fast-import: add 'abort-if-invalid' mode to '--signed-commits=<mode>'
 + fast-export: check for unsupported signing modes earlier

 Handling of signed commits and tags in fast-import has been made more
 configurable.
 source: <20260326191414.3783974-1-jltobler@gmail.com>


* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
  (merged to 'next' on 2026-04-01 at 724e6526dc)
 + doc: note that -L supports patch formatting and pickaxe options
 + t4211: add tests for -L with standard diff options
 + line-log: route -L output through the standard diff pipeline
 + line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.
 cf. <xmqqbjg3y8i9.fsf@gitster.g>
 source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>


* ps/commit-graph-overflow-fix (2026-03-23) 1 commit
  (merged to 'next' on 2026-04-01 at c502054354)
 + commit-graph: fix writing generations with dates exceeding 34 bits

 Fix a regression in writing the commit-graph where commits with dates
 exceeding 34 bits (beyond year 2514) could cause an underflow and
 crash Git during the generation data overflow chunk writing.
 source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>


* ps/fsck-wo-the-repository (2026-03-23) 12 commits
  (merged to 'next' on 2026-04-01 at 6ab7607f2d)
 + builtin/fsck: stop using `the_repository` in error reporting
 + builtin/fsck: stop using `the_repository` when marking objects
 + builtin/fsck: stop using `the_repository` when checking packed objects
 + builtin/fsck: stop using `the_repository` with loose objects
 + builtin/fsck: stop using `the_repository` when checking reflogs
 + builtin/fsck: stop using `the_repository` when checking refs
 + builtin/fsck: stop using `the_repository` when snapshotting refs
 + builtin/fsck: fix trivial dependence on `the_repository`
 + fsck: drop USE_THE_REPOSITORY
 + fsck: store repository in fsck options
 + fsck: initialize fsck options via a function
 + fetch-pack: move fsck options into function scope

 Internals of "git fsck" have been refactored to not depend on the
 global `the_repository` variable.
 source: <20260323-b4-pks-fsck-without-the-repository-v2-0-e8dc79bca651@pks.im>


* ps/receive-pack-updateinstead-in-worktree (2026-03-30) 3 commits
  (merged to 'next' on 2026-04-01 at df61eac37b)
 + receive-pack: use worktree HEAD for updateInstead
 + t5516: clean up cloned and new-wt in denyCurrentBranch and worktrees test
 + t5516: test updateInstead with worktree and unborn bare HEAD

 The check in "receive-pack" to prevent a checked out branch from
 getting updated via updateInstead mechanism has been corrected.
 source: <20260330111822.165188-1-pabloosabaterr@gmail.com>


* rs/history-short-help-fix (2026-04-06) 1 commit
  (merged to 'next' on 2026-04-07 at d3d6ef5197)
 + history: fix short help for argument of --update-refs

 Glitches in "git history -h" have been corrected.
 source: <ff6a940c-39fc-4dbf-a164-7770c7f26a31@web.de>


* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
  (merged to 'next' on 2026-04-01 at b9edaddcff)
 + add-patch: use repository instance from add_i_state instead of the_repository

 Reduce dependency on `the_repository` in add-patch.c file.
 source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>


* th/backfill-auto-detect-sparseness-fix (2026-04-04) 1 commit
  (merged to 'next' on 2026-04-07 at c47ef7d0f1)
 + backfill: auto-detect sparse-checkout from config

 "git backfill" is capable of auto-detecting a sparsely checked out
 working tree, which was broken.
 source: <20260404111557.17220-1-viking4@gmail.com>


* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
  (merged to 'next' on 2026-04-01 at ddcff8b9c6)
 + path-walk: fix NULL pointer dereference in error message

 The value of a wrong pointer variable was referenced in an error
 message that reported that it shouldn't be NULL.
 source: <20260320114823.3151961-1-ysinghcin@gmail.com>

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

* jt/index-fd-wo-repo-regression-fix-maint (2026-04-07) 1 commit
 + object-file: avoid ODB transaction when not writing objects
 (this branch is used by jt/index-fd-wo-repo-regression-fix.)

 During Git 2.52 timeframe, we broke streaming computation of object
 hash outside a repository, which has been corrected.

 Will merge to 'master'.


* jt/index-fd-wo-repo-regression-fix (2026-04-07) 1 commit
  (merged to 'next' on 2026-04-07 at 7339897c7c)
 + Merge branch 'jt/index-fd-wo-repo-regression-fix-maint' into HEAD
 (this branch uses jt/index-fd-wo-repo-regression-fix-maint.)

 During Git 2.52 timeframe, we broke streaming computation of object
 hash outside a repository, which has been corrected.

 Will merge to 'master'.

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

* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-02) 17 commits
 - git p4 clone --bare: need to be explicit about the gitdir
 - t9700: stop relying on implicit bare repo discovery
 - t9210: pass `safe.bareRepository=all` to `scalar register`
 - t6020: use `-C` for worktree, `--git-dir` for bare repository
 - t5619: wrap `test_commit_bulk` in `GIT_DIR` subshell for bare repo
 - t5540/t5541: avoid accessing a bare repository via `-C <dir>`
 - t5509: specify bare repository path explicitly
 - t5505: export `GIT_DIR` after `git init --bare`
 - t5503: avoid discovering a bare repository
 - t2406: use `--git-dir=.` for bare repository worktree repair
 - t2400: explicitly specify bare repo for `git worktree add`
 - t1900: avoid using `-C <dir>` for a bare repository
 - t1020: use `--git-dir` instead of subshell for bare repo
 - t0056: allow implicit bare repo discovery for `-C` work-tree tests
 - t0003: use `--git-dir` for bare repo attribute tests
 - t0001: replace `cd`+`git` with `git --git-dir` in `check_config`
 - t0001: allow implicit bare repo discovery for aliased-command test

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Comments?
 source: <pull.2076.git.1775140403.gitgitgadget@gmail.com>


* pw/xdiff-shrink-memory-consumption (2026-04-02) 5 commits
 - xdiff: reduce the size of array
 - xprepare: simplify error handling
 - xdiff: cleanup xdl_clean_mmatch()
 - xdiff: reduce size of action arrays
 - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 On hold, waiting for the base topic.
 source: <cover.1775141855.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Comments?
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* bc/rust-by-default-in-2.54 (2026-04-02) 4 commits
 - Enable Rust by default
 - Linux: link against libdl
 - ci: install cargo on Alpine
 - docs: update version with default Rust support

 Rust support is enabled by default (but still allows opting out) in
 Git 2.54.

 Will merge to 'next' after Git 2.53 final gets tagged.
 source: <20260403011249.4133372-1-sandals@crustytoothpaste.net>


* ps/shift-root-in-graph (2026-04-04) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Comments?
 source: <20260404092425.550346-2-pabloosabaterr@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 - config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Comments?
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* sp/refs-with-less-the-repository (2026-04-03) 3 commits
 - refs/reftable-backend: drop uses of the_repository
 - refs: remove the_hash_algo global state
 - refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Reduce the reference to the_repository in the refs subsystem.

 Comments?
 source: <20260403120938.1142533-1-shreyanshpaliwalcmsmn@gmail.com>


* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
 - cache-tree: fix inverted object existence check in cache_tree_fully_valid

 The check that implements the logic to see if an in-core cache-tree
 is fully ready to write out a tree object was broken, which has
 been corrected.

 Will merge to 'next'?
 source: <20260406192711.68870-1-davidlin@stripe.com>


* ds/rev-list-maximal-only-optim (2026-04-06) 3 commits
  (merged to 'next' on 2026-04-07 at 7a70817efa)
 + rev-list: use reduce_heads() for --maximal-only
 + p6011: add perf test for rev-list --maximal-only
 + t6600: test --maximal-only and --independent

 "git rev-list --maximal-only" has been optimized by borrowing the
 logic used by "git show-branch --independent", which computes the
 same kind of information much more efficiently.

 Will merge to 'master'.
 source: <pull.2082.git.1775482048.gitgitgadget@gmail.com>


* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
 - doc: convert git-describe manual page to synopsis style
 - doc: convert git-shortlog manual page to synopsis style
 - doc: convert git-range-diff manual page to synopsis style
 - doc: convert git-difftool manual page to synopsis style

 Doc mark-up updates.

 Will merge to 'next'?
 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>


* kh/doc-config-list (2026-04-05) 2 commits
  (merged to 'next' on 2026-04-07 at fb95f091cc)
 + doc: gitcvs-migration: rephrase “man page”
 + doc: replace git config --list/-l with `list`

 "git config list" is the official way to spell "git config -l" and
 "git config --list".  Use it to update the documentation.

 Will merge to 'master'.
 source: <V2_CV_doc_deprecation_config_--list.569@msgid.xyz>


* lp/repack-propagate-promisor-debugging-info (2026-04-06) 6 commits
 . SQUASH???
 . t7703: test for promisor file content after geometric repack
 . t7700: test for promisor file content after repack
 . repack-promisor: preserve content of promisor files after repack
 . pack-write: add helper to fill promisor file after repack
 . pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Expecting a reroll.
 source: <cover.1775431990.git.lorenzo.pegorari2002@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>


* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Comments?
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* jd/cache-tree-trace-wo-the-repository (2026-03-31) 1 commit
  (merged to 'next' on 2026-04-02 at e36937bb5e)
 + cache-tree: use index state repository in trace2 calls

 Code cleanup.

 Will merge to 'master'.
 source: <pull.2259.git.git.1774951373588.gitgitgadget@gmail.com>


* ps/reftable-portability (2026-04-02) 5 commits
  (merged to 'next' on 2026-04-02 at 04adce37b9)
 + reftable/system: add abstraction to mmap files
 + reftable/system: add abstraction to retrieve time in milliseconds
 + reftable/fsck: use REFTABLE_UNUSED instead of UNUSED
 + reftable/stack: provide fsync(3p) via system header
 + reftable: introduce "reftable-system.h" header

 Update reftable library part with what is used in libgit2 to improve
 portability to different target codebases and platforms.

 Will merge to 'master'.
 source: <20260402-pks-reftable-portability-fixes-v2-0-bc110cee0ae0@pks.im>


* jk/c23-const-preserving-fixes-more (2026-04-03) 13 commits
  (merged to 'next' on 2026-04-06 at 9eebe11338)
 + git-compat-util: fix CONST_OUTPARAM typo and indentation
  (merged to 'next' on 2026-04-02 at b060d988f4)
 + refs/files-backend: drop const to fix strchr() warning
 + http: drop const to fix strstr() warning
 + range-diff: drop const to fix strstr() warnings
 + pkt-line: make packet_reader.line non-const
 + skip_prefix(): check const match between in and out params
 + pseudo-merge: fix disk reads from find_pseudo_merge()
 + find_last_dir_sep(): convert inline function to macro
 + run-command: explicitly cast away constness when assigning to void
 + pager: explicitly cast away strchr() constness
 + transport-helper: drop const to fix strchr() warnings
 + http: add const to fix strchr() warnings
 + convert: add const to fix strchr() warnings

 Further work to adjust the codebase for C23 that changes functions
 like strchr() that discarded constness when they return a pointer into
 a const string to preserve constness.

 Will merge to 'master'.
 source: <20260402041433.GA3501120@coredump.intra.peff.net>
 source: <20260404054211.GA1346444@coredump.intra.peff.net>


* ps/odb-cleanup (2026-03-31) 7 commits
  (merged to 'next' on 2026-04-02 at 1dd8236dfb)
 + odb: drop unneeded headers and forward decls
 + odb: rename `odb_has_object()` flags
 + odb: use enum for `odb_write_object` flags
 + odb: rename `odb_write_object()` flags
 + treewide: use enum for `odb_for_each_object()` flags
 + CodingGuidelines: document our style for flags
 + Merge branch 'ps/odb-generic-object-name-handling' into ps/odb-cleanup
 (this branch is used by ps/odb-in-core.)

 Various code clean-up around odb subsystem.

 Will merge to 'master'.
 source: <20260401-pks-odb-cleanups-v1-0-89adba9ada68@pks.im>


* ss/t7004-unhide-git-failures (2026-03-31) 1 commit
  (merged to 'next' on 2026-04-02 at fec00b153f)
 + t7004: replace wc -l with modern test helpers

 Test clean-up.

 Will merge to 'master'.
 source: <20260401062029.54757-1-r.siddharth.shrimali@gmail.com>


* ng/add-files-to-cache-wo-rename (2026-04-01) 1 commit
  (merged to 'next' on 2026-04-02 at 8723880fc0)
 + read-cache: disable renames in add_files_to_cache

 add_files_to_cache() used diff_files() to detect only the paths that
 are different between the index and the working tree and add them,
 which does not need rename detection, which interfered with unnecessary
 conflicts.

 Will merge to 'master'.
 source: <20260401190033.11325-1-blindmansion@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-03-31) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Expecting a (hopefully small and final) reroll?
 cf. <xmqqo6k3ztxr.fsf@gitster.g>
 source: <20260331121111.9614-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--checksum-only` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - strvec: introduce `strvec_init_alloc()`
 - midx: use `string_list` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Expecting a reroll.
 cf. <acxBUkHDolY9VCnR@nand.local>
 source: <cover.1774820449.git.me@ttaylorr.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/setup-wo-the-repository (2026-03-30) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260330-pks-setup-wo-the-repository-v1-0-0d2e822837aa@pks.im>


* kh/doc-trailers (2026-03-30) 2 commits
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <5ba0bbcb-25a7-4ad0-ac1d-c86508eaffdd@app.fastmail.com>
 source: <CV_doc_int-tr_key_format.533@msgid.xyz>


* tc/replay-ref (2026-04-01) 4 commits
  (merged to 'next' on 2026-04-03 at 196ecde80b)
 + replay: allow to specify a ref with option --ref
 + replay: use stuck form in documentation and help message
 + builtin/replay: mark options as not negatable
 + Merge branch 'sa/replay-revert' into tc/replay-ref

 The experimental `git replay` command learned the `--ref=<ref>` option
 to allow specifying which ref to update, overriding the default behavior.

 Will merge to 'master'.
 source: <20260401-toon-replay-arbitrary-ref-v3-0-a0b4fabb34b3@iotcl.com>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* cc/promisor-auto-config-url (2026-04-07) 10 commits
 - t5710: use proper file:// URIs for absolute paths
 - promisor-remote: remove the 'accepted' strvec
 - promisor-remote: keep accepted promisor_info structs alive
 - promisor-remote: refactor accept_from_server()
 - promisor-remote: refactor has_control_char()
 - promisor-remote: refactor should_accept_remote() control flow
 - promisor-remote: reject empty name or URL in advertised remote
 - promisor-remote: clarify that a remote is ignored
 - promisor-remote: pass config entry to all_fields_match() directly
 - promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling has been refactored and fixed in
 preparation for auto-configuration of advertised remotes.

 Will merge to 'next'?
 source: <20260407115243.358642-1-christian.couder@gmail.com>


* jr/bisect-custom-terms-in-output (2026-03-20) 1 commit
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Expecting a reroll?
 cf. <xmqqfr5tdbpc.fsf@gitster.g>
 source: <20260320-bisect-terms-v1-1-c30c9540542a@schlaraffenlan.de>


* ua/push-remote-group (2026-03-27) 3 commits
 - SQUASH??? - futureproof against the attack of the "main"
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a reroll.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 cf. <xmqqse9kj4rh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Comments?
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-04-07) 14 commits
 - SQUASH???
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Expecting a reroll.
 cf. <xmqqika24mj0.fsf@gitster.g>
 source: <pull.2147.v13.git.git.1775498098.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-04-04) 13 commits
 - hook: allow hook.jobs=-1 to use all available CPU cores
 - hook: add hook.<event>.enabled switch
 - hook: move is_known_hook() to hook.c for wider use
 - hook: warn when hook.<friendly-name>.jobs is set
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow pre-push parallel execution
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks

 Will merge to 'next'?
 source: <20260404082934.173788-1-adrian.ratiu@collabora.com>


* en/xdiff-cleanup-3 (2026-03-30) 6 commits
 - xdiff/xdl_cleanup_records: simplify INVESTIGATE handling for clarity
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Changes the behaviour without meaning to, which needs fixing.
 cf. <87a54698-396d-4de8-bd9d-cd72f8d1e8df@gmail.com>
 source: <pull.2156.v4.git.git.1774890003.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 21%]

* What's cooking in git.git (Apr 2026, #02)
@ 2026-04-07  1:30 17% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-04-07  1:30 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* aa/reap-transport-child-processes (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-31 at fb77f8ba9e)
 + transport-helper, connect: use clean_on_exit to reap children on abnormal exit

 A few code paths that spawned child processes for network
 connection weren't wait(2)ing for their children and letting "init"
 reap them instead; they have been tightened.
 cf. <20260325061357.GA3772970@coredump.intra.peff.net>
 source: <20260312214945.4050010-1-cshung@gmail.com>


* ar/config-hook-cleanups (2026-03-25) 13 commits
  (merged to 'next' on 2026-03-30 at c128948b16)
 + hook: reject unknown hook names in git-hook(1)
 + hook: show disabled hooks in "git hook list"
 + hook: show config scope in git hook list
 + hook: introduce hook_config_cache_entry for per-hook data
 + t1800: add test to verify hook execution ordering
 + hook: make consistent use of friendly-name in docs
 + hook: replace hook_list_clear() -> string_list_clear_func()
 + hook: detect & emit two more bugs
 + hook: rename cb_data_free/alloc -> hook_data_free/alloc
 + hook: fix minor style issues
 + builtin/receive-pack: properly init receive_hook strbuf
 + hook: move unsorted_string_list_remove() to string-list.[ch]
 + Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.
 source: <20260325195503.1139418-1-adrian.ratiu@collabora.com>


* ds/backfill-revs (2026-03-26) 6 commits
  (merged to 'next' on 2026-03-27 at d4703fdd35)
 + t5620: test backfill's unknown argument handling
 + path-walk: support wildcard pathspecs for blob filtering
 + backfill: work with prefix pathspecs
 + backfill: accept revision arguments
 + t5620: prepare branched repo for revision tests
 + revision: include object-name.h

 `git backfill` learned to accept revision and pathspec arguments.
 source: <pull.2070.v3.git.1774538094.gitgitgadget@gmail.com>


* jk/c23-const-preserving-fixes (2026-03-26) 5 commits
  (merged to 'next' on 2026-03-31 at c813b9b814)
 + config: store allocated string in non-const pointer
 + rev-parse: avoid writing to const string for parent marks
 + revision: avoid writing to const string for parent marks
 + rev-parse: simplify dotdot parsing
 + revision: make handle_dotdot() interface less confusing

 Adjust the codebase for C23 that changes functions like strchr()
 that discarded constness when they return a pointer into a const
 string to preserve constness.
 source: <20260326190243.GA412983@coredump.intra.peff.net>
 source: <20260326192320.GA418281@coredump.intra.peff.net>


* js/cmake-needs-writev-compat-too (2026-04-03) 1 commit
  (merged to 'next' on 2026-04-03 at c0dfe4a67d)
 + cmake: use writev(3p) wrapper as needed

 Build instruction for recently added writev() compatibility wrapper
 has been also added to cmake.
 source: <pull.2078.git.1775206502134.gitgitgadget@gmail.com>


* js/mingw-use-strftime-directly-in-ucrt-build (2026-04-03) 1 commit
  (merged to 'next' on 2026-04-03 at 3ed53e1e28)
 + mingw: use strftime() directly in UCRT builds

 MinGW build updates.
 source: <pull.2079.git.1775210183103.gitgitgadget@gmail.com>


* mf/format-patch-commit-list-format (2026-03-23) 9 commits
  (merged to 'next' on 2026-03-24 at 0f5b6702eb)
 + format-patch: --commit-list-format without prefix
 + format-patch: add preset for --commit-list-format
 + format-patch: wrap generate_commit_list_cover()
 + format.commitListFormat: strip meaning from empty
 + docs/pretty-formats: add %(count) and %(total)
 + format-patch: rename --cover-letter-format option
 + format-patch: refactor generate_commit_list_cover
 + pretty.c: better die message %(count) and %(total)
 + Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
 (this branch is used by mf/format-patch-commit-list-format-doc; uses mf/format-patch-cover-letter-format.)

 Improve the recently introduced `git format-patch
 --commit-list-format` (formerly `--cover-letter-format`) option,
 including a new "modern" preset and better CLI ergonomics.
 source: <cover.1774284699.git.mroik@delayed.space>


* mf/format-patch-commit-list-format-doc (2026-03-27) 3 commits
  (merged to 'next' on 2026-03-31 at 8f775bd513)
 + format-patch: removing unconditional wrapping
 + docs: fix --commit-list-format related entries
 + Merge branch 'mf/format-patch-commit-list-format' into mf/format-patch-commit-list-format-doc
 (this branch uses mf/format-patch-commit-list-format and mf/format-patch-cover-letter-format.)

 Doc updates.
 source: <cover.1774640789.git.mroik@delayed.space>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders
 (this branch is used by mf/format-patch-commit-list-format and mf/format-patch-commit-list-format-doc.)

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.
 source: <cover.1772839973.git.mroik@delayed.space>


* ps/dash-buggy-0.5.13-workaround (2026-04-01) 2 commits
  (merged to 'next' on 2026-04-02 at 5766caf01e)
 + t9300: work around partial read bug in Dash v0.5.13
 + t: work around multibyte bug in quoted heredocs with Dash v0.5.13

 The way dash 0.5.13 handles non-ASCII contents in here-doc
 is buggy and breaks our existing tests, which unfortunately
 have been rewritten to avoid triggering the bug.
 source: <20260402-pks-tests-with-dash-v2-0-cd7ab11dabc0@pks.im>


* ps/odb-generic-object-name-handling (2026-03-20) 16 commits
  (merged to 'next' on 2026-03-31 at c14d7bdd1e)
 + odb: introduce generic `odb_find_abbrev_len()`
 + object-file: move logic to compute packed abbreviation length
 + object-name: move logic to compute loose abbreviation length
 + object-name: simplify computing common prefixes
 + object-name: abbreviate loose object names without `disambiguate_state`
 + object-name: merge `update_candidates()` and `match_prefix()`
 + object-name: backend-generic `get_short_oid()`
 + object-name: backend-generic `repo_collect_ambiguous()`
 + object-name: extract function to parse object ID prefixes
 + object-name: move logic to iterate through packed prefixed objects
 + object-name: move logic to iterate through loose prefixed objects
 + odb: introduce `struct odb_for_each_object_options`
 + oidtree: extend iteration to allow for arbitrary return codes
 + oidtree: modernize the code a bit
 + Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
 + object-file: fix sparse 'plain integer as NULL pointer' error
 (this branch is used by ps/odb-cleanup and ps/odb-in-core.)

 Object name handling (disambiguation and abbreviation) has been
 refactored to be backend-generic, moving logic into the respective
 object database backends.
 cf. <874ilxm4wp.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260320-b4-pks-odb-source-abbrev-v2-0-fe65dcd8c735@pks.im>


* pw/worktree-reduce-the-repository (2026-03-26) 3 commits
  (merged to 'next' on 2026-03-30 at f967ececef)
 + worktree: reject NULL worktree in get_worktree_git_dir()
 + worktree add: stop reading ".git/HEAD"
 + worktree: remove "the_repository" from is_current_worktree()

 Reduce the reference to the_repository in the worktree subsystem.
 source: <cover.1774534617.git.phillip.wood@dunelm.org.uk>


* qb/doc-git-stash-push-optionality (2026-03-30) 1 commit
  (merged to 'next' on 2026-03-31 at 66ece1b5d6)
 + docs: fix "git stash [push]" documentation

 Doc update.
 source: <pull.2255.v2.git.git.1774877075694.gitgitgadget@gmail.com>


* sa/replay-revert (2026-03-25) 2 commits
  (merged to 'next' on 2026-03-30 at ef4896a676)
 + replay: add --revert mode to reverse commit changes
 + sequencer: extract revert message formatting into shared function
 (this branch is used by tc/replay-ref.)

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".
 source: <20260325202354.10628-1-siddharthasthana31@gmail.com>


* sp/doc-gitignore-oowt (2026-03-28) 1 commit
  (merged to 'next' on 2026-03-31 at ab3e6e484e)
 + doc: gitignore: clarify pattern base for info/exclude and core.excludesFile

 Doc update.
 source: <20260328152233.1140327-1-shreyanshpaliwalcmsmn@gmail.com>


* tb/stdin-packs-excluded-but-open (2026-03-27) 5 commits
  (merged to 'next' on 2026-03-31 at e8927aa861)
 + repack: mark non-MIDX packs above the split as excluded-open
 + pack-objects: support excluded-open packs with --stdin-packs
 + t7704: demonstrate failure with once-cruft objects above the geometric split
 + pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`
 + pack-objects: plug leak in `read_stdin_packs()`

 pack-objects's --stdin-packs=follow mode learns to handle
 excluded-but-open packs.
 source: <cover.1774641999.git.me@ttaylorr.com>


* tc/replay-down-to-root (2026-03-24) 1 commit
  (merged to 'next' on 2026-03-31 at 47456fcc12)
 + replay: support replaying down from root commit

 git replay now supports replaying down to the root commit.
 source: <20260324-toon-replay-down-to-root-v2-1-34e723489f6e@iotcl.com>


* th/t6101-unhide-git-failures (2026-03-28) 1 commit
  (merged to 'next' on 2026-03-31 at 8867bcf2b4)
 + t6101: avoid suppressing git's exit code

 Test cleanup.
 source: <20260328135935.180646-1-vikingtc4@gmail.com>


* th/t8003-unhide-git-failures (2026-03-28) 2 commits
  (merged to 'next' on 2026-03-30 at ad41378b07)
 + t8003: modernise style
 + t8003: avoid suppressing git's exit code

 Test clean-up.
 source: <20260328132955.172262-2-vikingtc4@gmail.com>


* za/t2000-modernise (2026-03-27) 1 commit
  (merged to 'next' on 2026-03-31 at 279c41a3e0)
 + t2000: modernise overall structure

 Test cleanup.
 source: <20260327234019.95591-1-zakariyahali100@gmail.com>

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

* js/adjust-tests-to-explicitly-access-bare-repo (2026-04-02) 17 commits
 - git p4 clone --bare: need to be explicit about the gitdir
 - t9700: stop relying on implicit bare repo discovery
 - t9210: pass `safe.bareRepository=all` to `scalar register`
 - t6020: use `-C` for worktree, `--git-dir` for bare repository
 - t5619: wrap `test_commit_bulk` in `GIT_DIR` subshell for bare repo
 - t5540/t5541: avoid accessing a bare repository via `-C <dir>`
 - t5509: specify bare repository path explicitly
 - t5505: export `GIT_DIR` after `git init --bare`
 - t5503: avoid discovering a bare repository
 - t2406: use `--git-dir=.` for bare repository worktree repair
 - t2400: explicitly specify bare repo for `git worktree add`
 - t1900: avoid using `-C <dir>` for a bare repository
 - t1020: use `--git-dir` instead of subshell for bare repo
 - t0056: allow implicit bare repo discovery for `-C` work-tree tests
 - t0003: use `--git-dir` for bare repo attribute tests
 - t0001: replace `cd`+`git` with `git --git-dir` in `check_config`
 - t0001: allow implicit bare repo discovery for aliased-command test

 Some tests assume that bare repository accesses are by default
 allowed; rewrite some of them to avoid the assumption, rewrite
 others to explicitly set safe.bareRepository to allow them.

 Comments?
 source: <pull.2076.git.1775140403.gitgitgadget@gmail.com>


* pw/xdiff-shrink-memory-consumption (2026-04-02) 5 commits
 - xdiff: reduce the size of array
 - xprepare: simplify error handling
 - xdiff: cleanup xdl_clean_mmatch()
 - xdiff: reduce size of action arrays
 - Merge branch 'en/xdiff-cleanup-3' into pw/xdiff-shrink-memory-consumption
 (this branch uses en/xdiff-cleanup-3.)

 Shrink wasted memory in Myers diff that does not account for common
 prefix and suffix removal.

 On hold, waiting for the base topic.
 source: <cover.1775141855.git.phillip.wood@dunelm.org.uk>


* cl/conditional-config-on-worktree-path (2026-04-03) 2 commits
 - config: add "worktree" and "worktree/i" includeIf conditions
 - config: refactor include_by_gitdir() into include_by_path()

 The [includeIf "condition"] conditional inclusion facility for
 configuration files has learned to use the location of worktree
 in its condition.

 Comments?
 source: <20260403-includeif-worktree-v3-0-109ce5782b03@black-desk.cn>


* bc/rust-by-default-in-2.54 (2026-04-02) 4 commits
 - Enable Rust by default
 - Linux: link against libdl
 - ci: install cargo on Alpine
 - docs: update version with default Rust support

 Rust support is enabled by default (but still allows opting out) in
 Git 2.54.

 Will merge to 'next' after Git 2.53 final gets tagged.
 source: <20260403011249.4133372-1-sandals@crustytoothpaste.net>


* ps/shift-root-in-graph (2026-04-04) 1 commit
 - graph: add indentation for commits preceded by a parentless commit

 In a history with more than one root commit, "git log --graph
 --oneline" stuffed an unrelated commit immediately below a root
 commit, which has been corrected by making the spot below a root
 unavailable.

 Comments?
 source: <20260404092425.550346-2-pabloosabaterr@gmail.com>


* jt/config-lock-timeout (2026-04-03) 1 commit
 - config: retry acquiring config.lock for 100ms

 The code path to update the configuration file has been taught to
 use a short timeout to retry.

 Comments?
 source: <20260403100135.3901610-1-joerg@thalheim.io>


* sp/refs-with-less-the-repository (2026-04-03) 3 commits
 - refs/reftable-backend: drop uses of the_repository
 - refs: remove the_hash_algo global state
 - refs: add struct repository parameter in get_files_ref_lock_timeout_ms()

 Reduce the reference to the_repository in the refs subsystem.

 Comments?
 source: <20260403120938.1142533-1-shreyanshpaliwalcmsmn@gmail.com>


* dl/cache-tree-fully-valid-fix (2026-04-06) 1 commit
 - cache-tree: fix inverted object existence check in cache_tree_fully_valid

 The check that implements the logic to see if an in-core cache-tree
 is fully ready to write out a tree object was broken, which has
 been corrected.

 Will merge to 'next'?
 source: <20260406192711.68870-1-davidlin@stripe.com>


* ds/rev-list-maximal-only-optim (2026-04-06) 3 commits
 - rev-list: use reduce_heads() for --maximal-only
 - p6011: add perf test for rev-list --maximal-only
 - t6600: test --maximal-only and --independent

 "git rev-list --maximal-only" has been optimized by borrowing the
 logic used by "git show-branch --independent", which computes the
 same kind of information much more efficiently.

 Will merge to 'next'.
 source: <pull.2082.git.1775482048.gitgitgadget@gmail.com>


* ja/doc-difftool-synopsis-style (2026-04-04) 4 commits
 - doc: convert git-describe manual page to synopsis style
 - doc: convert git-shortlog manual page to synopsis style
 - doc: convert git-range-diff manual page to synopsis style
 - doc: convert git-difftool manual page to synopsis style

 Doc mark-up updates.

 Will merge to 'next'?
 source: <pull.2077.git.1775322767.gitgitgadget@gmail.com>


* kh/doc-config-list (2026-04-05) 2 commits
 - doc: gitcvs-migration: rephrase “man page”
 - doc: replace git config --list/-l with `list`

 "git config list" is the official way to spell "git config -l" and
 "git config --list".  Use it to update the documentation.

 Will merge to 'next'.
 source: <V2_CV_doc_deprecation_config_--list.569@msgid.xyz>


* lp/repack-propagate-promisor-debugging-info (2026-04-06) 6 commits
 - SQUASH???
 - t7703: test for promisor file content after geometric repack
 - t7700: test for promisor file content after repack
 - repack-promisor: preserve content of promisor files after repack
 - pack-write: add helper to fill promisor file after repack
 - pack-write: add explanation to promisor file content

 When fetching objects into a lazily cloned repository, .promisor
 files are created with information meant to help debugging.  "git
 repack" has been taught to carry this information forward to
 packfiles that are newly created.

 Expecting a reroll?
 source: <cover.1775431990.git.lorenzo.pegorari2002@gmail.com>


* rs/history-short-help-fix (2026-04-06) 1 commit
 - history: fix short help for argument of --update-refs

 Glitches in "git history -h" have been corrected.

 Will merge to 'next' and then to 'master'.
 source: <ff6a940c-39fc-4dbf-a164-7770c7f26a31@web.de>


* th/backfill-auto-detect-sparseness-fix (2026-04-04) 1 commit
 - backfill: auto-detect sparse-checkout from config

 "git backfill" is capable of auto-detecting a sparsely checked out
 working tree, which was broken.

 Will merge to 'next' and then to 'master'.
 source: <20260404111557.17220-1-viking4@gmail.com>


* th/promisor-quiet-per-repo (2026-04-06) 1 commit
 - promisor-remote: fix promisor.quiet to use the correct repository

 Comments?
 source: <20260406183041.783800-1-vikingtc4@gmail.com>

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

* jt/odb-transaction-write (2026-04-02) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Comments?
 source: <20260402213220.2651523-1-jltobler@gmail.com>


* jd/cache-tree-trace-wo-the-repository (2026-03-31) 1 commit
  (merged to 'next' on 2026-04-02 at e36937bb5e)
 + cache-tree: use index state repository in trace2 calls

 Code cleanup.

 Will merge to 'master'.
 source: <pull.2259.git.git.1774951373588.gitgitgadget@gmail.com>


* ps/reftable-portability (2026-04-02) 5 commits
  (merged to 'next' on 2026-04-02 at 04adce37b9)
 + reftable/system: add abstraction to mmap files
 + reftable/system: add abstraction to retrieve time in milliseconds
 + reftable/fsck: use REFTABLE_UNUSED instead of UNUSED
 + reftable/stack: provide fsync(3p) via system header
 + reftable: introduce "reftable-system.h" header

 Update reftable library part with what is used in libgit2 to improve
 portability to different target codebases and platforms.

 Will merge to 'master'.
 source: <20260402-pks-reftable-portability-fixes-v2-0-bc110cee0ae0@pks.im>


* jk/c23-const-preserving-fixes-more (2026-04-03) 13 commits
  (merged to 'next' on 2026-04-06 at 9eebe11338)
 + git-compat-util: fix CONST_OUTPARAM typo and indentation
  (merged to 'next' on 2026-04-02 at b060d988f4)
 + refs/files-backend: drop const to fix strchr() warning
 + http: drop const to fix strstr() warning
 + range-diff: drop const to fix strstr() warnings
 + pkt-line: make packet_reader.line non-const
 + skip_prefix(): check const match between in and out params
 + pseudo-merge: fix disk reads from find_pseudo_merge()
 + find_last_dir_sep(): convert inline function to macro
 + run-command: explicitly cast away constness when assigning to void
 + pager: explicitly cast away strchr() constness
 + transport-helper: drop const to fix strchr() warnings
 + http: add const to fix strchr() warnings
 + convert: add const to fix strchr() warnings

 Further work to adjust the codebase for C23 that changes functions
 like strchr() that discarded constness when they return a pointer into
 a const string to preserve constness.

 Will merge to 'master'.
 source: <20260402041433.GA3501120@coredump.intra.peff.net>
 source: <20260404054211.GA1346444@coredump.intra.peff.net>


* ps/odb-cleanup (2026-03-31) 7 commits
  (merged to 'next' on 2026-04-02 at 1dd8236dfb)
 + odb: drop unneeded headers and forward decls
 + odb: rename `odb_has_object()` flags
 + odb: use enum for `odb_write_object` flags
 + odb: rename `odb_write_object()` flags
 + treewide: use enum for `odb_for_each_object()` flags
 + CodingGuidelines: document our style for flags
 + Merge branch 'ps/odb-generic-object-name-handling' into ps/odb-cleanup
 (this branch is used by ps/odb-in-core.)

 Various code clean-up around odb subsystem.

 Will merge to 'master'.
 source: <20260401-pks-odb-cleanups-v1-0-89adba9ada68@pks.im>


* ss/t7004-unhide-git-failures (2026-03-31) 1 commit
  (merged to 'next' on 2026-04-02 at fec00b153f)
 + t7004: replace wc -l with modern test helpers

 Test clean-up.

 Will merge to 'master'.
 source: <20260401062029.54757-1-r.siddharth.shrimali@gmail.com>


* ng/add-files-to-cache-wo-rename (2026-04-01) 1 commit
  (merged to 'next' on 2026-04-02 at 8723880fc0)
 + read-cache: disable renames in add_files_to_cache

 add_files_to_cache() used diff_files() to detect only the paths that
 are different between the index and the working tree and add them,
 which does not need rename detection, which interfered with unnecessary
 conflicts.

 Will merge to 'master'.
 source: <20260401190033.11325-1-blindmansion@gmail.com>


* sa/cat-file-batch-mailmap-switch (2026-03-31) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Expecting a (hopefully small and final) reroll?
 cf. <xmqqo6k3ztxr.fsf@gitster.g>
 source: <20260331121111.9614-2-siddharthasthana31@gmail.com>


* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--checksum-only` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - strvec: introduce `strvec_init_alloc()`
 - midx: use `string_list` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Expecting a reroll.
 cf. <acxBUkHDolY9VCnR@nand.local>
 source: <cover.1774820449.git.me@ttaylorr.com>


* jd/read-cache-trace-wo-the-repository (2026-03-30) 1 commit
  (merged to 'next' on 2026-04-01 at 7047e45a6d)
 + read-cache: use istate->repo for trace2 logging

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 read-cache.c codepath.

 Will merge to 'master'.
 source: <pull.2253.v4.git.git.1774895886678.gitgitgadget@gmail.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Comments?
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/receive-pack-updateinstead-in-worktree (2026-03-30) 3 commits
  (merged to 'next' on 2026-04-01 at df61eac37b)
 + receive-pack: use worktree HEAD for updateInstead
 + t5516: clean up cloned and new-wt in denyCurrentBranch and worktrees test
 + t5516: test updateInstead with worktree and unborn bare HEAD

 The check in "receive-pack" to prevent a checked out branch from
 getting updated via updateInstead mechanism has been corrected.

 Will merge to 'master'.
 source: <20260330111822.165188-1-pabloosabaterr@gmail.com>


* ps/setup-wo-the-repository (2026-03-30) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260330-pks-setup-wo-the-repository-v1-0-0d2e822837aa@pks.im>


* kh/doc-trailers (2026-03-30) 2 commits
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <5ba0bbcb-25a7-4ad0-ac1d-c86508eaffdd@app.fastmail.com>
 source: <CV_doc_int-tr_key_format.533@msgid.xyz>


* tc/replay-ref (2026-04-01) 4 commits
  (merged to 'next' on 2026-04-03 at 196ecde80b)
 + replay: allow to specify a ref with option --ref
 + replay: use stuck form in documentation and help message
 + builtin/replay: mark options as not negatable
 + Merge branch 'sa/replay-revert' into tc/replay-ref

 The experimental `git replay` command learned the `--ref=<ref>` option
 to allow specifying which ref to update, overriding the default behavior.

 Will merge to 'master'.
 source: <20260401-toon-replay-arbitrary-ref-v3-0-a0b4fabb34b3@iotcl.com>


* jt/fast-import-signed-modes (2026-03-26) 5 commits
  (merged to 'next' on 2026-04-01 at bec92be5e9)
 + fast-import: add 'abort-if-invalid' mode to '--signed-tags=<mode>'
 + fast-import: add 'sign-if-invalid' mode to '--signed-tags=<mode>'
 + fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>'
 + fast-import: add 'abort-if-invalid' mode to '--signed-commits=<mode>'
 + fast-export: check for unsupported signing modes earlier

 Handling of signed commits and tags in fast-import has been made more
 configurable.

 Will merge to 'master'.
 source: <20260326191414.3783974-1-jltobler@gmail.com>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* cc/promisor-auto-config-url (2026-04-02) 10 commits
 - t5710: use proper file:// URIs for absolute paths
 - promisor-remote: remove the 'accepted' strvec
 - promisor-remote: keep accepted promisor_info structs alive
 - promisor-remote: refactor accept_from_server()
 - promisor-remote: refactor has_control_char()
 - promisor-remote: refactor should_accept_remote() control flow
 - promisor-remote: reject empty name or URL in advertised remote
 - promisor-remote: clarify that a remote is ignored
 - promisor-remote: pass config entry to all_fields_match() directly
 - promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling is enhanced to auto-configure remotes based
 on a URL whitelist.

 Comments?
 source: <20260402070613.85934-1-christian.couder@gmail.com>


* ps/fsck-wo-the-repository (2026-03-23) 12 commits
  (merged to 'next' on 2026-04-01 at 6ab7607f2d)
 + builtin/fsck: stop using `the_repository` in error reporting
 + builtin/fsck: stop using `the_repository` when marking objects
 + builtin/fsck: stop using `the_repository` when checking packed objects
 + builtin/fsck: stop using `the_repository` with loose objects
 + builtin/fsck: stop using `the_repository` when checking reflogs
 + builtin/fsck: stop using `the_repository` when checking refs
 + builtin/fsck: stop using `the_repository` when snapshotting refs
 + builtin/fsck: fix trivial dependence on `the_repository`
 + fsck: drop USE_THE_REPOSITORY
 + fsck: store repository in fsck options
 + fsck: initialize fsck options via a function
 + fetch-pack: move fsck options into function scope

 Internals of "git fsck" have been refactored to not depend on the
 global `the_repository` variable.

 Will merge to 'master'.
 source: <20260323-b4-pks-fsck-without-the-repository-v2-0-e8dc79bca651@pks.im>


* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
  (merged to 'next' on 2026-04-01 at ddcff8b9c6)
 + path-walk: fix NULL pointer dereference in error message

 The value of a wrong pointer variable was referenced in an error
 message that reported that it shouldn't be NULL.

 Will merge to 'master'.
 source: <20260320114823.3151961-1-ysinghcin@gmail.com>


* jr/bisect-custom-terms-in-output (2026-03-20) 1 commit
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Expecting a reroll?
 cf. <xmqqfr5tdbpc.fsf@gitster.g>
 source: <20260320-bisect-terms-v1-1-c30c9540542a@schlaraffenlan.de>


* jc/whitespace-incomplete-line (2026-03-17) 1 commit
  (merged to 'next' on 2026-04-01 at 10a4d95236)
 + apply: fix new-style empty context line triggering incomplete-line check

 Fix whitespace correction for new-style empty context lines.

 Will merge to 'master'.
 source: <xmqqldfql4hp.fsf@gitster.g>


* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
  (merged to 'next' on 2026-04-01 at b9edaddcff)
 + add-patch: use repository instance from add_i_state instead of the_repository

 Reduce dependency on `the_repository` in add-patch.c file.

 Will merge to 'master'.
 source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>


* ps/commit-graph-overflow-fix (2026-03-23) 1 commit
  (merged to 'next' on 2026-04-01 at c502054354)
 + commit-graph: fix writing generations with dates exceeding 34 bits

 Fix a regression in writing the commit-graph where commits with dates
 exceeding 34 bits (beyond year 2514) could cause an underflow and
 crash Git during the generation data overflow chunk writing.

 Will merge to 'master'.
 source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>


* ua/push-remote-group (2026-03-27) 3 commits
 - SQUASH??? - futureproof against the attack of the "main"
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a reroll.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 cf. <xmqqse9kj4rh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Comments?
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
  (merged to 'next' on 2026-04-01 at 724e6526dc)
 + doc: note that -L supports patch formatting and pickaxe options
 + t4211: add tests for -L with standard diff options
 + line-log: route -L output through the standard diff pipeline
 + line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Will merge to 'master'.
 cf. <xmqqbjg3y8i9.fsf@gitster.g>
 source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-04-06) 13 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client
 - t9210: disable GIT_TEST_SPLIT_INDEX for scalar clone tests

 The fsmonitor daemon has been implemented for Linux.

 Needs review.
 source: <pull.2147.v13.git.git.1775498098.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-04-04) 13 commits
 - hook: allow hook.jobs=-1 to use all available CPU cores
 - hook: add hook.<event>.enabled switch
 - hook: move is_known_hook() to hook.c for wider use
 - hook: warn when hook.<friendly-name>.jobs is set
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow pre-push parallel execution
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks

 Needs review.
 source: <20260404082934.173788-1-adrian.ratiu@collabora.com>


* en/xdiff-cleanup-3 (2026-03-30) 6 commits
 - xdiff/xdl_cleanup_records: simplify INVESTIGATE handling for clarity
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer
 (this branch is used by pw/xdiff-shrink-memory-consumption.)

 Preparation of the xdiff/ codebase to work with Rust.

 Changes the behaviour without meaning to, which needs fixing.
 cf. <87a54698-396d-4de8-bd9d-cd72f8d1e8df@gmail.com>
 source: <pull.2156.v4.git.git.1774890003.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 17%]

* What's cooking in git.git (Apr 2026, #01)
@ 2026-04-01 23:42 18% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-04-01 23:42 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* bk/t5315-test-path-is-helpers (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-24 at f7374e8e70)
 + t5315: use test_path_is_file for loose-object check

 Test clean-up.
 source: <20260319180803.164335-1-elkhatabibilal@gmail.com>


* jc/macos-homebrew-wo-reg-enhanced (2026-03-23) 1 commit
  (merged to 'next' on 2026-03-26 at ce92a76711)
 + regexp: leave a pointer to resurrect workaround for Homebrew

 In case homebrew breaks REG_ENHANCED again, leave a in-code comment
 to suggest use of our replacement regex as a workaround.
 source: <xmqq8qbi5vvx.fsf@gitster.g>


* jk/diff-highlight-more (2026-03-22) 9 commits
  (merged to 'next' on 2026-03-24 at e7b555cbc5)
 + diff-highlight: fetch all config with one process
 + diff-highlight: allow module callers to pass in color config
 + diff-highlight: test color config
 + diff-highlight: use test_decode_color in tests
 + t: add matching negative attributes to test_decode_color
 + diff-highlight: check diff-highlight exit status in tests
 + diff-highlight: drop perl version dependency back to 5.8
 + diff-highlight: mention build instructions
 + Merge branch 'jk/diff-highlight-identical-pairs' into jk/diff-highlight-more

 Various updates to contrib/diff-highlight, including documentation
 updates, test improvements, and color configuration handling.
 source: <20260323060139.GA10215@coredump.intra.peff.net>


* jk/t0061-bat-test-update (2026-03-24) 1 commit
  (merged to 'next' on 2026-03-26 at ffae180124)
 + t0061: simplify .bat test

 A test to run a .bat file with whitespaces in the name with arguments
 with whitespaces in them was flaky in that sometimes it got killed
 before it produced expected side effects, which has been rewritten to
 make it more robust.
 source: <20260325061357.GA3772970@coredump.intra.peff.net>


* kj/refspec-parsing-outside-repository (2026-03-23) 2 commits
  (merged to 'next' on 2026-03-26 at 0a8c60e8ae)
 + refspec: fix typo in comment
 + remote-curl: fall back to default hash outside repo

 "git ls-remote '+refs/tags/*:refs/tags/*' https://..." run outside a
 repository would dereference a NULL while trying to see if the given
 refspec is a single-object refspec, which has been corrected.
 source: <20260322023557.15907-1-jayatheerthkulkarni2005@gmail.com>


* mk/repo-help-strings (2026-03-25) 2 commits
  (merged to 'next' on 2026-03-26 at a4c755ddde)
 + repo: show subcommand-specific help text
 + repo: factor repo usage strings into shared macros

 "git repo info -h" and "git repo structure -h" limit their help output
 to the part that is specific to the subcommand.
 source: <20260323152937.257406-1-  mahlet.takassa@gmail.com>


* rs/use-strvec-pushv (2026-03-24) 2 commits
  (merged to 'next' on 2026-03-24 at 7c6487dcaf)
 + use strvec_pushv() to add another strvec
 + Merge branch 'ps/build-tweaks' into rs/use-strvec-pushv

 Code paths that loop over another array to push each element into a
 strvec have been rewritten to use strvec_pushv() instead.
 source: <084f3b43-91ac-4553-8305-03944e97eaa6@web.de>


* vp/http-rate-limit-retries (2026-03-17) 3 commits
  (merged to 'next' on 2026-03-24 at 9cb4ec5fad)
 + http: add support for HTTP 429 rate limit retries
 + strbuf_attach: fix call sites to pass correct alloc
 + strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".
 cf. <ab4RIZr7b49VKjR9@nand.local>
 source: <pull.2008.v6.git.1773752435.gitgitgadget@gmail.com>

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

* jt/odb-transaction-write (2026-03-31) 7 commits
 - odb/transaction: make `write_object_stream()` pluggable
 - object-file: generalize packfile writes to use odb_write_stream
 - object-file: avoid fd seekback by checking object size upfront
 - object-file: remove flags from transaction packfile writes
 - odb: update `struct odb_write_stream` read() callback
 - odb/transaction: use pluggable `begin_transaction()`
 - odb: split `struct odb_transaction` into separate header

 ODB transaction interface is being reworked to explicitly handle
 object writes.

 Expecting a reroll.
 cf. <ac0irp8GJSrSD8GU@denethor>
 source: <20260401030316.1847362-1-jltobler@gmail.com>


* jd/cache-tree-trace-wo-the-repository (2026-03-31) 1 commit
 - cache-tree: use index state repository in trace2 calls

 Code cleanup.

 Will merge to 'next'?
 source: <pull.2259.git.git.1774951373588.gitgitgadget@gmail.com>


* ps/reftable-portability (2026-03-31) 6 commits
 - reftable: introduce "reftable-system.h" header
 - reftable/system: add abstraction to mmap files
 - reftable/system: add abstraction to retrieve time in milliseconds
 - reftable/fsck: use REFTABLE_UNUSED instead of UNUSED
 - reftable/stack: don't call fsync(3p) unless provided
 - reftable/system: provide `REFTABLE_INLINE()` macro

 Update reftable library part with what is used in libgit2 to improve
 portability to different target codebases and platforms.

 Will merge to 'next'?
 source: <20260331-pks-reftable-portability-fixes-v1-0-46bfae55c68c@pks.im>


* jk/c23-const-preserving-fixes-more (2026-03-31) 12 commits
 - refs/files-backend: drop const to fix strchr() warning
 - http: drop const to fix strstr() warning
 - range-diff: drop const to fix strstr() warnings
 - pkt-line: make packet_reader.line non-const
 - skip_prefix(): check const match between in and out params
 - pseudo-merge: fix disk reads from find_pseudo_merge()
 - find_last_dir_sep(): convert inline function to macro
 - run-command: explicitly cast away constness when assigning to void
 - pager: explicitly cast away strchr() constness
 - transport-helper: drop const to fix strchr() warnings
 - http: add const to fix strchr() warnings
 - convert: add const to fix strchr() warnings

 Further work to adjust the codebase for C23 that changes functions
 like strchr() that discarded constness when they return a pointer into
 a const string to preserve constness.

 Will merge to 'next'?
 source: <20260331233856.GA2327197@coredump.intra.peff.net>


* ps/odb-cleanup (2026-03-31) 7 commits
 - odb: drop unneeded headers and forward decls
 - odb: rename `odb_has_object()` flags
 - odb: use enum for `odb_write_object` flags
 - odb: rename `odb_write_object()` flags
 - treewide: use enum for `odb_for_each_object()` flags
 - CodingGuidelines: document our style for flags
 - Merge branch 'ps/odb-generic-object-name-handling' into ps/odb-cleanup
 (this branch uses ps/odb-generic-object-name-handling.)

 Various code clean-up around odb subsystem.

 Will merge to 'next'?
 source: <20260401-pks-odb-cleanups-v1-0-89adba9ada68@pks.im>


* ss/t7004-unhide-git-failures (2026-03-31) 1 commit
 - t7004: replace wc -l with modern test helpers

 Test clean-up.

 Will merge to 'next'.
 source: <20260401062029.54757-1-r.siddharth.shrimali@gmail.com>


* ng/add-files-to-cache-wo-rename (2026-04-01) 1 commit
 - read-cache: disable renames in add_files_to_cache

 add_files_to_cache() used diff_files() to detect only the paths that
 are different between the index and the working tree and add them,
 which does not need rename detection, which interfered with unnecessary
 conflicts.

 Will merge to 'next'?
 source: <20260401190033.11325-1-blindmansion@gmail.com>

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

* sa/cat-file-batch-mailmap-switch (2026-03-31) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Will merge to 'next'?
 source: <20260331121111.9614-2-siddharthasthana31@gmail.com>


* sp/doc-gitignore-oowt (2026-03-28) 1 commit
  (merged to 'next' on 2026-03-31 at ab3e6e484e)
 + doc: gitignore: clarify pattern base for info/exclude and core.excludesFile

 Doc update.

 Will merge to 'master'.
 source: <20260328152233.1140327-1-shreyanshpaliwalcmsmn@gmail.com>


* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--checksum-only` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - strvec: introduce `strvec_init_alloc()`
 - midx: use `string_list` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Expecting a reroll.
 cf. <acxBUkHDolY9VCnR@nand.local>
 source: <cover.1774820449.git.me@ttaylorr.com>


* th/t6101-unhide-git-failures (2026-03-28) 1 commit
  (merged to 'next' on 2026-03-31 at 8867bcf2b4)
 + t6101: avoid suppressing git's exit code

 Test cleanup.

 Will merge to 'master'.
 source: <20260328135935.180646-1-vikingtc4@gmail.com>


* za/t2000-modernise (2026-03-27) 1 commit
  (merged to 'next' on 2026-03-31 at 279c41a3e0)
 + t2000: modernise overall structure

 Test cleanup.

 Will merge to 'master'.
 source: <20260327234019.95591-1-zakariyahali100@gmail.com>


* jd/read-cache-trace-wo-the-repository (2026-03-30) 1 commit
  (merged to 'next' on 2026-04-01 at 7047e45a6d)
 + read-cache: use istate->repo for trace2 logging

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 read-cache.c codepath.

 Will merge to 'master'.
 source: <pull.2253.v4.git.git.1774895886678.gitgitgadget@gmail.com>


* jd/unpack-trees-wo-the-repository (2026-03-31) 2 commits
 - unpack-trees: use repository from index instead of global
 - unpack-trees: use repository from index instead of global

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.
 source: <pull.2258.v2.git.git.1774971267.gitgitgadget@gmail.com>


* ps/receive-pack-updateinstead-in-worktree (2026-03-30) 3 commits
 - receive-pack: use worktree HEAD for updateInstead
 - t5516: clean up cloned and new-wt in denyCurrentBranch and worktrees test
 - t5516: test updateInstead with worktree and unborn bare HEAD

 The check in "receive-pack" to prevent a checked out branch from
 getting updated via updateInstead mechanism has been corrected.

 Will merge to 'next'.
 source: <20260330111822.165188-1-pabloosabaterr@gmail.com>


* ps/setup-wo-the-repository (2026-03-30) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260330-pks-setup-wo-the-repository-v1-0-0d2e822837aa@pks.im>


* qb/doc-git-stash-push-optionality (2026-03-30) 1 commit
  (merged to 'next' on 2026-03-31 at 66ece1b5d6)
 + docs: fix "git stash [push]" documentation

 Doc update.

 Will merge to 'master'.
 source: <pull.2255.v2.git.git.1774877075694.gitgitgadget@gmail.com>


* kh/doc-trailers (2026-03-30) 2 commits
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <5ba0bbcb-25a7-4ad0-ac1d-c86508eaffdd@app.fastmail.com>
 source: <CV_doc_int-tr_key_format.533@msgid.xyz>


* tc/replay-ref (2026-03-25) 4 commits
 . replay: allow to specify a ref with option --ref
 . replay: use stuck form in documentation and help message
 . builtin/replay: mark options as not negatable
 . Merge branch 'sa/replay-revert' into tc/replay-ref
 (this branch uses sa/replay-revert.)

 The experimental `git replay` command learned the `--ref=<ref>` option
 to allow specifying which ref to update, overriding the default behavior.

 Seems to break CI.
 cf. <xmqqjyuynv99.fsf@gitster.g>
 source: <20260325-toon-replay-arbitrary-ref-v2-0-553038702c9c@iotcl.com>


* jk/c23-const-preserving-fixes (2026-03-26) 5 commits
  (merged to 'next' on 2026-03-31 at c813b9b814)
 + config: store allocated string in non-const pointer
 + rev-parse: avoid writing to const string for parent marks
 + revision: avoid writing to const string for parent marks
 + rev-parse: simplify dotdot parsing
 + revision: make handle_dotdot() interface less confusing

 Adjust the codebase for C23 that changes functions like strchr()
 that discarded constness when they return a pointer into a const
 string to preserve constness.

 Will merge to 'master'.
 source: <20260326190243.GA412983@coredump.intra.peff.net>
 source: <20260326192320.GA418281@coredump.intra.peff.net>


* mf/format-patch-commit-list-format-doc (2026-03-27) 3 commits
  (merged to 'next' on 2026-03-31 at 8f775bd513)
 + format-patch: removing unconditional wrapping
 + docs: fix --commit-list-format related entries
 + Merge branch 'mf/format-patch-commit-list-format' into mf/format-patch-commit-list-format-doc
 (this branch uses mf/format-patch-commit-list-format and mf/format-patch-cover-letter-format.)

 Doc updates.

 Will merge to 'master'.
 source: <cover.1774640789.git.mroik@delayed.space>


* th/t8003-unhide-git-failures (2026-03-28) 2 commits
  (merged to 'next' on 2026-03-30 at ad41378b07)
 + t8003: modernise style
 + t8003: avoid suppressing git's exit code

 Test clean-up.

 Will merge to 'master'.
 source: <20260328132955.172262-2-vikingtc4@gmail.com>


* jt/fast-import-signed-modes (2026-03-26) 5 commits
 - fast-import: add 'abort-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'sign-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'abort-if-invalid' mode to '--signed-commits=<mode>'
 - fast-export: check for unsupported signing modes earlier

 Handling of signed commits and tags in fast-import has been made more
 configurable.

 Will merge to 'next'.
 source: <20260326191414.3783974-1-jltobler@gmail.com>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 cf. <bdff0a5d-b738-4053-9b72-08eba88156de@kdbg.org>
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* cc/promisor-auto-config-url (2026-03-23) 16 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - t5710: use proper file:// URIs for absolute paths
 - promisor-remote: refactor should_accept_remote() control flow
 - promisor-remote: pass config entry to all_fields_match() directly
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - promisor-remote: remove the 'accepted' strvec
 - promisor-remote: keep accepted promisor_info structs alive
 - promisor-remote: refactor accept_from_server()
 - promisor-remote: refactor has_control_char()
 - promisor-remote: clarify that a remote is ignored
 - urlmatch: add url_is_valid_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling is enhanced to auto-configure remotes based
 on a URL whitelist.

 Expecting a reroll.
 cf. <CAP8UFD2vAK_khTkJMP4QBfhYA5iYVW5sfB3i-vnzhf71BvwQ=w@mail.gmail.com>
 source: <20260323080520.887550-1-christian.couder@gmail.com>


* ps/fsck-wo-the-repository (2026-03-23) 12 commits
  (merged to 'next' on 2026-04-01 at 6ab7607f2d)
 + builtin/fsck: stop using `the_repository` in error reporting
 + builtin/fsck: stop using `the_repository` when marking objects
 + builtin/fsck: stop using `the_repository` when checking packed objects
 + builtin/fsck: stop using `the_repository` with loose objects
 + builtin/fsck: stop using `the_repository` when checking reflogs
 + builtin/fsck: stop using `the_repository` when checking refs
 + builtin/fsck: stop using `the_repository` when snapshotting refs
 + builtin/fsck: fix trivial dependence on `the_repository`
 + fsck: drop USE_THE_REPOSITORY
 + fsck: store repository in fsck options
 + fsck: initialize fsck options via a function
 + fetch-pack: move fsck options into function scope

 Internals of "git fsck" have been refactored to not depend on the
 global `the_repository` variable.

 Will merge to 'master'.
 source: <20260323-b4-pks-fsck-without-the-repository-v2-0-e8dc79bca651@pks.im>


* tb/stdin-packs-excluded-but-open (2026-03-27) 5 commits
  (merged to 'next' on 2026-03-31 at e8927aa861)
 + repack: mark non-MIDX packs above the split as excluded-open
 + pack-objects: support excluded-open packs with --stdin-packs
 + t7704: demonstrate failure with once-cruft objects above the geometric split
 + pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`
 + pack-objects: plug leak in `read_stdin_packs()`

 pack-objects's --stdin-packs=follow mode learns to handle
 excluded-but-open packs.

 Will merge to 'master'.
 source: <cover.1774641999.git.me@ttaylorr.com>


* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
  (merged to 'next' on 2026-04-01 at ddcff8b9c6)
 + path-walk: fix NULL pointer dereference in error message

 The value of a wrong pointer variable was referenced in an error
 message that reported that it shouldn't be NULL.

 Will merge to 'master'.
 source: <20260320114823.3151961-1-ysinghcin@gmail.com>


* jr/bisect-custom-terms-in-output (2026-03-20) 1 commit
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Expecting a reroll?
 cf. <xmqqfr5tdbpc.fsf@gitster.g>
 source: <20260320-bisect-terms-v1-1-c30c9540542a@schlaraffenlan.de>


* jc/whitespace-incomplete-line (2026-03-17) 1 commit
  (merged to 'next' on 2026-04-01 at 10a4d95236)
 + apply: fix new-style empty context line triggering incomplete-line check

 Fix whitespace correction for new-style empty context lines.

 Will merge to 'master'.
 source: <xmqqldfql4hp.fsf@gitster.g>


* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
  (merged to 'next' on 2026-04-01 at b9edaddcff)
 + add-patch: use repository instance from add_i_state instead of the_repository

 Reduce dependency on `the_repository` in add-patch.c file.

 Will merge to 'master'.
 source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>


* ds/backfill-revs (2026-03-26) 6 commits
  (merged to 'next' on 2026-03-27 at d4703fdd35)
 + t5620: test backfill's unknown argument handling
 + path-walk: support wildcard pathspecs for blob filtering
 + backfill: work with prefix pathspecs
 + backfill: accept revision arguments
 + t5620: prepare branched repo for revision tests
 + revision: include object-name.h

 `git backfill` learned to accept revision and pathspec arguments.

 Will merge to 'master'.
 source: <pull.2070.v3.git.1774538094.gitgitgadget@gmail.com>


* ps/commit-graph-overflow-fix (2026-03-23) 1 commit
  (merged to 'next' on 2026-04-01 at c502054354)
 + commit-graph: fix writing generations with dates exceeding 34 bits

 Fix a regression in writing the commit-graph where commits with dates
 exceeding 34 bits (beyond year 2514) could cause an underflow and
 crash Git during the generation data overflow chunk writing.

 Will merge to 'master'.
 source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>


* tc/replay-down-to-root (2026-03-24) 1 commit
  (merged to 'next' on 2026-03-31 at 47456fcc12)
 + replay: support replaying down from root commit

 git replay now supports replaying down to the root commit.

 Will merge to 'master'.
 source: <20260324-toon-replay-down-to-root-v2-1-34e723489f6e@iotcl.com>


* ua/push-remote-group (2026-03-27) 3 commits
 - SQUASH??? - futureproof against the attack of the "main"
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a reroll.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 cf. <xmqqse9kj4rh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* ps/odb-generic-object-name-handling (2026-03-20) 16 commits
  (merged to 'next' on 2026-03-31 at c14d7bdd1e)
 + odb: introduce generic `odb_find_abbrev_len()`
 + object-file: move logic to compute packed abbreviation length
 + object-name: move logic to compute loose abbreviation length
 + object-name: simplify computing common prefixes
 + object-name: abbreviate loose object names without `disambiguate_state`
 + object-name: merge `update_candidates()` and `match_prefix()`
 + object-name: backend-generic `get_short_oid()`
 + object-name: backend-generic `repo_collect_ambiguous()`
 + object-name: extract function to parse object ID prefixes
 + object-name: move logic to iterate through packed prefixed objects
 + object-name: move logic to iterate through loose prefixed objects
 + odb: introduce `struct odb_for_each_object_options`
 + oidtree: extend iteration to allow for arbitrary return codes
 + oidtree: modernize the code a bit
 + Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
 + object-file: fix sparse 'plain integer as NULL pointer' error
 (this branch is used by ps/odb-cleanup.)

 Object name handling (disambiguation and abbreviation) has been
 refactored to be backend-generic, moving logic into the respective
 object database backends.

 Will merge to 'master'.
 cf. <874ilxm4wp.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260320-b4-pks-odb-source-abbrev-v2-0-fe65dcd8c735@pks.im>


* aa/reap-transport-child-processes (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-31 at fb77f8ba9e)
 + transport-helper, connect: use clean_on_exit to reap children on abnormal exit

 A few code paths that spawned child processes for network
 connection weren't wait(2)ing for their children and letting "init"
 reap them instead; they have been tightened.

 Will merge to 'master'.
 cf. <20260325061357.GA3772970@coredump.intra.peff.net>
 source: <20260312214945.4050010-1-cshung@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Comments?
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* pw/worktree-reduce-the-repository (2026-03-26) 3 commits
  (merged to 'next' on 2026-03-30 at f967ececef)
 + worktree: reject NULL worktree in get_worktree_git_dir()
 + worktree add: stop reading ".git/HEAD"
 + worktree: remove "the_repository" from is_current_worktree()

 Reduce the reference to the_repository in the worktree subsystem.

 Will merge to 'master'.
 source: <cover.1774534617.git.phillip.wood@dunelm.org.uk>


* mf/format-patch-commit-list-format (2026-03-23) 9 commits
  (merged to 'next' on 2026-03-24 at 0f5b6702eb)
 + format-patch: --commit-list-format without prefix
 + format-patch: add preset for --commit-list-format
 + format-patch: wrap generate_commit_list_cover()
 + format.commitListFormat: strip meaning from empty
 + docs/pretty-formats: add %(count) and %(total)
 + format-patch: rename --cover-letter-format option
 + format-patch: refactor generate_commit_list_cover
 + pretty.c: better die message %(count) and %(total)
 + Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
 (this branch is used by mf/format-patch-commit-list-format-doc; uses mf/format-patch-cover-letter-format.)

 Improve the recently introduced `git format-patch
 --commit-list-format` (formerly `--cover-letter-format`) option,
 including a new "modern" preset and better CLI ergonomics.

 Waiting for the follow-on topic.
 source: <cover.1774284699.git.mroik@delayed.space>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Will merge to 'next'.
 cf. <xmqqbjg3y8i9.fsf@gitster.g>
 source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-25) 13 commits
  (merged to 'next' on 2026-03-30 at c128948b16)
 + hook: reject unknown hook names in git-hook(1)
 + hook: show disabled hooks in "git hook list"
 + hook: show config scope in git hook list
 + hook: introduce hook_config_cache_entry for per-hook data
 + t1800: add test to verify hook execution ordering
 + hook: make consistent use of friendly-name in docs
 + hook: replace hook_list_clear() -> string_list_clear_func()
 + hook: detect & emit two more bugs
 + hook: rename cb_data_free/alloc -> hook_data_free/alloc
 + hook: fix minor style issues
 + builtin/receive-pack: properly init receive_hook strbuf
 + hook: move unsorted_string_list_remove() to string-list.[ch]
 + Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Will merge to 'master'.
 source: <20260325195503.1139418-1-adrian.ratiu@collabora.com>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders
 (this branch is used by mf/format-patch-commit-list-format and mf/format-patch-commit-list-format-doc.)

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Waiting for the follow-on topic.
 source: <cover.1772839973.git.mroik@delayed.space>


* pt/fsmonitor-linux (2026-03-30) 13 commits
 - fsmonitor: fix split-index bitmap bounds in tweak_fsmonitor()
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Needs review.
 source: <pull.2147.v12.git.git.1774937958.gitgitgadget@gmail.com>


* sa/replay-revert (2026-03-25) 2 commits
  (merged to 'next' on 2026-03-30 at ef4896a676)
 + replay: add --revert mode to reverse commit changes
 + sequencer: extract revert message formatting into shared function
 (this branch is used by tc/replay-ref.)

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Will merge to 'master'.
 source: <20260325202354.10628-1-siddharthasthana31@gmail.com>


* ar/parallel-hooks (2026-03-26) 13 commits
 - hook: allow hook.jobs=-1 to use all available CPU cores
 - hook: add hook.<event>.enabled switch
 - hook: move is_known_hook() to hook.c for wider use
 - hook: warn when hook.<friendly-name>.jobs is set
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow pre-push parallel execution
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups.)

 Needs review.
 source: <20260326101819.1307742-1-adrian.ratiu@collabora.com>


* en/xdiff-cleanup-3 (2026-03-30) 6 commits
 - xdiff/xdl_cleanup_records: simplify INVESTIGATE handling for clarity
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer

 Preparation of the xdiff/ codebase to work with Rust

 Expecting a (hopefully small and final) reroll?
 cf. <40589b6f-6694-4d9c-8367-3f6352e45e7b@gmail.com>
 cf. <32c34d0d-9358-43e3-9d58-5999b3ffd6c2@gmail.com>
 cf. <87a54698-396d-4de8-bd9d-cd72f8d1e8df@gmail.com>
 source: <pull.2156.v4.git.git.1774890003.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* bc/rev-parse-parseopt-help-exit-code (2026-03-16) 1 commit
 . rev-parse: have --parseopt callers exit 0 on --help

 `rev-parse --parseopt` now includes "exit 0" in its output when the
 user asks for help, ensuring that scripts using the recommended `eval`
 pattern exit successfully.

 Need to step back and rethink how exit code should look like.
 cf. <20260317150759.GA9975@coredump.intra.peff.net>
 source: <20260316220742.1286157-1-sandals@crustytoothpaste.net>


* js/macos-homebrew-forgets-reg-enhanced (2026-03-20) 1 commit
 . osx-clang: work around Homebrew's clang lacking REG_ENHANCED

 The build on macOS with Clang is fixed to work around a Homebrew change
 that exposed an issue with missing REG_ENHANCED.

 No longer needed?
 cf. <6c108696-2d41-4fa1-9662-fbf6db97f767@web.de>
 cf. <458ad3c1-96df-4575-ee42-e6eb754f25f6@gmx.de>
 cf. <xmqq8qbi5vvx.fsf@gitster.g>
 source: <d340af9e-334c-4e81-e58a-fc3dea73ebdd@gmx.de>


^ permalink raw reply	[relevance 18%]

* Re: What's cooking in git.git (Mar 2026, #12)
  @ 2026-03-31 15:27 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-31 15:27 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

> On Mon, Mar 30, 2026 at 05:10:42PM -0700, Junio C Hamano wrote:
>> * ps/commit-graph-overflow-fix (2026-03-23) 1 commit
>>  - commit-graph: fix writing generations with dates exceeding 34 bits
>> 
>>  Fix a regression in writing the commit-graph where commits with dates
>>  exceeding 34 bits (beyond year 2514) could cause an underflow and
>>  crash Git during the generation data overflow chunk writing.
>> 
>>  Waiting for review response.
>>  cf. <xmqq1ph92pzs.fsf@gitster.g>
>>  source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>
>
> Shall this also be marked as "Will merge to next" based on our last
> discussion at [1]? I mostly want to ensure this is part of rc0 so that
> the regression isn't part of any tagged release, even if it's just a
> release candidate.

Even though I still feel uncomfortable hurrying to merge down an
obviously UB code, instead of an uglier but far safer conditional
compilation, patching it on top is trivial, so let's mark it for
'next'.  Thanks for spotting.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Mar 2026, #12)
  @ 2026-03-31 15:15 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-31 15:15 UTC (permalink / raw)
  To: Mirko Faina; +Cc: git

Mirko Faina <mroik@delayed.space> writes:

> On Mon, Mar 30, 2026 at 05:10:42PM -0700, Junio C Hamano wrote:
>> * mf/format-patch-commit-list-format-doc (2026-03-27) 3 commits
>>  - format-patch: removing unconditional wrapping
>>  - docs: fix --commit-list-format related entries
>>  - Merge branch 'mf/format-patch-commit-list-format' into mf/format-patch-commit-list-format-doc
>>  (this branch uses mf/format-patch-commit-list-format and mf/format-patch-cover-letter-format.)
>> 
>>  Doc updates.
>> 
>>  Will merge to 'next'.
>>  source: <cover.1774640789.git.mroik@delayed.space>

Yeah, you're right.  The other two should wait for this one to avoid
disruption.

Thanks for noticing.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Mar 2026, #12)
@ 2026-03-31  0:10 18% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-03-31  0:10 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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]

* sa/cat-file-batch-mailmap-switch (2026-03-29) 1 commit
 - cat-file: add mailmap subcommand to --batch-command

 "git cat-file --batch" learns an in-line command "mailmap"
 that lets the user toggle use of mailmap.

 Comments?
 source: <20260329082808.12609-2-siddharthasthana31@gmail.com>


* sp/doc-gitignore-oowt (2026-03-28) 1 commit
 - doc: gitignore: clarify pattern base for info/exclude and core.excludesFile

 Doc update.

 Will merge to 'next'.
 source: <20260328152233.1140327-1-shreyanshpaliwalcmsmn@gmail.com>


* tb/incremental-midx-part-3.3 (2026-03-29) 16 commits
 - repack: allow `--write-midx=incremental` without `--geometric`
 - repack: introduce `--write-midx=incremental`
 - repack: implement incremental MIDX repacking
 - packfile: ensure `close_pack_revindex()` frees in-memory revindex
 - builtin/repack.c: convert `--write-midx` to an `OPT_CALLBACK`
 - repack-geometry: prepare for incremental MIDX repacking
 - repack-midx: extract `repack_fill_midx_stdin_packs()`
 - repack-midx: factor out `repack_prepare_midx_command()`
 - midx: expose `midx_layer_contains_pack()`
 - repack: track the ODB source via existing_packs
 - midx: support custom `--base` for incremental MIDX writes
 - midx: introduce `--checksum-only` for incremental MIDX writes
 - midx: use `strvec` for `keep_hashes`
 - strvec: introduce `strvec_init_alloc()`
 - midx: use `string_list` for retained MIDX files
 - midx-write: handle noop writes when converting incremental chains

 The repacking code has been refactored and compaction of MIDX layers
 have been implemented, and incremental strategy that does not require
 all-into-one repacking has been introduced.

 Needs review.
 source: <cover.1774820449.git.me@ttaylorr.com>


* th/t6101-unhide-git-failures (2026-03-28) 1 commit
 - t6101: avoid suppressing git's exit code

 Test cleanup.

 Will merge to 'next'.
 source: <20260328135935.180646-1-vikingtc4@gmail.com>


* za/t2000-modernise (2026-03-27) 1 commit
 - t2000: modernise overall structure

 Test cleanup.

 Will merge to 'next'.
 source: <20260327234019.95591-1-zakariyahali100@gmail.com>


* jd/read-cache-trace-wo-the-repository (2026-03-30) 1 commit
 - read-cache: use istate->repo for trace2 logging

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 read-cache.c codepath.

 Will merge to 'next'.
 source: <pull.2253.v4.git.git.1774895886678.gitgitgadget@gmail.com>


* jd/unpack-trees-wo-the-repository (2026-03-30) 1 commit
 - unpack-trees: use explicit repository in trace2 calls

 A handful of inappropriate uses of the_repository have been
 rewritten to use the right repository structure instance in the
 unpack-trees.c codepath.

 Will merge to 'next'.
 source: <pull.2258.git.git.1774901607564.gitgitgadget@gmail.com>


* ps/receive-pack-updateinstead-in-worktree (2026-03-30) 3 commits
 - receive-pack: use worktree HEAD for updateInstead
 - t5516: clean up cloned and new-wt in denyCurrentBranch and worktrees test
 - t5516: test updateInstead with worktree and unborn bare HEAD

 The check in "receive-pack" to prevent a checked out branch from
 getting updated via updateInstead mechanism has been corrected.

 Needs review.
 source: <20260330111822.165188-1-pabloosabaterr@gmail.com>


* ps/setup-wo-the-repository (2026-03-30) 18 commits
 - setup: stop using `the_repository` in `init_db()`
 - setup: stop using `the_repository` in `create_reference_database()`
 - setup: stop using `the_repository` in `initialize_repository_version()`
 - setup: stop using `the_repository` in `check_repository_format()`
 - setup: stop using `the_repository` in `upgrade_repository_format()`
 - setup: stop using `the_repository` in `setup_git_directory()`
 - setup: stop using `the_repository` in `setup_git_directory_gently()`
 - setup: stop using `the_repository` in `setup_git_env()`
 - setup: stop using `the_repository` in `set_git_work_tree()`
 - setup: stop using `the_repository` in `setup_work_tree()`
 - setup: stop using `the_repository` in `enter_repo()`
 - setup: stop using `the_repository` in `verify_non_filename()`
 - setup: stop using `the_repository` in `verify_filename()`
 - setup: stop using `the_repository` in `path_inside_repo()`
 - setup: stop using `the_repository` in `prefix_path()`
 - setup: stop using `the_repository` in `is_inside_git_dir()`
 - setup: stop using `the_repository` in `is_inside_worktree()`
 - setup: replace use of `the_repository` in static functions

 Many uses of the_repository has been updated to use a more
 appropriate struct repository instance in setup.c codepath.

 Needs review.
 source: <20260330-pks-setup-wo-the-repository-v1-0-0d2e822837aa@pks.im>


* qb/doc-git-stash-push-optionality (2026-03-30) 1 commit
 - docs: fix "git stash [push]" documentation

 Doc update.

 Will merge to 'next'.
 source: <pull.2255.v2.git.git.1774877075694.gitgitgadget@gmail.com>


* kh/doc-trailers (2026-03-30) 2 commits
 - doc: interpret-trailers: explain key format
 - doc: interpret-trailers: stop fixating on RFC 822

 Documentation updates.

 Expecting a reroll.
 cf. <5ba0bbcb-25a7-4ad0-ac1d-c86508eaffdd@app.fastmail.com>
 source: <CV_doc_int-tr_key_format.533@msgid.xyz>

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

* ai/t2107-test-path-is-helpers (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-23 at 56d10e5f76)
 + t2107: modernize path existence check

 Test cleanup.
 source: <pull.2071.v2.git.1773864455956.gitgitgadget@gmail.com>


* ej/ref-transaction-hook-preparing (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-20 at f9b8fbb0dc)
 + refs: add 'preparing' phase to the reference-transaction hook

 The reference-transaction hook was taught to be triggered before
 taking locks on references in the "preparing" phase.
 source: <20260317023624.43070-2-eric.peijian@gmail.com>


* gi/doc-boolean-config-typofix (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-20 at 8810624798)
 + doc: add missing space on git-config page

 Doc typofix.
 source: <20260318210020.759128-1-gabl@gabl.ink>


* jc/rerere-modern-strbuf-handling (2026-03-19) 2 commits
  (merged to 'next' on 2026-03-21 at 919b766afc)
 + cocci: strbuf.buf is never NULL
 + rerere: update to modern representation of empty strbufs

 Code clean-up overdue by 19 years.
 source: <xmqq341wnvbk.fsf@gitster.g>
 source: <xmqq4imbigvt.fsf@gitster.g>


* jk/diff-highlight-identical-pairs (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at a8aa5bd14e)
 + contrib/diff-highlight: do not highlight identical pairs
 (this branch is used by jk/diff-highlight-more.)

 The handling of the incomplete lines at the end by "git
 diff-highlight" has been fixed.
 source: <20260317230223.GA716496@coredump.intra.peff.net>


* jw/apply-corrupt-location (2026-03-17) 3 commits
  (merged to 'next' on 2026-03-23 at 18e9b8f91f)
 + apply: report input location in binary and garbage patch errors
 + apply: report input location in header parsing errors
 + apply: report the location of corrupt patches

 "git apply" now reports the name of the input file along with the
 line number when it encounters a corrupt patch, and correctly
 resets the line counter when processing multiple patch files.
 source: <20260317162321.71812-1-jerrywang183@yahoo.com>


* jw/object-name-bitset-to-enum (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-23 at 881af371ef)
 + object-name: turn INTERPRET_BRANCH_* constants into enum values

 The unsigned integer that is used as an bitset to specify the kind
 of branches interpret_branch_name() function has been changed to
 use a dedicated enum type.
 source: <20260318190942.22595-1-jerrywang183@yahoo.com>


* jw/t2203-status-pipe-fix (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-23 at 521c6eb44b)
 + t2203: avoid suppressing git status exit code

 Test clean-up.
 source: <20260317011544.65952-1-jerrywang183@yahoo.com>


* kh/doc-interpret-trailers-1 (2026-03-16) 4 commits
  (merged to 'next' on 2026-03-20 at 6acc8b5a8a)
 + interpret-trailers: use placeholder instead of *
 + doc: config: convert trailers section to synopsis style
 + doc: interpret-trailers: normalize and fill out options
 + doc: interpret-trailers: convert to synopsis style

 Doc updates.
 source: <V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz>


* mf/apply-p-no-atoi (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-20 at 70a0a4313b)
 + apply.c: fix -p argument parsing

 "git apply -p<n>" parses <n> more carefully now.
 source: <20260316005120.7079-1-mroik@delayed.space>


* mr/merge-file-object-id-worktree-fix (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-20 at 68e1ee2045)
 + merge-file: fix BUG when --object-id is used in a worktree

 merge-file --object-id used to trigger a BUG when run in a linked
 worktree, which has been fixed.
 source: <c076edd0-9057-443b-ba37-33aacde2eede@app.fastmail.com>


* ps/build-tweaks (2026-03-18) 8 commits
  (merged to 'next' on 2026-03-20 at fb53cf619a)
 + meson: precompile "git-compat-util.h"
 + meson: compile compatibility sources separately
 + git-compat-util.h: move warning infra to prepare for PCHs
 + builds: move build scripts into "tools/"
 + contrib: move "update-unicode.sh" script into "tools/"
 + contrib: move "coverage-diff.sh" script into "tools/"
 + contrib: move "coccinelle/" directory into "tools/"
 + Introduce new "tools/" directory
 (this branch is used by rs/use-strvec-pushv.)

 Tweak the build infrastructure by moving tools around.
 source: <20260319-b4-pks-build-infra-improvements-v3-0-82f5fb3edc3f@pks.im>


* rs/ahead-behind-cleanup-optimization (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at 5d8b4fa265)
 + commit-reach: simplify cleanup of remaining bitmaps in ahead_behind ()

 The cleanup of remaining bitmaps in "ahead_behind()" has been
 simplified.
 source: <21adf042-2bd1-4022-8822-9ed4985122a4@web.de>


* rs/prio-queue-to-commit-stack (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at 265cb7b28c)
 + use commit_stack instead of prio_queue in LIFO mode

 Uses of prio_queue as a LIFO stack of commits have been written
 with commit_stack.
 source: <05fc946f-6670-46e9-a058-231ee464029d@web.de>


* rs/split-index-the-repo-fix (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at d66850b2ce)
 + split-index: stop using the_repository and the_hash_algo

 split-index.c has been updated to not use the global the_repository
 and the_hash_algo variables.
 source: <944c2331-4dec-4c98-9059-f41dc204ed86@web.de>

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

* jk/t0061-bat-test-update (2026-03-24) 1 commit
  (merged to 'next' on 2026-03-26 at ffae180124)
 + t0061: simplify .bat test

 A test to run a .bat file with whitespaces in the name with arguments
 with whitespaces in them was flaky in that sometimes it got killed
 before it produced expected side effects, which has been rewritten to
 make it more robust.

 Will merge to 'master'.
 source: <20260325061357.GA3772970@coredump.intra.peff.net>


* mk/repo-help-strings (2026-03-25) 2 commits
  (merged to 'next' on 2026-03-26 at a4c755ddde)
 + repo: show subcommand-specific help text
 + repo: factor repo usage strings into shared macros

 "git repo info -h" and "git repo structure -h" limit their help output
 to the part that is specific to the subcommand.

 Will merge to 'master'.
 source: <20260323152937.257406-1-  mahlet.takassa@gmail.com>


* tc/replay-ref (2026-03-25) 4 commits
 . replay: allow to specify a ref with option --ref
 . replay: use stuck form in documentation and help message
 . builtin/replay: mark options as not negatable
 . Merge branch 'sa/replay-revert' into tc/replay-ref
 (this branch uses sa/replay-revert.)

 The experimental `git replay` command learned the `--ref=<ref>` option
 to allow specifying which ref to update, overriding the default behavior.

 Seems to break CI.
 cf. <xmqqjyuynv99.fsf@gitster.g>
 source: <20260325-toon-replay-arbitrary-ref-v2-0-553038702c9c@iotcl.com>


* jc/macos-homebrew-wo-reg-enhanced (2026-03-23) 1 commit
  (merged to 'next' on 2026-03-26 at ce92a76711)
 + regexp: leave a pointer to resurrect workaround for Homebrew

 In case homebrew breaks REG_ENHANCED again, leave a in-code comment
 to suggest use of our replacement regex as a workaround.

 Will merge to 'master'.
 source: <xmqq8qbi5vvx.fsf@gitster.g>


* jk/c23-const-preserving-fixes (2026-03-26) 5 commits
 - config: store allocated string in non-const pointer
 - rev-parse: avoid writing to const string for parent marks
 - revision: avoid writing to const string for parent marks
 - rev-parse: simplify dotdot parsing
 - revision: make handle_dotdot() interface less confusing

 Adjust the codebase for C23 that changes functions like strchr()
 that discarded constness when they return a pointer into a const
 string to preserve constness.

 Will merge to 'next'.
 source: <20260326190243.GA412983@coredump.intra.peff.net>
 source: <20260326192320.GA418281@coredump.intra.peff.net>


* mf/format-patch-commit-list-format-doc (2026-03-27) 3 commits
 - format-patch: removing unconditional wrapping
 - docs: fix --commit-list-format related entries
 - Merge branch 'mf/format-patch-commit-list-format' into mf/format-patch-commit-list-format-doc
 (this branch uses mf/format-patch-commit-list-format and mf/format-patch-cover-letter-format.)

 Doc updates.

 Will merge to 'next'.
 source: <cover.1774640789.git.mroik@delayed.space>


* th/t8003-unhide-git-failures (2026-03-28) 2 commits
  (merged to 'next' on 2026-03-30 at ad41378b07)
 + t8003: modernise style
 + t8003: avoid suppressing git's exit code

 Test clean-up.

 Will merge to 'master'.
 source: <20260328132955.172262-2-vikingtc4@gmail.com>


* jt/fast-import-signed-modes (2026-03-26) 5 commits
 - fast-import: add 'abort-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'sign-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'abort-if-invalid' mode to '--signed-commits=<mode>'
 - fast-export: check for unsupported signing modes earlier

 Handling of signed commits and tags in fast-import has been made more
 configurable.

 Needs review.
 source: <20260326191414.3783974-1-jltobler@gmail.com>


* ps/graph-lane-limit (2026-03-27) 3 commits
 - graph: add truncation mark to capped lanes
 - graph: add --graph-lane-limit option
 - graph: limit the graph width to a hard-coded max

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 source: <20260328001113.1275291-1-pabloosabaterr@gmail.com>


* rs/use-strvec-pushv (2026-03-24) 2 commits
  (merged to 'next' on 2026-03-24 at 7c6487dcaf)
 + use strvec_pushv() to add another strvec
 + Merge branch 'ps/build-tweaks' into rs/use-strvec-pushv

 Code paths that loop over another array to push each element into a
 strvec have been rewritten to use strvec_pushv() instead.

 Will merge to 'master'.
 source: <084f3b43-91ac-4553-8305-03944e97eaa6@web.de>


* cc/promisor-auto-config-url (2026-03-23) 16 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - t5710: use proper file:// URIs for absolute paths
 - promisor-remote: refactor should_accept_remote() control flow
 - promisor-remote: pass config entry to all_fields_match() directly
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - promisor-remote: remove the 'accepted' strvec
 - promisor-remote: keep accepted promisor_info structs alive
 - promisor-remote: refactor accept_from_server()
 - promisor-remote: refactor has_control_char()
 - promisor-remote: clarify that a remote is ignored
 - urlmatch: add url_is_valid_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling is enhanced to auto-configure remotes based
 on a URL whitelist.

 Needs review.
 source: <20260323080520.887550-1-christian.couder@gmail.com>


* kj/refspec-parsing-outside-repository (2026-03-23) 2 commits
  (merged to 'next' on 2026-03-26 at 0a8c60e8ae)
 + refspec: fix typo in comment
 + remote-curl: fall back to default hash outside repo

 "git ls-remote '+refs/tags/*:refs/tags/*' https://..." run outside a
 repository would dereference a NULL while trying to see if the given
 refspec is a single-object refspec, which has been corrected.

 Will merge to 'master'.
 source: <20260322023557.15907-1-jayatheerthkulkarni2005@gmail.com>


* jk/diff-highlight-more (2026-03-22) 9 commits
  (merged to 'next' on 2026-03-24 at e7b555cbc5)
 + diff-highlight: fetch all config with one process
 + diff-highlight: allow module callers to pass in color config
 + diff-highlight: test color config
 + diff-highlight: use test_decode_color in tests
 + t: add matching negative attributes to test_decode_color
 + diff-highlight: check diff-highlight exit status in tests
 + diff-highlight: drop perl version dependency back to 5.8
 + diff-highlight: mention build instructions
 + Merge branch 'jk/diff-highlight-identical-pairs' into jk/diff-highlight-more

 Various updates to contrib/diff-highlight, including documentation
 updates, test improvements, and color configuration handling.

 Will merge to 'master'.
 source: <20260323060139.GA10215@coredump.intra.peff.net>


* ps/fsck-wo-the-repository (2026-03-23) 12 commits
 - builtin/fsck: stop using `the_repository` in error reporting
 - builtin/fsck: stop using `the_repository` when marking objects
 - builtin/fsck: stop using `the_repository` when checking packed objects
 - builtin/fsck: stop using `the_repository` with loose objects
 - builtin/fsck: stop using `the_repository` when checking reflogs
 - builtin/fsck: stop using `the_repository` when checking refs
 - builtin/fsck: stop using `the_repository` when snapshotting refs
 - builtin/fsck: fix trivial dependence on `the_repository`
 - fsck: drop USE_THE_REPOSITORY
 - fsck: store repository in fsck options
 - fsck: initialize fsck options via a function
 - fetch-pack: move fsck options into function scope

 Internals of "git fsck" have been refactored to not depend on the
 global `the_repository` variable.

 Needs review.
 source: <20260323-b4-pks-fsck-without-the-repository-v2-0-e8dc79bca651@pks.im>


* tb/stdin-packs-excluded-but-open (2026-03-27) 5 commits
 - repack: mark non-MIDX packs above the split as excluded-open
 - pack-objects: support excluded-open packs with --stdin-packs
 - t7704: demonstrate failure with once-cruft objects above the geometric split
 - pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`
 - pack-objects: plug leak in `read_stdin_packs()`

 pack-objects's --stdin-packs=follow mode learns to handle
 excluded-but-open packs.

 Will merge to 'next'.
 source: <cover.1774641999.git.me@ttaylorr.com>


* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
 - path-walk: fix NULL pointer dereference in error message

 The value of a wrong pointer variable was referenced in an error
 message that reported that it shouldn't be NULL.

 Reproduction being discussed.
 cf. <994f92e9-3576-455a-a142-0fefc559131c@gmail.com>
 source: <20260320114823.3151961-1-ysinghcin@gmail.com>


* jr/bisect-custom-terms-in-output (2026-03-20) 1 commit
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Expecting a reroll?
 cf. <xmqqfr5tdbpc.fsf@gitster.g>
 source: <20260320-bisect-terms-v1-1-c30c9540542a@schlaraffenlan.de>


* jc/whitespace-incomplete-line (2026-03-17) 1 commit
 - apply: fix new-style empty context line triggering incomplete-line check

 Fix whitespace correction for new-style empty context lines.

 Needs review.
 source: <xmqqldfql4hp.fsf@gitster.g>


* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
 - add-patch: use repository instance from add_i_state instead of the_repository

 Reduce dependency on `the_repository` in add-patch.c file.

 Needs review.
 source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>


* ds/backfill-revs (2026-03-26) 6 commits
  (merged to 'next' on 2026-03-27 at d4703fdd35)
 + t5620: test backfill's unknown argument handling
 + path-walk: support wildcard pathspecs for blob filtering
 + backfill: work with prefix pathspecs
 + backfill: accept revision arguments
 + t5620: prepare branched repo for revision tests
 + revision: include object-name.h

 `git backfill` learned to accept revision and pathspec arguments.

 Will merge to 'master'.
 source: <pull.2070.v3.git.1774538094.gitgitgadget@gmail.com>


* ps/commit-graph-overflow-fix (2026-03-23) 1 commit
 - commit-graph: fix writing generations with dates exceeding 34 bits

 Fix a regression in writing the commit-graph where commits with dates
 exceeding 34 bits (beyond year 2514) could cause an underflow and
 crash Git during the generation data overflow chunk writing.

 Waiting for review response.
 cf. <xmqq1ph92pzs.fsf@gitster.g>
 source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>


* tc/replay-down-to-root (2026-03-24) 1 commit
 - replay: support replaying down from root commit

 git replay now supports replaying down to the root commit.

 Will merge to 'next'.
 source: <20260324-toon-replay-down-to-root-v2-1-34e723489f6e@iotcl.com>


* ua/push-remote-group (2026-03-27) 3 commits
 - SQUASH??? - futureproof against the attack of the "main"
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a reroll.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 cf. <xmqqse9kj4rh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* ps/odb-generic-object-name-handling (2026-03-20) 16 commits
 - odb: introduce generic `odb_find_abbrev_len()`
 - object-file: move logic to compute packed abbreviation length
 - object-name: move logic to compute loose abbreviation length
 - object-name: simplify computing common prefixes
 - object-name: abbreviate loose object names without `disambiguate_state`
 - object-name: merge `update_candidates()` and `match_prefix()`
 - object-name: backend-generic `get_short_oid()`
 - object-name: backend-generic `repo_collect_ambiguous()`
 - object-name: extract function to parse object ID prefixes
 - object-name: move logic to iterate through packed prefixed objects
 - object-name: move logic to iterate through loose prefixed objects
 - odb: introduce `struct odb_for_each_object_options`
 - oidtree: extend iteration to allow for arbitrary return codes
 - oidtree: modernize the code a bit
 - Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
 - object-file: fix sparse 'plain integer as NULL pointer' error

 Object name handling (disambiguation and abbreviation) has been
 refactored to be backend-generic, moving logic into the respective
 object database backends.

 Will merge to 'next'.
 cf. <874ilxm4wp.fsf@toon--20250203-5JQV3.mail-host-address-is-not-set>
 source: <20260320-b4-pks-odb-source-abbrev-v2-0-fe65dcd8c735@pks.im>


* bk/t5315-test-path-is-helpers (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-24 at f7374e8e70)
 + t5315: use test_path_is_file for loose-object check

 Test clean-up.

 Will merge to 'master'.
 source: <20260319180803.164335-1-elkhatabibilal@gmail.com>


* aa/reap-transport-child-processes (2026-03-12) 1 commit
 - transport-helper, connect: use clean_on_exit to reap children on abnormal exit

 A few code paths that spawned child processes for network
 connection weren't wait(2)ing for their children and letting "init"
 reap them instead; they have been tightened.

 Will merge to 'next'.
 cf. <20260325061357.GA3772970@coredump.intra.peff.net>
 source: <20260312214945.4050010-1-cshung@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Comments?
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* pw/worktree-reduce-the-repository (2026-03-26) 3 commits
  (merged to 'next' on 2026-03-30 at f967ececef)
 + worktree: reject NULL worktree in get_worktree_git_dir()
 + worktree add: stop reading ".git/HEAD"
 + worktree: remove "the_repository" from is_current_worktree()

 Reduce the reference to the_repository in the worktree subsystem.

 Will merge to 'master'.
 source: <cover.1774534617.git.phillip.wood@dunelm.org.uk>


* mf/format-patch-commit-list-format (2026-03-23) 9 commits
  (merged to 'next' on 2026-03-24 at 0f5b6702eb)
 + format-patch: --commit-list-format without prefix
 + format-patch: add preset for --commit-list-format
 + format-patch: wrap generate_commit_list_cover()
 + format.commitListFormat: strip meaning from empty
 + docs/pretty-formats: add %(count) and %(total)
 + format-patch: rename --cover-letter-format option
 + format-patch: refactor generate_commit_list_cover
 + pretty.c: better die message %(count) and %(total)
 + Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
 (this branch is used by mf/format-patch-commit-list-format-doc; uses mf/format-patch-cover-letter-format.)

 Improve the recently introduced `git format-patch
 --commit-list-format` (formerly `--cover-letter-format`) option,
 including a new "modern" preset and better CLI ergonomics.

 Will merge to 'master'.
 source: <cover.1774284699.git.mroik@delayed.space>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Needs review.
 source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-25) 13 commits
  (merged to 'next' on 2026-03-30 at c128948b16)
 + hook: reject unknown hook names in git-hook(1)
 + hook: show disabled hooks in "git hook list"
 + hook: show config scope in git hook list
 + hook: introduce hook_config_cache_entry for per-hook data
 + t1800: add test to verify hook execution ordering
 + hook: make consistent use of friendly-name in docs
 + hook: replace hook_list_clear() -> string_list_clear_func()
 + hook: detect & emit two more bugs
 + hook: rename cb_data_free/alloc -> hook_data_free/alloc
 + hook: fix minor style issues
 + builtin/receive-pack: properly init receive_hook strbuf
 + hook: move unsorted_string_list_remove() to string-list.[ch]
 + Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Will merge to 'master'.
 source: <20260325195503.1139418-1-adrian.ratiu@collabora.com>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders
 (this branch is used by mf/format-patch-commit-list-format and mf/format-patch-commit-list-format-doc.)

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Waiting for the follow-on topic.
 source: <cover.1772839973.git.mroik@delayed.space>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Needs review.
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* sa/replay-revert (2026-03-25) 2 commits
  (merged to 'next' on 2026-03-30 at ef4896a676)
 + replay: add --revert mode to reverse commit changes
 + sequencer: extract revert message formatting into shared function
 (this branch is used by tc/replay-ref.)

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Will merge to 'master'.
 source: <20260325202354.10628-1-siddharthasthana31@gmail.com>


* vp/http-rate-limit-retries (2026-03-17) 3 commits
  (merged to 'next' on 2026-03-24 at 9cb4ec5fad)
 + http: add support for HTTP 429 rate limit retries
 + strbuf_attach: fix call sites to pass correct alloc
 + strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Will merge to 'master'.
 cf. <ab4RIZr7b49VKjR9@nand.local>
 source: <pull.2008.v6.git.1773752435.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-03-26) 13 commits
 - hook: allow hook.jobs=-1 to use all available CPU cores
 - hook: add hook.<event>.enabled switch
 - hook: move is_known_hook() to hook.c for wider use
 - hook: warn when hook.<friendly-name>.jobs is set
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow pre-push parallel execution
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups.)

 Needs review.
 source: <20260326101819.1307742-1-adrian.ratiu@collabora.com>


* en/xdiff-cleanup-3 (2026-03-30) 6 commits
 - xdiff/xdl_cleanup_records: simplify INVESTIGATE handling for clarity
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff: use unambiguous types in xdl_bogo_sqrt()
 - xdiff/xdl_cleanup_records: delete local recs pointer

 Preparation of the xdiff/ codebase to work with Rust

 Needs review.
 source: <pull.2156.v4.git.git.1774890003.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* bc/rev-parse-parseopt-help-exit-code (2026-03-16) 1 commit
 . rev-parse: have --parseopt callers exit 0 on --help

 `rev-parse --parseopt` now includes "exit 0" in its output when the
 user asks for help, ensuring that scripts using the recommended `eval`
 pattern exit successfully.

 Need to step back and rethink how exit code should look like.
 cf. <20260317150759.GA9975@coredump.intra.peff.net>
 source: <20260316220742.1286157-1-sandals@crustytoothpaste.net>


* js/macos-homebrew-forgets-reg-enhanced (2026-03-20) 1 commit
 . osx-clang: work around Homebrew's clang lacking REG_ENHANCED

 The build on macOS with Clang is fixed to work around a Homebrew change
 that exposed an issue with missing REG_ENHANCED.

 No longer needed?
 cf. <6c108696-2d41-4fa1-9662-fbf6db97f767@web.de>
 cf. <458ad3c1-96df-4575-ee42-e6eb754f25f6@gmx.de>
 cf. <xmqq8qbi5vvx.fsf@gitster.g>
 source: <d340af9e-334c-4e81-e58a-fc3dea73ebdd@gmx.de>


^ permalink raw reply	[relevance 18%]

* Re: What's cooking in git.git (Mar 2026, #11)
  @ 2026-03-27 16:13 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-27 16:13 UTC (permalink / raw)
  To: Christian Couder; +Cc: git, Toon Claes, Phillip Wood

Christian Couder <christian.couder@gmail.com> writes:

> On Fri, Mar 27, 2026 at 12:17 AM Junio C Hamano <gitster@pobox.com> wrote:
>
>> * tc/replay-down-to-root (2026-03-24) 1 commit
>>  - replay: support replaying down from root commit
>>
>>  git replay now supports replaying down to the root commit.
>>
>>  Will merge to 'next'?
>>  source: <20260324-toon-replay-down-to-root-v2-1-34e723489f6e@iotcl.com>
>
> As Toon said that the silent failure in case of "topic" instead of
> "main..topic" will be addressed in a separate series, I am fine with
> merging as is.

I'll have to go back to list to find the original discussion to
refresh my memory to know what "main..topic" vs "topic" is about,
though X-<.

>> * sa/replay-revert (2026-03-25) 2 commits
>>  - replay: add --revert mode to reverse commit changes
>>  - sequencer: extract revert message formatting into shared function
>>  (this branch is used by tc/replay-ref.)
>>
>>  "git replay" (experimental) learns, in addition to "pick" and
>>  "replay", a new operating mode "revert".
>>
>>  Will merge to 'next'?
>>  source: <20260325202354.10628-1-siddharthasthana31@gmail.com>
>
> It looks good to me, and I think the v6 properly addresses the latest
> few small issues that were found. Previously Phillip also seemed OK
> with merging except for the issues that are now fixed.

Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Mar 2026, #11)
  @ 2026-03-27 16:08 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-27 16:08 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

>> * ps/commit-graph-overflow-fix (2026-03-23) 1 commit
>>  - commit-graph: fix writing generations with dates exceeding 34 bits
>> ...
>>  Waiting for review response.
>>  cf. <xmqq1ph92pzs.fsf@gitster.g>
>>  source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>
>
> Hm, I think this status is probably stale, as I've sent out that
> response already

Indeed.  I am not convinced by the argument "64-bit compilers would
not care if 32-bit part of the live code that it will optimize away
is not -Werror clean", but we can merge it as-is and then deal with
any fallout later, as it should be trivial to switch to conditional
compilation (the triviality is why I suggested making the change now
in the first place anyway).

>> * ar/config-hook-cleanups (2026-03-25) 13 commits
>> ...
>>  Code clean-up around the recent "hooks defined in config" topic.
>> 
>>  Will merge to 'next'?
>>  source: <20260325195503.1139418-1-adrian.ratiu@collabora.com>
>
> I'll have a look at v3 of this series series today.

Thanks.

>> * ar/parallel-hooks (2026-03-26) 13 commits
>> ...
>
> Likewise, will try to find the time to do this today.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Mar 2026, #11)
@ 2026-03-26 23:16 19% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-03-26 23:16 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* ps/object-counting (2026-03-12) 7 commits
  (merged to 'next' on 2026-03-17 at 8d3d9a1374)
 + odb: introduce generic object counting
 + odb/source: introduce generic object counting
 + object-file: generalize counting objects
 + object-file: extract logic to approximate object count
 + packfile: extract logic to count number of objects
 + odb: stop including "odb/source.h"
 + Merge branch 'ps/odb-sources' into ps/object-counting
 (this branch is used by ps/odb-generic-object-name-handling.)

 The logic to count objects has been cleaned up.
 source: <20260312-b4-pks-odb-source-count-objects-v2-0-5914f69256bf@pks.im>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
  (merged to 'next' on 2026-03-18 at 7f995e23bb)
 + midx: enable reachability bitmaps during MIDX compaction
 + midx: implement MIDX compaction
 + t/helper/test-read-midx.c: plug memory leak when selecting layer
 + midx-write.c: factor fanout layering from `compute_sorted_entries()`
 + midx-write.c: enumerate `pack_int_id` values directly
 + midx-write.c: extract `fill_pack_from_midx()`
 + midx-write.c: introduce `midx_pack_perm()` helper
 + midx: do not require packs to be sorted in lexicographic order
 + midx-write.c: introduce `struct write_midx_opts`
 + midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 + t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 + git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 + git-multi-pack-index(1): remove non-existent incompatibility
 + builtin/multi-pack-index.c: make '--progress' a common option
 + midx: introduce `midx_get_checksum_hex()`
 + midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 + midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap
 source: <cover.1771959555.git.me@ttaylorr.com>

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

* jc/test-set-e-clean (2026-03-24) 11 commits
 . t9902: make test "set -e" clean
 . t5570: make test "set -e" clean
 . t940?: make test "set -e" clean
 . t9200: make test "set -e" clean
 . t7508: make test "set -e" clean
 . tests: make svn test "set -e" clean
 . t7450: make test "set -e" clean
 . t4032: make test "set -e" clean
 . t6002: make test "set -e" clean
 . t0008: make test "set -e" clean
 . test-lib: catch misspelt 'test_expect_successo'

 The test suite harness and many individual test scripts have been
 updated to work correctly when 'set -e' is in effect, which helps
 detect misspelled test commands.

 Comments?
 source: <20260325062114.2067946-1-gitster@pobox.com>


* jk/t0061-bat-test-update (2026-03-24) 1 commit
  (merged to 'next' on 2026-03-26 at ffae180124)
 + t0061: simplify .bat test

 A test to run a .bat file with whitespaces in the name with arguments
 with whitespaces in them was flaky in that sometimes it got killed
 before it produced expected side effects, which has been rewritten to
 make it more robust.

 Will merge to 'master'.
 source: <20260325061357.GA3772970@coredump.intra.peff.net>


* mk/repo-help-strings (2026-03-25) 2 commits
  (merged to 'next' on 2026-03-26 at a4c755ddde)
 + repo: show subcommand-specific help text
 + repo: factor repo usage strings into shared macros

 "git repo info -h" and "git repo structure -h" limit their help output
 to the part that is specific to the subcommand.

 Will merge to 'master'.
 source: <20260323152937.257406-1-  mahlet.takassa@gmail.com>


* tc/replay-ref (2026-03-25) 4 commits
 . replay: allow to specify a ref with option --ref
 . replay: use stuck form in documentation and help message
 . builtin/replay: mark options as not negatable
 . Merge branch 'sa/replay-revert' into tc/replay-ref
 (this branch uses sa/replay-revert.)

 The experimental `git replay` command learned the `--ref=<ref>` option
 to allow specifying which ref to update, overriding the default behavior.

 Comments?
 source: <20260325-toon-replay-arbitrary-ref-v2-0-553038702c9c@iotcl.com>


* jc/macos-homebrew-wo-reg-enhanced (2026-03-23) 1 commit
  (merged to 'next' on 2026-03-26 at ce92a76711)
 + regexp: leave a pointer to resurrect workaround for Homebrew

 In case homebrew breaks REG_ENHANCED again, leave a in-code comment
 to suggest use of our replacement regex as a workaround.

 Will merge to 'master'.
 source: <xmqq8qbi5vvx.fsf@gitster.g>


* jk/c23-const-preserving-fixes (2026-03-26) 5 commits
 - config: store allocated string in non-const pointer
 - rev-parse: avoid writing to const string for parent marks
 - revision: avoid writing to const string for parent marks
 - rev-parse: simplify dotdot parsing
 - revision: make handle_dotdot() interface less confusing

 Adjust the codebase for C23 that changes functions like strchr()
 that discarded constness when they return a pointer into a const
 string to preserve constness.

 Comments?
 source: <20260326190243.GA412983@coredump.intra.peff.net>
 source: <20260326192320.GA418281@coredump.intra.peff.net>


* mf/format-patch-commit-list-format-doc (2026-03-26) 2 commits
 - docs: fix --commit-list-format related entries
 - Merge branch 'mf/format-patch-commit-list-format' into mf/format-patch-commit-list-format-doc
 (this branch uses mf/format-patch-commit-list-format and mf/format-patch-cover-letter-format.)

 Doc updates.

 Waiting for review responses.
 source: <20260326200643.20251-1-mroik@delayed.space>


* th/t8003-unhide-git-failures (2026-03-26) 1 commit
 - t8003: avoid suppressing git's exit code

 Test clean-up.

 Will merge to 'next'?
 source: <20260326141118.146155-1-vikingtc4@gmail.com>


* za/t2000-test-path-is-helpers (2026-03-26) 1 commit
 - t2000: modernize path checks with test_path_is_* helpers

 Test clean-up.

 Will merge to 'next'?
 source: <20260326192603.23961-1-zakariyahali100@gmail.com>

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

* jt/fast-import-signed-modes (2026-03-26) 5 commits
 - fast-import: add 'abort-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'sign-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'abort-if-invalid' mode to '--signed-commits=<mode>'
 - fast-export: check for unsupported signing modes earlier

 Handling of signed commits and tags in fast-import has been made more
 configurable.
 source: <20260326191414.3783974-1-jltobler@gmail.com>


* ps/graph-lane-limit (2026-03-25) 2 commits
 - graph: add documentation and tests about --graph-lane-limit
 - graph: add --graph-lane-limit option

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Expecting a reroll.
 cf. <CAN5EUNQdq7Eg+yd9ZqVGbYuKSYOhAB5rc2np7SeQT-Zc10aqDw@mail.gmail.com>
 source: <20260325174401.217577-1-pabloosabaterr@gmail.com>


* rs/use-strvec-pushv (2026-03-24) 2 commits
  (merged to 'next' on 2026-03-24 at 7c6487dcaf)
 + use strvec_pushv() to add another strvec
 + Merge branch 'ps/build-tweaks' into rs/use-strvec-pushv
 (this branch uses ps/build-tweaks.)

 Code paths that loop over another array to push each element into a
 strvec have been rewritten to use strvec_pushv() instead.

 Will merge to 'master'.
 source: <084f3b43-91ac-4553-8305-03944e97eaa6@web.de>


* cc/promisor-auto-config-url (2026-03-23) 16 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - t5710: use proper file:// URIs for absolute paths
 - promisor-remote: refactor should_accept_remote() control flow
 - promisor-remote: pass config entry to all_fields_match() directly
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - promisor-remote: remove the 'accepted' strvec
 - promisor-remote: keep accepted promisor_info structs alive
 - promisor-remote: refactor accept_from_server()
 - promisor-remote: refactor has_control_char()
 - promisor-remote: clarify that a remote is ignored
 - urlmatch: add url_is_valid_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling is enhanced to auto-configure remotes based
 on a URL whitelist.

 Needs review.
 source: <20260323080520.887550-1-christian.couder@gmail.com>


* kj/refspec-parsing-outside-repository (2026-03-23) 2 commits
  (merged to 'next' on 2026-03-26 at 0a8c60e8ae)
 + refspec: fix typo in comment
 + remote-curl: fall back to default hash outside repo

 "git ls-remote '+refs/tags/*:refs/tags/*' https://..." run outside a
 repository would dereference a NULL while trying to see if the given
 refspec is a single-object refspec, which has been corrected.

 Will merge to 'master'.
 source: <20260322023557.15907-1-jayatheerthkulkarni2005@gmail.com>


* jk/diff-highlight-identical-pairs (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at a8aa5bd14e)
 + contrib/diff-highlight: do not highlight identical pairs
 (this branch is used by jk/diff-highlight-more.)

 The handling of the incomplete lines at the end by "git
 diff-highlight" has been fixed.

 Will merge to 'master'.
 source: <20260317230223.GA716496@coredump.intra.peff.net>


* jk/diff-highlight-more (2026-03-22) 9 commits
  (merged to 'next' on 2026-03-24 at e7b555cbc5)
 + diff-highlight: fetch all config with one process
 + diff-highlight: allow module callers to pass in color config
 + diff-highlight: test color config
 + diff-highlight: use test_decode_color in tests
 + t: add matching negative attributes to test_decode_color
 + diff-highlight: check diff-highlight exit status in tests
 + diff-highlight: drop perl version dependency back to 5.8
 + diff-highlight: mention build instructions
 + Merge branch 'jk/diff-highlight-identical-pairs' into jk/diff-highlight-more
 (this branch uses jk/diff-highlight-identical-pairs.)

 Various updates to contrib/diff-highlight, including documentation
 updates, test improvements, and color configuration handling.

 Will merge to 'master'.
 source: <20260323060139.GA10215@coredump.intra.peff.net>


* ps/fsck-wo-the-repository (2026-03-23) 12 commits
 - builtin/fsck: stop using `the_repository` in error reporting
 - builtin/fsck: stop using `the_repository` when marking objects
 - builtin/fsck: stop using `the_repository` when checking packed objects
 - builtin/fsck: stop using `the_repository` with loose objects
 - builtin/fsck: stop using `the_repository` when checking reflogs
 - builtin/fsck: stop using `the_repository` when checking refs
 - builtin/fsck: stop using `the_repository` when snapshotting refs
 - builtin/fsck: fix trivial dependence on `the_repository`
 - fsck: drop USE_THE_REPOSITORY
 - fsck: store repository in fsck options
 - fsck: initialize fsck options via a function
 - fetch-pack: move fsck options into function scope

 Internals of "git fsck" have been refactored to not depend on the
 global `the_repository` variable.

 Needs review.
 source: <20260323-b4-pks-fsck-without-the-repository-v2-0-e8dc79bca651@pks.im>


* tb/stdin-packs-excluded-but-open (2026-03-25) 5 commits
 - repack: mark non-MIDX packs above the split as excluded-open
 - pack-objects: support excluded-open packs with --stdin-packs
 - t7704: demonstrate failure with once-cruft objects above the geometric split
 - pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`
 - pack-objects: plug leak in `read_stdin_packs()`

 pack-objects's --stdin-packs=follow mode learns to handle
 excluded-but-open packs.

 Will merge to 'next'?
 source: <cover.1774482700.git.me@ttaylorr.com>


* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
 - path-walk: fix NULL pointer dereference in error message

 The value of a wrong pointer variable was referenced in an error
 message that reported that it shouldn't be NULL.

 Reproduction being discussed.
 cf. <994f92e9-3576-455a-a142-0fefc559131c@gmail.com>
 source: <20260320114823.3151961-1-ysinghcin@gmail.com>


* jr/bisect-custom-terms-in-output (2026-03-20) 1 commit
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Expecting a reroll?
 cf. <xmqqfr5tdbpc.fsf@gitster.g>
 source: <20260320-bisect-terms-v1-1-c30c9540542a@schlaraffenlan.de>


* jc/whitespace-incomplete-line (2026-03-17) 1 commit
 - apply: fix new-style empty context line triggering incomplete-line check

 Fix whitespace correction for new-style empty context lines.

 Needs review.
 source: <xmqqldfql4hp.fsf@gitster.g>


* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
 - add-patch: use repository instance from add_i_state instead of the_repository

 Reduce dependency on `the_repository` in add-patch.c file.

 Needs review.
 source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>


* ds/backfill-revs (2026-03-26) 6 commits
 - t5620: test backfill's unknown argument handling
 - path-walk: support wildcard pathspecs for blob filtering
 - backfill: work with prefix pathspecs
 - backfill: accept revision arguments
 - t5620: prepare branched repo for revision tests
 - revision: include object-name.h

 `git backfill` learned to accept revision and pathspec arguments.

 Will merge to 'next'?
 source: <pull.2070.v3.git.1774538094.gitgitgadget@gmail.com>


* jw/t2203-status-pipe-fix (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-23 at 521c6eb44b)
 + t2203: avoid suppressing git status exit code

 Test clean-up.

 Will merge to 'master'.
 source: <20260317011544.65952-1-jerrywang183@yahoo.com>


* ps/commit-graph-overflow-fix (2026-03-23) 1 commit
 - commit-graph: fix writing generations with dates exceeding 34 bits

 Fix a regression in writing the commit-graph where commits with dates
 exceeding 34 bits (beyond year 2514) could cause an underflow and
 crash Git during the generation data overflow chunk writing.

 Waiting for review response.
 cf. <xmqq1ph92pzs.fsf@gitster.g>
 source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>


* tc/replay-down-to-root (2026-03-24) 1 commit
 - replay: support replaying down from root commit

 git replay now supports replaying down to the root commit.

 Will merge to 'next'?
 source: <20260324-toon-replay-down-to-root-v2-1-34e723489f6e@iotcl.com>


* mr/merge-file-object-id-worktree-fix (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-20 at 68e1ee2045)
 + merge-file: fix BUG when --object-id is used in a worktree

 merge-file --object-id used to trigger a BUG when run in a linked
 worktree, which has been fixed.

 Will merge to 'master'.
 source: <c076edd0-9057-443b-ba37-33aacde2eede@app.fastmail.com>


* rs/prio-queue-to-commit-stack (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at 265cb7b28c)
 + use commit_stack instead of prio_queue in LIFO mode

 Uses of prio_queue as a LIFO stack of commits have been written
 with commit_stack.

 Will merge to 'master'.
 source: <05fc946f-6670-46e9-a058-231ee464029d@web.de>


* jw/object-name-bitset-to-enum (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-23 at 881af371ef)
 + object-name: turn INTERPRET_BRANCH_* constants into enum values

 The unsigned integer that is used as an bitset to specify the kind
 of branches interpret_branch_name() function has been changed to
 use a dedicated enum type.

 Will merge to 'master'.
 source: <20260318190942.22595-1-jerrywang183@yahoo.com>


* ai/t2107-test-path-is-helpers (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-23 at 56d10e5f76)
 + t2107: modernize path existence check

 Test cleanup.

 Will merge to 'master'.
 source: <pull.2071.v2.git.1773864455956.gitgitgadget@gmail.com>


* gi/doc-boolean-config-typofix (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-20 at 8810624798)
 + doc: add missing space on git-config page

 Doc typofix.

 Will merge to 'master'.
 source: <20260318210020.759128-1-gabl@gabl.ink>


* ua/push-remote-group (2026-03-25) 2 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Waiting for a review response.
 cf. <xmqq7bqzu1xh.fsf@gitster.g>
 source: <20260325190906.1153080-1-usmanakinyemi202@gmail.com>


* jc/rerere-modern-strbuf-handling (2026-03-19) 2 commits
  (merged to 'next' on 2026-03-21 at 919b766afc)
 + cocci: strbuf.buf is never NULL
 + rerere: update to modern representation of empty strbufs

 Code clean-up overdue by 19 years.

 Will merge to 'master'.
 source: <xmqq341wnvbk.fsf@gitster.g>
 source: <xmqq4imbigvt.fsf@gitster.g>


* ps/odb-generic-object-name-handling (2026-03-20) 16 commits
 - odb: introduce generic `odb_find_abbrev_len()`
 - object-file: move logic to compute packed abbreviation length
 - object-name: move logic to compute loose abbreviation length
 - object-name: simplify computing common prefixes
 - object-name: abbreviate loose object names without `disambiguate_state`
 - object-name: merge `update_candidates()` and `match_prefix()`
 - object-name: backend-generic `get_short_oid()`
 - object-name: backend-generic `repo_collect_ambiguous()`
 - object-name: extract function to parse object ID prefixes
 - object-name: move logic to iterate through packed prefixed objects
 - object-name: move logic to iterate through loose prefixed objects
 - odb: introduce `struct odb_for_each_object_options`
 - oidtree: extend iteration to allow for arbitrary return codes
 - oidtree: modernize the code a bit
 - Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
 - object-file: fix sparse 'plain integer as NULL pointer' error

 Object name handling (disambiguation and abbreviation) has been
 refactored to be backend-generic, moving logic into the respective
 object database backends.

 Comments?
 source: <20260320-b4-pks-odb-source-abbrev-v2-0-fe65dcd8c735@pks.im>


* rs/ahead-behind-cleanup-optimization (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at 5d8b4fa265)
 + commit-reach: simplify cleanup of remaining bitmaps in ahead_behind ()

 The cleanup of remaining bitmaps in "ahead_behind()" has been
 simplified.

 Will merge to 'master'.
 source: <21adf042-2bd1-4022-8822-9ed4985122a4@web.de>


* bk/t5315-test-path-is-helpers (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-24 at f7374e8e70)
 + t5315: use test_path_is_file for loose-object check

 Test clean-up.

 Will merge to 'master'.
 source: <20260319180803.164335-1-elkhatabibilal@gmail.com>


* rs/split-index-the-repo-fix (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at d66850b2ce)
 + split-index: stop using the_repository and the_hash_algo

 split-index.c has been updated to not use the global the_repository
 and the_hash_algo variables.

 Will merge to 'master'.
 source: <944c2331-4dec-4c98-9059-f41dc204ed86@web.de>


* aa/reap-transport-child-processes (2026-03-12) 1 commit
 - transport-helper, connect: use clean_on_exit to reap children on abnormal exit

 A few code paths that spawned child processes for network
 connection weren't wait(2)ing for their children and letting "init"
 reap them instead; they have been tightened.

 Will merge to 'next' after jk/t0061-bat-test-update settles down.
 cf. <20260325061357.GA3772970@coredump.intra.peff.net>
 source: <20260312214945.4050010-1-cshung@gmail.com>


* ej/ref-transaction-hook-preparing (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-20 at f9b8fbb0dc)
 + refs: add 'preparing' phase to the reference-transaction hook

 The reference-transaction hook was taught to be triggered before
 taking locks on references in the "preparing" phase.

 Will merge to 'master'.
 source: <20260317023624.43070-2-eric.peijian@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Comments?
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* pw/worktree-reduce-the-repository (2026-03-26) 3 commits
 - worktree: reject NULL worktree in get_worktree_git_dir()
 - worktree add: stop reading ".git/HEAD"
 - worktree: remove "the_repository" from is_current_worktree()

 Reduce the reference to the_repository in the worktree subsystem.

 Will merge to 'next'?
 source: <cover.1774534617.git.phillip.wood@dunelm.org.uk>


* jw/apply-corrupt-location (2026-03-17) 3 commits
  (merged to 'next' on 2026-03-23 at 18e9b8f91f)
 + apply: report input location in binary and garbage patch errors
 + apply: report input location in header parsing errors
 + apply: report the location of corrupt patches

 "git apply" now reports the name of the input file along with the
 line number when it encounters a corrupt patch, and correctly
 resets the line counter when processing multiple patch files.

 Will merge to 'master'.
 source: <20260317162321.71812-1-jerrywang183@yahoo.com>


* mf/format-patch-commit-list-format (2026-03-23) 9 commits
  (merged to 'next' on 2026-03-24 at 0f5b6702eb)
 + format-patch: --commit-list-format without prefix
 + format-patch: add preset for --commit-list-format
 + format-patch: wrap generate_commit_list_cover()
 + format.commitListFormat: strip meaning from empty
 + docs/pretty-formats: add %(count) and %(total)
 + format-patch: rename --cover-letter-format option
 + format-patch: refactor generate_commit_list_cover
 + pretty.c: better die message %(count) and %(total)
 + Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
 (this branch is used by mf/format-patch-commit-list-format-doc; uses mf/format-patch-cover-letter-format.)

 Improve the recently introduced `git format-patch
 --commit-list-format` (formerly `--cover-letter-format`) option,
 including a new "modern" preset and better CLI ergonomics.

 Will merge to 'master'.
 source: <cover.1774284699.git.mroik@delayed.space>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* mf/apply-p-no-atoi (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-20 at 70a0a4313b)
 + apply.c: fix -p argument parsing

 "git apply -p<n>" parses <n> more carefully now.

 Will merge to 'master'.
 source: <20260316005120.7079-1-mroik@delayed.space>


* ps/build-tweaks (2026-03-18) 8 commits
  (merged to 'next' on 2026-03-20 at fb53cf619a)
 + meson: precompile "git-compat-util.h"
 + meson: compile compatibility sources separately
 + git-compat-util.h: move warning infra to prepare for PCHs
 + builds: move build scripts into "tools/"
 + contrib: move "update-unicode.sh" script into "tools/"
 + contrib: move "coverage-diff.sh" script into "tools/"
 + contrib: move "coccinelle/" directory into "tools/"
 + Introduce new "tools/" directory
 (this branch is used by rs/use-strvec-pushv.)

 Tweak the build infrastructure by moving tools around.

 Will merge to 'master'.
 source: <20260319-b4-pks-build-infra-improvements-v3-0-82f5fb3edc3f@pks.im>


* kh/doc-interpret-trailers-1 (2026-03-16) 4 commits
  (merged to 'next' on 2026-03-20 at 6acc8b5a8a)
 + interpret-trailers: use placeholder instead of *
 + doc: config: convert trailers section to synopsis style
 + doc: interpret-trailers: normalize and fill out options
 + doc: interpret-trailers: convert to synopsis style

 Doc updates.

 Will merge to 'master'.
 source: <V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz>


* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Needs review.
 source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-25) 13 commits
 - hook: reject unknown hook names in git-hook(1)
 - hook: show disabled hooks in "git hook list"
 - hook: show config scope in git hook list
 - hook: introduce hook_config_cache_entry for per-hook data
 - t1800: add test to verify hook execution ordering
 - hook: make consistent use of friendly-name in docs
 - hook: replace hook_list_clear() -> string_list_clear_func()
 - hook: detect & emit two more bugs
 - hook: rename cb_data_free/alloc -> hook_data_free/alloc
 - hook: fix minor style issues
 - builtin/receive-pack: properly init receive_hook strbuf
 - hook: move unsorted_string_list_remove() to string-list.[ch]
 - Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Will merge to 'next'?
 source: <20260325195503.1139418-1-adrian.ratiu@collabora.com>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders
 (this branch is used by mf/format-patch-commit-list-format and mf/format-patch-commit-list-format-doc.)

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Waiting for the follow-on topic.
 source: <cover.1772839973.git.mroik@delayed.space>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Waiting for the rerolls to slow down?
 cf. <aakyzGksiC2fhhiD@pks.im>
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* sa/replay-revert (2026-03-25) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function
 (this branch is used by tc/replay-ref.)

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Will merge to 'next'?
 source: <20260325202354.10628-1-siddharthasthana31@gmail.com>


* vp/http-rate-limit-retries (2026-03-17) 3 commits
  (merged to 'next' on 2026-03-24 at 9cb4ec5fad)
 + http: add support for HTTP 429 rate limit retries
 + strbuf_attach: fix call sites to pass correct alloc
 + strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Will merge to 'master'.
 cf. <ab4RIZr7b49VKjR9@nand.local>
 source: <pull.2008.v6.git.1773752435.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-03-26) 13 commits
 - hook: allow hook.jobs=-1 to use all available CPU cores
 - hook: add hook.<event>.enabled switch
 - hook: move is_known_hook() to hook.c for wider use
 - hook: warn when hook.<friendly-name>.jobs is set
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow pre-push parallel execution
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups.)

 Needs review.
 source: <20260326101819.1307742-1-adrian.ratiu@collabora.com>


* en/xdiff-cleanup-3 (2026-03-25) 5 commits
 - xdiff/xdl_cleanup_records: use unambiguous types
 - xdiff/xdl_cleanup_records: simplify INVESTIGATE handling for clarity
 - xdiff/xdl_cleanup_records: make setting action easier to follow
 - xdiff/xdl_cleanup_records: make limits more clear
 - xdiff/xdl_cleanup_records: delete local recs pointer

 Preparation of the xdiff/ codebase to work with Rust

 Needs review?
 source: <pull.2156.v2.git.git.1774473065.gitgitgadget@gmail.com>


* js/macos-homebrew-forgets-reg-enhanced (2026-03-20) 1 commit
 . osx-clang: work around Homebrew's clang lacking REG_ENHANCED

 The build on macOS with Clang is fixed to work around a Homebrew change
 that exposed an issue with missing REG_ENHANCED.

 No longer needed?
 cf. <6c108696-2d41-4fa1-9662-fbf6db97f767@web.de>
 cf. <458ad3c1-96df-4575-ee42-e6eb754f25f6@gmx.de>
 cf. <xmqq8qbi5vvx.fsf@gitster.g>
 source: <d340af9e-334c-4e81-e58a-fc3dea73ebdd@gmx.de>

--------------------------------------------------
[Discarded]

* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 . sideband: offer to configure sanitizing on a per-URL basis
 . sideband: add options to allow more control sequences to be passed through
 . sideband: do allow ANSI color sequences by default
 . sideband: introduce an "escape hatch" to allow control characters
 . sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* bc/rev-parse-parseopt-help-exit-code (2026-03-16) 1 commit
 . rev-parse: have --parseopt callers exit 0 on --help

 `rev-parse --parseopt` now includes "exit 0" in its output when the
 user asks for help, ensuring that scripts using the recommended `eval`
 pattern exit successfully.

 Need to step back and rethink how exit code should look like.
 cf. <20260317150759.GA9975@coredump.intra.peff.net>
 source: <20260316220742.1286157-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 19%]

* Re: What's cooking in git.git (Mar 2026, #10)
  @ 2026-03-25 19:50 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-25 19:50 UTC (permalink / raw)
  To: Shreyansh Paliwal; +Cc: git

Shreyansh Paliwal <shreyanshpaliwalcmsmn@gmail.com> writes:

>> * sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
>>  - add-patch: use repository instance from add_i_state instead of the_repository
>>
>>  Reduce dependency on `the_repository` in add-patch.c file.
>>
>>  Needs review.
>>  source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>
>
> I think this was considered ready in the previous 'What's cooking in git.git',
> so the status can be changed now.

This was listed in the new topics section in issue #07 (Mar 19) but
I do not recall updating its status in any later issue.  The only
change was in issue #08 (Mar 21) in which the topic was moved from
new to cooking without changing any status.

The only comment the patch got was from me about interaction with
other topics in flight, and there was no discussion or comments on
what the patch wants to do makes sense, or if the way how the patch
does so is correct, which should be the real review.

And I do not consider my single reading alone a sufficient review
most of the time.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Mar 2026, #10)
@ 2026-03-25  4:20 18% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-03-25  4:20 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* dd/cocci-do-not-pass-strbuf-by-value (2026-03-15) 3 commits
  (merged to 'next' on 2026-03-18 at a2ffed1127)
 + stash: do not pass strbuf by value
 + coccinelle: detect struct strbuf passed by value
 + Merge branch 'dd/list-objects-filter-options-wo-strbuf-split' into dd/cocci-do-not-pass-strbuf-by-value

 Add a coccinelle rule to break the build when "struct strbuf" gets
 passed by value.
 source: <20260315094445.19849-1-deveshigurgaon@gmail.com>


* gj/user-manual-fix-grep-example (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at dbf9137a9d)
 + doc: fix git grep args order in Quick Reference

 Fix an example in the user-manual.
 source: <pull.2069.git.1773670536808.gitgitgadget@gmail.com>


* jk/transport-color-leakfix (2026-03-14) 1 commit
  (merged to 'next' on 2026-03-17 at c2d7c74d11)
 + transport: plug leaks in transport_color_config()

 Leakfix.
 source: <20260314160814.GA918806@coredump.intra.peff.net>


* jt/fast-import-sign-again (2026-03-12) 3 commits
  (merged to 'next' on 2026-03-17 at e04808d5f2)
 + fast-import: add mode to sign commits with invalid signatures
 + gpg-interface: allow sign_buffer() to use default signing key
 + commit: remove unused forward declaration

 "git fast-import" learned to optionally replace signature on
 commits whose signatures get invalidated due to replaying by
 signing afresh.
 source: <20260313013938.2742124-1-jltobler@gmail.com>


* mf/t0008-cleanup (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-17 at 2bb0e51243)
 + t0008: improve test cleanup to fix failing test

 Test clean-up.
 source: <20260316011544.13825-1-mroik@delayed.space>


* pb/t4200-test-path-is-helpers (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at a78771f93e)
 + t4200: convert test -[df] checks to test_path_* helpers

 Test clean-up.
 source: <20260316172457.38242-1-prashantjee2025@gmail.com>


* ps/clar-wo-path-max (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at 1d2f28a677)
 + clar: update to fix compilation on platforms without PATH_MAX

 Clar (unit testing framework) update from the upstream.
 source: <20260316-b4-pks-clar-without-path-max-v1-1-40b4bc91fdc0@pks.im>


* ps/history-split (2026-03-02) 8 commits
  (merged to 'next' on 2026-03-17 at 456723f018)
 + builtin/history: implement "split" subcommand
 + builtin/history: split out extended function to create commits
 + cache-tree: allow writing in-memory index as tree
 + add-patch: allow disabling editing of hunks
 + add-patch: add support for in-memory index patching
 + add-patch: remove dependency on "add-interactive" subsystem
 + add-patch: split out `struct interactive_options`
 + add-patch: split out header from "add-interactive.h"

 "git history" learned the "split" subcommand.
 source: <20260302-pks-history-split-v1-0-444fc987a324@pks.im>


* ps/upload-pack-buffer-more-writes (2026-03-12) 10 commits
  (merged to 'next' on 2026-03-18 at 138ad42ac5)
 + builtin/pack-objects: reduce lock contention when writing packfile data
 + csum-file: drop `hashfd_throughput()`
 + csum-file: introduce `hashfd_ext()`
 + sideband: use writev(3p) to send pktlines
 + wrapper: introduce writev(3p) wrappers
 + compat/posix: introduce writev(3p) wrapper
 + upload-pack: reduce lock contention when writing packfile data
 + upload-pack: prefer flushing data over sending keepalive
 + upload-pack: adapt keepalives based on buffering
 + upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends on relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.
 source: <20260313-pks-upload-pack-write-contention-v4-0-7a9668061f7f@pks.im>


* rj/pack-refs-tests-path-is-helpers (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-17 at 56374095e3)
 + t/pack-refs-tests: use test_path_is_missing

 Test updates.
 source: <20260315081032.497-1-riteshjd75@gmail.com>


* ss/t0410-delete-object-cleanup (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-17 at a8d41f4c1f)
 + t0410: modernize delete_object helper

 Test clean-up.
 source: <20260313053159.36492-1-r.siddharth.shrimali@gmail.com>


* ty/doc-diff-u-wo-number (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-18 at 8a410154ff)
 + diff: document -U without <n> as using default context

 "git diff -U<num>" was too lenient in its command line parsing and
 took an empty string as a valid <num>.
 source: <20260310095017.131957-1-cat@malon.dev>


* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-18 at 5e49edc821)
 + xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.
 source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>

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

* jt/fast-import-signed-modes (2026-03-24) 4 commits
 - fast-import: add 'abort-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'sign-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'strip-if-invalid' mode to '--signed-tags=<mode>'
 - fast-import: add 'abort-if-invalid' mode to '--signed-commits=<mode>'

 Handling of signed commits and tags in fast-import has been made more
 configurable.
 source: <20260324215513.764739-1-jltobler@gmail.com>

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

* ps/graph-lane-limit (2026-03-23) 3 commits
 - graph: add documentation and tests about --graph-lane-limit
 - graph: truncate graph visual output
 - graph: add --graph-lane-limit option

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 source: <20260323215935.74486-1-pabloosabaterr@gmail.com>


* rs/use-strvec-pushv (2026-03-24) 2 commits
  (merged to 'next' on 2026-03-24 at 7c6487dcaf)
 + use strvec_pushv() to add another strvec
 + Merge branch 'ps/build-tweaks' into rs/use-strvec-pushv
 (this branch uses ps/build-tweaks.)

 Code paths that loop over another array to push each element into a
 strvec have been rewritten to use strvec_pushv() instead.

 Will merge to 'master'.
 source: <084f3b43-91ac-4553-8305-03944e97eaa6@web.de>


* cc/promisor-auto-config-url (2026-03-23) 16 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - t5710: use proper file:// URIs for absolute paths
 - promisor-remote: refactor should_accept_remote() control flow
 - promisor-remote: pass config entry to all_fields_match() directly
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - promisor-remote: remove the 'accepted' strvec
 - promisor-remote: keep accepted promisor_info structs alive
 - promisor-remote: refactor accept_from_server()
 - promisor-remote: refactor has_control_char()
 - promisor-remote: clarify that a remote is ignored
 - urlmatch: add url_is_valid_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling is enhanced to auto-configure remotes based
 on a URL whitelist.

 Needs review.
 source: <20260323080520.887550-1-christian.couder@gmail.com>


* kj/refspec-parsing-outside-repository (2026-03-23) 2 commits
 - refspec: fix typo in comment
 - remote-curl: fall back to default hash outside repo

 "git ls-remote '+refs/tags/*:refs/tags/*' https://..." run outside a
 repository would dereference a NULL while trying to see if the given
 refspec is a single-object refspec, which has been corrected.

 Will merge to 'next'?
 source: <20260324015734.18470-1-jayatheerthkulkarni2005@gmail.com>


* jk/diff-highlight-identical-pairs (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at a8aa5bd14e)
 + contrib/diff-highlight: do not highlight identical pairs
 (this branch is used by jk/diff-highlight-more.)

 The handling of the incomplete lines at the end by "git
 diff-highlight" has been fixed.

 Will merge to 'master'.
 source: <20260317230223.GA716496@coredump.intra.peff.net>


* jk/diff-highlight-more (2026-03-22) 9 commits
  (merged to 'next' on 2026-03-24 at e7b555cbc5)
 + diff-highlight: fetch all config with one process
 + diff-highlight: allow module callers to pass in color config
 + diff-highlight: test color config
 + diff-highlight: use test_decode_color in tests
 + t: add matching negative attributes to test_decode_color
 + diff-highlight: check diff-highlight exit status in tests
 + diff-highlight: drop perl version dependency back to 5.8
 + diff-highlight: mention build instructions
 + Merge branch 'jk/diff-highlight-identical-pairs' into jk/diff-highlight-more
 (this branch uses jk/diff-highlight-identical-pairs.)

 Various updates to contrib/diff-highlight, including documentation
 updates, test improvements, and color configuration handling.

 Will merge to 'master'.
 source: <20260323060139.GA10215@coredump.intra.peff.net>


* ps/fsck-wo-the-repository (2026-03-23) 12 commits
 - builtin/fsck: stop using `the_repository` in error reporting
 - builtin/fsck: stop using `the_repository` when marking objects
 - builtin/fsck: stop using `the_repository` when checking packed objects
 - builtin/fsck: stop using `the_repository` with loose objects
 - builtin/fsck: stop using `the_repository` when checking reflogs
 - builtin/fsck: stop using `the_repository` when checking refs
 - builtin/fsck: stop using `the_repository` when snapshotting refs
 - builtin/fsck: fix trivial dependence on `the_repository`
 - fsck: drop USE_THE_REPOSITORY
 - fsck: store repository in fsck options
 - fsck: initialize fsck options via a function
 - fetch-pack: move fsck options into function scope

 Internals of "git fsck" have been refactored to not depend on the
 global `the_repository` variable.

 Needs review.
 source: <20260323-b4-pks-fsck-without-the-repository-v2-0-e8dc79bca651@pks.im>


* tb/stdin-packs-excluded-but-open (2026-03-19) 5 commits
 - repack: mark non-MIDX packs above the split as excluded-open
 - pack-objects: support excluded-open packs with --stdin-packs
 - t7704: demonstrate failure with once-cruft objects above the geometric split
 - pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`
 - pack-objects: plug leak in `read_stdin_packs()`

 pack-objects's --stdin-packs=follow mode learns to handle
 excluded-but-open packs.

 Comments?
 source: <cover.1773959041.git.me@ttaylorr.com>


* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
 - path-walk: fix NULL pointer dereference in error message

 The value of a wrong pointer variable was referenced in an error
 message that reported that it shouldn't be NULL.

 Reproduction being discussed.
 cf. <994f92e9-3576-455a-a142-0fefc559131c@gmail.com>
 source: <20260320114823.3151961-1-ysinghcin@gmail.com>


* jr/bisect-custom-terms-in-output (2026-03-20) 1 commit
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Expecting a reroll?
 cf. <xmqqfr5tdbpc.fsf@gitster.g>
 source: <20260320-bisect-terms-v1-1-c30c9540542a@schlaraffenlan.de>


* jc/whitespace-incomplete-line (2026-03-17) 1 commit
 - apply: fix new-style empty context line triggering incomplete-line check

 Fix whitespace correction for new-style empty context lines.

 Needs review.
 source: <xmqqldfql4hp.fsf@gitster.g>


* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
 - add-patch: use repository instance from add_i_state instead of the_repository

 Reduce dependency on `the_repository` in add-patch.c file.

 Needs review.
 source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>


* ds/backfill-revs (2026-03-23) 6 commits
 - t5620: test backfill's unknown argument handling
 - path-walk: support wildcard pathspecs for blob filtering
 - backfill: work with prefix pathspecs
 - backfill: accept revision arguments
 - t5620: prepare branched repo for revision tests
 - revision: include object-name.h

 `git backfill` learned to accept revision and pathspec arguments.

 Comments?
 source: <pull.2070.v2.git.1774266019.gitgitgadget@gmail.com>


* jw/t2203-status-pipe-fix (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-23 at 521c6eb44b)
 + t2203: avoid suppressing git status exit code

 Test clean-up.

 Will merge to 'master'.
 source: <20260317011544.65952-1-jerrywang183@yahoo.com>


* ps/commit-graph-overflow-fix (2026-03-23) 1 commit
 - commit-graph: fix writing generations with dates exceeding 34 bits

 Fix a regression in writing the commit-graph where commits with dates
 exceeding 34 bits (beyond year 2514) could cause an underflow and
 crash Git during the generation data overflow chunk writing.

 Waiting for review response.
 cf. <xmqq1ph92pzs.fsf@gitster.g>
 source: <20260324-pks-commit-graph-overflow-v2-1-843568cf8780@pks.im>


* tc/replay-down-to-root (2026-03-24) 1 commit
 - replay: support replaying down from root commit

 git replay now supports replaying down to the root commit.

 Will merge to 'next'?
 source: <20260324-toon-replay-down-to-root-v2-1-34e723489f6e@iotcl.com>


* mr/merge-file-object-id-worktree-fix (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-20 at 68e1ee2045)
 + merge-file: fix BUG when --object-id is used in a worktree

 merge-file --object-id used to trigger a BUG when run in a linked
 worktree, which has been fixed.

 Will merge to 'master'.
 source: <c076edd0-9057-443b-ba37-33aacde2eede@app.fastmail.com>


* rs/prio-queue-to-commit-stack (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at 265cb7b28c)
 + use commit_stack instead of prio_queue in LIFO mode

 Uses of prio_queue as a LIFO stack of commits have been written
 with commit_stack.

 Will merge to 'master'.
 source: <05fc946f-6670-46e9-a058-231ee464029d@web.de>


* jw/object-name-bitset-to-enum (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-23 at 881af371ef)
 + object-name: turn INTERPRET_BRANCH_* constants into enum values

 The unsigned integer that is used as an bitset to specify the kind
 of branches interpret_branch_name() function has been changed to
 use a dedicated enum type.

 Will merge to 'master'.
 source: <20260318190942.22595-1-jerrywang183@yahoo.com>


* ai/t2107-test-path-is-helpers (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-23 at 56d10e5f76)
 + t2107: modernize path existence check

 Test cleanup.

 Will merge to 'master'.
 source: <pull.2071.v2.git.1773864455956.gitgitgadget@gmail.com>


* gi/doc-boolean-config-typofix (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-20 at 8810624798)
 + doc: add missing space on git-config page

 Doc typofix.

 Will merge to 'master'.
 source: <20260318210020.759128-1-gabl@gabl.ink>


* ua/push-remote-group (2026-03-18) 2 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a (hopefully small and final) reroll?
 cf. <20260318204028.1010487-1-usmanakinyemi202@gmail.com>
 source: <20260318204028.1010487-1-usmanakinyemi202@gmail.com>


* jc/rerere-modern-strbuf-handling (2026-03-19) 2 commits
  (merged to 'next' on 2026-03-21 at 919b766afc)
 + cocci: strbuf.buf is never NULL
 + rerere: update to modern representation of empty strbufs

 Code clean-up overdue by 19 years.

 Will merge to 'master'.
 source: <xmqq341wnvbk.fsf@gitster.g>
 source: <xmqq4imbigvt.fsf@gitster.g>


* ps/odb-generic-object-name-handling (2026-03-20) 16 commits
 - odb: introduce generic `odb_find_abbrev_len()`
 - object-file: move logic to compute packed abbreviation length
 - object-name: move logic to compute loose abbreviation length
 - object-name: simplify computing common prefixes
 - object-name: abbreviate loose object names without `disambiguate_state`
 - object-name: merge `update_candidates()` and `match_prefix()`
 - object-name: backend-generic `get_short_oid()`
 - object-name: backend-generic `repo_collect_ambiguous()`
 - object-name: extract function to parse object ID prefixes
 - object-name: move logic to iterate through packed prefixed objects
 - object-name: move logic to iterate through loose prefixed objects
 - odb: introduce `struct odb_for_each_object_options`
 - oidtree: extend iteration to allow for arbitrary return codes
 - oidtree: modernize the code a bit
 - Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
 - object-file: fix sparse 'plain integer as NULL pointer' error
 (this branch uses ps/object-counting.)

 Object name handling (disambiguation and abbreviation) has been
 refactored to be backend-generic, moving logic into the respective
 object database backends.

 Comments?
 source: <20260320-b4-pks-odb-source-abbrev-v2-0-fe65dcd8c735@pks.im>


* rs/ahead-behind-cleanup-optimization (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at 5d8b4fa265)
 + commit-reach: simplify cleanup of remaining bitmaps in ahead_behind ()

 The cleanup of remaining bitmaps in "ahead_behind()" has been
 simplified.

 Will merge to 'master'.
 source: <21adf042-2bd1-4022-8822-9ed4985122a4@web.de>


* bk/t5315-test-path-is-helpers (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-24 at f7374e8e70)
 + t5315: use test_path_is_file for loose-object check

 Test clean-up.

 Will merge to 'master'.
 source: <20260319180803.164335-1-elkhatabibilal@gmail.com>


* rs/split-index-the-repo-fix (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at d66850b2ce)
 + split-index: stop using the_repository and the_hash_algo

 split-index.c has been updated to not use the global the_repository
 and the_hash_algo variables.

 Will merge to 'master'.
 source: <944c2331-4dec-4c98-9059-f41dc204ed86@web.de>


* aa/reap-transport-child-processes (2026-03-12) 1 commit
 . transport-helper, connect: use clean_on_exit to reap children on abnormal exit

 A few code paths that spawned child processes for network
 connection weren't wait(2)ing for their children and letting "init"
 reap them instead; they have been tightened.

 CI failures on Windows in t0061.24?
 cf. <20260318040423.GA2858991@coredump.intra.peff.net>
 source: <20260312214945.4050010-1-cshung@gmail.com>


* ej/ref-transaction-hook-preparing (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-20 at f9b8fbb0dc)
 + refs: add 'preparing' phase to the reference-transaction hook

 The reference-transaction hook was taught to be triggered before
 taking locks on references in the "preparing" phase.

 Will merge to 'master'.
 source: <20260317023624.43070-2-eric.peijian@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Comments?
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* pw/worktree-reduce-the-repository (2026-03-15) 3 commits
 - worktree: reject NULL worktree in get_worktree_git_dir()
 - worktree add: stop reading ".git/HEAD"
 - worktree: remove "the_repository" from is_current_worktree()

 Reduce the reference to the_repository in the worktree subsystem.

 Expecting review responses.
 cf. <abezeNELL9SU8v82@pks.im>
 source: <cover.1773591528.git.phillip.wood@dunelm.org.uk>


* jw/apply-corrupt-location (2026-03-17) 3 commits
  (merged to 'next' on 2026-03-23 at 18e9b8f91f)
 + apply: report input location in binary and garbage patch errors
 + apply: report input location in header parsing errors
 + apply: report the location of corrupt patches

 "git apply" now reports the name of the input file along with the
 line number when it encounters a corrupt patch, and correctly
 resets the line counter when processing multiple patch files.

 Will merge to 'master'.
 source: <20260317162321.71812-1-jerrywang183@yahoo.com>


* mf/format-patch-commit-list-format (2026-03-23) 9 commits
  (merged to 'next' on 2026-03-24 at 0f5b6702eb)
 + format-patch: --commit-list-format without prefix
 + format-patch: add preset for --commit-list-format
 + format-patch: wrap generate_commit_list_cover()
 + format.commitListFormat: strip meaning from empty
 + docs/pretty-formats: add %(count) and %(total)
 + format-patch: rename --cover-letter-format option
 + format-patch: refactor generate_commit_list_cover
 + pretty.c: better die message %(count) and %(total)
 + Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
 (this branch uses mf/format-patch-cover-letter-format.)

 Improve the recently introduced `git format-patch
 --commit-list-format` (formerly `--cover-letter-format`) option,
 including a new "modern" preset and better CLI ergonomics.

 Will merge to 'master'.
 source: <cover.1774284699.git.mroik@delayed.space>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* mf/apply-p-no-atoi (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-20 at 70a0a4313b)
 + apply.c: fix -p argument parsing

 "git apply -p<n>" parses <n> more carefully now.

 Will merge to 'master'.
 source: <20260316005120.7079-1-mroik@delayed.space>


* ps/build-tweaks (2026-03-18) 8 commits
  (merged to 'next' on 2026-03-20 at fb53cf619a)
 + meson: precompile "git-compat-util.h"
 + meson: compile compatibility sources separately
 + git-compat-util.h: move warning infra to prepare for PCHs
 + builds: move build scripts into "tools/"
 + contrib: move "update-unicode.sh" script into "tools/"
 + contrib: move "coverage-diff.sh" script into "tools/"
 + contrib: move "coccinelle/" directory into "tools/"
 + Introduce new "tools/" directory
 (this branch is used by rs/use-strvec-pushv.)

 Tweak the build infrastructure by moving tools around.

 Will merge to 'master'.
 source: <20260319-b4-pks-build-infra-improvements-v3-0-82f5fb3edc3f@pks.im>


* ps/object-counting (2026-03-12) 7 commits
  (merged to 'next' on 2026-03-17 at 8d3d9a1374)
 + odb: introduce generic object counting
 + odb/source: introduce generic object counting
 + object-file: generalize counting objects
 + object-file: extract logic to approximate object count
 + packfile: extract logic to count number of objects
 + odb: stop including "odb/source.h"
 + Merge branch 'ps/odb-sources' into ps/object-counting
 (this branch is used by ps/odb-generic-object-name-handling.)

 The logic to count objects has been cleaned up.

 Will merge to 'master'.
 source: <20260312-b4-pks-odb-source-count-objects-v2-0-5914f69256bf@pks.im>


* kh/doc-interpret-trailers-1 (2026-03-16) 4 commits
  (merged to 'next' on 2026-03-20 at 6acc8b5a8a)
 + interpret-trailers: use placeholder instead of *
 + doc: config: convert trailers section to synopsis style
 + doc: interpret-trailers: normalize and fill out options
 + doc: interpret-trailers: convert to synopsis style

 Doc updates.

 Will merge to 'master'.
 source: <V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz>


* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Needs review.
 source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-20) 11 commits
 - hook: show disabled hooks in "git hook list"
 - hook: show config scope in git hook list
 - hook: introduce hook_config_cache_entry for per-hook data
 - t1800: add test to verify hook execution ordering
 - hook: make consistent use of friendly-name in docs
 - hook: replace hook_list_clear() -> string_list_clear_func()
 - hook: detect & emit two more bugs
 - hook: rename cb_data_free/alloc -> hook_data_free/alloc
 - hook: fix minor style issues
 - hook: move unsorted_string_list_remove() to string-list.[ch]
 - Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Expecting a reroll?
 cf. <acJNblQ8WRGIri0V@pks.im>
 source: <20260320115211.177351-1-adrian.ratiu@collabora.com>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders
 (this branch is used by mf/format-patch-commit-list-format.)

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Waiting for the follow-on topic.
 source: <cover.1772839973.git.mroik@delayed.space>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Waiting for the rerolls to slow down?
 cf. <aakyzGksiC2fhhiD@pks.im>
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* sa/replay-revert (2026-03-12) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting review responses.
 cf. <87pl53si56.fsf@iotcl.com>
 source: <20260313054035.26605-1-siddharthasthana31@gmail.com>


* vp/http-rate-limit-retries (2026-03-17) 3 commits
  (merged to 'next' on 2026-03-24 at 9cb4ec5fad)
 + http: add support for HTTP 429 rate limit retries
 + strbuf_attach: fix call sites to pass correct alloc
 + strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Will merge to 'master'.
 cf. <ab4RIZr7b49VKjR9@nand.local>
 source: <pull.2008.v6.git.1773752435.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-03-20) 11 commits
 - hook: add hook.<event>.enabled switch
 - hook: warn when hook.<friendly-name>.jobs is set
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow pre-push parallel execution
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups.)

 Needs review.
 source: <20260320135311.331463-1-adrian.ratiu@collabora.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of the xdiff/ codebase to work with Rust

 Expecting a reroll.
 cf. <CAH=ZcbBVSqUG89n65MBpN+HMCmmjzmADGaVnuEJn_cYN0SYknw@mail.gmail.com>
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
  (merged to 'next' on 2026-03-18 at 7f995e23bb)
 + midx: enable reachability bitmaps during MIDX compaction
 + midx: implement MIDX compaction
 + t/helper/test-read-midx.c: plug memory leak when selecting layer
 + midx-write.c: factor fanout layering from `compute_sorted_entries()`
 + midx-write.c: enumerate `pack_int_id` values directly
 + midx-write.c: extract `fill_pack_from_midx()`
 + midx-write.c: introduce `midx_pack_perm()` helper
 + midx: do not require packs to be sorted in lexicographic order
 + midx-write.c: introduce `struct write_midx_opts`
 + midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 + t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 + git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 + git-multi-pack-index(1): remove non-existent incompatibility
 + builtin/multi-pack-index.c: make '--progress' a common option
 + midx: introduce `midx_get_checksum_hex()`
 + midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 + midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'master'.
 source: <cover.1771959555.git.me@ttaylorr.com>


* js/macos-homebrew-forgets-reg-enhanced (2026-03-20) 1 commit
 . osx-clang: work around Homebrew's clang lacking REG_ENHANCED

 The build on macOS with Clang is fixed to work around a Homebrew change
 that exposed an issue with missing REG_ENHANCED.

 No longer needed.
 cf. <6c108696-2d41-4fa1-9662-fbf6db97f767@web.de>
 cf. <458ad3c1-96df-4575-ee42-e6eb754f25f6@gmx.de>
 source: <d340af9e-334c-4e81-e58a-fc3dea73ebdd@gmx.de>

--------------------------------------------------
[Discarded]

* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 . sideband: offer to configure sanitizing on a per-URL basis
 . sideband: add options to allow more control sequences to be passed through
 . sideband: do allow ANSI color sequences by default
 . sideband: introduce an "escape hatch" to allow control characters
 . sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* bc/rev-parse-parseopt-help-exit-code (2026-03-16) 1 commit
 . rev-parse: have --parseopt callers exit 0 on --help

 `rev-parse --parseopt` now includes "exit 0" in its output when the
 user asks for help, ensuring that scripts using the recommended `eval`
 pattern exit successfully.

 Need to step back and rethink how exit code should look like.
 cf. <20260317150759.GA9975@coredump.intra.peff.net>
 source: <20260316220742.1286157-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 18%]

* What's cooking in git.git (Mar 2026, #09)
@ 2026-03-24  0:46 18% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-24  0:46 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* ac/help-sort-correctly (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-16 at db220e143f)
 + help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.
 source: <20260311192453.62213-1-amishhhaaaa@gmail.com>


* bb/imap-send-openssl-4.0-prep (2026-03-11) 3 commits
  (merged to 'next' on 2026-03-16 at 0baab97778)
 + imap-send: move common code into function host_matches()
 + imap-send: use the OpenSSL API to access the subject common name
 + imap-send: use the OpenSSL API to access the subject alternative names

 "imap-send" used to use functions whose use is going to be removed
 with OpenSSL 4.0; rewrite them using public API that has been
 available since OpenSSL 1.1 since 2016 or so.
 source: <20260311121107.1122387-1-dev+git@drbeat.li>


* cf/constness-fixes (2026-03-08) 2 commits
  (merged to 'next' on 2026-03-13 at 3c80964399)
 + dir: avoid -Wdiscarded-qualifiers in remove_path()
 + bloom: remove a misleading const qualifier

 Small code clean-up around the constness area.
 source: <3ad40c3d0762c2e8c14792dfb68cba9f63a883a3.1773026586.git.collin.funk1@gmail.com>


* jc/test-allow-sed-with-ere (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-16 at be057bed35)
 + t: allow use of "sed -E"

 Adjust test-lint to allow "sed -E" to use ERE in the patterns.
 source: <xmqq3425lvtq.fsf@gitster.g>


* ms/t7605-test-path-is-helpers (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-16 at 49facdec9f)
 + t7605: use test_path_is_file instead of test -f

 Test updates.
 source: <pull.2067.v2.git.1773183022175.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-03-03) 1 commit
  (merged to 'next' on 2026-03-16 at d41fd28450)
 + submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.
 source: <20260303234044.105157-1-nasser.grainawi@oss.qualcomm.com>


* ty/mktree-wo-the-repository (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-16 at 8d20ceb853)
 + builtin/mktree: remove USE_THE_REPOSITORY_VARIABLE

 Code clean-up.
 source: <20260312164203.964033-1-cat@malon.dev>

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

* ps/graph-lane-limit (2026-03-23) 3 commits
 - graph: add documentation and tests about --graph-lane-limit
 - graph: truncate graph visual output
 - graph: add --graph-lane-limit option

 The graph output from commands like "git log --graph" can now be
 limited to a specified number of lanes, preventing overly wide output
 in repositories with many branches.

 Needs review.
 source: <20260323215935.74486-1-pabloosabaterr@gmail.com>


* rs/use-strvec-pushv (2026-03-19) 1 commit
 - use strvec_pushv() to add another strvec

 Code paths that loop over another array to push each element into a
 strvec have been rewritten to use strvec_pushv() instead.

 Will merge to 'next'.
 source: <084f3b43-91ac-4553-8305-03944e97eaa6@web.de>


* cc/promisor-auto-config-url (2026-03-23) 16 commits
 - doc: promisor: improve acceptFromServer entry
 - promisor-remote: auto-configure unknown remotes
 - promisor-remote: trust known remotes matching acceptFromServerUrl
 - promisor-remote: introduce promisor.acceptFromServerUrl
 - t5710: use proper file:// URIs for absolute paths
 - promisor-remote: refactor should_accept_remote() control flow
 - promisor-remote: pass config entry to all_fields_match() directly
 - promisor-remote: add 'local_name' to 'struct promisor_info'
 - promisor-remote: remove the 'accepted' strvec
 - promisor-remote: keep accepted promisor_info structs alive
 - promisor-remote: refactor accept_from_server()
 - promisor-remote: refactor has_control_char()
 - promisor-remote: clarify that a remote is ignored
 - urlmatch: add url_is_valid_pattern() helper
 - urlmatch: change 'allow_globs' arg to bool
 - promisor-remote: try accepted remotes before others in get_direct()

 Promisor remote handling is enhanced to auto-configure remotes based
 on a URL whitelist.

 Needs review.
 source: <20260323080520.887550-1-christian.couder@gmail.com>


* kj/refspec-parsing-outside-repository (2026-03-21) 2 commits
 - refspec: fix typo in comment
 - refspec: safely parse refspecs outside a repository

 "git ls-remote '+refs/tags/*:refs/tags/*' https://..." run outside a
 repository would dereference a NULL while trying to see if the given
 refspec is a single-object refspec, which has been corrected.

 Will merge to 'next'?
 source: <20260322023557.15907-1-jayatheerthkulkarni2005@gmail.com>

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

* jk/diff-highlight-identical-pairs (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at a8aa5bd14e)
 + contrib/diff-highlight: do not highlight identical pairs
 (this branch is used by jk/diff-highlight-more.)

 The handling of the incomplete lines at the end by "git
 diff-highlight" has been fixed.

 Will merge to 'master'.
 source: <20260317230223.GA716496@coredump.intra.peff.net>


* jk/diff-highlight-more (2026-03-22) 9 commits
 - diff-highlight: fetch all config with one process
 - diff-highlight: allow module callers to pass in color config
 - diff-highlight: test color config
 - diff-highlight: use test_decode_color in tests
 - t: add matching negative attributes to test_decode_color
 - diff-highlight: check diff-highlight exit status in tests
 - diff-highlight: drop perl version dependency back to 5.8
 - diff-highlight: mention build instructions
 - Merge branch 'jk/diff-highlight-identical-pairs' into jk/diff-highlight-more
 (this branch uses jk/diff-highlight-identical-pairs.)

 Various updates to contrib/diff-highlight, including documentation
 updates, test improvements, and color configuration handling.

 Will merge to 'next'.
 source: <20260323060139.GA10215@coredump.intra.peff.net>


* ps/fsck-wo-the-repository (2026-03-23) 12 commits
 - builtin/fsck: stop using `the_repository` in error reporting
 - builtin/fsck: stop using `the_repository` when marking objects
 - builtin/fsck: stop using `the_repository` when checking packed objects
 - builtin/fsck: stop using `the_repository` with loose objects
 - builtin/fsck: stop using `the_repository` when checking reflogs
 - builtin/fsck: stop using `the_repository` when checking refs
 - builtin/fsck: stop using `the_repository` when snapshotting refs
 - builtin/fsck: fix trivial dependence on `the_repository`
 - fsck: drop USE_THE_REPOSITORY
 - fsck: store repository in fsck options
 - fsck: initialize fsck options via a function
 - fetch-pack: move fsck options into function scope

 Internals of "git fsck" have been refactored to not depend on the
 global `the_repository` variable.

 Needs review.
 source: <20260323-b4-pks-fsck-without-the-repository-v2-0-e8dc79bca651@pks.im>


* tb/stdin-packs-excluded-but-open (2026-03-19) 5 commits
 - repack: mark non-MIDX packs above the split as excluded-open
 - pack-objects: support excluded-open packs with --stdin-packs
 - t7704: demonstrate failure with once-cruft objects above the geometric split
 - pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`
 - pack-objects: plug leak in `read_stdin_packs()`

 pack-objects's --stdin-packs=follow mode learns to handle
 excluded-but-open packs.

 Comments?
 source: <cover.1773959041.git.me@ttaylorr.com>


* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
 - path-walk: fix NULL pointer dereference in error message

 The value of a wrong pointer variable was referenced in an error
 message that reported that it shouldn't be NULL.

 Reproduction being discussed.
 cf. <994f92e9-3576-455a-a142-0fefc559131c@gmail.com>
 source: <20260320114823.3151961-1-ysinghcin@gmail.com>


* jr/bisect-custom-terms-in-output (2026-03-20) 1 commit
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Expecting a reroll?
 cf. <xmqqfr5tdbpc.fsf@gitster.g>
 source: <20260320-bisect-terms-v1-1-c30c9540542a@schlaraffenlan.de>


* jc/whitespace-incomplete-line (2026-03-17) 1 commit
 - apply: fix new-style empty context line triggering incomplete-line check

 Fix whitespace correction for new-style empty context lines.

 Needs review.
 source: <xmqqldfql4hp.fsf@gitster.g>


* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
 - add-patch: use repository instance from add_i_state instead of the_repository

 Reduce dependency on `the_repository` in add-patch.c file.

 Needs review.
 source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>


* ds/backfill-revs (2026-03-23) 6 commits
 - t5620: test backfill's unknown argument handling
 - path-walk: support wildcard pathspecs for blob filtering
 - backfill: work with prefix pathspecs
 - backfill: accept revision arguments
 - t5620: prepare branched repo for revision tests
 - revision: include object-name.h

 `git backfill` learned to accept revision and pathspec arguments.

 Comments?
 source: <pull.2070.v2.git.1774266019.gitgitgadget@gmail.com>


* jw/t2203-status-pipe-fix (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-23 at 521c6eb44b)
 + t2203: avoid suppressing git status exit code

 Test clean-up.

 Will merge to 'master'.
 source: <20260317011544.65952-1-jerrywang183@yahoo.com>


* ps/commit-graph-overflow-fix (2026-03-17) 1 commit
 - commit-graph: fix writing generations with dates exceeding 34 bits

 Fix a regression in writing the commit-graph where commits with dates
 exceeding 34 bits (beyond year 2514) could cause an underflow and
 crash Git during the generation data overflow chunk writing.

 Needs review.
 source: <20260317-pks-commit-graph-overflow-v1-1-e6bee22cd826@pks.im>


* tc/replay-down-to-root (2026-03-17) 1 commit
 - replay: support replaying down from root commit

 git replay now supports replaying down to the root commit.

 Needs review.
 source: <20260317-toon-replay-down-to-root-v1-1-cb5c249e15fd@iotcl.com>


* mr/merge-file-object-id-worktree-fix (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-20 at 68e1ee2045)
 + merge-file: fix BUG when --object-id is used in a worktree

 merge-file --object-id used to trigger a BUG when run in a linked
 worktree, which has been fixed.

 Will merge to 'master'.
 source: <c076edd0-9057-443b-ba37-33aacde2eede@app.fastmail.com>


* rs/prio-queue-to-commit-stack (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at 265cb7b28c)
 + use commit_stack instead of prio_queue in LIFO mode

 Uses of prio_queue as a LIFO stack of commits have been written
 with commit_stack.

 Will merge to 'master'.
 source: <05fc946f-6670-46e9-a058-231ee464029d@web.de>


* jw/object-name-bitset-to-enum (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-23 at 881af371ef)
 + object-name: turn INTERPRET_BRANCH_* constants into enum values

 The unsigned integer that is used as an bitset to specify the kind
 of branches interpret_branch_name() function has been changed to
 use a dedicated enum type.

 Will merge to 'master'.
 source: <20260318190942.22595-1-jerrywang183@yahoo.com>


* ai/t2107-test-path-is-helpers (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-23 at 56d10e5f76)
 + t2107: modernize path existence check

 Test cleanup.

 Will merge to 'master'.
 source: <pull.2071.v2.git.1773864455956.gitgitgadget@gmail.com>


* gi/doc-boolean-config-typofix (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-20 at 8810624798)
 + doc: add missing space on git-config page

 Doc typofix.

 Will merge to 'master'.
 source: <20260318210020.759128-1-gabl@gabl.ink>


* ua/push-remote-group (2026-03-18) 2 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Expecting a (hopefully small and final) reroll?
 cf. <20260318204028.1010487-1-usmanakinyemi202@gmail.com>
 source: <20260318204028.1010487-1-usmanakinyemi202@gmail.com>


* jc/rerere-modern-strbuf-handling (2026-03-19) 2 commits
  (merged to 'next' on 2026-03-21 at 919b766afc)
 + cocci: strbuf.buf is never NULL
 + rerere: update to modern representation of empty strbufs

 Code clean-up overdue by 19 years.

 Will merge to 'master'.
 source: <xmqq341wnvbk.fsf@gitster.g>
 source: <xmqq4imbigvt.fsf@gitster.g>


* ps/odb-generic-object-name-handling (2026-03-20) 15 commits
 - odb: introduce generic `odb_find_abbrev_len()`
 - object-file: move logic to compute packed abbreviation length
 - object-name: move logic to compute loose abbreviation length
 - object-name: simplify computing common prefixes
 - object-name: abbreviate loose object names without `disambiguate_state`
 - object-name: merge `update_candidates()` and `match_prefix()`
 - object-name: backend-generic `get_short_oid()`
 - object-name: backend-generic `repo_collect_ambiguous()`
 - object-name: extract function to parse object ID prefixes
 - object-name: move logic to iterate through packed prefixed objects
 - object-name: move logic to iterate through loose prefixed objects
 - odb: introduce `struct odb_for_each_object_options`
 - oidtree: extend iteration to allow for arbitrary return codes
 - oidtree: modernize the code a bit
 - Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
 (this branch uses ps/object-counting.)

 Object name handling (disambiguation and abbreviation) has been
 refactored to be backend-generic, moving logic into the respective
 object database backends.

 Comments?
 source: <20260320-b4-pks-odb-source-abbrev-v2-0-fe65dcd8c735@pks.im>


* rs/ahead-behind-cleanup-optimization (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at 5d8b4fa265)
 + commit-reach: simplify cleanup of remaining bitmaps in ahead_behind ()

 The cleanup of remaining bitmaps in "ahead_behind()" has been
 simplified.

 Will merge to 'master'.
 source: <21adf042-2bd1-4022-8822-9ed4985122a4@web.de>


* bk/t5315-test-path-is-helpers (2026-03-19) 1 commit
 - t5315: use test_path_is_file for loose-object check

 Test clean-up.

 Will merge to 'next'.
 source: <20260319180803.164335-1-elkhatabibilal@gmail.com>


* rs/split-index-the-repo-fix (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at d66850b2ce)
 + split-index: stop using the_repository and the_hash_algo

 split-index.c has been updated to not use the global the_repository
 and the_hash_algo variables.

 Will merge to 'master'.
 source: <944c2331-4dec-4c98-9059-f41dc204ed86@web.de>


* aa/reap-transport-child-processes (2026-03-12) 1 commit
 . transport-helper, connect: use clean_on_exit to reap children on abnormal exit

 A few code paths that spawned child processes for network
 connection weren't wait(2)ing for their children and letting "init"
 reap them instead; they have been tightened.

 CI failures on Windows in t0061.24?
 cf. <20260318040423.GA2858991@coredump.intra.peff.net>
 source: <20260312214945.4050010-1-cshung@gmail.com>


* ss/t0410-delete-object-cleanup (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-17 at a8d41f4c1f)
 + t0410: modernize delete_object helper

 Test clean-up.

 Will merge to 'master'.
 source: <20260313053159.36492-1-r.siddharth.shrimali@gmail.com>


* ej/ref-transaction-hook-preparing (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-20 at f9b8fbb0dc)
 + refs: add 'preparing' phase to the reference-transaction hook

 The reference-transaction hook was taught to be triggered before
 taking locks on references in the "preparing" phase.

 Will merge to 'master'.
 source: <20260317023624.43070-2-eric.peijian@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Comments?
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* pw/worktree-reduce-the-repository (2026-03-15) 3 commits
 - worktree: reject NULL worktree in get_worktree_git_dir()
 - worktree add: stop reading ".git/HEAD"
 - worktree: remove "the_repository" from is_current_worktree()

 Reduce the reference to the_repository in the worktree subsystem.

 Expecting review responses.
 cf. <abezeNELL9SU8v82@pks.im>
 source: <cover.1773591528.git.phillip.wood@dunelm.org.uk>


* dd/cocci-do-not-pass-strbuf-by-value (2026-03-15) 3 commits
  (merged to 'next' on 2026-03-18 at a2ffed1127)
 + stash: do not pass strbuf by value
 + coccinelle: detect struct strbuf passed by value
 + Merge branch 'dd/list-objects-filter-options-wo-strbuf-split' into dd/cocci-do-not-pass-strbuf-by-value

 Add a coccinelle rule to break the build when "struct strbuf" gets
 passed by value.

 Will merge to 'master'.
 source: <20260315094445.19849-1-deveshigurgaon@gmail.com>


* gj/user-manual-fix-grep-example (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at dbf9137a9d)
 + doc: fix git grep args order in Quick Reference

 Fix an example in the user-manual.

 Will merge to 'master'.
 source: <pull.2069.git.1773670536808.gitgitgadget@gmail.com>


* jk/transport-color-leakfix (2026-03-14) 1 commit
  (merged to 'next' on 2026-03-17 at c2d7c74d11)
 + transport: plug leaks in transport_color_config()

 Leakfix.

 Will merge to 'master'.
 source: <20260314160814.GA918806@coredump.intra.peff.net>


* jw/apply-corrupt-location (2026-03-17) 3 commits
  (merged to 'next' on 2026-03-23 at 18e9b8f91f)
 + apply: report input location in binary and garbage patch errors
 + apply: report input location in header parsing errors
 + apply: report the location of corrupt patches

 "git apply" now reports the name of the input file along with the
 line number when it encounters a corrupt patch, and correctly
 resets the line counter when processing multiple patch files.

 Will merge to 'master'.
 source: <20260317162321.71812-1-jerrywang183@yahoo.com>


* ps/clar-wo-path-max (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at 1d2f28a677)
 + clar: update to fix compilation on platforms without PATH_MAX

 Clar (unit testing framework) update from the upstream.

 Will merge to 'master'.
 source: <20260316-b4-pks-clar-without-path-max-v1-1-40b4bc91fdc0@pks.im>


* rj/pack-refs-tests-path-is-helpers (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-17 at 56374095e3)
 + t/pack-refs-tests: use test_path_is_missing

 Test updates.

 Will merge to 'master'.
 source: <20260315081032.497-1-riteshjd75@gmail.com>


* mf/format-patch-commit-list-format (2026-03-23) 9 commits
 - format-patch: --commit-list-format without prefix
 - format-patch: add preset for --commit-list-format
 - format-patch: wrap generate_commit_list_cover()
 - format.commitListFormat: strip meaning from empty
 - docs/pretty-formats: add %(count) and %(total)
 - format-patch: rename --cover-letter-format option
 - format-patch: refactor generate_commit_list_cover
 - pretty.c: better die message %(count) and %(total)
 - Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
 (this branch uses mf/format-patch-cover-letter-format.)

 Improve the recently introduced `git format-patch
 --commit-list-format` (formerly `--cover-letter-format`) option,
 including a new "modern" preset and better CLI ergonomics.

 Will merge to 'next'.
 source: <cover.1774284699.git.mroik@delayed.space>


* mf/t0008-cleanup (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-17 at 2bb0e51243)
 + t0008: improve test cleanup to fix failing test

 Test clean-up.

 Will merge to 'master'.
 source: <20260316011544.13825-1-mroik@delayed.space>


* pb/t4200-test-path-is-helpers (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at a78771f93e)
 + t4200: convert test -[df] checks to test_path_* helpers

 Test clean-up.

 Will merge to 'master'.
 source: <20260316172457.38242-1-prashantjee2025@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jt/fast-import-sign-again (2026-03-12) 3 commits
  (merged to 'next' on 2026-03-17 at e04808d5f2)
 + fast-import: add mode to sign commits with invalid signatures
 + gpg-interface: allow sign_buffer() to use default signing key
 + commit: remove unused forward declaration

 "git fast-import" learned to optionally replace signature on
 commits whose signatures get invalidated due to replaying by
 signing afresh.

 Will merge to 'master'.
 source: <20260313013938.2742124-1-jltobler@gmail.com>


* mf/apply-p-no-atoi (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-20 at 70a0a4313b)
 + apply.c: fix -p argument parsing

 "git apply -p<n>" parses <n> more carefully now.

 Will merge to 'master'.
 source: <20260316005120.7079-1-mroik@delayed.space>


* ps/build-tweaks (2026-03-18) 8 commits
  (merged to 'next' on 2026-03-20 at fb53cf619a)
 + meson: precompile "git-compat-util.h"
 + meson: compile compatibility sources separately
 + git-compat-util.h: move warning infra to prepare for PCHs
 + builds: move build scripts into "tools/"
 + contrib: move "update-unicode.sh" script into "tools/"
 + contrib: move "coverage-diff.sh" script into "tools/"
 + contrib: move "coccinelle/" directory into "tools/"
 + Introduce new "tools/" directory

 Tweak the build infrastructure by moving tools around.

 Will merge to 'master'.
 source: <20260319-b4-pks-build-infra-improvements-v3-0-82f5fb3edc3f@pks.im>


* ps/object-counting (2026-03-19) 8 commits
 - object-file: fix sparse 'plain integer as NULL pointer' error
  (merged to 'next' on 2026-03-17 at 8d3d9a1374)
 + odb: introduce generic object counting
 + odb/source: introduce generic object counting
 + object-file: generalize counting objects
 + object-file: extract logic to approximate object count
 + packfile: extract logic to count number of objects
 + odb: stop including "odb/source.h"
 + Merge branch 'ps/odb-sources' into ps/object-counting
 (this branch is used by ps/odb-generic-object-name-handling.)

 The logic to count objects has been cleaned up.

 Will merge to 'next' and then to 'master'.
 source: <20260312-b4-pks-odb-source-count-objects-v2-0-5914f69256bf@pks.im>


* ty/doc-diff-u-wo-number (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-18 at 8a410154ff)
 + diff: document -U without <n> as using default context

 "git diff -U<num>" was too lenient in its command line parsing and
 took an empty string as a valid <num>.

 Will merge to 'master'.
 source: <20260310095017.131957-1-cat@malon.dev>


* kh/doc-interpret-trailers-1 (2026-03-16) 4 commits
  (merged to 'next' on 2026-03-20 at 6acc8b5a8a)
 + interpret-trailers: use placeholder instead of *
 + doc: config: convert trailers section to synopsis style
 + doc: interpret-trailers: normalize and fill out options
 + doc: interpret-trailers: convert to synopsis style

 Doc updates.

 Will merge to 'master'.
 source: <V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz>


* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Needs review.
 source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-20) 11 commits
 - hook: show disabled hooks in "git hook list"
 - hook: show config scope in git hook list
 - hook: introduce hook_config_cache_entry for per-hook data
 - t1800: add test to verify hook execution ordering
 - hook: make consistent use of friendly-name in docs
 - hook: replace hook_list_clear() -> string_list_clear_func()
 - hook: detect & emit two more bugs
 - hook: rename cb_data_free/alloc -> hook_data_free/alloc
 - hook: fix minor style issues
 - hook: move unsorted_string_list_remove() to string-list.[ch]
 - Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Will merge to 'next'?
 source: <20260320115211.177351-1-adrian.ratiu@collabora.com>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* ps/history-split (2026-03-02) 8 commits
  (merged to 'next' on 2026-03-17 at 456723f018)
 + builtin/history: implement "split" subcommand
 + builtin/history: split out extended function to create commits
 + cache-tree: allow writing in-memory index as tree
 + add-patch: allow disabling editing of hunks
 + add-patch: add support for in-memory index patching
 + add-patch: remove dependency on "add-interactive" subsystem
 + add-patch: split out `struct interactive_options`
 + add-patch: split out header from "add-interactive.h"

 "git history" learned the "split" subcommand.

 Will merge to 'master'.
 source: <20260302-pks-history-split-v1-0-444fc987a324@pks.im>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-03-12) 10 commits
  (merged to 'next' on 2026-03-18 at 138ad42ac5)
 + builtin/pack-objects: reduce lock contention when writing packfile data
 + csum-file: drop `hashfd_throughput()`
 + csum-file: introduce `hashfd_ext()`
 + sideband: use writev(3p) to send pktlines
 + wrapper: introduce writev(3p) wrappers
 + compat/posix: introduce writev(3p) wrapper
 + upload-pack: reduce lock contention when writing packfile data
 + upload-pack: prefer flushing data over sending keepalive
 + upload-pack: adapt keepalives based on buffering
 + upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends on relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Will merge to 'master'.
 source: <20260313-pks-upload-pack-write-contention-v4-0-7a9668061f7f@pks.im>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders
 (this branch is used by mf/format-patch-commit-list-format.)

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Waiting for the follow-on topic.
 source: <cover.1772839973.git.mroik@delayed.space>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Waiting for the rerolls to slow down?
 cf. <aakyzGksiC2fhhiD@pks.im>
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* sa/replay-revert (2026-03-12) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting review responses.
 cf. <87pl53si56.fsf@iotcl.com>
 source: <20260313054035.26605-1-siddharthasthana31@gmail.com>


* vp/http-rate-limit-retries (2026-03-17) 3 commits
 - http: add support for HTTP 429 rate limit retries
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Will merge to 'next'.
 cf. <ab4RIZr7b49VKjR9@nand.local>
 source: <pull.2008.v6.git.1773752435.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-03-20) 11 commits
 - hook: add hook.<event>.enabled switch
 - hook: warn when hook.<friendly-name>.jobs is set
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow pre-push parallel execution
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups.)

 Needs review.
 source: <20260320135311.331463-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-18 at 5e49edc821)
 + xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Will merge to 'master'.
 source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of the xdiff/ codebase to work with Rust

 Expecting a reroll.
 cf. <CAH=ZcbBVSqUG89n65MBpN+HMCmmjzmADGaVnuEJn_cYN0SYknw@mail.gmail.com>
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
  (merged to 'next' on 2026-03-18 at 7f995e23bb)
 + midx: enable reachability bitmaps during MIDX compaction
 + midx: implement MIDX compaction
 + t/helper/test-read-midx.c: plug memory leak when selecting layer
 + midx-write.c: factor fanout layering from `compute_sorted_entries()`
 + midx-write.c: enumerate `pack_int_id` values directly
 + midx-write.c: extract `fill_pack_from_midx()`
 + midx-write.c: introduce `midx_pack_perm()` helper
 + midx: do not require packs to be sorted in lexicographic order
 + midx-write.c: introduce `struct write_midx_opts`
 + midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 + t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 + git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 + git-multi-pack-index(1): remove non-existent incompatibility
 + builtin/multi-pack-index.c: make '--progress' a common option
 + midx: introduce `midx_get_checksum_hex()`
 + midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 + midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'master'.
 source: <cover.1771959555.git.me@ttaylorr.com>


* js/macos-homebrew-forgets-reg-enhanced (2026-03-20) 1 commit
 . osx-clang: work around Homebrew's clang lacking REG_ENHANCED

 The build on macOS with Clang is fixed to work around a Homebrew change
 that exposed an issue with missing REG_ENHANCED.

 No longer needed.
 cf. <6c108696-2d41-4fa1-9662-fbf6db97f767@web.de>
 cf. <458ad3c1-96df-4575-ee42-e6eb754f25f6@gmx.de>
 source: <d340af9e-334c-4e81-e58a-fc3dea73ebdd@gmx.de>

--------------------------------------------------
[Discarded]

* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 . sideband: offer to configure sanitizing on a per-URL basis
 . sideband: add options to allow more control sequences to be passed through
 . sideband: do allow ANSI color sequences by default
 . sideband: introduce an "escape hatch" to allow control characters
 . sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* bc/rev-parse-parseopt-help-exit-code (2026-03-16) 1 commit
 . rev-parse: have --parseopt callers exit 0 on --help

 `rev-parse --parseopt` now includes "exit 0" in its output when the
 user asks for help, ensuring that scripts using the recommended `eval`
 pattern exit successfully.

 Need to step back and rethink how exit code should look like.
 cf. <20260317150759.GA9975@coredump.intra.peff.net>
 source: <20260316220742.1286157-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 18%]

* Re: What's cooking in git.git (Mar 2026, #08)
  @ 2026-03-23 16:54 85%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-23 16:54 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: René Scharfe, git

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> And indeed, the broken `macos-14-arm64/20260317.0174` release has been
> deleted from https://github.com/actions/runner-images/releases -- the
> latest published `macos-14-arm64` release as of time of writing is once
> again (the last known good one):
> https://github.com/actions/runner-images/releases/tag/macos-14-arm64%2F20260302.0147

Great to know.

> In light of that, the workaround in
> `js/macos-homebrew-forgets-reg-enhanced` may still be worth keeping as
> insurance, even though the immediate breakage has been mitigated by the
> image rollback. We would be one image refresh away from the same failure
> otherwise.

Yes, it will become necessary to resurrect it or something similar
when they break it the same way in the future.

The question is where we keep it---I am assuming that forcing build
with "clang" to use the compat/ regexp library replacement would not
be something we want to do until they break it again, so keeping it
forever in 'seen' does not feel quite right (let alone merging it
down anywhere near 'next' or 'master').  The lore archive will of
course keep it safely and we can retrieve it when it becomes
necessary *and* if we remember which patch it was.  

Would the best thing we can do here be something like this patch,
perhaps?

--- >8 ---
Subject: regexp: leave a pointer to resurrect workaround for Homebrew

Recently some GitHub CI jobs were broken by update on the platform
side, which was eventually resolved by image rollback, but in the
meantime Dscho invented a workaround patch to sidestep the broken
part of the platform.  Their future image update may contain the
same bug, in which case the workaround may again become needed.

As we do not want to be building with workaround that avoids system
regexp library altogether unless the system is known to be broken,
so short of an automated "detect broken system and apply workaround"
mechanism, let's use the folks who are compiling the code to detect
breakage on their system and cope with the breakage ;-)

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 compat/regcomp_enhanced.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git c/compat/regcomp_enhanced.c w/compat/regcomp_enhanced.c
index 84193ce53b..29c74eee99 100644
--- c/compat/regcomp_enhanced.c
+++ w/compat/regcomp_enhanced.c
@@ -3,6 +3,11 @@
 
 int git_regcomp(regex_t *preg, const char *pattern, int cflags)
 {
+	/*
+	 * If you are on macOS with clang and fail to compile this line,
+	 * https://lore.kernel.org/git/458ad3c1-96df-4575-ee42-e6eb754f25f6@gmx.de/
+	 * might be relevant.
+	 */
 	if (!(cflags & REG_EXTENDED))
 		cflags |= REG_ENHANCED;
 	return regcomp(preg, pattern, cflags);





^ permalink raw reply related	[relevance 85%]

* Re: What's cooking in git.git (Mar 2026, #08)
  @ 2026-03-22 17:53 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-22 17:53 UTC (permalink / raw)
  To: Shreyansh Paliwal; +Cc: git

Shreyansh Paliwal <shreyanshpaliwalcmsmn@gmail.com> writes:

> Though you fixed the conflicts while merging the old version, commit is not
> yet replaced <20260318090546.1213077-1-shreyanshpaliwalcmsmn@gmail.com>.

The end result would be better with the initial one after all, as it
could be merged down without somebody else's patch you do not need
to depend on, so let's keep it as-is.  I'll need to replace the
status comment, as this has been reviewed and looks good, and it
also seems nobody complains about what the patch does.

Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Mar 2026, #08)
  @ 2026-03-22 17:50 99%   ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-03-22 17:50 UTC (permalink / raw)
  To: René Scharfe; +Cc: git, Johannes Schindelin

René Scharfe <l.s.r@web.de> writes:

> On 3/22/26 7:46 AM, Junio C Hamano wrote:
>> * js/macos-homebrew-forgets-reg-enhanced (2026-03-20) 1 commit
>>  - osx-clang: work around Homebrew's clang lacking REG_ENHANCED
>> 
>>  The build on macOS with Clang is fixed to work around a Homebrew change
>>  that exposed an issue with missing REG_ENHANCED.
>> 
>>  Will merge to 'next'?
>>  source: <d340af9e-334c-4e81-e58a-fc3dea73ebdd@gmx.de>
> This seems to no longer be necessary -- the latest workflow run on
> master succeeded (https://github.com/git/git/actions/runs/23392330338).

Yeah, I saw that too and was wondering if the glitch was reverted or
something at the platform side.

> Did some kind soul fix the runners?

If so, thanks.  It certainly was not me ;-)


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Mar 2026, #08)
@ 2026-03-22  6:46 19% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-03-22  6:46 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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]

* jk/diff-highlight-identical-pairs (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at a8aa5bd14e)
 + contrib/diff-highlight: do not highlight identical pairs
 (this branch is used by jk/diff-highlight-more.)

 The handling of the incomplete lines at the end by "git
 diff-highlight" has been fixed.

 Will merge to 'master'.
 source: <20260317230223.GA716496@coredump.intra.peff.net>


* jk/diff-highlight-more (2026-03-19) 9 commits
 - diff-highlight: fetch all config with one process
 - diff-highlight: allow module callers to pass in color config
 - diff-highlight: test color config
 - diff-highlight: use test_decode_color in tests
 - t: add matching negative attributes to test_decode_color
 - diff-highlight: check diff-highlight exit status in tests
 - diff-highlight: drop perl version dependency back to 5.8
 - diff-highlight: mention build instructions
 - Merge branch 'jk/diff-highlight-identical-pairs' into jk/diff-highlight-more
 (this branch uses jk/diff-highlight-identical-pairs.)

 Various updates to contrib/diff-highlight, including documentation
 updates, test improvements, and color configuration handling.

 Will merge to 'next'.
 source: <20260320004138.GA3653623@coredump.intra.peff.net>


* js/macos-homebrew-forgets-reg-enhanced (2026-03-20) 1 commit
 - osx-clang: work around Homebrew's clang lacking REG_ENHANCED

 The build on macOS with Clang is fixed to work around a Homebrew change
 that exposed an issue with missing REG_ENHANCED.

 Will merge to 'next'?
 source: <d340af9e-334c-4e81-e58a-fc3dea73ebdd@gmx.de>


* ps/fsck-wo-the-repository (2026-03-20) 14 commits
 - builtin/fsck: stop using `the_repository` in error reporting
 - fsck: provide repository in `struct fsck_report_object`
 - builtin/fsck: stop using `the_repository` when marking objects
 - builtin/fsck: stop using `the_repository` when checking packed objects
 - builtin/fsck: stop using `the_repository` with loose objects
 - builtin/fsck: stop using `the_repository` when checking reflogs
 - builtin/fsck: stop using `the_repository` when checking refs
 - builtin/fsck: stop using `the_repository` when snapshotting refs
 - builtin/fsck: fix trivial dependence on `the_repository`
 - fsck: stop relying on global state via `parse_oid_hex()`
 - fsck: drop `the_repository` in `fsck_set_msg_types()`
 - fsck: refactor interface to parse fsck options
 - fsck: drop `the_repository` in `fsck_finish()`
 - fsck: drop `the_repository` in `fsck_walk()`

 Internals of "git fsck" have been refactored to not depend on the
 global `the_repository` variable.

 Comments?
 source: <20260320-b4-pks-fsck-without-the-repository-v1-0-6594f997926b@pks.im>


* tb/stdin-packs-excluded-but-open (2026-03-19) 5 commits
 - repack: mark non-MIDX packs above the split as excluded-open
 - pack-objects: support excluded-open packs with --stdin-packs
 - t7704: demonstrate failure with once-cruft objects above the geometric split
 - pack-objects: refactor `read_packs_list_from_stdin()` to use `strmap`
 - pack-objects: plug leak in `read_stdin_packs()`

 pack-objects's --stdin-packs=follow mode learns to handle
 excluded-but-open packs.

 Comments?
 source: <cover.1773959041.git.me@ttaylorr.com>


* yc/path-walk-fix-error-reporting (2026-03-20) 1 commit
 - path-walk: fix NULL pointer dereference in error message

 The value of a wrong pointer variable was referenced in an error
 message that reported that it shouldn't be NULL.

 Will merge to 'next'?
 source: <20260320114823.3151961-1-ysinghcin@gmail.com>


* jr/bisect-custom-terms-in-output (2026-03-20) 1 commit
 - bisect: use selected alternate terms in status output

 "git bisect" now uses the selected terms (e.g., old/new) more
 consistently in its output.

 Expecting a reroll?
 cf. <xmqqfr5tdbpc.fsf@gitster.g>
 source: <20260320-bisect-terms-v1-1-c30c9540542a@schlaraffenlan.de>

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

* jc/whitespace-incomplete-line (2026-03-17) 1 commit
 - apply: fix new-style empty context line triggering incomplete-line check

 Fix whitespace correction for new-style empty context lines.

 Needs review.
 source: <xmqqldfql4hp.fsf@gitster.g>


* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
 - add-patch: use repository instance from add_i_state instead of the_repository

 Reduce dependency on `the_repository` in add-patch.c file.

 Needs review.
 source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>


* ds/backfill-revs (2026-03-16) 5 commits
 - path-walk: support wildcard pathspecs for blob filtering
 - backfill: work with prefix pathspecs
 - backfill: accept revision arguments
 - t5620: prepare branched repo for revision tests
 - revision: include object-name.h

 `git backfill` learned to accept revision and pathspec arguments.

 Needs review.
 source: <pull.2070.git.1773707361.gitgitgadget@gmail.com>


* jw/t2203-status-pipe-fix (2026-03-16) 1 commit
 - t2203: avoid suppressing git status exit code

 Test clean-up.

 Will merge to 'next'.
 source: <20260317011544.65952-1-jerrywang183@yahoo.com>


* ps/commit-graph-overflow-fix (2026-03-17) 1 commit
 - commit-graph: fix writing generations with dates exceeding 34 bits

 Fix a regression in writing the commit-graph where commits with dates
 exceeding 34 bits (beyond year 2514) could cause an underflow and
 crash Git during the generation data overflow chunk writing.

 Needs review.
 source: <20260317-pks-commit-graph-overflow-v1-1-e6bee22cd826@pks.im>


* tc/replay-down-to-root (2026-03-17) 1 commit
 - replay: support replaying down from root commit

 git replay now supports replaying down to the root commit.

 Needs review.
 source: <20260317-toon-replay-down-to-root-v1-1-cb5c249e15fd@iotcl.com>


* mr/merge-file-object-id-worktree-fix (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-20 at 68e1ee2045)
 + merge-file: fix BUG when --object-id is used in a worktree

 merge-file --object-id used to trigger a BUG when run in a linked
 worktree, which has been fixed.

 Will merge to 'master'.
 source: <c076edd0-9057-443b-ba37-33aacde2eede@app.fastmail.com>


* rs/prio-queue-to-commit-stack (2026-03-17) 1 commit
  (merged to 'next' on 2026-03-20 at 265cb7b28c)
 + use commit_stack instead of prio_queue in LIFO mode

 Uses of prio_queue as a LIFO stack of commits have been written
 with commit_stack.

 Will merge to 'master'.
 source: <05fc946f-6670-46e9-a058-231ee464029d@web.de>


* jw/object-name-bitset-to-enum (2026-03-18) 1 commit
 - object-name: turn INTERPRET_BRANCH_* constants into enum values

 The unsigned integer that is used as an bitset to specify the kind
 of branches interpret_branch_name() function has been changed to
 use a dedicated enum type.

 Will merge to 'next'.
 source: <20260318190942.22595-1-jerrywang183@yahoo.com>


* ai/t2107-test-path-is-helpers (2026-03-18) 1 commit
 - t2107: modernize path existence check

 Test cleanup.

 Will merge to 'next'.
 source: <pull.2071.v2.git.1773864455956.gitgitgadget@gmail.com>


* gi/doc-boolean-config-typofix (2026-03-18) 1 commit
  (merged to 'next' on 2026-03-20 at 8810624798)
 + doc: add missing space on git-config page

 Doc typofix.

 Will merge to 'master'.
 source: <20260318210020.759128-1-gabl@gabl.ink>


* ua/push-remote-group (2026-03-18) 2 commits
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Will merge to 'next'?
 source: <20260318204028.1010487-1-usmanakinyemi202@gmail.com>


* jc/rerere-modern-strbuf-handling (2026-03-19) 2 commits
  (merged to 'next' on 2026-03-21 at 919b766afc)
 + cocci: strbuf.buf is never NULL
 + rerere: update to modern representation of empty strbufs

 Code clean-up overdue by 19 years.

 Will merge to 'master'.
 source: <xmqq341wnvbk.fsf@gitster.g>
 source: <xmqq4imbigvt.fsf@gitster.g>


* ps/odb-generic-object-name-handling (2026-03-20) 15 commits
 - odb: introduce generic `odb_find_abbrev_len()`
 - object-file: move logic to compute packed abbreviation length
 - object-name: move logic to compute loose abbreviation length
 - object-name: simplify computing common prefixes
 - object-name: abbreviate loose object names without `disambiguate_state`
 - object-name: merge `update_candidates()` and `match_prefix()`
 - object-name: backend-generic `get_short_oid()`
 - object-name: backend-generic `repo_collect_ambiguous()`
 - object-name: extract function to parse object ID prefixes
 - object-name: move logic to iterate through packed prefixed objects
 - object-name: move logic to iterate through loose prefixed objects
 - odb: introduce `struct odb_for_each_object_options`
 - oidtree: extend iteration to allow for arbitrary return codes
 - oidtree: modernize the code a bit
 - Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
 (this branch uses ps/object-counting.)

 Object name handling (disambiguation and abbreviation) has been
 refactored to be backend-generic, moving logic into the respective
 object database backends.

 Comments?
 source: <20260320-b4-pks-odb-source-abbrev-v2-0-fe65dcd8c735@pks.im>


* rs/ahead-behind-cleanup-optimization (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at 5d8b4fa265)
 + commit-reach: simplify cleanup of remaining bitmaps in ahead_behind ()

 The cleanup of remaining bitmaps in "ahead_behind()" has been
 simplified.

 Will merge to 'master'.
 source: <21adf042-2bd1-4022-8822-9ed4985122a4@web.de>


* bk/t5315-test-path-is-helpers (2026-03-19) 1 commit
 - t5315: use test_path_is_file for loose-object check

 Test clean-up.

 Will merge to 'next'?
 cf. <8669d87c1b7f96dd0de37dabfb9011c8745a17c9.camel@gmail.com>
 source: <20260319180803.164335-1-elkhatabibilal@gmail.com>


* rs/split-index-the-repo-fix (2026-03-19) 1 commit
  (merged to 'next' on 2026-03-21 at d66850b2ce)
 + split-index: stop using the_repository and the_hash_algo

 split-index.c has been updated to not use the global the_repository
 and the_hash_algo variables.

 Will merge to 'master'.
 source: <944c2331-4dec-4c98-9059-f41dc204ed86@web.de>


* aa/reap-transport-child-processes (2026-03-12) 1 commit
 . transport-helper, connect: use clean_on_exit to reap children on abnormal exit

 A few code paths that spawned child processes for network
 connection weren't wait(2)ing for their children and letting "init"
 reap them instead; they have been tightened.

 CI failures on Windows in t0061.24?
 cf. <20260318040423.GA2858991@coredump.intra.peff.net>
 source: <20260312214945.4050010-1-cshung@gmail.com>


* ss/t0410-delete-object-cleanup (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-17 at a8d41f4c1f)
 + t0410: modernize delete_object helper

 Test clean-up.

 Will merge to 'master'.
 source: <20260313053159.36492-1-r.siddharth.shrimali@gmail.com>


* ej/ref-transaction-hook-preparing (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-20 at f9b8fbb0dc)
 + refs: add 'preparing' phase to the reference-transaction hook

 The reference-transaction hook was taught to be triggered before
 taking locks on references in the "preparing" phase.

 Will merge to 'master'.
 source: <20260317023624.43070-2-eric.peijian@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-20) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Comments?
 source: <V2_CV_name-rev_--format.51b@msgid.xyz>


* pw/worktree-reduce-the-repository (2026-03-15) 3 commits
 - worktree: reject NULL worktree in get_worktree_git_dir()
 - worktree add: stop reading ".git/HEAD"
 - worktree: remove "the_repository" from is_current_worktree()

 Reduce the reference to the_repository in the worktree subsystem.

 Expecting review responses.
 cf. <abezeNELL9SU8v82@pks.im>
 source: <cover.1773591528.git.phillip.wood@dunelm.org.uk>


* dd/cocci-do-not-pass-strbuf-by-value (2026-03-15) 3 commits
  (merged to 'next' on 2026-03-18 at a2ffed1127)
 + stash: do not pass strbuf by value
 + coccinelle: detect struct strbuf passed by value
 + Merge branch 'dd/list-objects-filter-options-wo-strbuf-split' into dd/cocci-do-not-pass-strbuf-by-value

 Add a coccinelle rule to break the build when "struct strbuf" gets
 passed by value.

 Will merge to 'master'.
 source: <20260315094445.19849-1-deveshigurgaon@gmail.com>


* gj/user-manual-fix-grep-example (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at dbf9137a9d)
 + doc: fix git grep args order in Quick Reference

 Fix an example in the user-manual.

 Will merge to 'master'.
 source: <pull.2069.git.1773670536808.gitgitgadget@gmail.com>


* jk/transport-color-leakfix (2026-03-14) 1 commit
  (merged to 'next' on 2026-03-17 at c2d7c74d11)
 + transport: plug leaks in transport_color_config()

 Leakfix.

 Will merge to 'master'.
 source: <20260314160814.GA918806@coredump.intra.peff.net>


* jw/apply-corrupt-location (2026-03-17) 3 commits
 - apply: report input location in binary and garbage patch errors
 - apply: report input location in header parsing errors
 - apply: report the location of corrupt patches

 "git apply" now reports the name of the input file along with the
 line number when it encounters a corrupt patch, and correctly
 resets the line counter when processing multiple patch files.

 Will merge to 'next'.
 source: <20260317162321.71812-1-jerrywang183@yahoo.com>


* ps/clar-wo-path-max (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at 1d2f28a677)
 + clar: update to fix compilation on platforms without PATH_MAX

 Clar (unit testing framework) update from the upstream.

 Will merge to 'master'.
 source: <20260316-b4-pks-clar-without-path-max-v1-1-40b4bc91fdc0@pks.im>


* rj/pack-refs-tests-path-is-helpers (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-17 at 56374095e3)
 + t/pack-refs-tests: use test_path_is_missing

 Test updates.

 Will merge to 'master'.
 source: <20260315081032.497-1-riteshjd75@gmail.com>


* mf/format-patch-commit-list-format (2026-03-19) 9 commits
 - format-patch: --commit-list-format without prefix
 - format-patch: add preset for --commit-list-format
 - format-patch: wrap generate_commit_list_cover()
 - format.commitListFormat: strip meaning from empty
 - docs/pretty-formats: add %(count) and %(total)
 - format-patch: rename --cover-letter-format option
 - format-patch: refactor generate_commit_list_cover
 - pretty.c: better die message %(count) and %(total)
 - Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
 (this branch uses mf/format-patch-cover-letter-format.)

 Improve the recently introduced `git format-patch
 --commit-list-format` (formerly `--cover-letter-format`) option,
 including a new "modern" preset and better CLI ergonomics.

 Comments?
 source: <cover.1773959395.git.mroik@delayed.space>


* mf/t0008-cleanup (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-17 at 2bb0e51243)
 + t0008: improve test cleanup to fix failing test

 Test clean-up.

 Will merge to 'master'.
 source: <20260316011544.13825-1-mroik@delayed.space>


* pb/t4200-test-path-is-helpers (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at a78771f93e)
 + t4200: convert test -[df] checks to test_path_* helpers

 Test clean-up.

 Will merge to 'master'.
 source: <20260316172457.38242-1-prashantjee2025@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jt/fast-import-sign-again (2026-03-12) 3 commits
  (merged to 'next' on 2026-03-17 at e04808d5f2)
 + fast-import: add mode to sign commits with invalid signatures
 + gpg-interface: allow sign_buffer() to use default signing key
 + commit: remove unused forward declaration

 "git fast-import" learned to optionally replace signature on
 commits whose signatures get invalidated due to replaying by
 signing afresh.

 Will merge to 'master'.
 source: <20260313013938.2742124-1-jltobler@gmail.com>


* mf/apply-p-no-atoi (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-20 at 70a0a4313b)
 + apply.c: fix -p argument parsing

 "git apply -p<n>" parses <n> more carefully now.

 Will merge to 'master'.
 source: <20260316005120.7079-1-mroik@delayed.space>


* ps/build-tweaks (2026-03-18) 8 commits
  (merged to 'next' on 2026-03-20 at fb53cf619a)
 + meson: precompile "git-compat-util.h"
 + meson: compile compatibility sources separately
 + git-compat-util.h: move warning infra to prepare for PCHs
 + builds: move build scripts into "tools/"
 + contrib: move "update-unicode.sh" script into "tools/"
 + contrib: move "coverage-diff.sh" script into "tools/"
 + contrib: move "coccinelle/" directory into "tools/"
 + Introduce new "tools/" directory

 Tweak the build infrastructure by moving tools around.

 Will merge to 'master'.
 source: <20260319-b4-pks-build-infra-improvements-v3-0-82f5fb3edc3f@pks.im>


* ps/object-counting (2026-03-19) 8 commits
 - object-file: fix sparse 'plain integer as NULL pointer' error
  (merged to 'next' on 2026-03-17 at 8d3d9a1374)
 + odb: introduce generic object counting
 + odb/source: introduce generic object counting
 + object-file: generalize counting objects
 + object-file: extract logic to approximate object count
 + packfile: extract logic to count number of objects
 + odb: stop including "odb/source.h"
 + Merge branch 'ps/odb-sources' into ps/object-counting
 (this branch is used by ps/odb-generic-object-name-handling.)

 The logic to count objects has been cleaned up.

 Will merge to 'next' and then to 'master'.
 source: <20260312-b4-pks-odb-source-count-objects-v2-0-5914f69256bf@pks.im>


* ty/doc-diff-u-wo-number (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-18 at 8a410154ff)
 + diff: document -U without <n> as using default context

 "git diff -U<num>" was too lenient in its command line parsing and
 took an empty string as a valid <num>.

 Will merge to 'master'.
 source: <20260310095017.131957-1-cat@malon.dev>


* ms/t7605-test-path-is-helpers (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-16 at 49facdec9f)
 + t7605: use test_path_is_file instead of test -f

 Test updates.

 Will merge to 'master'.
 source: <pull.2067.v2.git.1773183022175.gitgitgadget@gmail.com>


* bb/imap-send-openssl-4.0-prep (2026-03-11) 3 commits
  (merged to 'next' on 2026-03-16 at 0baab97778)
 + imap-send: move common code into function host_matches()
 + imap-send: use the OpenSSL API to access the subject common name
 + imap-send: use the OpenSSL API to access the subject alternative names

 "imap-send" used to use functions whose use is going to be removed
 with OpenSSL 4.0; rewrite them using public API that has been
 available since OpenSSL 1.1 since 2016 or so.

 Will merge to 'master'.
 source: <20260311121107.1122387-1-dev+git@drbeat.li>


* jc/test-allow-sed-with-ere (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-16 at be057bed35)
 + t: allow use of "sed -E"

 Adjust test-lint to allow "sed -E" to use ERE in the patterns.

 Will merge to 'master'.
 source: <xmqq3425lvtq.fsf@gitster.g>


* kh/doc-interpret-trailers-1 (2026-03-16) 4 commits
  (merged to 'next' on 2026-03-20 at 6acc8b5a8a)
 + interpret-trailers: use placeholder instead of *
 + doc: config: convert trailers section to synopsis style
 + doc: interpret-trailers: normalize and fill out options
 + doc: interpret-trailers: convert to synopsis style

 Doc updates.

 Will merge to 'master'.
 source: <V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz>


* ty/mktree-wo-the-repository (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-16 at 8d20ceb853)
 + builtin/mktree: remove USE_THE_REPOSITORY_VARIABLE

 Code clean-up.

 Will merge to 'master'.
 source: <20260312164203.964033-1-cat@malon.dev>


* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Needs review.
 source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-20) 11 commits
 - hook: show disabled hooks in "git hook list"
 - hook: show config scope in git hook list
 - hook: introduce hook_config_cache_entry for per-hook data
 - t1800: add test to verify hook execution ordering
 - hook: make consistent use of friendly-name in docs
 - hook: replace hook_list_clear() -> string_list_clear_func()
 - hook: detect & emit two more bugs
 - hook: rename cb_data_free/alloc -> hook_data_free/alloc
 - hook: fix minor style issues
 - hook: move unsorted_string_list_remove() to string-list.[ch]
 - Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Will merge to 'next'?
 source: <20260320115211.177351-1-adrian.ratiu@collabora.com>


* cf/constness-fixes (2026-03-08) 2 commits
  (merged to 'next' on 2026-03-13 at 3c80964399)
 + dir: avoid -Wdiscarded-qualifiers in remove_path()
 + bloom: remove a misleading const qualifier

 Small code clean-up around the constness area.

 Will merge to 'master'.
 source: <3ad40c3d0762c2e8c14792dfb68cba9f63a883a3.1773026586.git.collin.funk1@gmail.com>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* ps/history-split (2026-03-02) 8 commits
  (merged to 'next' on 2026-03-17 at 456723f018)
 + builtin/history: implement "split" subcommand
 + builtin/history: split out extended function to create commits
 + cache-tree: allow writing in-memory index as tree
 + add-patch: allow disabling editing of hunks
 + add-patch: add support for in-memory index patching
 + add-patch: remove dependency on "add-interactive" subsystem
 + add-patch: split out `struct interactive_options`
 + add-patch: split out header from "add-interactive.h"

 "git history" learned the "split" subcommand.

 Will merge to 'master'.
 source: <20260302-pks-history-split-v1-0-444fc987a324@pks.im>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-03-12) 10 commits
  (merged to 'next' on 2026-03-18 at 138ad42ac5)
 + builtin/pack-objects: reduce lock contention when writing packfile data
 + csum-file: drop `hashfd_throughput()`
 + csum-file: introduce `hashfd_ext()`
 + sideband: use writev(3p) to send pktlines
 + wrapper: introduce writev(3p) wrappers
 + compat/posix: introduce writev(3p) wrapper
 + upload-pack: reduce lock contention when writing packfile data
 + upload-pack: prefer flushing data over sending keepalive
 + upload-pack: adapt keepalives based on buffering
 + upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends on relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Will merge to 'master'.
 source: <20260313-pks-upload-pack-write-contention-v4-0-7a9668061f7f@pks.im>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders
 (this branch is used by mf/format-patch-commit-list-format.)

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Waiting for the follow-on topic.
 source: <cover.1772839973.git.mroik@delayed.space>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Waiting for the rerolls to slow down?
 cf. <aakyzGksiC2fhhiD@pks.im>
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-16 at db220e143f)
 + help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Will merge to 'master'.
 source: <20260311192453.62213-1-amishhhaaaa@gmail.com>


* sa/replay-revert (2026-03-12) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting review responses.
 cf. <87pl53si56.fsf@iotcl.com>
 source: <20260313054035.26605-1-siddharthasthana31@gmail.com>


* vp/http-rate-limit-retries (2026-03-17) 3 commits
 - http: add support for HTTP 429 rate limit retries
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Will merge to 'next'.
 cf. <ab4RIZr7b49VKjR9@nand.local>
 source: <pull.2008.v6.git.1773752435.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-03-20) 11 commits
 - hook: add hook.<event>.enabled switch
 - hook: warn when hook.<friendly-name>.jobs is set
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow pre-push parallel execution
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups.)

 Needs review.
 source: <20260320135311.331463-1-adrian.ratiu@collabora.com>


* ng/submodule-default-remote (2026-03-03) 1 commit
  (merged to 'next' on 2026-03-16 at d41fd28450)
 + submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Will merge to 'master'.
 source: <20260303234044.105157-1-nasser.grainawi@oss.qualcomm.com>


* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-18 at 5e49edc821)
 + xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Will merge to 'master'.
 source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of the xdiff/ codebase to work with Rust

 Expecting a reroll.
 cf. <CAH=ZcbBVSqUG89n65MBpN+HMCmmjzmADGaVnuEJn_cYN0SYknw@mail.gmail.com>
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
  (merged to 'next' on 2026-03-18 at 7f995e23bb)
 + midx: enable reachability bitmaps during MIDX compaction
 + midx: implement MIDX compaction
 + t/helper/test-read-midx.c: plug memory leak when selecting layer
 + midx-write.c: factor fanout layering from `compute_sorted_entries()`
 + midx-write.c: enumerate `pack_int_id` values directly
 + midx-write.c: extract `fill_pack_from_midx()`
 + midx-write.c: introduce `midx_pack_perm()` helper
 + midx: do not require packs to be sorted in lexicographic order
 + midx-write.c: introduce `struct write_midx_opts`
 + midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 + t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 + git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 + git-multi-pack-index(1): remove non-existent incompatibility
 + builtin/multi-pack-index.c: make '--progress' a common option
 + midx: introduce `midx_get_checksum_hex()`
 + midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 + midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'master'.
 source: <cover.1771959555.git.me@ttaylorr.com>

--------------------------------------------------
[Discarded]

* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 . sideband: offer to configure sanitizing on a per-URL basis
 . sideband: add options to allow more control sequences to be passed through
 . sideband: do allow ANSI color sequences by default
 . sideband: introduce an "escape hatch" to allow control characters
 . sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* bc/rev-parse-parseopt-help-exit-code (2026-03-16) 1 commit
 . rev-parse: have --parseopt callers exit 0 on --help

 `rev-parse --parseopt` now includes "exit 0" in its output when the
 user asks for help, ensuring that scripts using the recommended `eval`
 pattern exit successfully.

 Need to step back and rethink how exit code should look like.
 cf. <20260317150759.GA9975@coredump.intra.peff.net>
 source: <20260316220742.1286157-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 19%]

* What's cooking in git.git (Mar 2026, #07)
@ 2026-03-20  0:45 19% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-20  0:45 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* bk/run-command-wo-the-repository (2026-03-12) 2 commits
  (merged to 'next' on 2026-03-12 at 61ffe62b75)
 + run-command: wean auto_maintenance() functions off the_repository
 + run-command: wean start_command() off the_repository

 The run_command() API lost its implicit dependencyon the singleton
 `the_repository` instance.
 source: <20260312144437.626392-1-bkkaracay@gmail.com>


* dd/list-objects-filter-options-wo-strbuf-split (2026-03-11) 2 commits
  (merged to 'next' on 2026-03-12 at 99c4dbd03e)
 + list-objects-filter-options: avoid strbuf_split_str()
 + worktree: do not pass strbuf by value
 (this branch is used by dd/cocci-do-not-pass-strbuf-by-value.)

 The way combined list-object filter options are parsed has been
 revamped.
 source: <20260311173336.8395-1-deveshigurgaon@gmail.com>


* jc/doc-wholesale-replace-before-next (2026-03-09) 1 commit
  (merged to 'next' on 2026-03-13 at 19ca350c9b)
 + SubmittingPatches: spell out "replace fully to pretend to be perfect"

 Doc update.
 source: <xmqq34283b12.fsf@gitster.g>


* lc/rebase-trailer (2026-03-06) 6 commits
  (merged to 'next' on 2026-03-13 at 75c22b6b26)
 + rebase: support --trailer
 + commit, tag: parse --trailer with OPT_STRVEC
 + trailer: append trailers without fork/exec
 + trailer: libify a couple of functions
 + interpret-trailers: refactor create_in_place_tempfile()
 + interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.
 source: <cover.1772808594.git.phillip.wood@dunelm.org.uk>


* ps/editorconfig-unanchor (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-12 at 39ef732ca9)
 + editorconfig: fix style not applying to subdirs anymore

 Editorconfig filename patterns were specified incorrectly, making
 many source files inside subdirectories unaffected, which has been
 corrected.
 source: <20260311-b4-pks-editorconfig-fix-subdirs-v1-1-4938193ccd31@pks.im>


* ps/t9200-test-path-is-helpers (2026-03-12) 2 commits
  (merged to 'next' on 2026-03-12 at 8500bdf172)
 + t9200: replace test -f with modern path helper
 + t9200: handle missing CVS with skip_all

 Test update.
 source: <20260311194002.190195-1-pabloosabaterr@gmail.com>
 source: <20260312173305.15112-1-pabloosabaterr@gmail.com>


* ps/unit-test-c-escape-names.txt (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-13 at f545ea5a9c)
 + test-lib: print escape sequence names

 The unit test helper function was taught to use backslash +
 mnemonic notation for certain control characters like "\t", instead
 of octal notation like "\011".
 source: <20260311031442.11942-1-pabloosabaterr@gmail.com>


* ss/submodule--helper-use-xmalloc (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-13 at f13711965e)
 + submodule--helper: replace malloc with xmalloc

 Code clean-up.
 source: <20260310164412.47403-1-r.siddharth.shrimali@gmail.com>


* ss/t3200-test-zero-oid (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-12 at 647ee3f2dc)
 + t3200: replace hardcoded null OID with $ZERO_OID

 A test now uses the symbolic constant $ZERO_OID instead of 40 "0" to
 work better with SHA-256 as well as SHA-1.
 source: <20260311174120.76871-1-r.siddharth.shrimali@gmail.com>

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

* jc/whitespace-incomplete-line (2026-03-17) 1 commit
 - apply: fix new-style empty context line triggering incomplete-line check

 Fix whitespace correction for new-style empty context lines.

 Needs review.
 source: <xmqqldfql4hp.fsf@gitster.g>


* sp/add-patch-with-fewer-the-repository (2026-03-17) 1 commit
 - add-patch: use repository instance from add_i_state instead of the_repository

 Reduce dependency on `the_repository` in add-patch.c file.

 Needs review.
 source: <20260317155230.619378-1-shreyanshpaliwalcmsmn@gmail.com>


* ds/backfill-revs (2026-03-16) 5 commits
 - path-walk: support wildcard pathspecs for blob filtering
 - backfill: work with prefix pathspecs
 - backfill: accept revision arguments
 - t5620: prepare branched repo for revision tests
 - revision: include object-name.h

 `git backfill` learned to accept revision and pathspec arguments.

 Needs review.
 source: <pull.2070.git.1773707361.gitgitgadget@gmail.com>


* jw/t2203-status-pipe-fix (2026-03-16) 1 commit
 - t2203: avoid suppressing git status exit code

 Test clean-up.

 Will merge to 'next'?
 source: <20260317011544.65952-1-jerrywang183@yahoo.com>


* ps/commit-graph-overflow-fix (2026-03-17) 1 commit
 - commit-graph: fix writing generations with dates exceeding 34 bits

 Fix a regression in writing the commit-graph where commits with dates
 exceeding 34 bits (beyond year 2514) could cause an underflow and
 crash Git during the generation data overflow chunk writing.

 Needs review.
 source: <20260317-pks-commit-graph-overflow-v1-1-e6bee22cd826@pks.im>


* tc/replay-down-to-root (2026-03-17) 1 commit
 - replay: support replaying down from root commit

 git replay now supports replaying down to the root commit.

 Needs review.
 source: <20260317-toon-replay-down-to-root-v1-1-cb5c249e15fd@iotcl.com>


* mr/merge-file-object-id-worktree-fix (2026-03-10) 1 commit
 - merge-file: fix BUG when --object-id is used in a worktree

 merge-file --object-id used to trigger a BUG when run in a linked
 worktree, which has been fixed.

 Will merge to 'next'.
 source: <c076edd0-9057-443b-ba37-33aacde2eede@app.fastmail.com>


* rs/prio-queue-to-commit-stack (2026-03-17) 1 commit
 - use commit_stack instead of prio_queue in LIFO mode

 Uses of prio_queue as a LIFO stack of commits have been written
 with commit_stack.

 Will merge to 'next'.
 source: <05fc946f-6670-46e9-a058-231ee464029d@web.de>


* jw/object-name-bitset-to-enum (2026-03-18) 1 commit
 - object-name: turn INTERPRET_BRANCH_* constants into enum values

 The unsigned integer that is used as an bitset to specify the kind
 of branches interpret_branch_name() function has been changed to
 use a dedicated enum type.

 Will merge to 'next'?
 source: <20260318190942.22595-1-jerrywang183@yahoo.com>


* ai/t2107-test-path-is-helpers (2026-03-18) 1 commit
 - t2107: modernize path existence check

 Test cleanup.

 Will merge to 'next'?
 source: <pull.2071.v2.git.1773864455956.gitgitgadget@gmail.com>


* gi/doc-boolean-config-typofix (2026-03-18) 1 commit
 - doc: add missing space on git-config page

 Doc typofix.

 Will merge to 'next'.
 source: <20260318210020.759128-1-gabl@gabl.ink>


* ua/push-remote-group (2026-03-19) 3 commits
 - fixup! push: support pushing to a remote group
 - push: support pushing to a remote group
 - remote: move remote group resolution to remote.c

 "git push" learned to take a "remote group" name to push to, which
 causes pushes to multiple places, just like "git fetch" would do.

 Will merge to 'next' after squashing the fixup in?
 source: <20260318204028.1010487-1-usmanakinyemi202@gmail.com>


* jc/rerere-modern-strbuf-handling (2026-03-19) 1 commit
 - rerere: update to modern representation of empty strbufs

 Code clean-up overdue by 19 years.

 Will merge to 'next'.
 source: <xmqq341wnvbk.fsf@gitster.g>


* ps/odb-generic-object-name-handling (2026-03-18) 15 commits
 - odb: introduce generic `odb_find_abbrev_len()`
 - object-file: move logic to compute packed abbreviation length
 - object-name: move logic to compute loose abbreviation length
 - object-name: simplify computing common prefixes
 - object-name: abbreviate loose object names without `disambiguate_state`
 - object-name: merge `update_candidates()` and `match_prefix()`
 - object-name: backend-generic `get_short_oid()`
 - object-name: backend-generic `repo_collect_ambiguous()`
 - object-name: extract function to parse object ID prefixes
 - object-name: move logic to iterate through packed prefixed objects
 - object-name: move logic to iterate through loose prefixed objects
 - odb: introduce `struct odb_for_each_object_options`
 - oidtree: extend iteration to allow for arbitrary return codes
 - oidtree: modernize the code a bit
 - Merge branch 'ps/object-counting' into ps/odb-generic-object-name-handling
 (this branch uses ps/object-counting.)

 Object name handling (disambiguation and abbreviation) has been
 refactored to be backend-generic, moving logic into the respective
 object database backends.

 Comments?
 source: <20260319-b4-pks-odb-source-abbrev-v1-0-5ddebad292b0@pks.im>


* rs/ahead-behind-cleanup-optimization (2026-03-19) 1 commit
 - commit-reach: simplify cleanup of remaining bitmaps in ahead_behind ()

 The cleanup of remaining bitmaps in "ahead_behind()" has been
 simplified.

 Will merge to 'next'.
 source: <21adf042-2bd1-4022-8822-9ed4985122a4@web.de>


* bk/t5315-test-path-is-helpers (2026-03-19) 1 commit
 - t5315: use test_path_is_file for loose-object check

 Test clean-up.

 Will merge to 'next'?
 source: <20260319180803.164335-1-elkhatabibilal@gmail.com>


* rs/split-index-the-repo-fix (2026-03-19) 1 commit
 - split-index: stop using the_repository and the_hash_algo

 split-index.c has been updated to not use the global the_repository
 and the_hash_algo variables.

 Will merge to 'next'.
 source: <944c2331-4dec-4c98-9059-f41dc204ed86@web.de>

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

* aa/reap-transport-child-processes (2026-03-12) 1 commit
 . transport-helper, connect: use clean_on_exit to reap children on abnormal exit

 A few code paths that spawned child processes for network
 connection weren't wait(2)ing for their children and letting "init"
 reap them instead; they have been tightened.

 CI failures on Windows in t0061.24?
 cf. <20260318040423.GA2858991@coredump.intra.peff.net>
 source: <20260312214945.4050010-1-cshung@gmail.com>


* ss/t0410-delete-object-cleanup (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-17 at a8d41f4c1f)
 + t0410: modernize delete_object helper

 Test clean-up.

 Will merge to 'master'.
 source: <20260313053159.36492-1-r.siddharth.shrimali@gmail.com>


* ej/ref-transaction-hook-preparing (2026-03-16) 1 commit
 - refs: add 'preparing' phase to the reference-transaction hook

 The reference-transaction hook was taught to be triggered before
 taking locks on references in the "preparing" phase.

 Will merge to 'next'.
 source: <20260317023624.43070-2-eric.peijian@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-17) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v6.git.git.1773740139.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-13) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Expecting review responses.
 cf. <xmqq8qbvz2dm.fsf@gitster.g>
 source: <CV_name-rev_--format.4ad@msgid.xyz>


* pw/worktree-reduce-the-repository (2026-03-15) 3 commits
 - worktree: reject NULL worktree in get_worktree_git_dir()
 - worktree add: stop reading ".git/HEAD"
 - worktree: remove "the_repository" from is_current_worktree()

 Reduce the reference to the_repository in the worktree subsystem.

 Expecting review responses.
 cf. <abezeNELL9SU8v82@pks.im>
 source: <cover.1773591528.git.phillip.wood@dunelm.org.uk>


* dd/cocci-do-not-pass-strbuf-by-value (2026-03-15) 3 commits
  (merged to 'next' on 2026-03-18 at a2ffed1127)
 + stash: do not pass strbuf by value
 + coccinelle: detect struct strbuf passed by value
 + Merge branch 'dd/list-objects-filter-options-wo-strbuf-split' into dd/cocci-do-not-pass-strbuf-by-value

 Add a coccinelle rule to break the build when "struct strbuf" gets
 passed by value.

 Will merge to 'master'.
 source: <20260315094445.19849-1-deveshigurgaon@gmail.com>


* gj/user-manual-fix-grep-example (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at dbf9137a9d)
 + doc: fix git grep args order in Quick Reference

 Fix an example in the user-manual.

 Will merge to 'master'.
 source: <pull.2069.git.1773670536808.gitgitgadget@gmail.com>


* jk/transport-color-leakfix (2026-03-14) 1 commit
  (merged to 'next' on 2026-03-17 at c2d7c74d11)
 + transport: plug leaks in transport_color_config()

 Leakfix.

 Will merge to 'master'.
 source: <20260314160814.GA918806@coredump.intra.peff.net>


* jw/apply-corrupt-location (2026-03-17) 3 commits
 - apply: report input location in binary and garbage patch errors
 - apply: report input location in header parsing errors
 - apply: report the location of corrupt patches

 "git apply" now reports the name of the input file along with the
 line number when it encounters a corrupt patch, and correctly
 resets the line counter when processing multiple patch files.

 Will merge to 'next'?
 source: <20260317162321.71812-1-jerrywang183@yahoo.com>


* ps/clar-wo-path-max (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at 1d2f28a677)
 + clar: update to fix compilation on platforms without PATH_MAX

 Clar (unit testing framework) update from the upstream.

 Will merge to 'master'.
 source: <20260316-b4-pks-clar-without-path-max-v1-1-40b4bc91fdc0@pks.im>


* rj/pack-refs-tests-path-is-helpers (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-17 at 56374095e3)
 + t/pack-refs-tests: use test_path_is_missing

 Test updates.

 Will merge to 'master'.
 source: <20260315081032.497-1-riteshjd75@gmail.com>


* mf/format-patch-commit-list-format (2026-03-14) 8 commits
 - format-patch: --commit-list-format without prefix
 - format-patch: add preset for --commit-list-format
 - format-patch: wrap generate_commit_list_cover()
 - format.commitListFormat: strip meaning from empty
 - format-patch: rename --cover-letter-format option
 - format-patch: refactor generate_commit_list_cover
 - pretty.c: better die message %(count) and %(total)
 - Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
 (this branch uses mf/format-patch-cover-letter-format.)

 Improve the recently introduced `git format-patch
 --commit-list-format` (formerly `--cover-letter-format`) option,
 including a new "modern" preset and better CLI ergonomics.

 Expecting a reroll.
 cf. <abl-U6jJaMQsfxWj@exploit>
 source: <cover.1773530191.git.mroik@delayed.space>


* mf/t0008-cleanup (2026-03-15) 1 commit
  (merged to 'next' on 2026-03-17 at 2bb0e51243)
 + t0008: improve test cleanup to fix failing test

 Test clean-up.

 Will merge to 'master'.
 source: <20260316011544.13825-1-mroik@delayed.space>


* pb/t4200-test-path-is-helpers (2026-03-16) 1 commit
  (merged to 'next' on 2026-03-17 at a78771f93e)
 + t4200: convert test -[df] checks to test_path_* helpers

 Test clean-up.

 Will merge to 'master'.
 source: <20260316172457.38242-1-prashantjee2025@gmail.com>


* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jt/fast-import-sign-again (2026-03-12) 3 commits
  (merged to 'next' on 2026-03-17 at e04808d5f2)
 + fast-import: add mode to sign commits with invalid signatures
 + gpg-interface: allow sign_buffer() to use default signing key
 + commit: remove unused forward declaration

 "git fast-import" learned to optionally replace signature on
 commits whose signatures get invalidated due to replaying by
 signing afresh.

 Will merge to 'master'.
 source: <20260313013938.2742124-1-jltobler@gmail.com>


* mf/apply-p-no-atoi (2026-03-15) 1 commit
 - apply.c: fix -p argument parsing

 "git apply -p<n>" parses <n> more carefully now.

 Will merge to 'next'.
 source: <20260316005120.7079-1-mroik@delayed.space>


* ps/build-tweaks (2026-03-18) 8 commits
 - meson: precompile "git-compat-util.h"
 - meson: compile compatibility sources separately
 - git-compat-util.h: move warning infra to prepare for PCHs
 - builds: move build scripts into "tools/"
 - contrib: move "update-unicode.sh" script into "tools/"
 - contrib: move "coverage-diff.sh" script into "tools/"
 - contrib: move "coccinelle/" directory into "tools/"
 - Introduce new "tools/" directory

 Tweak the build infrastructure by moving tools around.

 Will merge to 'next'.
 source: <20260319-b4-pks-build-infra-improvements-v3-0-82f5fb3edc3f@pks.im>


* ps/object-counting (2026-03-12) 7 commits
  (merged to 'next' on 2026-03-17 at 8d3d9a1374)
 + odb: introduce generic object counting
 + odb/source: introduce generic object counting
 + object-file: generalize counting objects
 + object-file: extract logic to approximate object count
 + packfile: extract logic to count number of objects
 + odb: stop including "odb/source.h"
 + Merge branch 'ps/odb-sources' into ps/object-counting
 (this branch is used by ps/odb-generic-object-name-handling.)

 The logic to count objects has been cleaned up.

 Will merge to 'master'.
 source: <20260312-b4-pks-odb-source-count-objects-v2-0-5914f69256bf@pks.im>


* ty/doc-diff-u-wo-number (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-18 at 8a410154ff)
 + diff: document -U without <n> as using default context

 "git diff -U<num>" was too lenient in its command line parsing and
 took an empty string as a valid <num>.

 Will merge to 'master'.
 source: <20260310095017.131957-1-cat@malon.dev>


* ms/t7605-test-path-is-helpers (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-16 at 49facdec9f)
 + t7605: use test_path_is_file instead of test -f

 Test updates.

 Will merge to 'master'.
 source: <pull.2067.v2.git.1773183022175.gitgitgadget@gmail.com>


* bb/imap-send-openssl-4.0-prep (2026-03-11) 3 commits
  (merged to 'next' on 2026-03-16 at 0baab97778)
 + imap-send: move common code into function host_matches()
 + imap-send: use the OpenSSL API to access the subject common name
 + imap-send: use the OpenSSL API to access the subject alternative names

 "imap-send" used to use functions whose use is going to be removed
 with OpenSSL 4.0; rewrite them using public API that has been
 available since OpenSSL 1.1 since 2016 or so.

 Will merge to 'master'.
 source: <20260311121107.1122387-1-dev+git@drbeat.li>


* jc/test-allow-sed-with-ere (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-16 at be057bed35)
 + t: allow use of "sed -E"

 Adjust test-lint to allow "sed -E" to use ERE in the patterns.

 Will merge to 'master'.
 source: <xmqq3425lvtq.fsf@gitster.g>


* kh/doc-interpret-trailers-1 (2026-03-16) 4 commits
 - interpret-trailers: use placeholder instead of *
 - doc: config: convert trailers section to synopsis style
 - doc: interpret-trailers: normalize and fill out options
 - doc: interpret-trailers: convert to synopsis style

 Doc updates.

 Will merge to 'next'.
 source: <V2_CV_doc_interpret-tr_synopsis.50a@msgid.xyz>


* ty/mktree-wo-the-repository (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-16 at 8d20ceb853)
 + builtin/mktree: remove USE_THE_REPOSITORY_VARIABLE

 Code clean-up.

 Will merge to 'master'.
 source: <20260312164203.964033-1-cat@malon.dev>


* mm/line-log-use-standard-diff-output (2026-03-16) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Needs review.
 source: <pull.2065.v2.git.1773714095.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-08) 11 commits
 - hook: show disabled hooks in "git hook list"
 - hook: show config scope in git hook list
 - hook: refactor hook_config_cache from strmap to named struct
 - t1800: add test to verify hook execution ordering
 - hook: make consistent use of friendly-name in docs
 - hook: replace hook_list_clear() -> string_list_clear_func()
 - hook: detect & emit two more bugs
 - hook: rename cb_data_free/alloc -> hook_data_free/alloc
 - hook: fix minor style issues
 - hook: move unsorted_string_list_remove() to string-list.[ch]
 - Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Expecting a reroll.
 cf. <87jyviaagp.fsf@collabora.com>
 source: <20260309005416.2760030-1-adrian.ratiu@collabora.com>


* cf/constness-fixes (2026-03-08) 2 commits
  (merged to 'next' on 2026-03-13 at 3c80964399)
 + dir: avoid -Wdiscarded-qualifiers in remove_path()
 + bloom: remove a misleading const qualifier

 Small code clean-up around the constness area.

 Will merge to 'master'.
 source: <3ad40c3d0762c2e8c14792dfb68cba9f63a883a3.1773026586.git.collin.funk1@gmail.com>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* ps/history-split (2026-03-02) 8 commits
  (merged to 'next' on 2026-03-17 at 456723f018)
 + builtin/history: implement "split" subcommand
 + builtin/history: split out extended function to create commits
 + cache-tree: allow writing in-memory index as tree
 + add-patch: allow disabling editing of hunks
 + add-patch: add support for in-memory index patching
 + add-patch: remove dependency on "add-interactive" subsystem
 + add-patch: split out `struct interactive_options`
 + add-patch: split out header from "add-interactive.h"

 "git history" learned the "split" subcommand.

 Will merge to 'master'.
 source: <20260302-pks-history-split-v1-0-444fc987a324@pks.im>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-03-12) 10 commits
  (merged to 'next' on 2026-03-18 at 138ad42ac5)
 + builtin/pack-objects: reduce lock contention when writing packfile data
 + csum-file: drop `hashfd_throughput()`
 + csum-file: introduce `hashfd_ext()`
 + sideband: use writev(3p) to send pktlines
 + wrapper: introduce writev(3p) wrappers
 + compat/posix: introduce writev(3p) wrapper
 + upload-pack: reduce lock contention when writing packfile data
 + upload-pack: prefer flushing data over sending keepalive
 + upload-pack: adapt keepalives based on buffering
 + upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends on relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Will merge to 'master'.
 source: <20260313-pks-upload-pack-write-contention-v4-0-7a9668061f7f@pks.im>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders
 (this branch is used by mf/format-patch-commit-list-format.)

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Waiting for the follow-on topic.
 source: <cover.1772839973.git.mroik@delayed.space>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Waiting for the rerolls to slow down?
 cf. <aakyzGksiC2fhhiD@pks.im>
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-16 at db220e143f)
 + help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Will merge to 'master'.
 source: <20260311192453.62213-1-amishhhaaaa@gmail.com>


* sa/replay-revert (2026-03-12) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting review responses.
 cf. <87pl53si56.fsf@iotcl.com>
 source: <20260313054035.26605-1-siddharthasthana31@gmail.com>


* vp/http-rate-limit-retries (2026-03-17) 3 commits
 - http: add support for HTTP 429 rate limit retries
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Needs review.
 source: <pull.2008.v6.git.1773752435.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-03-09) 10 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups.)

 Needs review.
 source: <20260309133739.294555-1-adrian.ratiu@collabora.com>


* ng/submodule-default-remote (2026-03-03) 1 commit
  (merged to 'next' on 2026-03-16 at d41fd28450)
 + submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Will merge to 'master'.
 source: <20260303234044.105157-1-nasser.grainawi@oss.qualcomm.com>


* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-18 at 5e49edc821)
 + xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Will merge to 'master'.
 source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of the xdiff/ codebase to work with Rust

 Expecting a reroll.
 cf. <CAH=ZcbBVSqUG89n65MBpN+HMCmmjzmADGaVnuEJn_cYN0SYknw@mail.gmail.com>
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
  (merged to 'next' on 2026-03-18 at 7f995e23bb)
 + midx: enable reachability bitmaps during MIDX compaction
 + midx: implement MIDX compaction
 + t/helper/test-read-midx.c: plug memory leak when selecting layer
 + midx-write.c: factor fanout layering from `compute_sorted_entries()`
 + midx-write.c: enumerate `pack_int_id` values directly
 + midx-write.c: extract `fill_pack_from_midx()`
 + midx-write.c: introduce `midx_pack_perm()` helper
 + midx: do not require packs to be sorted in lexicographic order
 + midx-write.c: introduce `struct write_midx_opts`
 + midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 + t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 + git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 + git-multi-pack-index(1): remove non-existent incompatibility
 + builtin/multi-pack-index.c: make '--progress' a common option
 + midx: introduce `midx_get_checksum_hex()`
 + midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 + midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'master'.
 source: <cover.1771959555.git.me@ttaylorr.com>

--------------------------------------------------
[Discarded]

* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 . sideband: offer to configure sanitizing on a per-URL basis
 . sideband: add options to allow more control sequences to be passed through
 . sideband: do allow ANSI color sequences by default
 . sideband: introduce an "escape hatch" to allow control characters
 . sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* bc/rev-parse-parseopt-help-exit-code (2026-03-16) 1 commit
 . rev-parse: have --parseopt callers exit 0 on --help

 `rev-parse --parseopt` now includes "exit 0" in its output when the
 user asks for help, ensuring that scripts using the recommended `eval`
 pattern exit successfully.

 Need to step back and rethink how exit code should look like.
 cf. <20260317150759.GA9975@coredump.intra.peff.net>
 source: <20260316220742.1286157-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 19%]

* Re: What's cooking in git.git (Mar 2026, #05)
  @ 2026-03-18 16:36 99%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-18 16:36 UTC (permalink / raw)
  To: Jeff King; +Cc: Taylor Blau, git

Jeff King <peff@peff.net> writes:

> On Mon, Mar 16, 2026 at 06:07:41PM -0400, Taylor Blau wrote:
>
>> On Thu, Mar 12, 2026 at 05:10:31PM -0700, Junio C Hamano wrote:
>> > * tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
>> >  - midx: enable reachability bitmaps during MIDX compaction
>> >  - midx: implement MIDX compaction
>> ...
>> >  Further work on incremental repacking using MIDX/bitmap
>> >
>> >  Will merge to 'next'?
>> >  source: <cover.1771959555.git.me@ttaylorr.com>
>> 
>> I think that this one is ready to go. There was a relatively small
>> range-diff between v2 and v3 based on Peff's review of the earlier
>> round.
>> 
>> That review[1] said that:
>> 
>>     There were a couple minor issues brought up in review, like
>>     out-dated comments and the u32_add interface. So I think we might
>>     need a v3 with a few touch-ups, but that's it.
>> 
>> , so I think with the latest round we should be OK to start merging this
>> one down.
>
> Yeah, I looked over the range-diff for v3 and didn't have anything
> further to add.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Mar 2026, #06)
@ 2026-03-17  0:25 20% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-17  0:25 UTC (permalink / raw)
  To: git

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 is a 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 a URL
to a message that raises issues but they are by no means exhaustive.
A topic without enough support may be discarded after a long period
of no activity (of course they can be resubmitted 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']

* ds/for-each-repo-w-worktree (2026-03-03) 4 commits
  (merged to 'next' on 2026-03-06 at 3886f0d054)
 + for-each-repo: simplify passing of parameters
 + for-each-repo: work correctly in a worktree
 + run-command: extract sanitize_repo_env helper
 + for-each-repo: test outside of repo context

 "git for-each-repo" started from a secondary worktree did not work
 as expected, which has been corrected.
 source: <pull.2056.v4.git.1772559114.gitgitgadget@gmail.com>


* fp/t3310-unhide-git-failures (2026-03-07) 1 commit
  (merged to 'next' on 2026-03-09 at edd6c35bb8)
 + t3310: avoid hiding failures from rev-parse in command substitutions

 The construct 'test "$(command)" = expectation' loses the exit
 status from the command, which has been fixed by breaking up the
 statement into pieces.
 source: <20260307103631.89829-1-francescopaparatto@gmail.com>


* hn/status-compare-with-push (2026-03-04) 4 commits
  (merged to 'next' on 2026-03-06 at 7c5ad405d7)
 + status: clarify how status.compareBranches deduplicates
  (merged to 'next' on 2026-02-26 at 1c11b8819a)
 + status: add status.compareBranches config for multiple branch comparisons
 + refactor format_branch_comparison in preparation
 + Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.
 source: <pull.2138.v30.git.git.1772102022.gitgitgadget@gmail.com>
 source: <pull.2138.v31.git.git.1772627131.gitgitgadget@gmail.com>


* jk/unleak-mmap (2026-03-06) 6 commits
  (merged to 'next' on 2026-03-10 at e169ff00b3)
 + meson: turn on NO_MMAP when building with LSan
 + Makefile: turn on NO_MMAP when building with LSan
 + object-file: fix mmap() leak in odb_source_loose_read_object_stream()
 + pack-revindex: avoid double-loading .rev files
 + check_connected(): fix leak of pack-index mmap
 + check_connected(): delay opening new_pack

 Plug a few leaks where mmap'ed memory regions are not unmapped.
 source: <20260305230315.GA2354983@coredump.intra.peff.net>
 source: <796110ee-d795-4445-9d82-7026370a88cf@intel.com>
 source: <20260307022459.GA693632@coredump.intra.peff.net>


* jt/repo-structure-extrema (2026-03-02) 6 commits
  (merged to 'next' on 2026-03-09 at 8ccfebc0b1)
 + builtin/repo: find tree with most entries
 + builtin/repo: find commit with most parents
 + builtin/repo: add OID annotations to table output
 + builtin/repo: collect largest inflated objects
 + builtin/repo: add helper for printing keyvalue output
 + builtin/repo: update stats for each object

 "git repo structure" command learns to report maximum values on
 various aspects of objects it inspects.
 source: <20260302214526.2034279-1-jltobler@gmail.com>


* os/doc-git-custom-commands (2026-03-07) 1 commit
  (merged to 'next' on 2026-03-09 at 5cabe3db39)
 + doc: make it easier to find custom command information

 Doc update.
 source: <pull.2225.git.git.1772903281929.gitgitgadget@gmail.com>


* ps/odb-sources (2026-03-05) 19 commits
  (merged to 'next' on 2026-03-06 at 69fd3b792a)
 + odb/source: make `begin_transaction()` function pluggable
 + odb/source: make `write_alternate()` function pluggable
 + odb/source: make `read_alternates()` function pluggable
 + odb/source: make `write_object_stream()` function pluggable
 + odb/source: make `write_object()` function pluggable
 + odb/source: make `freshen_object()` function pluggable
 + odb/source: make `for_each_object()` function pluggable
 + odb/source: make `read_object_stream()` function pluggable
 + odb/source: make `read_object_info()` function pluggable
 + odb/source: make `close()` function pluggable
 + odb/source: make `reprepare()` function pluggable
 + odb/source: make `free()` function pluggable
 + odb/source: introduce source type for robustness
 + odb: move reparenting logic into respective subsystems
 + odb: embed base source in the "files" backend
 + odb: introduce "files" source
 + odb: split `struct odb_source` into separate header
 + Merge branch 'ps/object-info-bits-cleanup' into ps/odb-sources
 + Merge branch 'ps/odb-for-each-object' into ps/odb-sources
 (this branch is used by ps/object-counting.)

 The object source API is getting restructured to allow plugging new
 backends.
 source: <20260305-b4-pks-odb-source-pluggable-v2-0-3290bfd1f444@pks.im>


* rs/history-ergonomics-updates-fix (2026-03-08) 1 commit
  (merged to 'next' on 2026-03-10 at 7d58650290)
 + history: initialize rev_info in cmd_history_reword()

 Fix use of uninitialized variable.
 source: <b0b8633f-be95-48eb-8244-d0e3f1a7be72@web.de>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
  (merged to 'next' on 2026-03-09 at 2e99d5ed52)
 + wt-status: use hash_algo from local repository instead of global the_hash_algo
 + wt-status: replace uses of the_repository with local repository instances
 + wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* ty/patch-ids-document-lazy-eval (2026-03-08) 1 commit
  (merged to 'next' on 2026-03-10 at c8be8d6f7e)
 + patch-ids: document intentional const-casting in patch_id_neq()

 In-code comment update to record a design decision to allow lazy
 computation of patch IDs.
 source: <20260309065140.108644-1-cat@malon.dev>


* ty/setup-error-tightening (2026-03-04) 1 commit
  (merged to 'next' on 2026-03-10 at 38268a7acc)
 + setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.
 source: <20260304141526.37764-1-a3205153416@gmail.com>

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

* aa/reap-transport-child-processes (2026-03-12) 1 commit
 - transport-helper, connect: use clean_on_exit to reap children on abnormal exit

 A few code paths that spawned child processes for network
 connection weren't wait(2)ing for their children and letting "init"
 reap them instead; they have been tightened.

 Will merge to 'next'?
 source: <20260312214945.4050010-1-cshung@gmail.com>


* ss/t0410-delete-object-cleanup (2026-03-12) 1 commit
 - t0410: modernize delete_object helper

 Test clean-up.

 Will merge to 'next'.
 source: <20260313025852.30010-1-r.siddharth.shrimali@gmail.com>


* ej/ref-transaction-hook-preparing (2026-03-15) 1 commit
 - refs: add 'preparing' phase to the reference-transaction hook

 The reference-transaction hook was taught to be triggered before
 taking locks on references in the "preparing" phase.

 Comments?
 source: <20260316045102.70551-2-eric.peijian@gmail.com>


* hn/git-checkout-m-with-stash (2026-03-15) 4 commits
 - checkout: -m (--merge) uses autostash when switching branches
 - sequencer: teach autostash apply to take optional conflict marker labels
 - sequencer: allow create_autostash to run silently
 - stash: add --ours-label, --theirs-label, --base-label for apply

 "git checkout -m another-branch" was invented to deal with local
 changes to paths that are different between the current and the new
 branch, but it gave only one chance to resolve conflicts.  The command
 was taught to create a stash to save the local changes.

 Needs review.
 source: <pull.2234.v5.git.git.1773573553.gitgitgadget@gmail.com>


* kh/name-rev-custom-format (2026-03-13) 2 commits
 - name-rev: learn --format=<pretty>
 - name-rev: wrap both blocks in braces

 "git name-rev" learned to use custom format instead of the object
 name in an extended SHA-1 expression form.

 Expecting review responses.
 cf. <xmqq8qbvz2dm.fsf@gitster.g>
 source: <CV_name-rev_--format.4ad@msgid.xyz>


* pw/worktree-reduce-the-repository (2026-03-15) 3 commits
 - worktree: reject NULL worktree in get_worktree_git_dir()
 - worktree add: stop reading ".git/HEAD"
 - worktree: remove "the_repository" from is_current_worktree()

 Reduce the reference to the_repository in the worktree subsystem.

 Expecting review responses.
 cf. <abezeNELL9SU8v82@pks.im>
 source: <cover.1773591528.git.phillip.wood@dunelm.org.uk>


* dd/cocci-do-not-pass-strbuf-by-value (2026-03-15) 3 commits
 - stash: do not pass strbuf by value
 - coccinelle: detect struct strbuf passed by value
 - Merge branch 'dd/list-objects-filter-options-wo-strbuf-split' into dd/cocci-do-not-pass-strbuf-by-value
 (this branch uses dd/list-objects-filter-options-wo-strbuf-split.)

 Add a coccinelle rule to break the build when "struct strbuf" gets
 passed by value.

 Will merge to 'next'?
 source: <20260315094445.19849-1-deveshigurgaon@gmail.com>


* gj/user-manual-fix-grep-example (2026-03-16) 1 commit
 - doc: fix git grep args order in Quick Reference

 Fix an example in the user-manual.

 Will merge to 'next'.
 source: <pull.2069.git.1773670536808.gitgitgadget@gmail.com>


* jk/transport-color-leakfix (2026-03-14) 1 commit
 - transport: plug leaks in transport_color_config()

 Leakfix.

 Will merge to 'next'.
 source: <20260314160814.GA918806@coredump.intra.peff.net>


* jw/apply-corrupt-location (2026-03-16) 1 commit
 - apply: report the location of corrupt patches

 "git apply" now reports the name of the input file along with the
 line number when it encounters a corrupt patch, and correctly
 resets the line counter when processing multiple patch files.

 Expecting review responses.
 source: <20260316113459.77794-1-jerrywang183@yahoo.com>


* ps/clar-wo-path-max (2026-03-16) 1 commit
 - clar: update to fix compilation on platforms without PATH_MAX

 Clar (unit testing framework) update from the upstream.

 Will merge to 'next'.
 source: <20260316-b4-pks-clar-without-path-max-v1-1-40b4bc91fdc0@pks.im>


* rj/pack-refs-tests-path-is-helpers (2026-03-15) 1 commit
 - t/pack-refs-tests: use test_path_is_missing

 Test updates.

 Will merge to 'next'.
 source: <20260315081032.497-1-riteshjd75@gmail.com>


* mf/format-patch-commit-list-format (2026-03-14) 8 commits
 - format-patch: --commit-list-format without prefix
 - format-patch: add preset for --commit-list-format
 - format-patch: wrap generate_commit_list_cover()
 - format.commitListFormat: strip meaning from empty
 - format-patch: rename --cover-letter-format option
 - format-patch: refactor generate_commit_list_cover
 - pretty.c: better die message %(count) and %(total)
 - Merge branch 'mf/format-patch-cover-letter-format' into mf/format-patch-commit-list-format
 (this branch uses mf/format-patch-cover-letter-format.)

 Improve the recently introduced `git format-patch
 --commit-list-format` (formerly `--cover-letter-format`) option,
 including a new "modern" preset and better CLI ergonomics.

 Needs review.
 source: <cover.1773530191.git.mroik@delayed.space>


* mf/t0008-cleanup (2026-03-15) 1 commit
 - t0008: improve test cleanup to fix failing test

 Test clean-up.

 Will merge to 'next'.
 source: <20260316011544.13825-1-mroik@delayed.space>


* pb/t4200-test-path-is-helpers (2026-03-16) 1 commit
 - t4200: convert test -[df] checks to test_path_* helpers

 Test clean-up.

 Will merge to 'next'.
 source: <20260316172457.38242-1-prashantjee2025@gmail.com>

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

* js/parseopt-subcommand-autocorrection (2026-03-16) 10 commits
 - doc: document autocorrect API
 - parseopt: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINT
 - autocorrect: use mode and delay instead of magic numbers
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelled
 subcommand names.

 Expecting review responses.
 cf. <xmqqse9zo93p.fsf@gitster.g>
 source: <SY0P300MB080186A23FB9582AD793F0D1CE40A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jt/fast-import-sign-again (2026-03-12) 3 commits
 - fast-import: add mode to sign commits with invalid signatures
 - gpg-interface: allow sign_buffer() to use default signing key
 - commit: remove unused forward declaration

 "git fast-import" learned to optionally replace signature on
 commits whose signatures get invalidated due to replaying by
 signing afresh.

 Will merge to 'next'.
 source: <20260313013938.2742124-1-jltobler@gmail.com>


* mf/apply-p-no-atoi (2026-03-15) 1 commit
 - apply.c: fix -p argument parsing

 "git apply -p<n>" parses <n> more carefully now.

 Will merge to 'next'?
 source: <20260316005120.7079-1-mroik@delayed.space>


* ps/build-tweaks (2026-03-16) 8 commits
 - meson: precompile "git-compat-util.h"
 - meson: compile compatibility sources separately
 - git-compat-util.h: move warning infra to prepare for PCHs
 - builds: move build scripts into "tools/"
 - contrib: move "update-unicode.sh" script into "tools/"
 - contrib: move "coverage-diff.sh" script into "tools/"
 - contrib: move "coccinelle/" directory into "tools/"
 - Introduce new "tools/" directory

 Tweak the build infrastructure by moving tools around.

 Will merge to 'next'??
 source: <20260316-b4-pks-build-infra-improvements-v2-0-4b2c2c0c0425@pks.im>


* ps/object-counting (2026-03-12) 7 commits
 - odb: introduce generic object counting
 - odb/source: introduce generic object counting
 - object-file: generalize counting objects
 - object-file: extract logic to approximate object count
 - packfile: extract logic to count number of objects
 - odb: stop including "odb/source.h"
 - Merge branch 'ps/odb-sources' into ps/object-counting

 The logic to count objects has been cleaned up.

 Will merge to 'next'.
 source: <20260312-b4-pks-odb-source-count-objects-v2-0-5914f69256bf@pks.im>


* ty/doc-diff-u-wo-number (2026-03-10) 1 commit
 - diff: document -U without <n> as using default context

 "git diff -U<num>" was too lenient in its command line parsing and
 took an empty string as a valid <num>.

 Will merge to 'next'?
 source: <20260310095017.131957-1-cat@malon.dev>


* ms/t7605-test-path-is-helpers (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-16 at 49facdec9f)
 + t7605: use test_path_is_file instead of test -f

 Test updates.

 Will merge to 'master'.
 source: <pull.2067.v2.git.1773183022175.gitgitgadget@gmail.com>


* bb/imap-send-openssl-4.0-prep (2026-03-11) 3 commits
  (merged to 'next' on 2026-03-16 at 0baab97778)
 + imap-send: move common code into function host_matches()
 + imap-send: use the OpenSSL API to access the subject common name
 + imap-send: use the OpenSSL API to access the subject alternative names

 "imap-send" used to use functions whose use is going to be removed
 with OpenSSL 4.0; rewrite them using public API that has been
 available since OpenSSL 1.1 since 2016 or so.

 Will merge to 'master'.
 source: <20260311121107.1122387-1-dev+git@drbeat.li>


* ps/editorconfig-unanchor (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-12 at 39ef732ca9)
 + editorconfig: fix style not applying to subdirs anymore

 Editorconfig filename patterns were specified incorrectly, making
 many source files inside subdirectories unaffected, which has been
 corrected.

 Will merge to 'master'.
 source: <20260311-b4-pks-editorconfig-fix-subdirs-v1-1-4938193ccd31@pks.im>


* ps/unit-test-c-escape-names.txt (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-13 at f545ea5a9c)
 + test-lib: print escape sequence names

 The unit test helper function was taught to use backslash +
 mnemonic notation for certain control characters like "\t", instead
 of octal notation like "\011".

 Will merge to 'master'.
 source: <20260311031442.11942-1-pabloosabaterr@gmail.com>


* ss/submodule--helper-use-xmalloc (2026-03-10) 1 commit
  (merged to 'next' on 2026-03-13 at f13711965e)
 + submodule--helper: replace malloc with xmalloc

 Code clean-up.

 Will merge to 'master'.
 source: <20260310164412.47403-1-r.siddharth.shrimali@gmail.com>


* ss/t3200-test-zero-oid (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-12 at 647ee3f2dc)
 + t3200: replace hardcoded null OID with $ZERO_OID

 A test now uses the symbolic constant $ZERO_OID instead of 40 "0" to
 work better with SHA-256 as well as SHA-1.

 Will merge to 'master'.
 source: <20260311174120.76871-1-r.siddharth.shrimali@gmail.com>


* jc/test-allow-sed-with-ere (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-16 at be057bed35)
 + t: allow use of "sed -E"

 Adjust test-lint to allow "sed -E" to use ERE in the patterns.

 Will merge to 'master'.
 source: <xmqq3425lvtq.fsf@gitster.g>


* bk/run-command-wo-the-repository (2026-03-12) 2 commits
  (merged to 'next' on 2026-03-12 at 61ffe62b75)
 + run-command: wean auto_maintenance() functions off the_repository
 + run-command: wean start_command() off the_repository

 The run_command() API lost its implicit dependencyon the singleton
 `the_repository` instance.

 Will merge to 'master'.
 source: <20260312144437.626392-1-bkkaracay@gmail.com>


* kh/doc-interpret-trailers-1 (2026-03-11) 3 commits
 - doc: config: convert trailers section to synopsis style
 - doc: interpret-trailers: normalize and fill out options
 - doc: interpret-trailers: convert to synopsis style

 Doc updates.

 Expecting a (hopefully small and final) reroll?
 cf. <xmqq1phogbk5.fsf@gitster.g>
 source: <CV_doc_interpret-tr_synopsis.48a@msgid.xyz>


* ty/mktree-wo-the-repository (2026-03-12) 1 commit
  (merged to 'next' on 2026-03-16 at 8d20ceb853)
 + builtin/mktree: remove USE_THE_REPOSITORY_VARIABLE

 Code clean-up.

 Will merge to 'master'.
 source: <20260312164203.964033-1-cat@malon.dev>


* mm/line-log-use-standard-diff-output (2026-03-06) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way the "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Expecting a reroll.
 cf. <CAC2QwmJTqYj5b531itc=8ZM3vXsg5oG3BLCHiEuoB7d0d4U=TQ@mail.gmail.com>
 source: <pull.2065.git.1772845338.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-08) 11 commits
 - hook: show disabled hooks in "git hook list"
 - hook: show config scope in git hook list
 - hook: refactor hook_config_cache from strmap to named struct
 - t1800: add test to verify hook execution ordering
 - hook: make consistent use of friendly-name in docs
 - hook: replace hook_list_clear() -> string_list_clear_func()
 - hook: detect & emit two more bugs
 - hook: rename cb_data_free/alloc -> hook_data_free/alloc
 - hook: fix minor style issues
 - hook: move unsorted_string_list_remove() to string-list.[ch]
 - Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Expecting a reroll.
 cf. <87jyviaagp.fsf@collabora.com>
 source: <20260309005416.2760030-1-adrian.ratiu@collabora.com>


* cf/constness-fixes (2026-03-08) 2 commits
  (merged to 'next' on 2026-03-13 at 3c80964399)
 + dir: avoid -Wdiscarded-qualifiers in remove_path()
 + bloom: remove a misleading const qualifier

 Small code clean-up around the constness area.

 Will merge to 'master'.
 source: <3ad40c3d0762c2e8c14792dfb68cba9f63a883a3.1773026586.git.collin.funk1@gmail.com>


* dd/list-objects-filter-options-wo-strbuf-split (2026-03-11) 2 commits
  (merged to 'next' on 2026-03-12 at 99c4dbd03e)
 + list-objects-filter-options: avoid strbuf_split_str()
 + worktree: do not pass strbuf by value
 (this branch is used by dd/cocci-do-not-pass-strbuf-by-value.)

 Revamp the way combined option filter is parsed.

 Will merge to 'master'.
 source: <20260311173336.8395-1-deveshigurgaon@gmail.com>


* jc/doc-wholesale-replace-before-next (2026-03-09) 1 commit
  (merged to 'next' on 2026-03-13 at 19ca350c9b)
 + SubmittingPatches: spell out "replace fully to pretend to be perfect"

 Doc update.

 Will merge to 'master'.
 source: <xmqq34283b12.fsf@gitster.g>


* ps/t9200-test-path-is-helpers (2026-03-12) 2 commits
  (merged to 'next' on 2026-03-12 at 8500bdf172)
 + t9200: replace test -f with modern path helper
 + t9200: handle missing CVS with skip_all

 Test update.

 Will merge to 'master'.
 source: <20260311194002.190195-1-pabloosabaterr@gmail.com>
 source: <20260312173305.15112-1-pabloosabaterr@gmail.com>


* ab/clone-default-object-filter (2026-03-14) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Expecting review responses.
 cf. <abe1l8ONmFIhzaxi@pks.im>
 source: <pull.2058.v6.git.1773553022381.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
  (merged to 'next' on 2026-03-13 at 5a4098b0cd)
 + sideband: drop 'default' configuration
 + sideband: offer to configure sanitizing on a per-URL basis
 + sideband: add options to allow more control sequences to be passed through
 + sideband: do allow ANSI color sequences by default
 + sideband: introduce an "escape hatch" to allow control characters
 + sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequences"
 default.

 Will keep in 'next' a bit longer than usual.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* ps/history-split (2026-03-02) 8 commits
 - builtin/history: implement "split" subcommand
 - builtin/history: split out extended function to create commits
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"

 "git history" learned the "split" subcommand.

 Will merge to 'next'.
 source: <20260302-pks-history-split-v1-0-444fc987a324@pks.im>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 was not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-03-12) 10 commits
 - builtin/pack-objects: reduce lock contention when writing packfile data
 - csum-file: drop `hashfd_throughput()`
 - csum-file: introduce `hashfd_ext()`
 - sideband: use writev(3p) to send pktlines
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper
 - upload-pack: reduce lock contention when writing packfile data
 - upload-pack: prefer flushing data over sending keepalive
 - upload-pack: adapt keepalives based on buffering
 - upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends on relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Will merge to 'next'?
 source: <20260313-pks-upload-pack-write-contention-v4-0-7a9668061f7f@pks.im>


* lc/rebase-trailer (2026-03-06) 6 commits
  (merged to 'next' on 2026-03-13 at 75c22b6b26)
 + rebase: support --trailer
 + commit, tag: parse --trailer with OPT_STRVEC
 + trailer: append trailers without fork/exec
 + trailer: libify a couple of functions
 + interpret-trailers: refactor create_in_place_tempfile()
 + interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.

 Will merge to 'master'.
 source: <cover.1772808594.git.phillip.wood@dunelm.org.uk>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders
 (this branch is used by mf/format-patch-commit-list-format.)

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Waiting for the follow-on topic.
 source: <cover.1772839973.git.mroik@delayed.space>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Waiting for the rerolls to slow down?
 cf. <aakyzGksiC2fhhiD@pks.im>
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-16 at db220e143f)
 + help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Will merge to 'master'.
 source: <20260311192453.62213-1-amishhhaaaa@gmail.com>


* sa/replay-revert (2026-03-12) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting review responses.
 cf. <87pl53si56.fsf@iotcl.com>
 source: <20260313054035.26605-1-siddharthasthana31@gmail.com>


* vp/http-rate-limit-retries (2026-02-23) 4 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Needs review.
 cf. <xmqq5x7nknrd.fsf@gitster.g>
 source: <pull.2008.v5.git.1771856405.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-03-09) 10 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups.)

 Needs review.
 source: <20260309133739.294555-1-adrian.ratiu@collabora.com>


* ng/submodule-default-remote (2026-03-03) 1 commit
  (merged to 'next' on 2026-03-16 at d41fd28450)
 + submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Will merge to 'master'.
 source: <20260303234044.105157-1-nasser.grainawi@oss.qualcomm.com>


* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Will merge to 'next'?
 source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of the xdiff/ codebase to work with Rust

 Expecting a reroll.
 cf. <CAH=ZcbBVSqUG89n65MBpN+HMCmmjzmADGaVnuEJn_cYN0SYknw@mail.gmail.com>
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'next'?
 source: <cover.1771959555.git.me@ttaylorr.com>

--------------------------------------------------
[Discarded]

* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 . sideband: offer to configure sanitizing on a per-URL basis
 . sideband: add options to allow more control sequences to be passed through
 . sideband: do allow ANSI color sequences by default
 . sideband: introduce an "escape hatch" to allow control characters
 . sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 20%]

* Re: What's cooking in git.git (Mar 2026, #05)
  @ 2026-03-13  4:24 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-13  4:24 UTC (permalink / raw)
  To: Jeff King; +Cc: git

Jeff King <peff@peff.net> writes:

> On Thu, Mar 12, 2026 at 05:10:31PM -0700, Junio C Hamano wrote:
>
>> * mf/apply-p-no-atoi (2026-03-09) 1 commit
>>  - apply.c: fix -p argument parsing
>> 
>>  "git apply -p<n>" parses <n> more carefully now.
>> 
>>  Will merge to 'next'.
>>  source: <20260310050621.3849719-1-mroik@delayed.space>
>
> I think this is responsible for test failures on Windows in jch/seen,
> but I'm stumped as to why. You might want to hold off until we figure
> it out.
>
> From the output I doubt the code change is responsible, but failing
> tests in 'next' is annoying.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Mar 2026, #05)
@ 2026-03-13  0:10 19% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-03-13  0:10 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* ag/send-email-sasl-with-host-port (2026-03-05) 1 commit
  (merged to 'next' on 2026-03-06 at a773196f56)
 + send-email: pass smtp hostname and port to Authen::SASL

 "git send-email" learns to pass hostname/port to Authen::SASL
 module.
 source: <MAUPR01MB1154634CC04D29AAF7CADE5F7B87DA@MAUPR01MB11546.INDPRD01.PROD.OUTLOOK.COM>


* ar/config-hooks (2026-03-02) 10 commits
  (merged to 'next' on 2026-03-03 at 5a4be22ab6)
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
  (merged to 'next' on 2026-02-27 at 6a04cca28e)
 + hook: add -z option to "git hook list"
 + hook: allow out-of-repo 'git hook' invocations
 + hook: allow event = "" to overwrite previous values
 + hook: allow disabling config hooks
 + hook: include hooks from the config
 + hook: add "git hook list" command
 + hook: run a list of hooks to prepare for multihook support
 + hook: add internal state alloc/free callbacks
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/config-hook-cleanups and ar/parallel-hooks.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
  (merged to 'next' on 2026-03-04 at 99dc92c08e)
 + object-file-convert: always make sure object ID algo is valid
 + rust: add a small wrapper around the hashfile code
 + rust: add a new binary object map format
 + rust: add functionality to hash an object
 + rust: add a build.rs script for tests
 + rust: fix linking binaries with cargo
 + hash: expose hash context functions to Rust
 + write-or-die: add an fsync component for the object map
 + csum-file: define hashwrite's count as a uint32_t
 + rust: add additional helpers for ObjectID
 + hash: add a function to look up hash algo structs
 + rust: add a hash algorithm abstraction
 + rust: add a ObjectID struct
 + hash: use uint32_t for object_id algorithm
 + conversion: don't crash when no destination algo
 + repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


* dt/send-email-client-cert (2026-03-01) 1 commit
  (merged to 'next' on 2026-03-06 at 2a47df2166)
 + send-email: add client certificate options

 "git send-email" learns to support use of client-side certificates.
 source: <20260302032048.260209-2-dxdt@dev.snart.me>


* fp/t3310-test-path-is-helpers (2026-02-27) 1 commit
  (merged to 'next' on 2026-03-03 at c01b2c73d8)
 + t3310: replace test -f/-d with test_path_is_file/test_path_is_dir

 Test clean-up.
 source: <20260228005939.9012-1-francescopaparatto@gmail.com>


* jh/alias-i18n-fixes (2026-03-03) 5 commits
  (merged to 'next' on 2026-03-03 at d4347fab01)
 + doc: fix list continuation in alias.adoc
  (merged to 'next' on 2026-03-02 at 914bcef227)
 + git, help: fix memory leaks in alias listing
 + alias: treat empty subsection [alias ""] as plain [alias]
 + doc: fix list continuation in alias subsection example
 + Merge branch 'jh/alias-i18n' into jh/alias-i18n-fixes

 Further update to the i18n alias support to avoid regressions.
 source: <20260226205339.1535482-1-jonatan@jontes.page>
 source: <20260303151238.1000191-1-jonatan@jontes.page>


* jt/doc-submitting-patches-study-before-sending (2026-03-05) 1 commit
  (merged to 'next' on 2026-03-06 at 222151114c)
 + Documentation: extend guidance for submitting patches

 Doc update for our contributors.
 source: <20260305193836.973122-1-jltobler@gmail.com>


* kh/format-patch-noprefix-is-boolean (2026-03-01) 3 commits
  (merged to 'next' on 2026-03-03 at 54bc051969)
 + doc: diff-options.adoc: make *.noprefix split translatable
  (merged to 'next' on 2026-02-26 at fcf4773929)
 + doc: diff-options.adoc: show format.noprefix for format-patch
 + format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.
 source: <V2_CV_format.noprefix_boolean.421@msgid.xyz>
 source: <better_for_translators.424@msgid.xyz>


* kj/path-micro-code-cleanup (2026-03-04) 3 commits
  (merged to 'next' on 2026-03-04 at 569091027c)
 + path: remove redundant function calls
 + path: use size_t for dir_prefix length
 + path: remove unused header

 Code clean-up.
 source: <20260304130502.8475-1-jayatheerthkulkarni2005@gmail.com>


* lp/doc-gitprotocol-pack-fixes (2026-03-02) 3 commits
  (merged to 'next' on 2026-03-04 at 7fb5fdd8af)
 + doc: gitprotocol-pack: normalize italic formatting
 + doc: gitprotocol-pack: improve paragraphs structure
 + doc: gitprotocol-pack: fix pronoun-antecedent agreement

 Doc update.
 source: <cover.1772502209.git.lorenzo.pegorari2002@gmail.com>


* mm/diff-no-index-find-object (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-03 at fcff548ddb)
 + diff: fix crash with --find-object outside repository

 "git diff --no-index --find-object=<object-name>" outside a
 repository of course wouldn't be able to find the object and died
 while parsing the command line, which is made to die in a bit more
 user-friendly way.
 source: <pull.2057.git.1772310676438.gitgitgadget@gmail.com>


* os/doc-custom-subcommand-on-path (2026-03-04) 1 commit
  (merged to 'next' on 2026-03-05 at 661cc235ae)
 + doc: add information regarding external commands

 The way end-users can add their own "git <cmd>" subcommand by
 storing "git-<cmd>" in a directory on their $PATH has not been
 documented clearly, which has been corrected.
 source: <pull.2220.v4.git.git.1772636614850.gitgitgadget@gmail.com>


* ps/ci-gitlab-prepare-for-macos-14-deprecation (2026-03-05) 3 commits
  (merged to 'next' on 2026-03-06 at 60b308a43b)
 + gitlab-ci: update to macOS 15 images
 + meson: detect broken iconv that requires ICONV_RESTART_RESET
 + meson: simplify iconv-emits-BOM check

 Move gitlab CI from macOS 14 images that are being deprecated.
 source: <20260305-pks-gitlab-ci-macos-16-v1-0-ce8da0ff29c2@pks.im>


* ps/ci-reduce-gitlab-envsize (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-03 at e2d1e47015)
 + ci: unset GITLAB_FEATURES envvar to not bust xargs(1) limits

 CI fix.
 source: <20260302-pks-msvc-meson-xargs-v1-1-8e42abd879ce@pks.im>


* pt/fsmonitor-watchman-sample-fix (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-03 at b899c2b411)
 + fsmonitor-watchman: fix variable reference and remove redundant code

 Fix typo-induced breakages in fsmonitor-watchman sample hook.
 source: <pull.2180.v2.git.git.1772300277959.gitgitgadget@gmail.com>


* rs/parse-options-duplicated-long-options (2026-02-28) 2 commits
  (merged to 'next' on 2026-03-03 at 70cbc2ea97)
 + parseopt: check for duplicate long names and numerical options
 + pack-objects: remove duplicate --stdin-packs definition

 The parse-options API learned to notice an options[] array with
 duplicated long options.
 source: <1e7de0f7-a712-465f-b3c9-5dbe78132d3f@web.de>
 source: <7693799a-91a2-480a-ae3e-29f8eed5b55a@web.de>


* sk/oidmap-clear-with-custom-free-func (2026-03-05) 2 commits
  (merged to 'next' on 2026-03-06 at e335861c57)
 + builtin/rev-list: migrate missing_objects cleanup to oidmap_clear_with_free()
 + oidmap: make entry cleanup explicit in oidmap_clear

 A bit of OIDmap API enhancement and cleanup.
 source: <20260305100526.102130-1-kuforiji98@gmail.com>


* sp/send-email-validate-charset (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-06 at a537e3e6e9)
 + send-email: validate charset name in 8bit encoding prompt

 "git send-email" has learned to be a bit more careful when it
 accepts charset to use from the end-user, to avoid 'y' (mistaken
 'yes' when expecting a charset like 'UTF-8') and other nonsense.
 source: <20260228112210.270273-1-shreyanshpaliwalcmsmn@gmail.com>


* ss/t3700-modernize (2026-03-03) 2 commits
  (merged to 'next' on 2026-03-05 at 23ff16a16f)
 + t3700: use test_grep helper for better diagnostics
 + t3700: avoid suppressing git's exit code
 Test clean-up.

 source: <20260303204029.52952-1-r.siddharth.shrimali@gmail.com>


* ss/t9123-setup-inside-test-expect-success (2026-03-05) 1 commit
  (merged to 'next' on 2026-03-06 at 607e206418)
 + t9123: use test_when_finished for cleanup

 Test clean-up.
 source: <20260305125408.16958-1-r.siddharth.shrimali@gmail.com>


* ss/test-that-that-typofix (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-03 at 1224b73913)
 + t: fix "that that" typo in lib-unicode-nfc-nfd.sh

 Typofix in t/.
 source: <20260302192627.83631-1-r.siddharth.shrimali@gmail.com>

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

* js/parseopt-subcommand-autocorrection (2026-03-11) 9 commits
 - SQUASH???
 - help: add tests for subcommand autocorrection
 - parseopt: enable subcommand autocorrection for git-remote and git-notes
 - parseopt: autocorrect mistyped subcommands
 - autocorrect: provide config resolution API
 - autocorrect: rename AUTOCORRECT_SHOW to AUTOCORRECT_HINTONLY
 - help: move tty check for autocorrection to autocorrect.c
 - help: make autocorrect handling reusable
 - parseopt: extract subcommand handling from parse_options_step()

 The parse-options library learned to auto-correct misspelt
 subcommand name.

 Needs review.
 source: <SY0P300MB0801C6F21C2D8F49892DF8E7CE46A@SY0P300MB0801.AUSP300.PROD.OUTLOOK.COM>


* jt/fast-import-sign-again (2026-03-11) 3 commits
 - fast-import: add mode to sign commits with invalid signatures
 - gpg-interface: introduce sign_buffer_with_key()
 - commit: remove unused forward declaration

 "git fast-import" learned to optionally replace signature on
 commits whose signature gets invalidated due to replaying by
 signing afresh.

 Will merge to 'next'?
 source: <20260311173147.2336432-1-jltobler@gmail.com>


* mf/apply-p-no-atoi (2026-03-09) 1 commit
 - apply.c: fix -p argument parsing

 "git apply -p<n>" parses <n> more carefully now.

 Will merge to 'next'.
 source: <20260310050621.3849719-1-mroik@delayed.space>


* ps/build-tweaks (2026-03-10) 8 commits
 - meson: precompile "git-compat-util.h"
 - meson: compile compatibility sources separately
 - git-compat-util.h: move warning infra to prepare for PCHs
 - builds: move build scripts into "tools/"
 - contrib: move "update-unicode.sh" script into "tools/"
 - contrib: move "coverage-diff.sh" script into "tools/"
 - contrib: move "coccinelle/" directory into "tools/"
 - Introduce new "tools/" directory

 Tweak the build infrastructure by moving tools around.

 Needs review.
 source: <20260310-b4-pks-build-infra-improvements-v1-0-ec75d0710d6a@pks.im>


* ps/object-counting (2026-03-12) 7 commits
 - odb: introduce generic object counting
 - odb/source: introduce generic object counting
 - object-file: generalize counting objects
 - object-file: extract logic to approximate object count
 - packfile: extract logic to count number of objects
 - odb: stop including "odb/source.h"
 - Merge branch 'ps/odb-sources' into ps/object-counting
 (this branch uses ps/odb-sources.)

 The logic to count objects has been cleaned up.

 Will merge to 'next'?
 source: <20260312-b4-pks-odb-source-count-objects-v2-0-5914f69256bf@pks.im>


* ty/doc-diff-u-wo-number (2026-03-10) 1 commit
 - diff: document -U without <n> as using default context

 "git diff -U<num>" was too lenient in its command line parsing and
 took an empty strings as a valid <num>.

 Will merge to 'next'?
 source: <20260310095017.131957-1-cat@malon.dev>


* ms/t7605-test-path-is-helpers (2026-03-10) 1 commit
 - t7605: use test_path_is_file instead of test -f

 Test updates.

 Will merge to 'next'.
 source: <pull.2067.v2.git.1773183022175.gitgitgadget@gmail.com>


* bb/imap-send-openssl-4.0-prep (2026-03-11) 3 commits
 - imap-send: move common code into function host_matches()
 - imap-send: use the OpenSSL API to access the subject common name
 - imap-send: use the OpenSSL API to access the subject alternative names

 "imap-send" used to use functions whose use is going to be removed
 with OpenSSL 4.0; rewrite them using public API that has been
 available since OpenSSL 1.1 since 2016 or so.

 Will merge to 'next'.
 source: <20260311121107.1122387-1-dev+git@drbeat.li>


* ps/editorconfig-unanchor (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-12 at 39ef732ca9)
 + editorconfig: fix style not applying to subdirs anymore

 Editorconfig filename patterns were specified incorrectly, making
 many source files inside subdirectories uncovered, which has been
 corrected.

 Will merge to 'master'.
 source: <20260311-b4-pks-editorconfig-fix-subdirs-v1-1-4938193ccd31@pks.im>


* ps/unit-test-c-escape-names.txt (2026-03-10) 1 commit
 - test-lib: print escape sequence names

 The unit test helper function was taught to use backslash +
 mneomnic notation for certain control characters like "\t", instead
 of octal notation like "\011".

 Will merge to 'next'.
 source: <20260311031442.11942-1-pabloosabaterr@gmail.com>


* ss/submodule--helper-use-xmalloc (2026-03-10) 1 commit
 - submodule--helper: replace malloc with xmalloc

 Code clean-up.

 Will merge to 'next'.
 source: <20260310164412.47403-1-r.siddharth.shrimali@gmail.com>


* ss/t3200-test-zero-oid (2026-03-11) 1 commit
  (merged to 'next' on 2026-03-12 at 647ee3f2dc)
 + t3200: replace hardcoded null OID with $ZERO_OID

 A test now use symbolic constant $ZERO_OID instead of 40 "0" to
 work better with SHA-256 as well as SHA-1.

 Will merge to 'master'.
 source: <20260311174120.76871-1-r.siddharth.shrimali@gmail.com>


* jc/test-allow-sed-with-ere (2026-03-11) 1 commit
 - t: allow use of "sed -E"

 Adjust test-lint to allow "sed -E" to use ERE in the patterns.

 Will merge to 'next'.
 source: <xmqq5x72m4lu.fsf@gitster.g>


* bk/run-command-wo-the-repository (2026-03-12) 2 commits
  (merged to 'next' on 2026-03-12 at 61ffe62b75)
 + run-command: wean auto_maintenance() functions off the_repository
 + run-command: wean start_command() off the_repository

 The run_command() API lost its implicit dependence on the singleton
 the_repository instance.

 Will merge to 'master'.
 source: <20260312144437.626392-1-bkkaracay@gmail.com>


* kh/doc-interpret-trailers-1 (2026-03-11) 3 commits
 - doc: config: convert trailers section to synopsis style
 - doc: interpret-trailers: normalize and fill out options
 - doc: interpret-trailers: convert to synopsis style

 Doc updates.

 Needs review.
 source: <CV_doc_interpret-tr_synopsis.48a@msgid.xyz>


* ty/mktree-wo-the-repository (2026-03-12) 1 commit
 - builtin/mktree: remove USE_THE_REPOSITORY_VARIABLE

 Code clean-up.

 Will merge to 'next'.
 source: <20260312164203.964033-1-cat@malon.dev>

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

* mm/line-log-use-standard-diff-output (2026-03-06) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Needs review.
 source: <pull.2065.git.1772845338.gitgitgadget@gmail.com>


* os/doc-git-custom-commands (2026-03-07) 1 commit
  (merged to 'next' on 2026-03-09 at 5cabe3db39)
 + doc: make it easier to find custom command information

 Doc update.

 Will merge to 'master'.
 source: <pull.2225.git.git.1772903281929.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-08) 11 commits
 - hook: show disabled hooks in "git hook list"
 - hook: show config scope in git hook list
 - hook: refactor hook_config_cache from strmap to named struct
 - t1800: add test to verify hook execution ordering
 - hook: make consistent use of friendly-name in docs
 - hook: replace hook_list_clear() -> string_list_clear_func()
 - hook: detect & emit two more bugs
 - hook: rename cb_data_free/alloc -> hook_data_free/alloc
 - hook: fix minor style issues
 - hook: move unsorted_string_list_remove() to string-list.[ch]
 - Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Expecting a reroll.
 cf. <87jyviaagp.fsf@collabora.com>
 source: <20260309005416.2760030-1-adrian.ratiu@collabora.com>


* cf/constness-fixes (2026-03-08) 2 commits
 - dir: avoid -Wdiscarded-qualifiers in remove_path()
 - bloom: remove a misleading const qualifier

 Small code clean-up around constness area.

 Will merge to 'next'.
 source: <3ad40c3d0762c2e8c14792dfb68cba9f63a883a3.1773026586.git.collin.funk1@gmail.com>


* dd/list-objects-filter-options-wo-strbuf-split (2026-03-11) 2 commits
  (merged to 'next' on 2026-03-12 at 99c4dbd03e)
 + list-objects-filter-options: avoid strbuf_split_str()
 + worktree: do not pass strbuf by value

 Revamp the way combined option filter is parsed.

 Will merge to 'master'.
 source: <20260311173336.8395-1-deveshigurgaon@gmail.com>


* jc/doc-wholesale-replace-before-next (2026-03-09) 1 commit
 - SubmittingPatches: spell out "replace fully to pretend to be perfect"

 Doc update.

 Will merge to 'next'.
 source: <xmqq34283b12.fsf@gitster.g>


* ps/t9200-test-path-is-helpers (2026-03-12) 2 commits
  (merged to 'next' on 2026-03-12 at 8500bdf172)
 + t9200: replace test -f with modern path helper
 + t9200: handle missing CVS with skip_all

 Test update.

 Will merge to 'master'.
 source: <20260311194002.190195-1-pabloosabaterr@gmail.com>
 source: <20260312173305.15112-1-pabloosabaterr@gmail.com>


* rs/history-ergonomics-updates-fix (2026-03-08) 1 commit
  (merged to 'next' on 2026-03-10 at 7d58650290)
 + history: initialize rev_info in cmd_history_reword()

 Fix use of uninitialized variable.

 Will merge to 'master'.
 source: <b0b8633f-be95-48eb-8244-d0e3f1a7be72@web.de>


* ty/patch-ids-document-lazy-eval (2026-03-08) 1 commit
  (merged to 'next' on 2026-03-10 at c8be8d6f7e)
 + patch-ids: document intentional const-casting in patch_id_neq()

 In-code comment update to record a design decision to allow lazy
 computation of patch IDs.

 Will merge to 'master'.
 source: <20260309065140.108644-1-cat@malon.dev>


* ab/clone-default-object-filter (2026-03-06) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Reroll exists; pick it up.
 cf. <pull.2058.v5.git.1772847236966.gitgitgadget@gmail.com>
 source: <pull.2058.v4.git.1772833649843.gitgitgadget@gmail.com>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
 - sideband: drop 'default' configuration
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequence"
 default.

 Will merge to 'next'.
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* fp/t3310-unhide-git-failures (2026-03-07) 1 commit
  (merged to 'next' on 2026-03-09 at edd6c35bb8)
 + t3310: avoid hiding failures from rev-parse in command substitutions

 The construct 'test "$(command)" = expectation' loses the exit
 status from the command, which has been fixed by breaking up the
 statement into pieces.

 Will merge to 'master'.
 source: <20260307103631.89829-1-francescopaparatto@gmail.com>


* jk/unleak-mmap (2026-03-06) 6 commits
  (merged to 'next' on 2026-03-10 at e169ff00b3)
 + meson: turn on NO_MMAP when building with LSan
 + Makefile: turn on NO_MMAP when building with LSan
 + object-file: fix mmap() leak in odb_source_loose_read_object_stream()
 + pack-revindex: avoid double-loading .rev files
 + check_connected(): fix leak of pack-index mmap
 + check_connected(): delay opening new_pack

 Plug a few leaks where mmap'ed memory regions are not unmapped.

 Will merge to 'master'.
 source: <20260305230315.GA2354983@coredump.intra.peff.net>
 source: <796110ee-d795-4445-9d82-7026370a88cf@intel.com>
 source: <20260307022459.GA693632@coredump.intra.peff.net>


* ps/history-split (2026-03-02) 8 commits
 - builtin/history: implement "split" subcommand
 - builtin/history: split out extended function to create commits
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"

 "git history" learned the "split" subcommand.

 Comments?
 source: <20260302-pks-history-split-v1-0-444fc987a324@pks.im>


* pt/promisor-lazy-fetch-no-recurse (2026-03-11) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 were not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v3.git.git.1773238778894.gitgitgadget@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-03-10) 10 commits
 - builtin/pack-objects: reduce lock contention when writing packfile data
 - csum-file: drop `hashfd_throughput()`
 - csum-file: introduce `hashfd_ext()`
 - sideband: use writev(3p) to send pktlines
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper
 - upload-pack: reduce lock contention when writing packfile data
 - upload-pack: prefer flushing data over sending keepalive
 - upload-pack: adapt keepalives based on buffering
 - upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Expecting a (hopefully small and final) reroll.
 cf. <abBYK8uNkv84uydC@pks.im>
 source: <20260310-pks-upload-pack-write-contention-v3-0-8bc97aa3e267@pks.im>


* jt/repo-structure-extrema (2026-03-02) 6 commits
  (merged to 'next' on 2026-03-09 at 8ccfebc0b1)
 + builtin/repo: find tree with most entries
 + builtin/repo: find commit with most parents
 + builtin/repo: add OID annotations to table output
 + builtin/repo: collect largest inflated objects
 + builtin/repo: add helper for printing keyvalue output
 + builtin/repo: update stats for each object

 "git repo structure" command learns to report maximum values on
 various aspects of objects it inspects.

 Will merge to 'master'.
 source: <20260302214526.2034279-1-jltobler@gmail.com>


* ps/odb-sources (2026-03-05) 19 commits
  (merged to 'next' on 2026-03-06 at 69fd3b792a)
 + odb/source: make `begin_transaction()` function pluggable
 + odb/source: make `write_alternate()` function pluggable
 + odb/source: make `read_alternates()` function pluggable
 + odb/source: make `write_object_stream()` function pluggable
 + odb/source: make `write_object()` function pluggable
 + odb/source: make `freshen_object()` function pluggable
 + odb/source: make `for_each_object()` function pluggable
 + odb/source: make `read_object_stream()` function pluggable
 + odb/source: make `read_object_info()` function pluggable
 + odb/source: make `close()` function pluggable
 + odb/source: make `reprepare()` function pluggable
 + odb/source: make `free()` function pluggable
 + odb/source: introduce source type for robustness
 + odb: move reparenting logic into respective subsystems
 + odb: embed base source in the "files" backend
 + odb: introduce "files" source
 + odb: split `struct odb_source` into separate header
 + Merge branch 'ps/object-info-bits-cleanup' into ps/odb-sources
 + Merge branch 'ps/odb-for-each-object' into ps/odb-sources
 (this branch is used by ps/object-counting.)

 The object source API is getting restructured to allow plugging new
 backends.

 Will merge to 'master'.
 source: <20260305-b4-pks-odb-source-pluggable-v2-0-3290bfd1f444@pks.im>


* ds/for-each-repo-w-worktree (2026-03-03) 4 commits
  (merged to 'next' on 2026-03-06 at 3886f0d054)
 + for-each-repo: simplify passing of parameters
 + for-each-repo: work correctly in a worktree
 + run-command: extract sanitize_repo_env helper
 + for-each-repo: test outside of repo context

 "git for-each-repo" started from a secondary worktree did not work
 as expected, which has been corrected.

 Will merge to 'master'.
 source: <pull.2056.v4.git.1772559114.gitgitgadget@gmail.com>


* lc/rebase-trailer (2026-03-06) 6 commits
 - rebase: support --trailer
 - commit, tag: parse --trailer with OPT_STRVEC
 - trailer: append trailers without fork/exec
 - trailer: libify a couple of functions
 - interpret-trailers: refactor create_in_place_tempfile()
 - interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.

 Will merge to 'next'.
 source: <cover.1772808594.git.phillip.wood@dunelm.org.uk>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Will merge to 'master'.
 source: <cover.1772839973.git.mroik@delayed.space>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Waiting for the rerolls to slow down?
 cf. <aakyzGksiC2fhhiD@pks.im>
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-03-11) 1 commit
 - help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Will merge to 'next'.
 source: <20260311192453.62213-1-amishhhaaaa@gmail.com>


* ty/setup-error-tightening (2026-03-04) 1 commit
  (merged to 'next' on 2026-03-10 at 38268a7acc)
 + setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.

 Will merge to 'master'.
 source: <20260304141526.37764-1-a3205153416@gmail.com>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 cf. <405b0d34-c2ad-498d-93a1-2e7925ae11f1@gmail.com>
 cf. <c2048ddf-ced4-425d-af6e-14e9442e9d99@gmail.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
  (merged to 'next' on 2026-03-09 at 2e99d5ed52)
 + wt-status: use hash_algo from local repository instead of global the_hash_algo
 + wt-status: replace uses of the_repository with local repository instances
 + wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'master'.
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-23) 4 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Needs review.
 cf. <xmqq5x7nknrd.fsf@gitster.g>
 source: <pull.2008.v5.git.1771856405.gitgitgadget@gmail.com>


* ar/parallel-hooks (2026-03-09) 10 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups.)

 Needs review.
 source: <20260309133739.294555-1-adrian.ratiu@collabora.com>


* ng/submodule-default-remote (2026-03-03) 1 commit
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Will merge to 'next'.
 source: <20260303234044.105157-1-nasser.grainawi@oss.qualcomm.com>


* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Needs review.
 source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'next'?
 source: <cover.1771959555.git.me@ttaylorr.com>


* hn/status-compare-with-push (2026-03-04) 4 commits
  (merged to 'next' on 2026-03-06 at 7c5ad405d7)
 + status: clarify how status.compareBranches deduplicates
  (merged to 'next' on 2026-02-26 at 1c11b8819a)
 + status: add status.compareBranches config for multiple branch comparisons
 + refactor format_branch_comparison in preparation
 + Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.

 Will merge to 'master'.
 source: <pull.2138.v30.git.git.1772102022.gitgitgadget@gmail.com>
 source: <pull.2138.v31.git.git.1772627131.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 . sideband: offer to configure sanitizing on a per-URL basis
 . sideband: add options to allow more control sequences to be passed through
 . sideband: do allow ANSI color sequences by default
 . sideband: introduce an "escape hatch" to allow control characters
 . sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 19%]

* What's cooking in git.git (Mar 2026, #04)
@ 2026-03-10  1:19 20% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-10  1:19 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* ar/run-command-hook-take-2 (2026-03-02) 13 commits
  (merged to 'next' on 2026-03-02 at f5aabac117)
 + builtin/receive-pack: avoid spinning no-op sideband async threads
  (merged to 'next' on 2026-02-22 at 4aa543f115)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + run-command: poll child input in addition to output
 + hook: add jobs option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: allow separate std[out|err] streams
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add helper for pp child states
 + t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>
 source: <20260302191704.1814567-1-adrian.ratiu@collabora.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
  (merged to 'next' on 2026-03-02 at c7251cc68f)
 + Documentation: update add --force option + ignore=all config
 + tests: fix existing tests when add an ignore=all submodule
 + tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 + read-cache: submodule add need --force given ignore=all configuration
 + read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).
 cf. <xmqq5x7rvyn4.fsf@gitster.g>
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* jk/repo-structure-cleanup (2026-02-23) 1 commit
  (merged to 'next' on 2026-03-02 at e1647839fa)
 + repo: remove unnecessary variable shadow

 Code clean-up.
 source: <20260223135248.127935-1-jayatheerthkulkarni2005@gmail.com>


* lp/diff-stat-utf8-display-width-fix (2026-02-27) 2 commits
  (merged to 'next' on 2026-03-02 at b979797314)
 + t4052: test for diffstat width when prefix contains ANSI escape codes
 + diff: handle ANSI escape codes in prefix when calculating diffstat width

 "git log --graph --stat" did not count the display width of colored
 graph part of its own output correctly, which has been corrected.
 source: <cover.1772226209.git.lorenzo.pegorari2002@gmail.com>


* ps/refs-for-each (2026-02-23) 18 commits
  (merged to 'next' on 2026-02-27 at ec9e0a36ff)
 + refs: replace `refs_for_each_fullref_in()`
 + refs: replace `refs_for_each_namespaced_ref()`
 + refs: replace `refs_for_each_glob_ref()`
 + refs: replace `refs_for_each_glob_ref_in()`
 + refs: replace `refs_for_each_rawref_in()`
 + refs: replace `refs_for_each_rawref()`
 + refs: replace `refs_for_each_ref_in()`
 + refs: improve verification for-each-ref options
 + refs: generalize `refs_for_each_fullref_in_prefixes()`
 + refs: generalize `refs_for_each_namespaced_ref()`
 + refs: speed up `refs_for_each_glob_ref_in()`
 + refs: introduce `refs_for_each_ref_ext`
 + refs: rename `each_ref_fn`
 + refs: rename `do_for_each_ref_flags`
 + refs: move `do_for_each_ref_flags` further up
 + refs: move `refs_head_ref_namespaced()`
 + refs: remove unused `refs_for_each_include_root_ref()`
 + Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each

 Code refactoring around refs-for-each-* API functions.
 cf. <CAOLa=ZTz-9JKHC3H8tSwP=bDvX2mNA-erjr5Ni6Tiq4cm4WmLg@mail.gmail.com>
 source: <20260223-pks-refs-for-each-unification-v2-0-515d48c8087b@pks.im>

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

* mm/line-log-use-standard-diff-output (2026-03-06) 4 commits
 - doc: note that -L supports patch formatting and pickaxe options
 - t4211: add tests for -L with standard diff options
 - line-log: route -L output through the standard diff pipeline
 - line-log: fix crash when combined with pickaxe options

 The way "git log -L<range>:<file>" feature is bolted onto the
 log/diff machinery is being reworked a bit to make the feature
 compatible with more diff options, like -S/G.

 Needs review.
 source: <pull.2065.git.1772845338.gitgitgadget@gmail.com>


* os/doc-git-custom-commands (2026-03-07) 1 commit
  (merged to 'next' on 2026-03-09 at 5cabe3db39)
 + doc: make it easier to find custom command information

 Doc update.

 Will merge to 'master'.
 source: <pull.2225.git.git.1772903281929.gitgitgadget@gmail.com>


* ar/config-hook-cleanups (2026-03-08) 11 commits
 - hook: show disabled hooks in "git hook list"
 - hook: show config scope in git hook list
 - hook: refactor hook_config_cache from strmap to named struct
 - t1800: add test to verify hook execution ordering
 - hook: make consistent use of friendly-name in docs
 - hook: replace hook_list_clear() -> string_list_clear_func()
 - hook: detect & emit two more bugs
 - hook: rename cb_data_free/alloc -> hook_data_free/alloc
 - hook: fix minor style issues
 - hook: move unsorted_string_list_remove() to string-list.[ch]
 - Merge branch 'ar/config-hooks' into ar/config-hook-cleanups
 (this branch is used by ar/parallel-hooks; uses ar/config-hooks.)

 Code clean-up around the recent "hooks defined in config" topic.

 Will merge to 'next'?
 source: <20260309005416.2760030-1-adrian.ratiu@collabora.com>


* cf/constness-fixes (2026-03-08) 2 commits
 - dir: avoid -Wdiscarded-qualifiers in remove_path()
 - bloom: remove a misleading const qualifier

 Small code clean-up around constness area.

 Will merge to 'next'?
 source: <3ad40c3d0762c2e8c14792dfb68cba9f63a883a3.1773026586.git.collin.funk1@gmail.com>


* dd/list-objects-filter-options-wo-strbuf-split (2026-03-08) 2 commits
 - list-objects-filter-options: avoid strbuf_split_str()
 - worktree: do not pass strbuf by value

 Revamp the way combined option filter is parsed.

 Expecting a reroll?
 cf. <20260309190823.GB309867@coredump.intra.peff.net>
 source: <20260308180359.31188-1-deveshigurgaon@gmail.com>


* jc/doc-wholesale-replace-before-next (2026-03-09) 1 commit
 - SubmittingPatches: spell out "replace fully to pretend to be perfect"

 Doc update.

 Will merge to 'next'?
 source: <xmqq34283b12.fsf@gitster.g>


* ps/t9200-test-path-is-helpers (2026-03-09) 1 commit
 - t9200: replace test -f/-d with modern path helpers

 Test update.

 Will merge to 'next'.
 source: <20260309230134.758107-1-pabloosabaterr@gmail.com>


* rs/history-ergonomics-updates-fix (2026-03-08) 1 commit
 - history: initialize rev_info in cmd_history_reword()

 Fix use of uninitialized variable.

 Will merge to 'next'.
 source: <b0b8633f-be95-48eb-8244-d0e3f1a7be72@web.de>


* ty/patch-ids-document-lazy-eval (2026-03-08) 1 commit
 - patch-ids: document intentional const-casting in patch_id_neq()

 In-code comment update to record a design decision to allow lazy
 computation of patch IDs.

 Will merge to 'next'.
 source: <20260309065140.108644-1-cat@malon.dev>

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

* ab/clone-default-object-filter (2026-03-06) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Comments?
 source: <pull.2058.v4.git.1772833649843.gitgitgadget@gmail.com>


* ag/send-email-sasl-with-host-port (2026-03-05) 1 commit
  (merged to 'next' on 2026-03-06 at a773196f56)
 + send-email: pass smtp hostname and port to Authen::SASL

 "git send-email" learns to pass hostname/port to Authen::SASL
 module.

 Will merge to 'master'.
 source: <MAUPR01MB1154634CC04D29AAF7CADE5F7B87DA@MAUPR01MB11546.INDPRD01.PROD.OUTLOOK.COM>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
 - sideband: drop 'default' configuration
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequence"
 default.

 Comments?
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* jt/doc-submitting-patches-study-before-sending (2026-03-05) 1 commit
  (merged to 'next' on 2026-03-06 at 222151114c)
 + Documentation: extend guidance for submitting patches

 Doc update for our contributors.

 Will merge to 'master'.
 source: <20260305193836.973122-1-jltobler@gmail.com>


* ps/ci-gitlab-prepare-for-macos-14-deprecation (2026-03-05) 3 commits
  (merged to 'next' on 2026-03-06 at 60b308a43b)
 + gitlab-ci: update to macOS 15 images
 + meson: detect broken iconv that requires ICONV_RESTART_RESET
 + meson: simplify iconv-emits-BOM check

 Move gitlab CI from macOS 14 images that are being deprecated.

 Will merge to 'master'.
 source: <20260305-pks-gitlab-ci-macos-16-v1-0-ce8da0ff29c2@pks.im>


* ss/t9123-setup-inside-test-expect-success (2026-03-05) 1 commit
  (merged to 'next' on 2026-03-06 at 607e206418)
 + t9123: use test_when_finished for cleanup

 Test clean-up.

 Will merge to 'master'.
 source: <20260305125408.16958-1-r.siddharth.shrimali@gmail.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* fp/t3310-unhide-git-failures (2026-03-07) 1 commit
  (merged to 'next' on 2026-03-09 at edd6c35bb8)
 + t3310: avoid hiding failures from rev-parse in command substitutions

 The construct 'test "$(command)" = expectation' loses the exit
 status from the command, which has been fixed by breaking up the
 statement into pieces.

 Will merge to 'master'.
 source: <20260307103631.89829-1-francescopaparatto@gmail.com>


* jk/unleak-mmap (2026-03-06) 6 commits
 - meson: turn on NO_MMAP when building with LSan
 - Makefile: turn on NO_MMAP when building with LSan
 - object-file: fix mmap() leak in odb_source_loose_read_object_stream()
 - pack-revindex: avoid double-loading .rev files
 - check_connected(): fix leak of pack-index mmap
 - check_connected(): delay opening new_pack

 Plug a few leaks where mmap'ed memory regions are not unmapped.

 Will merge to 'next'.
 source: <20260305230315.GA2354983@coredump.intra.peff.net>
 source: <796110ee-d795-4445-9d82-7026370a88cf@intel.com>
 source: <20260307022459.GA693632@coredump.intra.peff.net>


* kj/path-micro-code-cleanup (2026-03-04) 3 commits
  (merged to 'next' on 2026-03-04 at 569091027c)
 + path: remove redundant function calls
 + path: use size_t for dir_prefix length
 + path: remove unused header

 Code clean-up.

 Will merge to 'master'.
 source: <20260304130502.8475-1-jayatheerthkulkarni2005@gmail.com>


* lp/doc-gitprotocol-pack-fixes (2026-03-02) 3 commits
  (merged to 'next' on 2026-03-04 at 7fb5fdd8af)
 + doc: gitprotocol-pack: normalize italic formatting
 + doc: gitprotocol-pack: improve paragraphs structure
 + doc: gitprotocol-pack: fix pronoun-antecedent agreement

 Doc update.

 Will merge to 'master'.
 source: <cover.1772502209.git.lorenzo.pegorari2002@gmail.com>


* ss/t3700-modernize (2026-03-03) 2 commits
  (merged to 'next' on 2026-03-05 at 23ff16a16f)
 + t3700: use test_grep helper for better diagnostics
 + t3700: avoid suppressing git's exit code

 Test clean-up.

 Will merge to 'master'.
 source: <20260303204029.52952-1-r.siddharth.shrimali@gmail.com>


* ps/history-split (2026-03-02) 8 commits
 - builtin/history: implement "split" subcommand
 - builtin/history: split out extended function to create commits
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"

 "git history" learned the "split" subcommand.

 Comments?
 source: <20260302-pks-history-split-v1-0-444fc987a324@pks.im>


* os/doc-custom-subcommand-on-path (2026-03-04) 1 commit
  (merged to 'next' on 2026-03-05 at 661cc235ae)
 + doc: add information regarding external commands

 The way end-users can add their own "git <cmd>" subcommand by
 storing "git-<cmd>" in a directory on their $PATH has not been
 documented clearly, which has been corrected.

 Will merge to 'master'.
 source: <pull.2220.v4.git.git.1772636614850.gitgitgadget@gmail.com>


* pt/promisor-lazy-fetch-no-recurse (2026-03-04) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 were not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v2.git.git.1772648846009.gitgitgadget@gmail.com>


* fp/t3310-test-path-is-helpers (2026-02-27) 1 commit
  (merged to 'next' on 2026-03-03 at c01b2c73d8)
 + t3310: replace test -f/-d with test_path_is_file/test_path_is_dir

 Test clean-up.

 Will merge to 'master'.
 source: <20260228005939.9012-1-francescopaparatto@gmail.com>


* mm/diff-no-index-find-object (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-03 at fcff548ddb)
 + diff: fix crash with --find-object outside repository

 "git diff --no-index --find-object=<object-name>" outside a
 repository of course wouldn't be able to find the object and died
 while parsing the command line, which is made to die in a bit more
 user-friendly way.

 Will merge to 'master'.
 source: <pull.2057.git.1772310676438.gitgitgadget@gmail.com>


* ps/ci-reduce-gitlab-envsize (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-03 at e2d1e47015)
 + ci: unset GITLAB_FEATURES envvar to not bust xargs(1) limits

 CI fix.

 Will merge to 'master'.
 source: <20260302-pks-msvc-meson-xargs-v1-1-8e42abd879ce@pks.im>


* pt/fsmonitor-watchman-sample-fix (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-03 at b899c2b411)
 + fsmonitor-watchman: fix variable reference and remove redundant code

 Fix typo-induced breakages in fsmonitor-watchman sample hook.

 Will merge to 'master'.
 source: <pull.2180.v2.git.git.1772300277959.gitgitgadget@gmail.com>


* sk/oidmap-clear-with-custom-free-func (2026-03-05) 2 commits
  (merged to 'next' on 2026-03-06 at e335861c57)
 + builtin/rev-list: migrate missing_objects cleanup to oidmap_clear_with_free()
 + oidmap: make entry cleanup explicit in oidmap_clear

 A bit of OIDmap API enhancement and cleanup.

 Will merge to 'master'.
 source: <20260305100526.102130-1-kuforiji98@gmail.com>


* ss/test-that-that-typofix (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-03 at 1224b73913)
 + t: fix "that that" typo in lib-unicode-nfc-nfd.sh

 Typofix in t/.

 Will merge to 'master'.
 source: <20260302192627.83631-1-r.siddharth.shrimali@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-03-03) 10 commits
 - builtin/pack-objects: reduce lock contention when writing packfile data
 - csum-file: drop `hashfd_throughput()`
 - csum-file: introduce `hashfd_ext()`
 - sideband: use writev(3p) to send pktlines
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper
 - git-compat-util: introduce `cast_size_t_to_ssize_t()`
 - upload-pack: reduce lock contention when writing packfile data
 - upload-pack: adapt keepalives based on buffering
 - upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Comments?
 cf. <xmqqseaf5k5t.fsf@gitster.g>
 source: <20260303-pks-upload-pack-write-contention-v2-0-7321830f08fe@pks.im>


* rs/parse-options-duplicated-long-options (2026-02-28) 2 commits
  (merged to 'next' on 2026-03-03 at 70cbc2ea97)
 + parseopt: check for duplicate long names and numerical options
 + pack-objects: remove duplicate --stdin-packs definition

 The parse-options API learned to notice an options[] array with
 duplicated long options.

 Will merge to 'master'.
 source: <1e7de0f7-a712-465f-b3c9-5dbe78132d3f@web.de>
 source: <7693799a-91a2-480a-ae3e-29f8eed5b55a@web.de>


* jt/repo-structure-extrema (2026-03-02) 6 commits
  (merged to 'next' on 2026-03-09 at 8ccfebc0b1)
 + builtin/repo: find tree with most entries
 + builtin/repo: find commit with most parents
 + builtin/repo: add OID annotations to table output
 + builtin/repo: collect largest inflated objects
 + builtin/repo: add helper for printing keyvalue output
 + builtin/repo: update stats for each object

 "git repo structure" command learns to report maximum values on
 various aspects of objects it inspects.

 Will merge to 'master'.
 source: <20260302214526.2034279-1-jltobler@gmail.com>


* ps/odb-sources (2026-03-05) 19 commits
  (merged to 'next' on 2026-03-06 at 69fd3b792a)
 + odb/source: make `begin_transaction()` function pluggable
 + odb/source: make `write_alternate()` function pluggable
 + odb/source: make `read_alternates()` function pluggable
 + odb/source: make `write_object_stream()` function pluggable
 + odb/source: make `write_object()` function pluggable
 + odb/source: make `freshen_object()` function pluggable
 + odb/source: make `for_each_object()` function pluggable
 + odb/source: make `read_object_stream()` function pluggable
 + odb/source: make `read_object_info()` function pluggable
 + odb/source: make `close()` function pluggable
 + odb/source: make `reprepare()` function pluggable
 + odb/source: make `free()` function pluggable
 + odb/source: introduce source type for robustness
 + odb: move reparenting logic into respective subsystems
 + odb: embed base source in the "files" backend
 + odb: introduce "files" source
 + odb: split `struct odb_source` into separate header
 + Merge branch 'ps/object-info-bits-cleanup' into ps/odb-sources
 + Merge branch 'ps/odb-for-each-object' into ps/odb-sources

 The object source API is getting restructured to allow plugging new
 backends.

 Will merge to 'master'.
 source: <20260305-b4-pks-odb-source-pluggable-v2-0-3290bfd1f444@pks.im>


* ds/for-each-repo-w-worktree (2026-03-03) 4 commits
  (merged to 'next' on 2026-03-06 at 3886f0d054)
 + for-each-repo: simplify passing of parameters
 + for-each-repo: work correctly in a worktree
 + run-command: extract sanitize_repo_env helper
 + for-each-repo: test outside of repo context

 "git for-each-repo" started from a secondary worktree did not work
 as expected, which has been corrected.

 Will merge to 'master'.
 source: <pull.2056.v4.git.1772559114.gitgitgadget@gmail.com>


* jh/alias-i18n-fixes (2026-03-03) 5 commits
  (merged to 'next' on 2026-03-03 at d4347fab01)
 + doc: fix list continuation in alias.adoc
  (merged to 'next' on 2026-03-02 at 914bcef227)
 + git, help: fix memory leaks in alias listing
 + alias: treat empty subsection [alias ""] as plain [alias]
 + doc: fix list continuation in alias subsection example
 + Merge branch 'jh/alias-i18n' into jh/alias-i18n-fixes

 Further update to the i18n alias support to avoid regressions.

 Will merge to 'master'.
 source: <20260226205339.1535482-1-jonatan@jontes.page>
 source: <20260303151238.1000191-1-jonatan@jontes.page>


* lc/rebase-trailer (2026-03-06) 6 commits
 - rebase: support --trailer
 - commit, tag: parse --trailer with OPT_STRVEC
 - trailer: append trailers without fork/exec
 - trailer: libify a couple of functions
 - interpret-trailers: refactor create_in_place_tempfile()
 - interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.

 Comments?
 source: <cover.1772808594.git.phillip.wood@dunelm.org.uk>


* mf/format-patch-cover-letter-format (2026-03-06) 5 commits
  (merged to 'next' on 2026-03-09 at e872adca7b)
 + docs: add usage for the cover-letter fmt feature
 + format-patch: add commitListFormat config
 + format-patch: add ability to use alt cover format
 + format-patch: move cover letter summary generation
 + pretty.c: add %(count) and %(total) placeholders

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Will merge to 'master'.
 source: <cover.1772839973.git.mroik@delayed.space>


* sp/send-email-validate-charset (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-06 at a537e3e6e9)
 + send-email: validate charset name in 8bit encoding prompt

 "git send-email" has learned to be a bit more careful when it
 accepts charset to use from the end-user, to avoid 'y' (mistaken
 'yes' when expecting a charset like 'UTF-8') and other nonsense.

 Will merge to 'master'.
 source: <20260228112210.270273-1-shreyanshpaliwalcmsmn@gmail.com>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-02-28) 1 commit
 - help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Expecting a (hopefully small and final) reroll to update tests?
 cf. <xmqqwlzu43rh.fsf@gitster.g>
 source: <20260228104654.80831-2-amishhhaaaa@gmail.com>


* ty/setup-error-tightening (2026-03-04) 1 commit
 - setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.

 Will merge to 'next'.
 source: <20260304141526.37764-1-a3205153416@gmail.com>


* kh/format-patch-noprefix-is-boolean (2026-03-01) 3 commits
  (merged to 'next' on 2026-03-03 at 54bc051969)
 + doc: diff-options.adoc: make *.noprefix split translatable
  (merged to 'next' on 2026-02-26 at fcf4773929)
 + doc: diff-options.adoc: show format.noprefix for format-patch
 + format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.

 Will merge to 'master'.
 source: <V2_CV_format.noprefix_boolean.421@msgid.xyz>
 source: <better_for_translators.424@msgid.xyz>


* dt/send-email-client-cert (2026-03-01) 1 commit
  (merged to 'next' on 2026-03-06 at 2a47df2166)
 + send-email: add client certificate options

 "git send-email" learns to support use of client-side certificates.

 Will merge to 'master'.
 source: <20260302032048.260209-2-dxdt@dev.snart.me>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 cf. <405b0d34-c2ad-498d-93a1-2e7925ae11f1@gmail.com>
 cf. <c2048ddf-ced4-425d-af6e-14e9442e9d99@gmail.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
  (merged to 'next' on 2026-03-09 at 2e99d5ed52)
 + wt-status: use hash_algo from local repository instead of global the_hash_algo
 + wt-status: replace uses of the_repository with local repository instances
 + wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'master'.
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-23) 4 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Needs review.
 cf. <xmqq5x7nknrd.fsf@gitster.g>
 source: <pull.2008.v5.git.1771856405.gitgitgadget@gmail.com>


* ar/config-hooks (2026-03-02) 10 commits
  (merged to 'next' on 2026-03-03 at 5a4be22ab6)
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
  (merged to 'next' on 2026-02-27 at 6a04cca28e)
 + hook: add -z option to "git hook list"
 + hook: allow out-of-repo 'git hook' invocations
 + hook: allow event = "" to overwrite previous values
 + hook: allow disabling config hooks
 + hook: include hooks from the config
 + hook: add "git hook list" command
 + hook: run a list of hooks to prepare for multihook support
 + hook: add internal state alloc/free callbacks
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/config-hook-cleanups and ar/parallel-hooks.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.

 Will merge to 'master'.
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* ar/parallel-hooks (2026-03-09) 10 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hook-cleanups' into ar/parallel-hooks
 (this branch uses ar/config-hook-cleanups and ar/config-hooks.)

 Needs review.
 source: <20260309133739.294555-1-adrian.ratiu@collabora.com>


* ng/submodule-default-remote (2026-03-03) 1 commit
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Comments?
 source: <20260303234044.105157-1-nasser.grainawi@oss.qualcomm.com>


* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Needs review.
 source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'next'?
 source: <cover.1771959555.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
  (merged to 'next' on 2026-03-04 at 99dc92c08e)
 + object-file-convert: always make sure object ID algo is valid
 + rust: add a small wrapper around the hashfile code
 + rust: add a new binary object map format
 + rust: add functionality to hash an object
 + rust: add a build.rs script for tests
 + rust: fix linking binaries with cargo
 + hash: expose hash context functions to Rust
 + write-or-die: add an fsync component for the object map
 + csum-file: define hashwrite's count as a uint32_t
 + rust: add additional helpers for ObjectID
 + hash: add a function to look up hash algo structs
 + rust: add a hash algorithm abstraction
 + rust: add a ObjectID struct
 + hash: use uint32_t for object_id algorithm
 + conversion: don't crash when no destination algo
 + repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Will merge to 'master'.
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


* hn/status-compare-with-push (2026-03-04) 4 commits
  (merged to 'next' on 2026-03-06 at 7c5ad405d7)
 + status: clarify how status.compareBranches deduplicates
  (merged to 'next' on 2026-02-26 at 1c11b8819a)
 + status: add status.compareBranches config for multiple branch comparisons
 + refactor format_branch_comparison in preparation
 + Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.

 Will merge to 'master'.
 source: <pull.2138.v30.git.git.1772102022.gitgitgadget@gmail.com>
 source: <pull.2138.v31.git.git.1772627131.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 . sideband: offer to configure sanitizing on a per-URL basis
 . sideband: add options to allow more control sequences to be passed through
 . sideband: do allow ANSI color sequences by default
 . sideband: introduce an "escape hatch" to allow control characters
 . sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 20%]

* Re: What's cooking in git.git (Mar 2026, #03)
  @ 2026-03-07  6:47 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-07  6:47 UTC (permalink / raw)
  To: Eric Sunshine; +Cc: git

Eric Sunshine <sunshine@sunshineco.com> writes:

> On Fri, Mar 6, 2026 at 9:23 PM Junio C Hamano <gitster@pobox.com> wrote:
>> * fp/t3310-unhide-git-failures (2026-03-05) 1 commit
>>  - t3310: avoid hiding failures from rev-parse in command substitutions
>>
>>  The construct 'test "$(command)" = expectation' loses the exit
>>  status from the command, which has been fixed by breaking up the
>>  statement into pieces.
>>
>>  Will merge to 'next'.
>>  source: <20260305225128.54283-1-francescopaparatto@gmail.com>
>
> Perhaps one more reroll of this topic is in order[*]?
>
> [*]: https://lore.kernel.org/git/CAPig+cQWCK48GJEnGX7bP6exu847WR8HU3Y8sna525w6NEhmmw@mail.gmail.com/

Perhaps.  Thanks for a prompt review.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Mar 2026, #03)
@ 2026-03-07  2:22 21% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-03-07  2:22 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
  (merged to 'next' on 2026-02-27 at 2b2e3a1fa9)
 + environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 + environment: stop using core.sparseCheckout globally
 + environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.
 cf. <CAP8UFD2Rz3NMrTayi9yjRk4-51tStaLWKeBVB9RaJMWmiBLqrQ@mail.gmail.com>
 source: <cover.1771258573.git.belkid98@gmail.com>


* ps/fsck-stream-from-the-right-object-instance (2026-02-23) 4 commits
  (merged to 'next' on 2026-02-27 at b378558c1a)
 + pack-check: fix verification of large objects
 + packfile: expose function to read object stream for an offset
 + object-file: adapt `stream_object_signature()` to take a stream
 + t/helper: improve "genrandom" test helper

 "fsck" iterates over packfiles and its access to pack data caused
 the list to be permuted, which caused it to loop forever; the code
 to access pack data by "fsck" has been updated to avoid this.
 source: <20260223-pks-fsck-fix-v2-0-99a0714ea3bd@pks.im>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
  (merged to 'next' on 2026-02-27 at d6ebc97cb1)
 + t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>

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

* ab/clone-default-object-filter (2026-03-06) 1 commit
 - clone: add clone.<url>.defaultObjectFilter config

 "git clone" learns to pay attention to "clone.<url>.defaultObjectFilter"
 configuration and behave as if the "--filter=<filter-spec>" option
 was given on the command line.

 Comments?
 source: <pull.2058.v4.git.1772833649843.gitgitgadget@gmail.com>


* ag/send-email-sasl-with-host-port (2026-03-05) 1 commit
  (merged to 'next' on 2026-03-06 at a773196f56)
 + send-email: pass smtp hostname and port to Authen::SASL

 "git send-email" learns to pass hostname/port to Authen::SASL
 module.

 Will merge to 'master'.
 source: <MAUPR01MB1154634CC04D29AAF7CADE5F7B87DA@MAUPR01MB11546.INDPRD01.PROD.OUTLOOK.COM>


* jc/neuter-sideband-fixup (2026-03-05) 6 commits
 - sideband: drop 'default' configuration
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters
 (this branch is used by jc/neuter-sideband-post-3.0.)

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic by Dscho.  The
 plan is to keep it in 'next' long enough to see if anybody screams
 with the "everything dropped except for ANSI color escape sequence"
 default.

 Comments?
 source: <20260305233452.3727126-1-gitster@pobox.com>


* jc/neuter-sideband-post-3.0 (2026-03-05) 2 commits
 - sideband: delay sanitizing by default to Git v3.0
 - Merge branch 'jc/neuter-sideband-fixup' into jc/neuter-sideband-post-3.0
 (this branch uses jc/neuter-sideband-fixup.)

 The final step, split from earlier attempt by Dscho, to loosen the
 sideband restriction for now and tighten later at Git v3.0 boundary.

 On hold, until jc/neuter-sideband-fixup cooks long enough in 'next'.
 (this branch uses jc/neuter-sideband-fixup.)
 source: <20260305233452.3727126-8-gitster@pobox.com>


* jt/doc-submitting-patches-study-before-sending (2026-03-05) 1 commit
  (merged to 'next' on 2026-03-06 at 222151114c)
 + Documentation: extend guidance for submitting patches

 Doc update for our contributors.

 Will merge to 'master'.
 source: <20260305193836.973122-1-jltobler@gmail.com>


* ps/ci-gitlab-prepare-for-macos-14-deprecation (2026-03-05) 3 commits
  (merged to 'next' on 2026-03-06 at 60b308a43b)
 + gitlab-ci: update to macOS 15 images
 + meson: detect broken iconv that requires ICONV_RESTART_RESET
 + meson: simplify iconv-emits-BOM check

 Move gitlab CI from macOS 14 images that are being deprecated.

 Will merge to 'master'.
 source: <20260305-pks-gitlab-ci-macos-16-v1-0-ce8da0ff29c2@pks.im>


* ss/t9123-setup-inside-test-expect-success (2026-03-05) 1 commit
  (merged to 'next' on 2026-03-06 at 607e206418)
 + t9123: use test_when_finished for cleanup

 Test clean-up.

 Will merge to 'master'.
 source: <20260305125408.16958-1-r.siddharth.shrimali@gmail.com>


* cs/subtree-split-recursion (2026-03-05) 3 commits
 - contrib/subtree: reduce recursion during split
 - contrib/subtree: functionalize split traversal
 - contrib/subtree: reduce function side-effects

 When processing large history graphs on Debian or Ubuntu, "git
 subtree" can die with a "recursion depth reached" error.

 Comments?
 source: <20260305-cs-subtree-split-recursion-v2-0-7266be870ba9@howdoi.land>


* fp/t3310-unhide-git-failures (2026-03-05) 1 commit
 - t3310: avoid hiding failures from rev-parse in command substitutions

 The construct 'test "$(command)" = expectation' loses the exit
 status from the command, which has been fixed by breaking up the
 statement into pieces.

 Will merge to 'next'.
 source: <20260305225128.54283-1-francescopaparatto@gmail.com>


* jk/unleak-mmap (2026-03-06) 5 commits
 - meson: turn on NO_MMAP when building with LSan
 - Makefile: turn on NO_MMAP when building with LSan
 - pack-revindex: avoid double-loading .rev files
 - check_connected(): fix leak of pack-index mmap
 - check_connected(): delay opening new_pack

 Plug a few leaks where mmap'ed memory regions are not unmapped.

 Will merge to 'next'?
 source: <20260305230315.GA2354983@coredump.intra.peff.net>
 source: <796110ee-d795-4445-9d82-7026370a88cf@intel.com>

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

* kj/path-micro-code-cleanup (2026-03-04) 3 commits
  (merged to 'next' on 2026-03-04 at 569091027c)
 + path: remove redundant function calls
 + path: use size_t for dir_prefix length
 + path: remove unused header

 Code clean-up.

 Will merge to 'master'.
 source: <20260304130502.8475-1-jayatheerthkulkarni2005@gmail.com>


* lp/doc-gitprotocol-pack-fixes (2026-03-02) 3 commits
  (merged to 'next' on 2026-03-04 at 7fb5fdd8af)
 + doc: gitprotocol-pack: normalize italic formatting
 + doc: gitprotocol-pack: improve paragraphs structure
 + doc: gitprotocol-pack: fix pronoun-antecedent agreement

 Doc update.

 Will merge to 'master'.
 source: <cover.1772502209.git.lorenzo.pegorari2002@gmail.com>


* ss/t3700-modernize (2026-03-03) 2 commits
  (merged to 'next' on 2026-03-05 at 23ff16a16f)
 + t3700: use test_grep helper for better diagnostics
 + t3700: avoid suppressing git's exit code

 Test clean-up.

 Will merge to 'master'.
 source: <20260303204029.52952-1-r.siddharth.shrimali@gmail.com>


* ps/history-split (2026-03-02) 8 commits
 - builtin/history: implement "split" subcommand
 - builtin/history: split out extended function to create commits
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"

 "git history" learned the "split" subcommand.

 Comments?
 source: <20260302-pks-history-split-v1-0-444fc987a324@pks.im>


* os/doc-custom-subcommand-on-path (2026-03-04) 1 commit
  (merged to 'next' on 2026-03-05 at 661cc235ae)
 + doc: add information regarding external commands

 The way end-users can add their own "git <cmd>" subcommand by
 storing "git-<cmd>" in a directory on their $PATH has not been
 documented clearly, which has been corrected.

 Will merge to 'master'.
 source: <pull.2220.v4.git.git.1772636614850.gitgitgadget@gmail.com>


* pt/promisor-lazy-fetch-no-recurse (2026-03-04) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 were not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v2.git.git.1772648846009.gitgitgadget@gmail.com>


* fp/t3310-test-path-is-helpers (2026-02-27) 1 commit
  (merged to 'next' on 2026-03-03 at c01b2c73d8)
 + t3310: replace test -f/-d with test_path_is_file/test_path_is_dir

 Test clean-up.

 Will merge to 'master'.
 source: <20260228005939.9012-1-francescopaparatto@gmail.com>


* mm/diff-no-index-find-object (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-03 at fcff548ddb)
 + diff: fix crash with --find-object outside repository

 "git diff --no-index --find-object=<object-name>" outside a
 repository of course wouldn't be able to find the object and died
 while parsing the command line, which is made to die in a bit more
 user-friendly way.

 Will merge to 'master'.
 source: <pull.2057.git.1772310676438.gitgitgadget@gmail.com>


* ps/ci-reduce-gitlab-envsize (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-03 at e2d1e47015)
 + ci: unset GITLAB_FEATURES envvar to not bust xargs(1) limits

 CI fix.

 Will merge to 'master'.
 source: <20260302-pks-msvc-meson-xargs-v1-1-8e42abd879ce@pks.im>


* pt/fsmonitor-watchman-sample-fix (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-03 at b899c2b411)
 + fsmonitor-watchman: fix variable reference and remove redundant code

 Fix typo-induced breakages in fsmonitor-watchman sample hook.

 Will merge to 'master'.
 source: <pull.2180.v2.git.git.1772300277959.gitgitgadget@gmail.com>


* sk/oidmap-clear-with-custom-free-func (2026-03-05) 2 commits
  (merged to 'next' on 2026-03-06 at e335861c57)
 + builtin/rev-list: migrate missing_objects cleanup to oidmap_clear_with_free()
 + oidmap: make entry cleanup explicit in oidmap_clear

 A bit of OIDmap API enhancement and cleanup.

 Will merge to 'master'.
 source: <20260305100526.102130-1-kuforiji98@gmail.com>


* ss/test-that-that-typofix (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-03 at 1224b73913)
 + t: fix "that that" typo in lib-unicode-nfc-nfd.sh

 Typofix in t/.

 Will merge to 'master'.
 source: <20260302192627.83631-1-r.siddharth.shrimali@gmail.com>


* jk/repo-structure-cleanup (2026-02-23) 1 commit
  (merged to 'next' on 2026-03-02 at e1647839fa)
 + repo: remove unnecessary variable shadow

 Code clean-up.

 Will merge to 'master'.
 source: <20260223135248.127935-1-jayatheerthkulkarni2005@gmail.com>


* lp/diff-stat-utf8-display-width-fix (2026-02-27) 2 commits
  (merged to 'next' on 2026-03-02 at b979797314)
 + t4052: test for diffstat width when prefix contains ANSI escape codes
 + diff: handle ANSI escape codes in prefix when calculating diffstat width

 "git log --graph --stat" did not count the display width of colored
 graph part of its own output correctly, which has been corrected.

 Will merge to 'master'.
 source: <cover.1772226209.git.lorenzo.pegorari2002@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-03-03) 10 commits
 - builtin/pack-objects: reduce lock contention when writing packfile data
 - csum-file: drop `hashfd_throughput()`
 - csum-file: introduce `hashfd_ext()`
 - sideband: use writev(3p) to send pktlines
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper
 - git-compat-util: introduce `cast_size_t_to_ssize_t()`
 - upload-pack: reduce lock contention when writing packfile data
 - upload-pack: adapt keepalives based on buffering
 - upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Comments?
 cf. <xmqqseaf5k5t.fsf@gitster.g>
 source: <20260303-pks-upload-pack-write-contention-v2-0-7321830f08fe@pks.im>


* rs/parse-options-duplicated-long-options (2026-02-28) 2 commits
  (merged to 'next' on 2026-03-03 at 70cbc2ea97)
 + parseopt: check for duplicate long names and numerical options
 + pack-objects: remove duplicate --stdin-packs definition

 The parse-options API learned to notice an options[] array with
 duplicated long options.

 Will merge to 'master'.
 source: <1e7de0f7-a712-465f-b3c9-5dbe78132d3f@web.de>
 source: <7693799a-91a2-480a-ae3e-29f8eed5b55a@web.de>


* jt/repo-structure-extrema (2026-03-02) 6 commits
 - builtin/repo: find tree with most entries
 - builtin/repo: find commit with most parents
 - builtin/repo: add OID annotations to table output
 - builtin/repo: collect largest inflated objects
 - builtin/repo: add helper for printing keyvalue output
 - builtin/repo: update stats for each object

 "git repo structure" command learns to report maximum values on
 various aspects of objects it inspects.

 Will merge to 'next'.
 source: <20260302214526.2034279-1-jltobler@gmail.com>


* ps/odb-sources (2026-03-05) 19 commits
  (merged to 'next' on 2026-03-06 at 69fd3b792a)
 + odb/source: make `begin_transaction()` function pluggable
 + odb/source: make `write_alternate()` function pluggable
 + odb/source: make `read_alternates()` function pluggable
 + odb/source: make `write_object_stream()` function pluggable
 + odb/source: make `write_object()` function pluggable
 + odb/source: make `freshen_object()` function pluggable
 + odb/source: make `for_each_object()` function pluggable
 + odb/source: make `read_object_stream()` function pluggable
 + odb/source: make `read_object_info()` function pluggable
 + odb/source: make `close()` function pluggable
 + odb/source: make `reprepare()` function pluggable
 + odb/source: make `free()` function pluggable
 + odb/source: introduce source type for robustness
 + odb: move reparenting logic into respective subsystems
 + odb: embed base source in the "files" backend
 + odb: introduce "files" source
 + odb: split `struct odb_source` into separate header
 + Merge branch 'ps/object-info-bits-cleanup' into ps/odb-sources
 + Merge branch 'ps/odb-for-each-object' into ps/odb-sources

 The object source API is getting restructured to allow plugging new
 backends.

 Will merge to 'master'.
 source: <20260305-b4-pks-odb-source-pluggable-v2-0-3290bfd1f444@pks.im>


* ds/for-each-repo-w-worktree (2026-03-03) 4 commits
  (merged to 'next' on 2026-03-06 at 3886f0d054)
 + for-each-repo: simplify passing of parameters
 + for-each-repo: work correctly in a worktree
 + run-command: extract sanitize_repo_env helper
 + for-each-repo: test outside of repo context

 "git for-each-repo" started from a secondary worktree did not work
 as expected, which has been corrected.

 Will merge to 'master'.
 source: <pull.2056.v4.git.1772559114.gitgitgadget@gmail.com>


* jh/alias-i18n-fixes (2026-03-03) 5 commits
  (merged to 'next' on 2026-03-03 at d4347fab01)
 + doc: fix list continuation in alias.adoc
  (merged to 'next' on 2026-03-02 at 914bcef227)
 + git, help: fix memory leaks in alias listing
 + alias: treat empty subsection [alias ""] as plain [alias]
 + doc: fix list continuation in alias subsection example
 + Merge branch 'jh/alias-i18n' into jh/alias-i18n-fixes

 Further update to the i18n alias support to avoid regressions.

 Will merge to 'master'.
 source: <20260226205339.1535482-1-jonatan@jontes.page>
 source: <20260303151238.1000191-1-jonatan@jontes.page>


* lc/rebase-trailer (2026-03-06) 6 commits
 - rebase: support --trailer
 - commit, tag: parse --trailer with OPT_STRVEC
 - trailer: append trailers without fork/exec
 - trailer: libify a couple of functions
 - interpret-trailers: refactor create_in_place_tempfile()
 - interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.

 Comments?
 source: <cover.1772808594.git.phillip.wood@dunelm.org.uk>


* mf/format-patch-cover-letter-format (2026-02-27) 5 commits
 - docs: add usage for the cover-letter fmt feature
 - format-patch: add commitListFormat config
 - format-patch: add ability to use alt cover format
 - format-patch: move cover letter summary generation
 - pretty.c: add %(count) and %(total) placeholders

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Will merge to 'next'.
 source: <cover.1772232373.git.mroik@delayed.space>


* sp/send-email-validate-charset (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-06 at a537e3e6e9)
 + send-email: validate charset name in 8bit encoding prompt

 "git send-email" has learned to be a bit more careful when it
 accepts charset to use from the end-user, to avoid 'y' (mistaken
 'yes' when expecting a charset like 'UTF-8') and other nonsense.

 Will merge to 'master'.
 source: <20260228112210.270273-1-shreyanshpaliwalcmsmn@gmail.com>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-02-28) 1 commit
 - help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Expecting a (hopefully small and final) reroll to update tests?
 cf. <xmqqwlzu43rh.fsf@gitster.g>
 source: <20260228104654.80831-2-amishhhaaaa@gmail.com>


* ty/setup-error-tightening (2026-03-04) 1 commit
 - setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.

 Will merge to 'next'?
 source: <20260304141526.37764-1-a3205153416@gmail.com>


* kh/format-patch-noprefix-is-boolean (2026-03-01) 3 commits
  (merged to 'next' on 2026-03-03 at 54bc051969)
 + doc: diff-options.adoc: make *.noprefix split translatable
  (merged to 'next' on 2026-02-26 at fcf4773929)
 + doc: diff-options.adoc: show format.noprefix for format-patch
 + format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.

 Will merge to 'master'.
 source: <V2_CV_format.noprefix_boolean.421@msgid.xyz>
 source: <better_for_translators.424@msgid.xyz>


* dt/send-email-client-cert (2026-03-01) 1 commit
  (merged to 'next' on 2026-03-06 at 2a47df2166)
 + send-email: add client certificate options

 "git send-email" learns to support use of client-side certificates.

 Will merge to 'master'.
 source: <20260302032048.260209-2-dxdt@dev.snart.me>


* ps/refs-for-each (2026-02-23) 18 commits
  (merged to 'next' on 2026-02-27 at ec9e0a36ff)
 + refs: replace `refs_for_each_fullref_in()`
 + refs: replace `refs_for_each_namespaced_ref()`
 + refs: replace `refs_for_each_glob_ref()`
 + refs: replace `refs_for_each_glob_ref_in()`
 + refs: replace `refs_for_each_rawref_in()`
 + refs: replace `refs_for_each_rawref()`
 + refs: replace `refs_for_each_ref_in()`
 + refs: improve verification for-each-ref options
 + refs: generalize `refs_for_each_fullref_in_prefixes()`
 + refs: generalize `refs_for_each_namespaced_ref()`
 + refs: speed up `refs_for_each_glob_ref_in()`
 + refs: introduce `refs_for_each_ref_ext`
 + refs: rename `each_ref_fn`
 + refs: rename `do_for_each_ref_flags`
 + refs: move `do_for_each_ref_flags` further up
 + refs: move `refs_head_ref_namespaced()`
 + refs: remove unused `refs_for_each_include_root_ref()`
 + Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each

 Code refactoring around refs-for-each-* API functions.

 Will merge to 'master'.
 cf. <CAOLa=ZTz-9JKHC3H8tSwP=bDvX2mNA-erjr5Ni6Tiq4cm4WmLg@mail.gmail.com>
 source: <20260223-pks-refs-for-each-unification-v2-0-515d48c8087b@pks.im>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 cf. <405b0d34-c2ad-498d-93a1-2e7925ae11f1@gmail.com>
 cf. <c2048ddf-ced4-425d-af6e-14e9442e9d99@gmail.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
 - wt-status: use hash_algo from local repository instead of global the_hash_algo
 - wt-status: replace uses of the_repository with local repository instances
 - wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'next'.
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-23) 4 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Needs review.
 cf. <xmqq5x7nknrd.fsf@gitster.g>
 source: <pull.2008.v5.git.1771856405.gitgitgadget@gmail.com>


* ar/config-hooks (2026-03-02) 10 commits
  (merged to 'next' on 2026-03-03 at 5a4be22ab6)
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
  (merged to 'next' on 2026-02-27 at 6a04cca28e)
 + hook: add -z option to "git hook list"
 + hook: allow out-of-repo 'git hook' invocations
 + hook: allow event = "" to overwrite previous values
 + hook: allow disabling config hooks
 + hook: include hooks from the config
 + hook: add "git hook list" command
 + hook: run a list of hooks to prepare for multihook support
 + hook: add internal state alloc/free callbacks
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.

 Will merge to 'master'.
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* ar/parallel-hooks (2026-02-21) 11 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - hook: refactor hook_config_cache from strmap to named struct
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260222002904.1879356-1-adrian.ratiu@collabora.com>


* ng/submodule-default-remote (2026-03-03) 1 commit
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Comments?
 source: <20260303234044.105157-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-03-02) 13 commits
  (merged to 'next' on 2026-03-02 at f5aabac117)
 + builtin/receive-pack: avoid spinning no-op sideband async threads
  (merged to 'next' on 2026-02-22 at 4aa543f115)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + run-command: poll child input in addition to output
 + hook: add jobs option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: allow separate std[out|err] streams
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add helper for pp child states
 + t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Will merge to 'master'.
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>
 source: <20260302191704.1814567-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Needs review.
 source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
  (merged to 'next' on 2026-03-02 at c7251cc68f)
 + Documentation: update add --force option + ignore=all config
 + tests: fix existing tests when add an ignore=all submodule
 + tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 + read-cache: submodule add need --force given ignore=all configuration
 + read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Will merge to 'master'.
 cf. <xmqq5x7rvyn4.fsf@gitster.g>
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'next'?
 source: <cover.1771959555.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
  (merged to 'next' on 2026-03-04 at 99dc92c08e)
 + object-file-convert: always make sure object ID algo is valid
 + rust: add a small wrapper around the hashfile code
 + rust: add a new binary object map format
 + rust: add functionality to hash an object
 + rust: add a build.rs script for tests
 + rust: fix linking binaries with cargo
 + hash: expose hash context functions to Rust
 + write-or-die: add an fsync component for the object map
 + csum-file: define hashwrite's count as a uint32_t
 + rust: add additional helpers for ObjectID
 + hash: add a function to look up hash algo structs
 + rust: add a hash algorithm abstraction
 + rust: add a ObjectID struct
 + hash: use uint32_t for object_id algorithm
 + conversion: don't crash when no destination algo
 + repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Will merge to 'master'.
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


* hn/status-compare-with-push (2026-03-04) 4 commits
  (merged to 'next' on 2026-03-06 at 7c5ad405d7)
 + status: clarify how status.compareBranches deduplicates
  (merged to 'next' on 2026-02-26 at 1c11b8819a)
 + status: add status.compareBranches config for multiple branch comparisons
 + refactor format_branch_comparison in preparation
 + Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.

 Will merge to 'master'.
 source: <pull.2138.v30.git.git.1772102022.gitgitgadget@gmail.com>
 source: <pull.2138.v31.git.git.1772627131.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 . sideband: offer to configure sanitizing on a per-URL basis
 . sideband: add options to allow more control sequences to be passed through
 . sideband: do allow ANSI color sequences by default
 . sideband: introduce an "escape hatch" to allow control characters
 . sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 21%]

* What's cooking in git.git (Mar 2026, #02)
@ 2026-03-05  0:05 18% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-05  0:05 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* aa/add-p-no-auto-advance (2026-02-14) 4 commits
  (merged to 'next' on 2026-02-25 at ce27f94bc2)
 + add-patch: allow interfile navigation when selecting hunks
 + add-patch: allow all-or-none application of patches
 + add-patch: modify patch_update_file() signature
 + interactive -p: add new `--auto-advance` flag

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.
 source: <cover.1771066252.git.abrahamadekunle50@gmail.com>


* bk/mailmap-wo-the-repository (2026-02-19) 2 commits
  (merged to 'next' on 2026-02-26 at f7e3afc1ff)
 + mailmap: drop global config variables
 + mailmap: stop using the_repository

 Wean the mailmap code off of the_repository dependency.
 
 source: <20260220060442.29469-1-bkkaracay@gmail.com>


* cs/subtree-split-fixes (2026-02-17) 3 commits
  (merged to 'next' on 2026-02-25 at 3824d2c52d)
 + contrib/subtree: process out-of-prefix subtrees
 + contrib/subtree: test history depth
 + contrib/subtree: capture additional test-cases

 An earlier attempt to optimize "git subtree" discarded too much
 relevant histories, which has been corrected.
 source: <20260217-cs-subtree-remove-optimization-v2-0-4299e71a30c6@howdoi.land>


* cx/fetch-display-ubfix (2026-02-24) 1 commit
  (merged to 'next' on 2026-02-26 at ebd1da8b75)
 + fetch: fix wrong evaluation order in URL trailing-slash trimming

 Undefined-behaviour fix in "git fetch".
 
 source: <pull.2211.git.git.1771984857879.gitgitgadget@gmail.com>


* dk/meson-regen-config-list (2026-02-24) 1 commit
  (merged to 'next' on 2026-02-26 at 64ea932d59)
 + build: regenerate config-list.h when Documentation changes

 Fix dependency screw-up in meson-based builds.
 
 source: <4ef96c6bbf698a08df1df87b7cb053b6d0d00822.1771943954.git.ben.knoble+github@gmail.com>


* ds/config-list-with-type (2026-02-23) 13 commits
  (merged to 'next' on 2026-02-26 at cdaee07fde)
 + config: use an enum for type
 + config: restructure format_config()
 + config: format colors quietly
 + color: add color_parse_quietly()
 + config: format expiry dates quietly
 + config: format paths gently
 + config: format bools or strings in helper
 + config: format bools or ints gently
 + config: format bools gently
 + config: format int64s gently
 + config: make 'git config list --type=<X>' work
 + config: add 'gently' parameter to format_config()
 + config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.
 
 source: <pull.2044.v3.git.1771849615.gitgitgadget@gmail.com>


* en/merge-ort-almost-wo-the-repository (2026-02-19) 6 commits
  (merged to 'next' on 2026-02-26 at 4c07a66173)
 + replay: prevent the_repository from coming back
 + merge-ort: prevent the_repository from coming back
 + merge-ort: replace the_hash_algo with opt->repo->hash_algo
 + merge-ort: replace the_repository with opt->repo
 + merge-ort: pass repository to write_tree()
 + merge,diff: remove the_repository check before prefetching blobs

 Mark the marge-ort codebase to prevent more uses of the_repository
 from getting added.
  cf. <143ab1c8-9f07-4df7-8200-69b5a78a0351@gmail.com>
 cf. <aZ12rYYwbh1fvrnE@pks.im>
 source: <pull.2048.v3.git.1771718393.gitgitgadget@gmail.com>


* hy/diff-lazy-fetch-with-break-fix (2026-02-23) 1 commit
  (merged to 'next' on 2026-02-25 at afe07ad86c)
 + diffcore-break: avoid segfault with freed entries

 A prefetch call can be triggered to access a stale diff_queue entry
 after diffcore-break breaks a filepair into two and freed the
 original entry that is no longer used, leading to a segfault, which
 has been corrected.
 source: <20260224061329.60364-2-hanyang.tony@bytedance.com>


* jr/apply-directory-normalize (2026-02-17) 1 commit
  (merged to 'next' on 2026-02-26 at 588d44696d)
 + apply: normalize path in --directory argument

 "git apply --directory=./un/../normalized/path" now normalizes the
 given path before using it.
 
 source: <pull.2198.v2.git.git.1771373732749.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-19) 1 commit
  (merged to 'next' on 2026-02-26 at 913be932b0)
 + osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).
 
 source: <pull.2046.v4.git.1771551540816.gitgitgadget@gmail.com>


* kn/ref-location (2026-02-25) 6 commits
  (merged to 'next' on 2026-02-26 at e87adbdb69)
 + refs: add GIT_REFERENCE_BACKEND to specify reference backend
 + refs: allow reference location in refstorage config
 + refs: receive and use the reference storage payload
 + refs: move out stub modification to generic layer
 + refs: extract out `refs_create_refdir_stubs()`
 + setup: don't modify repo in `create_reference_database()`

 Allow the directory in which reference backends store their data to
 be specified.
 
 source: <20260225-kn-alternate-ref-dir-v9-0-3fe118e40e28@gmail.com>


* lg/t2004-test-path-is-helpers (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at c5862e1b3d)
 + t2004: use test_path_is_file instead of test -f

 Test code clean-up.
 source: <pull.2049.git.1771694893208.gitgitgadget@gmail.com>


* lo/repo-leftover-bits (2026-02-25) 9 commits
  (merged to 'next' on 2026-02-26 at 962fc48d45)
 + Documentation/git-repo: capitalize format descriptions
 + Documentation/git-repo: replace 'NUL' with '_NUL_'
 + t1901: adjust nul format output instead of expected value
 + t1900: rename t1900-repo to t1900-repo-info
 + repo: rename struct field to repo_info_field
 + repo: replace get_value_fn_for_key by get_repo_info_field
 + repo: rename repo_info_fields to repo_info_field
 + CodingGuidelines: instruct to name arrays in singular
 + Merge branch 'lo/repo-info-keys' into lo/repo-leftover-bits

 Clean-up the code around "git repo info" command.
 
 source: <20260225183559.79303-1-lucasseikioshiro@gmail.com>


* ps/maintenance-geometric-default (2026-02-24) 8 commits
  (merged to 'next' on 2026-02-26 at 8ab085f657)
 + builtin/maintenance: use "geometric" strategy by default
 + t7900: prepare for switch of the default strategy
 + t6500: explicitly use "gc" strategy
 + t5510: explicitly use "gc" strategy
 + t5400: explicitly use "gc" strategy
 + t34xx: don't expire reflogs where it matters
 + t: disable maintenance where we verify object database structure
 + t: fix races caused by background maintenance

 "git maintenance" starts using the "geometric" strategy by default.
 
 source: <20260224-b4-pks-maintenance-default-geometric-strategy-v2-0-8657338c6fa1@pks.im>


* ps/simplify-normalize-path-copy-len (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at ce7c45c6fa)
 + path: factor out skip_slashes() in normalize_path_copy_len()

 Code clean-up.
 source: <20260221110511.1592-2-pushkarkumarsingh1970@gmail.com>


* pw/no-more-NULL-means-current-worktree (2026-02-19) 2 commits
  (merged to 'next' on 2026-02-26 at 281f28b140)
 + path: remove repository argument from worktree_git_path()
 + wt-status: avoid passing NULL worktree

 API clean-up for the worktree subsystem.
  cf. <d5866041-3e2f-4f5e-a8d1-725fd3eac2e2@gmail.com>
 source: <cover.1771511192.git.phillip.wood@dunelm.org.uk>


* rr/gitweb-mobile (2026-02-16) 5 commits
  (merged to 'next' on 2026-02-26 at b7e4c26f73)
 + gitweb: let page header grow on mobile for long wrapped project names
 + gitweb: fix mobile footer overflow by wrapping text and clearing floats
 + gitweb: fix mobile page overflow across log/commit/blob/diff views
 + gitweb: prevent project search bar from overflowing on mobile
 + gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.
 
 source: <pull.2043.v2.git.1771257211.gitgitgadget@gmail.com>


* sc/pack-redundant-leakfix (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at b2fda8839e)
 + pack-redundant: fix memory leak when open_pack_index() fails

 Leakfix.
 source: <20260221103900.41740-1-sahityajb@gmail.com>


* sp/shallow-deepen-relative-fix (2026-02-15) 2 commits
  (merged to 'next' on 2026-02-26 at 2183b3405e)
 + shallow: handling fetch relative-deepen
 + shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.
 
 source: <pull.2121.v5.git.git.1771186316.gitgitgadget@gmail.com>


* sp/tree-diff-wo-the-repository (2026-02-20) 1 commit
  (merged to 'next' on 2026-02-26 at c5762ee063)
 + tree-diff: remove the usage of the_hash_algo global

 The last uses of the_repository in "tree-diff.c" have been
 eradicated.
 
 source: <20260220175331.1250726-1-shreyanshpaliwalcmsmn@gmail.com>

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

* kj/path-micro-code-cleanup (2026-03-04) 3 commits
  (merged to 'next' on 2026-03-04 at 569091027c)
 + path: remove redundant function calls
 + path: use size_t for dir_prefix length
 + path: remove unused header

 Code clean-up.

 Will merge to 'master'.
 source: <20260304130502.8475-1-jayatheerthkulkarni2005@gmail.com>


* lp/doc-gitprotocol-pack-fixes (2026-03-02) 3 commits
  (merged to 'next' on 2026-03-04 at 7fb5fdd8af)
 + doc: gitprotocol-pack: normalize italic formatting
 + doc: gitprotocol-pack: improve paragraphs structure
 + doc: gitprotocol-pack: fix pronoun-antecedent agreement

 Doc update.

 Will merge to 'master'.
 source: <cover.1772502209.git.lorenzo.pegorari2002@gmail.com>


* ss/t3700-modernize (2026-03-03) 2 commits
 - t3700: use test_grep helper for better diagnostics
 - t3700: avoid suppressing git's exit code

 Test clean-up.

 Will merge to 'next'.
 source: <20260303204029.52952-1-r.siddharth.shrimali@gmail.com>


* ps/history-split (2026-03-02) 8 commits
 - builtin/history: implement "split" subcommand
 - builtin/history: split out extended function to create commits
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"

 "git history" learned the "split" subcommand.

 Comments?
 source: <20260302-pks-history-split-v1-0-444fc987a324@pks.im>


* os/doc-custom-subcommand-on-path (2026-03-04) 1 commit
 - doc: add information regarding external commands

 The way end-users can add their own "git <cmd>" subcommand by
 storing "git-<cmd>" in a directory on their $PATH has not been
 documented clearly, which has been corrected.

 Will merge to 'next'.
 source: <pull.2220.v4.git.git.1772636614850.gitgitgadget@gmail.com>


* pt/promisor-lazy-fetch-no-recurse (2026-03-04) 1 commit
 - promisor-remote: prevent lazy-fetch recursion in child fetch

 The mechanism to avoid recursive lazy-fetch from promisor remotes
 were not propagated properly to child "git fetch" processes, which
 has been corrected.

 Comments?
 source: <pull.2224.v2.git.git.1772648846009.gitgitgadget@gmail.com>

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

* fp/t3310-test-path-is-helpers (2026-02-27) 1 commit
  (merged to 'next' on 2026-03-03 at c01b2c73d8)
 + t3310: replace test -f/-d with test_path_is_file/test_path_is_dir

 Test clean-up.

 Will merge to 'master'.
 source: <20260228005939.9012-1-francescopaparatto@gmail.com>


* jc/neuter-sideband-fixup (2026-03-02) 8 commits
 - sideband: conditional documentation fix
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: drop 'default' configuration
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband to the terminal" topic.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>
 source: <20260302181149.3502811-1-gitster@pobox.com>


* mm/diff-no-index-find-object (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-03 at fcff548ddb)
 + diff: fix crash with --find-object outside repository

 "git diff --no-index --find-object=<object-name>" outside a
 repository of course wouldn't be able to find the object and died
 while parsing the command line, which is made to die in a bit more
 user-friendly way.

 Will merge to 'master'.
 source: <pull.2057.git.1772310676438.gitgitgadget@gmail.com>


* ps/ci-reduce-gitlab-envsize (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-03 at e2d1e47015)
 + ci: unset GITLAB_FEATURES envvar to not bust xargs(1) limits

 CI fix.

 Will merge to 'master'.
 source: <20260302-pks-msvc-meson-xargs-v1-1-8e42abd879ce@pks.im>


* pt/fsmonitor-watchman-sample-fix (2026-02-28) 1 commit
  (merged to 'next' on 2026-03-03 at b899c2b411)
 + fsmonitor-watchman: fix variable reference and remove redundant code

 Fix typo-induced breakages in fsmonitor-watchman sample hook.

 Will merge to 'master'.
 source: <pull.2180.v2.git.git.1772300277959.gitgitgadget@gmail.com>


* sk/oidmap-clear-with-custom-free-func (2026-03-02) 5 commits
 - sequencer: use oidmap_clear_with_free() for string_entry cleanup
 - odb: use oidmap_clear_with_free() to release replace_map entries
 - list-objects-filter: use oidmap_clear_with_free() for cleanup
 - builtin/rev-list: migrate missing_objects cleanup to oidmap_clear_with_free()
 - oidmap: make entry cleanup explicit in oidmap_clear

 A bit of OIDmap API enhancement and cleanup.

 Comments?
 source: <20260302200018.75731-1-kuforiji98@gmail.com>


* ss/test-that-that-typofix (2026-03-02) 1 commit
  (merged to 'next' on 2026-03-03 at 1224b73913)
 + t: fix "that that" typo in lib-unicode-nfc-nfd.sh

 Typofix in t/.

 Will merge to 'master'.
 source: <20260302192627.83631-1-r.siddharth.shrimali@gmail.com>


* jk/repo-structure-cleanup (2026-02-23) 1 commit
  (merged to 'next' on 2026-03-02 at e1647839fa)
 + repo: remove unnecessary variable shadow

 Code clean-up.

 Will merge to 'master'.
 source: <20260223135248.127935-1-jayatheerthkulkarni2005@gmail.com>


* lp/diff-stat-utf8-display-width-fix (2026-02-27) 2 commits
  (merged to 'next' on 2026-03-02 at b979797314)
 + t4052: test for diffstat width when prefix contains ANSI escape codes
 + diff: handle ANSI escape codes in prefix when calculating diffstat width

 "git log --graph --stat" did not count the display width of colored
 graph part of its own output correctly, which has been corrected.

 Will merge to 'master'.
 source: <cover.1772226209.git.lorenzo.pegorari2002@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-03-03) 10 commits
 - builtin/pack-objects: reduce lock contention when writing packfile data
 - csum-file: drop `hashfd_throughput()`
 - csum-file: introduce `hashfd_ext()`
 - sideband: use writev(3p) to send pktlines
 - wrapper: introduce writev(3p) wrappers
 - compat/posix: introduce writev(3p) wrapper
 - git-compat-util: introduce `cast_size_t_to_ssize_t()`
 - upload-pack: reduce lock contention when writing packfile data
 - upload-pack: adapt keepalives based on buffering
 - upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Comments?
 cf. <xmqqseaf5k5t.fsf@gitster.g>
 source: <20260303-pks-upload-pack-write-contention-v2-0-7321830f08fe@pks.im>


* rs/parse-options-duplicated-long-options (2026-02-28) 2 commits
  (merged to 'next' on 2026-03-03 at 70cbc2ea97)
 + parseopt: check for duplicate long names and numerical options
 + pack-objects: remove duplicate --stdin-packs definition

 The parse-options API learned to notice an options[] array with
 duplicated long options.

 Will merge to 'master'.
 source: <1e7de0f7-a712-465f-b3c9-5dbe78132d3f@web.de>
 source: <7693799a-91a2-480a-ae3e-29f8eed5b55a@web.de>


* jt/repo-structure-extrema (2026-03-02) 6 commits
 - builtin/repo: find tree with most entries
 - builtin/repo: find commit with most parents
 - builtin/repo: add OID annotations to table output
 - builtin/repo: collect largest inflated objects
 - builtin/repo: add helper for printing keyvalue output
 - builtin/repo: update stats for each object

 "git repo structure" command learns to report maximum values on
 various aspects of objects it inspects.

 Will merge to 'next'?
 source: <20260302214526.2034279-1-jltobler@gmail.com>


* ps/fsck-stream-from-the-right-object-instance (2026-02-23) 4 commits
  (merged to 'next' on 2026-02-27 at b378558c1a)
 + pack-check: fix verification of large objects
 + packfile: expose function to read object stream for an offset
 + object-file: adapt `stream_object_signature()` to take a stream
 + t/helper: improve "genrandom" test helper

 "fsck" iterates over packfiles and its access to pack data caused
 the list to be permuted, which caused it to loop forever; the code
 to access pack data by "fsck" has been updated to avoid this.

 Will merge to 'master'.
 source: <20260223-pks-fsck-fix-v2-0-99a0714ea3bd@pks.im>


* ps/odb-sources (2026-02-23) 19 commits
 - odb/source: make `begin_transaction()` function pluggable
 - odb/source: make `write_alternate()` function pluggable
 - odb/source: make `read_alternates()` function pluggable
 - odb/source: make `write_object_stream()` function pluggable
 - odb/source: make `write_object()` function pluggable
 - odb/source: make `freshen_object()` function pluggable
 - odb/source: make `for_each_object()` function pluggable
 - odb/source: make `read_object_stream()` function pluggable
 - odb/source: make `read_object_info()` function pluggable
 - odb/source: make `close()` function pluggable
 - odb/source: make `reprepare()` function pluggable
 - odb/source: make `free()` function pluggable
 - odb/source: introduce source type for robustness
 - odb: move reparenting logic into respective subsystems
 - odb: embed base source in the "files" backend
 - odb: introduce "files" source
 - odb: split `struct odb_source` into separate header
 - Merge branch 'ps/object-info-bits-cleanup' into ps/odb-sources
 - Merge branch 'ps/odb-for-each-object' into ps/odb-sources

 The object source API is getting restructured to allow plugging new
 backends.

 Being reviewed.
 cf. <aaidbdpkpH7tfn9x@denethor> 
 source: <20260223-b4-pks-odb-source-pluggable-v1-0-253bac1db598@pks.im>


* ds/for-each-repo-w-worktree (2026-03-03) 4 commits
 - for-each-repo: simplify passing of parameters
 - for-each-repo: work correctly in a worktree
 - run-command: extract sanitize_repo_env helper
 - for-each-repo: test outside of repo context

 "git for-each-repo" started from a secondary worktree did not work
 as expected, which has been corrected.

 Will merge to 'next'?
 source: <pull.2056.v4.git.1772559114.gitgitgadget@gmail.com>


* jh/alias-i18n-fixes (2026-03-03) 5 commits
  (merged to 'next' on 2026-03-03 at d4347fab01)
 + doc: fix list continuation in alias.adoc
  (merged to 'next' on 2026-03-02 at 914bcef227)
 + git, help: fix memory leaks in alias listing
 + alias: treat empty subsection [alias ""] as plain [alias]
 + doc: fix list continuation in alias subsection example
 + Merge branch 'jh/alias-i18n' into jh/alias-i18n-fixes

 Further update to the i18n alias support to avoid regressions.

 Will merge to 'master'.
 source: <20260226205339.1535482-1-jonatan@jontes.page>
 source: <20260303151238.1000191-1-jonatan@jontes.page>


* lc/rebase-trailer (2026-02-23) 5 commits
 - rebase: support --trailer
 - commit, tag: parse --trailer with OPT_STRVEC
 - trailer: append trailers without fork/exec
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.

 Expecting a (hopefully small and final) reroll?
 cf. <e555e29f-57e3-4192-98f3-380181c81fd2@gmail.com>
 cf. <824809c3-72ac-43fb-8a93-4f48e0727e6a@gmail.com>
 cf. <dbaf6ea5-8a08-42c0-8184-16dcf40207dd@gmail.com>
 source: <20260224070552.148591-1-me@linux.beauty>


* mf/format-patch-cover-letter-format (2026-02-27) 5 commits
 - docs: add usage for the cover-letter fmt feature
 - format-patch: add commitListFormat config
 - format-patch: add ability to use alt cover format
 - format-patch: move cover letter summary generation
 - pretty.c: add %(count) and %(total) placeholders

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Will merge to 'next'?
 source: <cover.1772232373.git.mroik@delayed.space>


* sp/send-email-validate-charset (2026-02-28) 1 commit
 - send-email: validate charset name in 8bit encoding prompt

 "git send-email" has learned to be a bit more careful when it
 accepts charset to use from the end-user, to avoid 'y' (mistaken
 'yes' when expecting a charset like 'UTF-8') and other nonsense.

 Will merge to 'next'?
 source: <20260228112210.270273-1-shreyanshpaliwalcmsmn@gmail.com>


* pt/fsmonitor-linux (2026-03-04) 12 commits
 - fsmonitor: convert shown khash to strset in do_handle_client
 - fsmonitor: add tests for Linux
 - fsmonitor: add timeout to daemon stop command
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
 - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 source: <pull.2147.v8.git.git.1772648125.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
  (merged to 'next' on 2026-02-27 at d6ebc97cb1)
 + t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Will merge to 'master'.
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-02-28) 1 commit
 - help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Expecting a (hopefully small and final) reroll to update tests?
 cf. <xmqqwlzu43rh.fsf@gitster.g>
 source: <20260228104654.80831-2-amishhhaaaa@gmail.com>


* ty/setup-error-tightening (2026-03-04) 1 commit
 - setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.

 Will merge to 'next'?
 source: <20260304141526.37764-1-a3205153416@gmail.com>


* kh/format-patch-noprefix-is-boolean (2026-03-01) 3 commits
  (merged to 'next' on 2026-03-03 at 54bc051969)
 + doc: diff-options.adoc: make *.noprefix split translatable
  (merged to 'next' on 2026-02-26 at fcf4773929)
 + doc: diff-options.adoc: show format.noprefix for format-patch
 + format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.

 Will merge to 'master'.
 source: <V2_CV_format.noprefix_boolean.421@msgid.xyz>
 source: <better_for_translators.424@msgid.xyz>


* dt/send-email-client-cert (2026-03-01) 1 commit
 - send-email: add client certificate options

 "git send-email" learns to support use of client-side certificates.

 Will merge to 'next'?
 source: <20260302032048.260209-2-dxdt@dev.snart.me>


* ps/refs-for-each (2026-02-23) 18 commits
  (merged to 'next' on 2026-02-27 at ec9e0a36ff)
 + refs: replace `refs_for_each_fullref_in()`
 + refs: replace `refs_for_each_namespaced_ref()`
 + refs: replace `refs_for_each_glob_ref()`
 + refs: replace `refs_for_each_glob_ref_in()`
 + refs: replace `refs_for_each_rawref_in()`
 + refs: replace `refs_for_each_rawref()`
 + refs: replace `refs_for_each_ref_in()`
 + refs: improve verification for-each-ref options
 + refs: generalize `refs_for_each_fullref_in_prefixes()`
 + refs: generalize `refs_for_each_namespaced_ref()`
 + refs: speed up `refs_for_each_glob_ref_in()`
 + refs: introduce `refs_for_each_ref_ext`
 + refs: rename `each_ref_fn`
 + refs: rename `do_for_each_ref_flags`
 + refs: move `do_for_each_ref_flags` further up
 + refs: move `refs_head_ref_namespaced()`
 + refs: remove unused `refs_for_each_include_root_ref()`
 + Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each

 Code refactoring around refs-for-each-* API functions.

 Will merge to 'master'.
 cf. <CAOLa=ZTz-9JKHC3H8tSwP=bDvX2mNA-erjr5Ni6Tiq4cm4WmLg@mail.gmail.com>
 source: <20260223-pks-refs-for-each-unification-v2-0-515d48c8087b@pks.im>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 cf. <405b0d34-c2ad-498d-93a1-2e7925ae11f1@gmail.com>
 cf. <c2048ddf-ced4-425d-af6e-14e9442e9d99@gmail.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
 - wt-status: use hash_algo from local repository instead of global the_hash_algo
 - wt-status: replace uses of the_repository with local repository instances
 - wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'next'?
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-23) 4 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Needs review.
 cf. <xmqq5x7nknrd.fsf@gitster.g>
 source: <pull.2008.v5.git.1771856405.gitgitgadget@gmail.com>


* ar/config-hooks (2026-03-02) 10 commits
  (merged to 'next' on 2026-03-03 at 5a4be22ab6)
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
  (merged to 'next' on 2026-02-27 at 6a04cca28e)
 + hook: add -z option to "git hook list"
 + hook: allow out-of-repo 'git hook' invocations
 + hook: allow event = "" to overwrite previous values
 + hook: allow disabling config hooks
 + hook: include hooks from the config
 + hook: add "git hook list" command
 + hook: run a list of hooks to prepare for multihook support
 + hook: add internal state alloc/free callbacks
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.

 Will merge to 'master'.
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* ar/parallel-hooks (2026-02-21) 11 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - hook: refactor hook_config_cache from strmap to named struct
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260222002904.1879356-1-adrian.ratiu@collabora.com>


* ng/submodule-default-remote (2026-03-03) 1 commit
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Comments?
 source: <20260303234044.105157-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-03-02) 13 commits
  (merged to 'next' on 2026-03-02 at f5aabac117)
 + builtin/receive-pack: avoid spinning no-op sideband async threads
  (merged to 'next' on 2026-02-22 at 4aa543f115)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + run-command: poll child input in addition to output
 + hook: add jobs option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: allow separate std[out|err] streams
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add helper for pp child states
 + t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Will merge to 'master'.
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>
 source: <20260302191704.1814567-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2026-03-02) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Needs review.
 source: <pull.2120.v2.git.git.1772463265865.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
  (merged to 'next' on 2026-03-02 at c7251cc68f)
 + Documentation: update add --force option + ignore=all config
 + tests: fix existing tests when add an ignore=all submodule
 + tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 + read-cache: submodule add need --force given ignore=all configuration
 + read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Will merge to 'master'.
 cf. <xmqq5x7rvyn4.fsf@gitster.g>
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
  (merged to 'next' on 2026-02-27 at 2b2e3a1fa9)
 + environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 + environment: stop using core.sparseCheckout globally
 + environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Will merge to 'master'.
 cf. <CAP8UFD2Rz3NMrTayi9yjRk4-51tStaLWKeBVB9RaJMWmiBLqrQ@mail.gmail.com>
 source: <cover.1771258573.git.belkid98@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'next'?
 source: <cover.1771959555.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
  (merged to 'next' on 2026-03-04 at 99dc92c08e)
 + object-file-convert: always make sure object ID algo is valid
 + rust: add a small wrapper around the hashfile code
 + rust: add a new binary object map format
 + rust: add functionality to hash an object
 + rust: add a build.rs script for tests
 + rust: fix linking binaries with cargo
 + hash: expose hash context functions to Rust
 + write-or-die: add an fsync component for the object map
 + csum-file: define hashwrite's count as a uint32_t
 + rust: add additional helpers for ObjectID
 + hash: add a function to look up hash algo structs
 + rust: add a hash algorithm abstraction
 + rust: add a ObjectID struct
 + hash: use uint32_t for object_id algorithm
 + conversion: don't crash when no destination algo
 + repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Will merge to 'master'.
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


* hn/status-compare-with-push (2026-03-04) 4 commits
 - status: clarify how status.compareBranches deduplicates
  (merged to 'next' on 2026-02-26 at 1c11b8819a)
 + status: add status.compareBranches config for multiple branch comparisons
 + refactor format_branch_comparison in preparation
 + Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.

 Will merge to 'next' and then to 'master'?
 source: <pull.2138.v30.git.git.1772102022.gitgitgadget@gmail.com>
 source: <pull.2138.v31.git.git.1772627131.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 . receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 May not be a good idea after all.  A controlled death would be OK, though.
 cf. <xmqqbjjgiz3a.fsf@gitster.g>
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* kh/alias-i18n-docfix (2026-02-23) 1 commit
 . doc: config: fix list continuation in alias section

 Doc mark-up fix.

 Superseded by jh/alias-i18n-fixes.
 source: <followup-alias-i18n.3e0@msgid.xyz>


* bc/do-not-reorder-packs-during-fsck (2026-02-22) 1 commit
 . fsck: do not loop infinitely when processing packs

 Access to packfiles during fsck would reorder the mru list of
 packs, which causes the fsck to loop forever going over the list.

 Supersided by ps/fsck-stream-from-the-right-object-instance.
 source: <20260222183710.2963424-1-sandals@crustytoothpaste.net>


* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Was expecting review responses for too long.
 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 18%]

* Re: What's cooking in git.git (Mar 2026, #01)
  @ 2026-03-03 18:43 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-03 18:43 UTC (permalink / raw)
  To: Derrick Stolee; +Cc: git

Derrick Stolee <stolee@gmail.com> writes:

> On 3/2/2026 10:15 PM, Junio C Hamano wrote:
>
>> * ds/for-each-repo-w-worktree (2026-03-02) 4 commits
>>  - for-each-repo: simplify passing of parameters
>>  - for-each-repo: work correctly in a worktree
>>  - run-command: extract clear_local_repo_env helper
>>  - for-each-repo: test outside of repo context
>> 
>>  "git for-each-repo" started from a secondary worktree did not work
>>  as expected, which has been corrected.
>> 
>>  Will merge to 'next'?
>>  source: <pull.2056.v3.git.1772465805.gitgitgadget@gmail.com>
>
> I just posted v4 with some final polish [1].

Yup, I saw it and it made sense (including the chocie of where 'int
i' is removed).  Queued.
'
Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Mar 2026, #01)
@ 2026-03-03  3:15 17% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-03-03  3:15 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* ag/http-netrc-tests (2026-01-06) 1 commit
  (merged to 'next' on 2026-02-22 at acae2989d4)
 + t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.
 source: <20260107074724.13165-1-git@ashlesh.me>


* jt/object-file-use-container-of (2026-02-22) 2 commits
  (merged to 'next' on 2026-02-22 at 309c995771)
 + object-file.c: avoid container_of() of a NULL container
  (merged to 'next' on 2026-02-20 at 7a30cb262f)
 + object-file: use `container_of()` to convert from base types

 Code clean-up.
 source: <20260218210120.1146078-1-jltobler@gmail.com>
 source: <xmqqh5r8r0to.fsf_-_@gitster.g>


* kh/doc-am-xref (2026-02-09) 4 commits
  (merged to 'next' on 2026-02-22 at 920d0c2836)
 + doc: am: fill out hook discussion
 + doc: am: add missing config am.messageId
 + doc: am: say that --message-id adds a trailer
 + doc: am: normalize git(1) command links

 Doc update.
 source: <doc_am_gitlinks_and_am.messageId.321@msgid.xyz>


* kh/doc-patch-id-4 (2026-02-14) 3 commits
  (merged to 'next' on 2026-02-22 at bfae23ac5e)
 + doc: patch-id: see also git-cherry(1)
 + doc: patch-id: add script example
 + doc: patch-id: emphasize multi-patch processing

 Doc update.
 source: <V2_CV_doc_patch-id_4.371@msgid.xyz>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at a6cd49271f)
 + meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* ps/object-info-bits-cleanup (2026-02-11) 5 commits
  (merged to 'next' on 2026-02-22 at 4d702cbecc)
 + odb: convert `odb_has_object()` flags into an enum
 + odb: convert object info flags into an enum
 + odb: drop gaps in object info flag values
 + builtin/fsck: fix flags passed to `odb_has_object()`
 + builtin/backfill: fix flags passed to `odb_has_object()`
 (this branch is used by ps/odb-sources.)

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.
 source: <20260212-b4-pks-read-object-info-flags-v2-0-3bfa9bb149ef@pks.im>


* ps/odb-for-each-object (2026-01-26) 16 commits
  (merged to 'next' on 2026-02-22 at 80178ecd0d)
 + odb: drop unused `for_each_{loose,packed}_object()` functions
 + reachable: convert to use `odb_for_each_object()`
 + builtin/pack-objects: use `packfile_store_for_each_object()`
 + odb: introduce mtime fields for object info requests
 + treewide: drop uses of `for_each_{loose,packed}_object()`
 + treewide: enumerate promisor objects via `odb_for_each_object()`
 + builtin/fsck: refactor to use `odb_for_each_object()`
 + odb: introduce `odb_for_each_object()`
 + packfile: introduce function to iterate through objects
 + packfile: extract function to iterate through objects of a store
 + object-file: introduce function to iterate through objects
 + object-file: extract function to read object info from path
 + odb: fix flags parameter to be unsigned
 + odb: rename `FOR_EACH_OBJECT_*` flags
 + Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 + Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object
 (this branch is used by ps/odb-sources.)

 Revamp object enumeration API around odb.
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/receive-pack-shallow-optim (2026-02-16) 3 commits
  (merged to 'next' on 2026-02-22 at ad6abc1ef8)
 + commit: use commit graph in `lookup_commit_reference_gently()`
 + commit: make `repo_parse_commit_no_graph()` more robust
 + commit: avoid parsing non-commits in `lookup_commit_reference_gently()`

 The code to accept shallow "git push" has been optimized.
 source: <20260216-b4-pks-receive-pack-optimize-shallow-v1-0-e98886daff2b@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-22 at f44d607586)
 + subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* pw/meson-doc-mergetool (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-22 at dfdfff02f8)
 + meson: fix building mergetool docs

 Update build precedure for mergetool documentation in meson-based builds.
 source: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>


* ty/symlinks-use-unsigned-for-bitset (2026-02-16) 1 commit
  (merged to 'next' on 2026-02-22 at 6546dc5cf2)
 + symlinks: use unsigned int for flags

 Code clean-up.
 source: <20260216172028.140525-1-a3205153416@gmail.com>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at 094113b392)
 + gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.
 source: <20260204152306.1767112-2-ukleinek@kernel.org>

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

* fp/t3310-test-path-is-helpers (2026-02-27) 1 commit
 - t3310: replace test -f/-d with test_path_is_file/test_path_is_dir

 Test clean-up.

 Will merge to 'next'.
 source: <20260228005939.9012-1-francescopaparatto@gmail.com>


* jc/neuter-sideband-fixup (2026-03-02) 8 commits
 - sideband: conditional documentation fix
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: drop 'default' configuration
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Try to resurrect and reboot a stalled "avoid sending risky escape
 sequences taken from sideband" topic.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>
 source: <20260302181149.3502811-1-gitster@pobox.com>


* mm/diff-no-index-find-object (2026-02-28) 1 commit
 - diff: fix crash with --find-object outside repository

 "git diff --no-index --find-object=<object-name>" outside a
 repository of course wouldn't be able to find the object and died
 while parsing the command line, which is made to die in a bit more
 user-friendly way.

 Will merge to 'next'.
 source: <pull.2057.git.1772310676438.gitgitgadget@gmail.com>


* ps/ci-reduce-gitlab-envsize (2026-03-02) 1 commit
 - ci: unset GITLAB_FEATURES envvar to not bust xargs(1) limits

 CI fix.

 Will merge to 'next'.
 source: <20260302-pks-msvc-meson-xargs-v1-1-8e42abd879ce@pks.im>


* pt/fsmonitor-watchman-sample-fix (2026-02-28) 1 commit
 - fsmonitor-watchman: fix variable reference and remove redundant code

 Fix typo-induced breakages in fsmonitor-watchman sample hook.

 Will merge to 'next'.
 source: <pull.2180.v2.git.git.1772300277959.gitgitgadget@gmail.com>


* sk/oidmap-clear-with-custom-free-func (2026-03-02) 5 commits
 - sequencer: use oidmap_clear_with_free() for string_entry cleanup
 - odb: use oidmap_clear_with_free() to release replace_map entries
 - list-objects-filter: use oidmap_clear_with_free() for cleanup
 - builtin/rev-list: migrate missing_objects cleanup to oidmap_clear_with_free()
 - oidmap: make entry cleanup explicit in oidmap_clear

 A bit of OIDmap API enhancement and cleanup.

 Comments?
 source: <20260302200018.75731-1-kuforiji98@gmail.com>


* ss/test-that-that-typofix (2026-03-02) 1 commit
 - t: fix "that that" typo in lib-unicode-nfc-nfd.sh

 Typofix in t/.

 Will merge to 'next'.
 source: <20260302192627.83631-1-r.siddharth.shrimali@gmail.com>

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

* jk/repo-structure-cleanup (2026-02-23) 1 commit
  (merged to 'next' on 2026-03-02 at e1647839fa)
 + repo: remove unnecessary variable shadow

 Code clean-up.

 Will merge to 'master'.
 source: <20260223135248.127935-1-jayatheerthkulkarni2005@gmail.com>


* lp/diff-stat-utf8-display-width-fix (2026-02-27) 2 commits
  (merged to 'next' on 2026-03-02 at b979797314)
 + t4052: test for diffstat width when prefix contains ANSI escape codes
 + diff: handle ANSI escape codes in prefix when calculating diffstat width

 "git log --graph --stat" did not count the display width of colored
 graph part of its own output correctly, which has been corrected.

 Will merge to 'master'.
 source: <cover.1772226209.git.lorenzo.pegorari2002@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-02-27) 2 commits
 - upload-pack: reduce lock contention when writing packfile data
 - upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Under discussion.
 cf. <20260227193758.GA2931515@coredump.intra.peff.net>
 source: <20260227-pks-upload-pack-write-contention-v1-0-7166fe255704@pks.im>


* rs/parse-options-duplicated-long-options (2026-02-28) 2 commits
 - parseopt: check for duplicate long names and numerical options
 - pack-objects: remove duplicate --stdin-packs definition

 The parse-options API learned to notice an options[] array with
 duplicated long options.

 Will merge to 'next'.
 source: <1e7de0f7-a712-465f-b3c9-5dbe78132d3f@web.de>
 source: <7693799a-91a2-480a-ae3e-29f8eed5b55a@web.de>


* jt/repo-structure-extrema (2026-03-02) 6 commits
 - builtin/repo: find tree with most entries
 - builtin/repo: find commit with most parents
 - builtin/repo: add OID annotations to table output
 - builtin/repo: collect largest inflated objects
 - builtin/repo: add helper for printing keyvalue output
 - builtin/repo: update stats for each object

 "git repo structure" command learns to report maximum values on
 various aspects of objects it inspects.

 Will merge to 'next'?
 source: <20260302214526.2034279-1-jltobler@gmail.com>


* ps/fsck-stream-from-the-right-object-instance (2026-02-23) 4 commits
  (merged to 'next' on 2026-02-27 at b378558c1a)
 + pack-check: fix verification of large objects
 + packfile: expose function to read object stream for an offset
 + object-file: adapt `stream_object_signature()` to take a stream
 + t/helper: improve "genrandom" test helper

 "fsck" iterates over packfiles and its access to pack data caused
 the list to be permuted, which caused it to loop forever; the code
 to access pack data by "fsck" has been updated to avoid this.

 Will merge to 'master'.
 source: <20260223-pks-fsck-fix-v2-0-99a0714ea3bd@pks.im>


* ps/odb-sources (2026-02-23) 19 commits
 - odb/source: make `begin_transaction()` function pluggable
 - odb/source: make `write_alternate()` function pluggable
 - odb/source: make `read_alternates()` function pluggable
 - odb/source: make `write_object_stream()` function pluggable
 - odb/source: make `write_object()` function pluggable
 - odb/source: make `freshen_object()` function pluggable
 - odb/source: make `for_each_object()` function pluggable
 - odb/source: make `read_object_stream()` function pluggable
 - odb/source: make `read_object_info()` function pluggable
 - odb/source: make `close()` function pluggable
 - odb/source: make `reprepare()` function pluggable
 - odb/source: make `free()` function pluggable
 - odb/source: introduce source type for robustness
 - odb: move reparenting logic into respective subsystems
 - odb: embed base source in the "files" backend
 - odb: introduce "files" source
 - odb: split `struct odb_source` into separate header
 - Merge branch 'ps/object-info-bits-cleanup' into ps/odb-sources
 - Merge branch 'ps/odb-for-each-object' into ps/odb-sources

 The object source API is getting restructured to allow plugging new
 backends.

 Comments?
 source: <20260223-b4-pks-odb-source-pluggable-v1-0-253bac1db598@pks.im>


* ds/for-each-repo-w-worktree (2026-03-02) 4 commits
 - for-each-repo: simplify passing of parameters
 - for-each-repo: work correctly in a worktree
 - run-command: extract clear_local_repo_env helper
 - for-each-repo: test outside of repo context

 "git for-each-repo" started from a secondary worktree did not work
 as expected, which has been corrected.

 Will merge to 'next'?
 source: <pull.2056.v3.git.1772465805.gitgitgadget@gmail.com>


* jh/alias-i18n-fixes (2026-02-26) 4 commits
  (merged to 'next' on 2026-03-02 at 914bcef227)
 + git, help: fix memory leaks in alias listing
 + alias: treat empty subsection [alias ""] as plain [alias]
 + doc: fix list continuation in alias subsection example
 + Merge branch 'jh/alias-i18n' into jh/alias-i18n-fixes

 Further update to the i18n alias support to avoid regressions.

 Will merge to 'master'.
 source: <20260226205339.1535482-1-jonatan@jontes.page>


* lc/rebase-trailer (2026-02-23) 5 commits
 - rebase: support --trailer
 - commit, tag: parse --trailer with OPT_STRVEC
 - trailer: append trailers without fork/exec
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.

 Expecting a (hopefully small and final) reroll?
 cf. <e555e29f-57e3-4192-98f3-380181c81fd2@gmail.com>
 source: <20260224070552.148591-1-me@linux.beauty>


* mf/format-patch-cover-letter-format (2026-02-27) 5 commits
 - docs: add usage for the cover-letter fmt feature
 - format-patch: add commitListFormat config
 - format-patch: add ability to use alt cover format
 - format-patch: move cover letter summary generation
 - pretty.c: add %(count) and %(total) placeholders

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Will merge to 'next'?
 source: <cover.1772232373.git.mroik@delayed.space>


* sp/send-email-validate-charset (2026-02-28) 1 commit
 - send-email: validate charset name in 8bit encoding prompt

 "git send-email" has learned to be a bit more careful when it
 accepts charset to use from the end-user, to avoid 'y' (mistaken
 'yes' when expecting a charset like 'UTF-8') and other nonsense.

 Will merge to 'next'?
 source: <20260228112210.270273-1-shreyanshpaliwalcmsmn@gmail.com>


* cx/fetch-display-ubfix (2026-02-24) 1 commit
  (merged to 'next' on 2026-02-26 at ebd1da8b75)
 + fetch: fix wrong evaluation order in URL trailing-slash trimming

 Undefined-behaviour fix in "git fetch".

 Will merge to 'master'.
 source: <pull.2211.git.git.1771984857879.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-02-25) 10 commits
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: add tests for Linux
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: deduplicate settings logic for Unix platforms
 - fsmonitor: deduplicate IPC path logic for Unix platforms
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 cf. <xmqq5x7j5xje.fsf@gitster.g>
 source: <pull.2147.v7.git.git.1772065643.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
  (merged to 'next' on 2026-02-27 at d6ebc97cb1)
 + t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Will merge to 'master'.
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-02-28) 1 commit
 - help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Comments?
 cf. <xmqqwlzu43rh.fsf@gitster.g>
 source: <20260228104654.80831-2-amishhhaaaa@gmail.com>


* lg/t2004-test-path-is-helpers (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at c5862e1b3d)
 + t2004: use test_path_is_file instead of test -f

 Test code clean-up.

 Will merge to 'master'.
 source: <pull.2049.git.1771694893208.gitgitgadget@gmail.com>


* ps/simplify-normalize-path-copy-len (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at ce7c45c6fa)
 + path: factor out skip_slashes() in normalize_path_copy_len()

 Code clean-up.

 Will merge to 'master'.
 source: <20260221110511.1592-2-pushkarkumarsingh1970@gmail.com>


* sc/pack-redundant-leakfix (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at b2fda8839e)
 + pack-redundant: fix memory leak when open_pack_index() fails

 Leakfix.

 Will merge to 'master'.
 source: <20260221103900.41740-1-sahityajb@gmail.com>


* ty/setup-error-tightening (2026-02-22) 1 commit
 . setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.

 Kicked out of the tree for now, due to CI breakage.
 cf. <xmqqpl5rumy0.fsf@gitster.g>
 source: <20260223074410.917523-1-a3205153416@gmail.com>


* bk/mailmap-wo-the-repository (2026-02-19) 2 commits
  (merged to 'next' on 2026-02-26 at f7e3afc1ff)
 + mailmap: drop global config variables
 + mailmap: stop using the_repository

 Wean the mailmap code off of the_repository dependency.

 Will merge to 'master'.
 source: <20260220060442.29469-1-bkkaracay@gmail.com>


* kh/format-patch-noprefix-is-boolean (2026-03-01) 3 commits
 - doc: diff-options.adoc: make *.noprefix split translatable
  (merged to 'next' on 2026-02-26 at fcf4773929)
 + doc: diff-options.adoc: show format.noprefix for format-patch
 + format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.

 Will merge to 'next' and then to 'master'.
 source: <V2_CV_format.noprefix_boolean.421@msgid.xyz>
 source: <better_for_translators.424@msgid.xyz>


* pw/no-more-NULL-means-current-worktree (2026-02-19) 2 commits
  (merged to 'next' on 2026-02-26 at 281f28b140)
 + path: remove repository argument from worktree_git_path()
 + wt-status: avoid passing NULL worktree

 API clean-up for the worktree subsystem.

 Will merge to 'master'.
 cf. <d5866041-3e2f-4f5e-a8d1-725fd3eac2e2@gmail.com>
 source: <cover.1771511192.git.phillip.wood@dunelm.org.uk>


* cs/subtree-split-fixes (2026-02-17) 3 commits
  (merged to 'next' on 2026-02-25 at 3824d2c52d)
 + contrib/subtree: process out-of-prefix subtrees
 + contrib/subtree: test history depth
 + contrib/subtree: capture additional test-cases

 An earlier attempt to optimize "git subtree" discarded too much
 relevant histories, which has been corrected.

 Will merge to 'master'.
 source: <20260217-cs-subtree-remove-optimization-v2-0-4299e71a30c6@howdoi.land>


* dt/send-email-client-cert (2026-03-01) 1 commit
 - send-email: add client certificate options

 "git send-email" learns to support use of client-side certificates.

 Will merge to 'next'?
 source: <20260302032048.260209-2-dxdt@dev.snart.me>


* en/merge-ort-almost-wo-the-repository (2026-02-19) 6 commits
  (merged to 'next' on 2026-02-26 at 4c07a66173)
 + replay: prevent the_repository from coming back
 + merge-ort: prevent the_repository from coming back
 + merge-ort: replace the_hash_algo with opt->repo->hash_algo
 + merge-ort: replace the_repository with opt->repo
 + merge-ort: pass repository to write_tree()
 + merge,diff: remove the_repository check before prefetching blobs

 Mark the marge-ort codebase to prevent more uses of the_repository
 from getting added.

 Will merge to 'master'.
 cf. <143ab1c8-9f07-4df7-8200-69b5a78a0351@gmail.com>
 cf. <aZ12rYYwbh1fvrnE@pks.im>
 source: <pull.2048.v3.git.1771718393.gitgitgadget@gmail.com>


* jr/apply-directory-normalize (2026-02-17) 1 commit
  (merged to 'next' on 2026-02-26 at 588d44696d)
 + apply: normalize path in --directory argument

 "git apply --directory=./un/../normalized/path" now normalizes the
 given path before using it.

 Will merge to 'master'.
 source: <pull.2198.v2.git.git.1771373732749.gitgitgadget@gmail.com>


* lo/repo-leftover-bits (2026-02-25) 9 commits
  (merged to 'next' on 2026-02-26 at 962fc48d45)
 + Documentation/git-repo: capitalize format descriptions
 + Documentation/git-repo: replace 'NUL' with '_NUL_'
 + t1901: adjust nul format output instead of expected value
 + t1900: rename t1900-repo to t1900-repo-info
 + repo: rename struct field to repo_info_field
 + repo: replace get_value_fn_for_key by get_repo_info_field
 + repo: rename repo_info_fields to repo_info_field
 + CodingGuidelines: instruct to name arrays in singular
 + Merge branch 'lo/repo-info-keys' into lo/repo-leftover-bits

 Clean-up the code around "git repo info" command.

 Will merge to 'master'.
 source: <20260225183559.79303-1-lucasseikioshiro@gmail.com>


* ps/maintenance-geometric-default (2026-02-24) 8 commits
  (merged to 'next' on 2026-02-26 at 8ab085f657)
 + builtin/maintenance: use "geometric" strategy by default
 + t7900: prepare for switch of the default strategy
 + t6500: explicitly use "gc" strategy
 + t5510: explicitly use "gc" strategy
 + t5400: explicitly use "gc" strategy
 + t34xx: don't expire reflogs where it matters
 + t: disable maintenance where we verify object database structure
 + t: fix races caused by background maintenance

 "git maintenance" starts using the "geometric" strategy by default.

 Will merge to 'master'.
 source: <20260224-b4-pks-maintenance-default-geometric-strategy-v2-0-8657338c6fa1@pks.im>


* ps/refs-for-each (2026-02-23) 18 commits
  (merged to 'next' on 2026-02-27 at ec9e0a36ff)
 + refs: replace `refs_for_each_fullref_in()`
 + refs: replace `refs_for_each_namespaced_ref()`
 + refs: replace `refs_for_each_glob_ref()`
 + refs: replace `refs_for_each_glob_ref_in()`
 + refs: replace `refs_for_each_rawref_in()`
 + refs: replace `refs_for_each_rawref()`
 + refs: replace `refs_for_each_ref_in()`
 + refs: improve verification for-each-ref options
 + refs: generalize `refs_for_each_fullref_in_prefixes()`
 + refs: generalize `refs_for_each_namespaced_ref()`
 + refs: speed up `refs_for_each_glob_ref_in()`
 + refs: introduce `refs_for_each_ref_ext`
 + refs: rename `each_ref_fn`
 + refs: rename `do_for_each_ref_flags`
 + refs: move `do_for_each_ref_flags` further up
 + refs: move `refs_head_ref_namespaced()`
 + refs: remove unused `refs_for_each_include_root_ref()`
 + Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each

 Code refactoring around refs-for-each-* API functions.

 Will merge to 'master'.
 cf. <CAOLa=ZTz-9JKHC3H8tSwP=bDvX2mNA-erjr5Ni6Tiq4cm4WmLg@mail.gmail.com>
 source: <20260223-pks-refs-for-each-unification-v2-0-515d48c8087b@pks.im>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 cf. <405b0d34-c2ad-498d-93a1-2e7925ae11f1@gmail.com>
 cf. <c2048ddf-ced4-425d-af6e-14e9442e9d99@gmail.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/tree-diff-wo-the-repository (2026-02-20) 1 commit
  (merged to 'next' on 2026-02-26 at c5762ee063)
 + tree-diff: remove the usage of the_hash_algo global

 The last uses of the_repository in "tree-diff.c" have been
 eradicated.

 Will merge to 'master'.
 source: <20260220175331.1250726-1-shreyanshpaliwalcmsmn@gmail.com>


* dk/meson-regen-config-list (2026-02-24) 1 commit
  (merged to 'next' on 2026-02-26 at 64ea932d59)
 + build: regenerate config-list.h when Documentation changes

 Fix dependency screw-up in meson-based builds.

 Will merge to 'master'.
 source: <4ef96c6bbf698a08df1df87b7cb053b6d0d00822.1771943954.git.ben.knoble+github@gmail.com>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
 - wt-status: use hash_algo from local repository instead of global the_hash_algo
 - wt-status: replace uses of the_repository with local repository instances
 - wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'next'?
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-23) 4 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Needs review.
 cf. <xmqq5x7nknrd.fsf@gitster.g>
 source: <pull.2008.v5.git.1771856405.gitgitgadget@gmail.com>


* hy/diff-lazy-fetch-with-break-fix (2026-02-23) 1 commit
  (merged to 'next' on 2026-02-25 at afe07ad86c)
 + diffcore-break: avoid segfault with freed entries

 A prefetch call can be triggered to access a stale diff_queue entry
 after diffcore-break breaks a filepair into two and freed the
 original entry that is no longer used, leading to a segfault, which
 has been corrected.

 Will merge to 'master'.
 source: <20260224061329.60364-2-hanyang.tony@bytedance.com>


* ds/config-list-with-type (2026-02-23) 13 commits
  (merged to 'next' on 2026-02-26 at cdaee07fde)
 + config: use an enum for type
 + config: restructure format_config()
 + config: format colors quietly
 + color: add color_parse_quietly()
 + config: format expiry dates quietly
 + config: format paths gently
 + config: format bools or strings in helper
 + config: format bools or ints gently
 + config: format bools gently
 + config: format int64s gently
 + config: make 'git config list --type=<X>' work
 + config: add 'gently' parameter to format_config()
 + config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.

 Will merge to 'master'.
 source: <pull.2044.v3.git.1771849615.gitgitgadget@gmail.com>


* rr/gitweb-mobile (2026-02-16) 5 commits
  (merged to 'next' on 2026-02-26 at b7e4c26f73)
 + gitweb: let page header grow on mobile for long wrapped project names
 + gitweb: fix mobile footer overflow by wrapping text and clearing floats
 + gitweb: fix mobile page overflow across log/commit/blob/diff views
 + gitweb: prevent project search bar from overflowing on mobile
 + gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.

 Will merge to 'master'.
 source: <pull.2043.v2.git.1771257211.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-19) 1 commit
  (merged to 'next' on 2026-02-26 at 913be932b0)
 + osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).

 Will merge to 'master'.
 source: <pull.2046.v4.git.1771551540816.gitgitgadget@gmail.com>


* aa/add-p-no-auto-advance (2026-02-14) 4 commits
  (merged to 'next' on 2026-02-25 at ce27f94bc2)
 + add-patch: allow interfile navigation when selecting hunks
 + add-patch: allow all-or-none application of patches
 + add-patch: modify patch_update_file() signature
 + interactive -p: add new `--auto-advance` flag

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Will merge to 'master'.
 source: <cover.1771066252.git.abrahamadekunle50@gmail.com>


* kn/ref-location (2026-02-25) 6 commits
  (merged to 'next' on 2026-02-26 at e87adbdb69)
 + refs: add GIT_REFERENCE_BACKEND to specify reference backend
 + refs: allow reference location in refstorage config
 + refs: receive and use the reference storage payload
 + refs: move out stub modification to generic layer
 + refs: extract out `refs_create_refdir_stubs()`
 + setup: don't modify repo in `create_reference_database()`

 Allow the directory in which reference backends store their data to
 be specified.

 Will merge to 'master'.
 source: <20260225-kn-alternate-ref-dir-v9-0-3fe118e40e28@gmail.com>


* ar/config-hooks (2026-03-02) 10 commits
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
  (merged to 'next' on 2026-02-27 at 6a04cca28e)
 + hook: add -z option to "git hook list"
 + hook: allow out-of-repo 'git hook' invocations
 + hook: allow event = "" to overwrite previous values
 + hook: allow disabling config hooks
 + hook: include hooks from the config
 + hook: add "git hook list" command
 + hook: run a list of hooks to prepare for multihook support
 + hook: add internal state alloc/free callbacks
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.

 Will merge to 'next' and then to 'master'.
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* ar/parallel-hooks (2026-02-21) 11 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - hook: refactor hook_config_cache from strmap to named struct
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260222002904.1879356-1-adrian.ratiu@collabora.com>


* ng/submodule-default-remote (2026-02-28) 1 commit
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Seems to break t5526-fetch-submodules.sh when merged to 'seen'.
 cf. <CA+P7+xqC10D9a3zp7JO_yoK9Vjpg+xua7yH=fGXjApUYisTf4w@mail.gmail.com>
 source: <20260301025327.3845292-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-03-02) 13 commits
  (merged to 'next' on 2026-03-02 at f5aabac117)
 + builtin/receive-pack: avoid spinning no-op sideband async threads
  (merged to 'next' on 2026-02-22 at 4aa543f115)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + run-command: poll child input in addition to output
 + hook: add jobs option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: allow separate std[out|err] streams
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add helper for pp child states
 + t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Will merge to 'master'.
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>
 source: <20260302191704.1814567-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx9WehtwSMie53xzZUU7iK3JTrgUbVK48WM7S+LBi=jpkQ@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
  (merged to 'next' on 2026-03-02 at c7251cc68f)
 + Documentation: update add --force option + ignore=all config
 + tests: fix existing tests when add an ignore=all submodule
 + tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 + read-cache: submodule add need --force given ignore=all configuration
 + read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Will merge to 'master'.
 cf. <xmqq5x7rvyn4.fsf@gitster.g>
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* sp/shallow-deepen-relative-fix (2026-02-15) 2 commits
  (merged to 'next' on 2026-02-26 at 2183b3405e)
 + shallow: handling fetch relative-deepen
 + shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Will merge to 'master'.
 source: <pull.2121.v5.git.git.1771186316.gitgitgadget@gmail.com>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
  (merged to 'next' on 2026-02-27 at 2b2e3a1fa9)
 + environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 + environment: stop using core.sparseCheckout globally
 + environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Will merge to 'master'.
 cf. <CAP8UFD2Rz3NMrTayi9yjRk4-51tStaLWKeBVB9RaJMWmiBLqrQ@mail.gmail.com>
 source: <cover.1771258573.git.belkid98@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'next'?
 source: <cover.1771959555.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Will merge to 'next'?
 Message-Id: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


* hn/status-compare-with-push (2026-02-26) 3 commits
  (merged to 'next' on 2026-02-26 at 1c11b8819a)
 + status: add status.compareBranches config for multiple branch comparisons
 + refactor format_branch_comparison in preparation
 + Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.

 Will merge to 'master'.
 cf. <xmqqa4wv5xsb.fsf@gitster.g>
 source: <pull.2138.v30.git.git.1772102022.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 . receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 May not be a good idea after all.  A controlled death would be OK, though.
 cf. <xmqqbjjgiz3a.fsf@gitster.g>
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* kh/alias-i18n-docfix (2026-02-23) 1 commit
 . doc: config: fix list continuation in alias section

 Doc mark-up fix.

 Superseded by jh/alias-i18n-fixes.
 source: <followup-alias-i18n.3e0@msgid.xyz>


* bc/do-not-reorder-packs-during-fsck (2026-02-22) 1 commit
 . fsck: do not loop infinitely when processing packs

 Access to packfiles during fsck would reorder the mru list of
 packs, which causes the fsck to loop forever going over the list.

 Supersided by ps/fsck-stream-from-the-right-object-instance.
 source: <20260222183710.2963424-1-sandals@crustytoothpaste.net>


* js/neuter-sideband (2026-02-03) 6 commits
 . sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Was expecting review responses for too long.
 Superseded by 'jc/neuter-sideband-fixup', which reuses most of the patches.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 17%]

* Re: What's cooking in git.git (Feb 2026, #11)
  @ 2026-03-02 21:41 99%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-03-02 21:41 UTC (permalink / raw)
  To: Adrian Ratiu; +Cc: Patrick Steinhardt, git

Adrian Ratiu <adrian.ratiu@collabora.com> writes:

>>> It would be great if you could hold off merging this patch series for
>>> now. There's a rather steep performance regression in the "update" hook
>>> caused by this series, see also [1].
>>
>> Thanks.  I'll be expecting an incremental update for this.
>
> Fix posted:
>
> https://lore.kernel.org/git/20260302191704.1814567-1-adrian.ratiu@collabora.com/T/#t

Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Feb 2026, #11)
  @ 2026-03-02 19:07 99%   ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-03-02 19:07 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git, Adrian Ratiu

Patrick Steinhardt <ps@pks.im> writes:

> On Fri, Feb 27, 2026 at 05:02:12PM -0800, Junio C Hamano wrote:
>> * ar/run-command-hook-take-2 (2026-01-28) 12 commits
>>   (merged to 'next' on 2026-02-22 at 4aa543f115)
>>  + receive-pack: convert receive hooks to hook API
>>  + receive-pack: convert update hooks to new API
>>  + run-command: poll child input in addition to output
>>  + hook: add jobs option
>>  + reference-transaction: use hook API instead of run-command
>>  + transport: convert pre-push to hook API
>>  + hook: allow separate std[out|err] streams
>>  + hook: convert 'post-rewrite' hook in sequencer.c to hook API
>>  + hook: provide stdin via callback
>>  + run-command: add stdin callback for parallelization
>>  + run-command: add helper for pp child states
>>  + t1800: add hook output stream tests
>>  (this branch is used by ar/config-hooks and ar/parallel-hooks.)
>> 
>>  Use the hook API to replace ad-hoc invocation of hook scripts via
>>  the run_command() API.
>> 
>>  Will merge to 'master'.
>>  source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>
>
> It would be great if you could hold off merging this patch series for
> now. There's a rather steep performance regression in the "update" hook
> caused by this series, see also [1].

Thanks.  I'll be expecting an incremental update for this.



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Feb 2026, #11)
@ 2026-02-28  1:02 16% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-02-28  1:02 UTC (permalink / raw)
  To: git

Note.  I am trying not to issue a new issue of the "What's cooking"
report back-to-back, but on the other hand I do try to send one out
when a batch of topics graduate to the 'master' branch.

--

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.

We will be rewinding the tip of 'next' soonish.

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

* ap/use-test-seq-f-more (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at d847fcad1e)
 + t: use test_seq -f and pipes in a few more places

 Test clean-up.
 source: <20260218181019.1705160-1-aplattner@nvidia.com>


* db/doc-fetch-jobs-auto (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at 4e20a85963)
 + doc: fetch: document `--jobs=0` behavior

 Doc update.
 source: <pull.2047.git.1771443159369.gitgitgadget@gmail.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
  (merged to 'next' on 2026-02-20 at a386d47625)
 + checkout: tell "parse_remote_branch" which command is calling it
 + checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".
 source: <20260129190616.645471-1-gitster@pobox.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-20 at 1d5f62e778)
 + whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.
 source: <xmqqpl6hhm96.fsf@gitster.g>


* jh/alias-i18n (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-20 at b9a5c15c4f)
 + completion: fix zsh alias listing for subsection aliases
 + alias: support non-alphanumeric names via subsection syntax
 + alias: prepare for subsection aliases
 + help: use list_aliases() for alias listing
 (this branch is used by jh/alias-i18n-fixes and kh/alias-i18n-docfix.)

 Extend the alias configuration syntax to allow aliases using
 characters outside ASCII alphanumeric (plus '-').
 source: <20260218215737.1181147-1-jonatan@jontes.page>


* jk/ref-filter-lrstrip-optim (2026-02-19) 5 commits
  (merged to 'next' on 2026-02-20 at 88c2fb76b8)
 + ref-filter: clarify lstrip/rstrip component counting
  (merged to 'next' on 2026-02-19 at 6efc8a2023)
 + ref-filter: avoid strrchr() in rstrip_ref_components()
 + ref-filter: simplify rstrip_ref_components() memory handling
 + ref-filter: simplify lstrip_ref_components() memory handling
 + ref-filter: factor out refname component counting

 Code clean-up.
 source: <20260215085755.GA86262@coredump.intra.peff.net>
 source: <20260220060003.GA26256@coredump.intra.peff.net>


* lo/repo-info-keys (2026-02-13) 2 commits
  (merged to 'next' on 2026-02-19 at 3a9b510b86)
 + repo: add new flag --keys to git-repo-info
 + repo: rename the output format "keyvalue" to "lines"
 (this branch is used by lo/repo-leftover-bits.)

 "git repo info" learns "--keys" action to list known keys.
 source: <20260214005818.37349-1-lucasseikioshiro@gmail.com>


* mf/format-patch-honor-from-for-cover-letter (2026-02-17) 1 commit
  (merged to 'next' on 2026-02-20 at d3efdd79b2)
 + format-patch: fix From header in cover letter

 "git format-patch --from=<me>" did not honor the command line
 option when writing out the cover letter, which has been corrected.
 source: <20260217232519.24898-1-mroik@delayed.space>


* ps/ci-gitlab-msvc-updates (2026-02-18) 7 commits
  (merged to 'next' on 2026-02-20 at b2a8b7bf93)
 + gitlab-ci: handle failed tests on MSVC+Meson job
 + gitlab-ci: use "run-test-slice-meson.sh"
 + ci: make test slicing consistent across Meson/Make
 + github: fix Meson tests not executing at all
 + meson: fix MERGE_TOOL_DIR with "--no-bin-wrappers"
 + ci: don't skip smallest test slice in GitLab
 + ci: handle failures of test-slice helper

 CI update.
 source: <20260219-b4-pks-ci-meson-improvements-v2-0-6047b8307ab2@pks.im>


* ps/for-each-ref-in-fixes (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-19 at 5397753d41)
 + bisect: simplify string_list memory handling
 + bisect: fix misuse of `refs_for_each_ref_in()`
 + pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 + pack-bitmap: deduplicate logic to iterate over preferred bitmap tips
 (this branch is used by ps/refs-for-each.)

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.
 source: <20260219-b4-pks-fix-for-each-ref-in-misuse-v4-0-57ac30172fae@pks.im>


* ps/history-ergonomics-updates (2026-02-15) 5 commits
  (merged to 'next' on 2026-02-19 at 9d5bc4efc5)
 + Documentation/git-history: document default for "--update-refs="
 + builtin/history: rename "--ref-action=" to "--update-refs="
 + builtin/history: replace "--ref-action=print" with "--dry-run"
 + builtin/history: check for merges before asking for user input
 + builtin/history: perform revwalk checks before asking for user input

 UI improvements for "git history reword".
 source: <20260216-b4-pks-history-dry-run-v3-0-c4db58a651fc@pks.im>


* ps/tests-wo-iconv-fixes (2026-02-20) 5 commits
  (merged to 'next' on 2026-02-20 at 277b2c99aa)
 + t6006: don't use iconv(1) without ICONV prereq
 + t5550: add ICONV prereq to tests that use "$HTTPD_URL/error"
 + t4205: improve handling of ICONV prerequisite
 + t40xx: don't use iconv(1) without ICONV prereq
 + t: don't set ICONV prereq when iconv(1) is missing

 Some tests assumed "iconv" is available without honoring ICONV
 prerequisite, which has been corrected.
 source: <20260220-b4-pks-ci-msvc-iconv-fixes-v4-0-e0e6bbcaeb5b@pks.im>

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

* jk/repo-structure-cleanup (2026-02-23) 1 commit
 - repo: remove unnecessary variable shadow

 Code clean-up.

 Will merge to 'next'.
 source: <20260223135248.127935-1-jayatheerthkulkarni2005@gmail.com>


* lp/diff-stat-utf8-display-width-fix (2026-02-27) 2 commits
 - t4052: test for diffstat width when prefix contains ANSI escape codes
 - diff: handle ANSI escape codes in prefix when calculating diffstat width

 "git log --graph --stat" did not count the display width of colored
 graph part of its own output correctly, which has been corrected.

 Will merge to 'next'.
 source: <cover.1772226209.git.lorenzo.pegorari2002@gmail.com>


* ps/upload-pack-buffer-more-writes (2026-02-27) 2 commits
 - upload-pack: reduce lock contention when writing packfile data
 - upload-pack: fix debug statement when flushing packfile data

 Reduce system overhead "git upload-pack" spends relaying "git
 pack-objects" output to the "git fetch" running on the other end of
 the connection.

 Under discussion.
 cf. <20260227193758.GA2931515@coredump.intra.peff.net>
 source: <20260227-pks-upload-pack-write-contention-v1-0-7166fe255704@pks.im>


* rs/parse-options-duplicated-long-options (2026-02-27) 2 commits
 - parseopt: check for duplicate long names and numerical options
 - pack-objects: remove duplicate --stdin-packs definition

 The parse-options API learned to notice an options[] array with
 duplicated long options.

 Expecting a review response.
 cf. <20260227230822.GA2965111@coredump.intra.peff.net>
 source: <xmqq5x7jujqb.fsf@gitster.g>

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

* jt/repo-structure-extrema (2026-02-23) 5 commits
 - builtin/repo: find tree with most entries
 - builtin/repo: find commit with most parents
 - builtin/repo: add OID annotations to table output
 - builtin/repo: collect largest inflated objects
 - builtin/repo: update stats for each object

 "git repo structure" command learns to report maximum values on
 various aspects of objects it inspects.

 Will merge to 'next'?
 source: <20260223174120.2356504-1-jltobler@gmail.com>


* ps/fsck-stream-from-the-right-object-instance (2026-02-23) 4 commits
  (merged to 'next' on 2026-02-27 at b378558c1a)
 + pack-check: fix verification of large objects
 + packfile: expose function to read object stream for an offset
 + object-file: adapt `stream_object_signature()` to take a stream
 + t/helper: improve "genrandom" test helper

 "fsck" iterates over packfiles and its access to pack data caused
 the list to be permuted, which caused it to loop forever; the code
 to access pack data by "fsck" has been updated to avoid this.

 Will merge to 'master'.
 source: <20260223-pks-fsck-fix-v2-0-99a0714ea3bd@pks.im>


* ps/odb-sources (2026-02-23) 19 commits
 - odb/source: make `begin_transaction()` function pluggable
 - odb/source: make `write_alternate()` function pluggable
 - odb/source: make `read_alternates()` function pluggable
 - odb/source: make `write_object_stream()` function pluggable
 - odb/source: make `write_object()` function pluggable
 - odb/source: make `freshen_object()` function pluggable
 - odb/source: make `for_each_object()` function pluggable
 - odb/source: make `read_object_stream()` function pluggable
 - odb/source: make `read_object_info()` function pluggable
 - odb/source: make `close()` function pluggable
 - odb/source: make `reprepare()` function pluggable
 - odb/source: make `free()` function pluggable
 - odb/source: introduce source type for robustness
 - odb: move reparenting logic into respective subsystems
 - odb: embed base source in the "files" backend
 - odb: introduce "files" source
 - odb: split `struct odb_source` into separate header
 - Merge branch 'ps/object-info-bits-cleanup' into ps/odb-sources
 - Merge branch 'ps/odb-for-each-object' into ps/odb-sources
 (this branch uses ps/object-info-bits-cleanup and ps/odb-for-each-object.)

 The object source API is getting restructured to allow plugging new
 backends.

 Comments?
 source: <20260223-b4-pks-odb-source-pluggable-v1-0-253bac1db598@pks.im>


* ds/for-each-repo-w-worktree (2026-02-24) 2 commits
 - for-each-repo: work correctly in a worktree
 - for-each-repo: test outside of repo context

 "git for-each-repo" started from a secondary worktree did not work
 as expected, which has been corrected.

 Expecting a (hopefully small and final) reroll?
 cf. <20260225131344.GA2139176@coredump.intra.peff.net>
 source: <pull.2056.v2.git.1771968924.gitgitgadget@gmail.com>


* jh/alias-i18n-fixes (2026-02-26) 4 commits
 - git, help: fix memory leaks in alias listing
 - alias: treat empty subsection [alias ""] as plain [alias]
 - doc: fix list continuation in alias subsection example
 - Merge branch 'jh/alias-i18n' into jh/alias-i18n-fixes

 Further update to the i18n alias support to avoid regressions.

 Will merge to 'next'.
 source: <20260226205339.1535482-1-jonatan@jontes.page>


* lc/rebase-trailer (2026-02-23) 5 commits
 - rebase: support --trailer
 - commit, tag: parse --trailer with OPT_STRVEC
 - trailer: append trailers without fork/exec
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.

 Needs (hopefully final) review.
 cf. <xmqqecm74fcd.fsf@gitster.g>
 cf. <83cac4b2-c59d-4ab2-9dfc-2f615ed3959d@gmail.com>
 source: <20260224070552.148591-1-me@linux.beauty>


* mf/format-patch-cover-letter-format (2026-02-27) 5 commits
 - docs: add usage for the cover-letter fmt feature
 - format-patch: add commitListFormat config
 - format-patch: add ability to use alt cover format
 - format-patch: move cover letter summary generation
 - pretty.c: add %(count) and %(total) placeholders

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Will merge to 'next'?
 source: <cover.1772232373.git.mroik@delayed.space>


* sp/send-email-validate-charset (2026-02-26) 1 commit
 - send-email: validate charset name in 8bit encoding prompt

 "git send-email" has learned to be a bit more careful when it
 accepts charset to use from the end-user, to avoid 'y' (mistaken
 'yes' when expecting a charset like 'UTF-8') and other nonsense.

 Expecting a review response.
 source: <20260226165559.187261-1-shreyanshpaliwalcmsmn@gmail.com>


* cx/fetch-display-ubfix (2026-02-24) 1 commit
  (merged to 'next' on 2026-02-26 at ebd1da8b75)
 + fetch: fix wrong evaluation order in URL trailing-slash trimming

 Undefined-behaviour fix in "git fetch".

 Will merge to 'master'.
 source: <pull.2211.git.git.1771984857879.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-02-25) 10 commits
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: add tests for Linux
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: deduplicate settings logic for Unix platforms
 - fsmonitor: deduplicate IPC path logic for Unix platforms
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 cf. <xmqq5x7j5xje.fsf@gitster.g>
 source: <pull.2147.v7.git.git.1772065643.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
  (merged to 'next' on 2026-02-27 at d6ebc97cb1)
 + t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Will merge to 'master'.
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-02-21) 2 commits
 - SQUASH??? simplify
 - help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Expecting a (hopefully small and final) reroll, with tests.
 cf. <CAPvEtrfmgq8f2z7tAvR-oCEYoiG2B+Pj9EqjUsKuewnO73tVPg@mail.gmail.com>
 source: <20260221162359.43336-2-amishhhaaaa@gmail.com>


* lg/t2004-test-path-is-helpers (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at c5862e1b3d)
 + t2004: use test_path_is_file instead of test -f

 Test code clean-up.

 Will merge to 'master'.
 source: <pull.2049.git.1771694893208.gitgitgadget@gmail.com>


* ps/simplify-normalize-path-copy-len (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at ce7c45c6fa)
 + path: factor out skip_slashes() in normalize_path_copy_len()

 Code clean-up.

 Will merge to 'master'.
 source: <20260221110511.1592-2-pushkarkumarsingh1970@gmail.com>


* sc/pack-redundant-leakfix (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at b2fda8839e)
 + pack-redundant: fix memory leak when open_pack_index() fails

 Leakfix.

 Will merge to 'master'.
 source: <20260221103900.41740-1-sahityajb@gmail.com>


* ty/setup-error-tightening (2026-02-22) 1 commit
 . setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.

 Kicked out of the tree for now, due to CI breakage.
 cf. <xmqqpl5rumy0.fsf@gitster.g>
 source: <20260223074410.917523-1-a3205153416@gmail.com>


* bk/mailmap-wo-the-repository (2026-02-19) 2 commits
  (merged to 'next' on 2026-02-26 at f7e3afc1ff)
 + mailmap: drop global config variables
 + mailmap: stop using the_repository

 Wean the mailmap code off of the_repository dependency.

 Will merge to 'master'.
 source: <20260220060442.29469-1-bkkaracay@gmail.com>


* jt/object-file-use-container-of (2026-02-22) 2 commits
  (merged to 'next' on 2026-02-22 at 309c995771)
 + object-file.c: avoid container_of() of a NULL container
  (merged to 'next' on 2026-02-20 at 7a30cb262f)
 + object-file: use `container_of()` to convert from base types

 Code clean-up.

 Will merge to 'master'.
 source: <20260218210120.1146078-1-jltobler@gmail.com>
 source: <xmqqh5r8r0to.fsf_-_@gitster.g>


* kh/format-patch-noprefix-is-boolean (2026-02-23) 2 commits
  (merged to 'next' on 2026-02-26 at fcf4773929)
 + doc: diff-options.adoc: show format.noprefix for format-patch
 + format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.

 Will merge to 'master'.
 source: <V2_CV_format.noprefix_boolean.421@msgid.xyz>


* pw/no-more-NULL-means-current-worktree (2026-02-19) 2 commits
  (merged to 'next' on 2026-02-26 at 281f28b140)
 + path: remove repository argument from worktree_git_path()
 + wt-status: avoid passing NULL worktree

 API clean-up for the worktree subsystem.

 Will merge to 'master'.
 cf. <d5866041-3e2f-4f5e-a8d1-725fd3eac2e2@gmail.com>
 source: <cover.1771511192.git.phillip.wood@dunelm.org.uk>


* cs/subtree-split-fixes (2026-02-17) 3 commits
  (merged to 'next' on 2026-02-25 at 3824d2c52d)
 + contrib/subtree: process out-of-prefix subtrees
 + contrib/subtree: test history depth
 + contrib/subtree: capture additional test-cases

 An earlier attempt to optimize "git subtree" discarded too much
 relevant histories, which has been corrected.

 Will merge to 'master'.
 source: <20260217-cs-subtree-remove-optimization-v2-0-4299e71a30c6@howdoi.land>


* dt/send-email-client-cert (2026-02-20) 1 commit
 - send-mail: add client certificate options

 "git send-email" learns to support use of client-side certificates.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqo6lb4fuy.fsf@gitster.g>
 source: <20260220081717.555185-2-dxdt@dev.snart.me>


* en/merge-ort-almost-wo-the-repository (2026-02-19) 6 commits
  (merged to 'next' on 2026-02-26 at 4c07a66173)
 + replay: prevent the_repository from coming back
 + merge-ort: prevent the_repository from coming back
 + merge-ort: replace the_hash_algo with opt->repo->hash_algo
 + merge-ort: replace the_repository with opt->repo
 + merge-ort: pass repository to write_tree()
 + merge,diff: remove the_repository check before prefetching blobs

 Mark the marge-ort codebase to prevent more uses of the_repository
 from getting added.

 Will merge to 'master'.
 cf. <143ab1c8-9f07-4df7-8200-69b5a78a0351@gmail.com>
 cf. <aZ12rYYwbh1fvrnE@pks.im>
 source: <pull.2048.v3.git.1771718393.gitgitgadget@gmail.com>


* jr/apply-directory-normalize (2026-02-17) 1 commit
  (merged to 'next' on 2026-02-26 at 588d44696d)
 + apply: normalize path in --directory argument

 "git apply --directory=./un/../normalized/path" now normalizes the
 given path before using it.

 Will merge to 'master'.
 source: <pull.2198.v2.git.git.1771373732749.gitgitgadget@gmail.com>


* lo/repo-leftover-bits (2026-02-25) 9 commits
  (merged to 'next' on 2026-02-26 at 962fc48d45)
 + Documentation/git-repo: capitalize format descriptions
 + Documentation/git-repo: replace 'NUL' with '_NUL_'
 + t1901: adjust nul format output instead of expected value
 + t1900: rename t1900-repo to t1900-repo-info
 + repo: rename struct field to repo_info_field
 + repo: replace get_value_fn_for_key by get_repo_info_field
 + repo: rename repo_info_fields to repo_info_field
 + CodingGuidelines: instruct to name arrays in singular
 + Merge branch 'lo/repo-info-keys' into lo/repo-leftover-bits

 Clean-up the code around "git repo info" command.

 Will merge to 'master'.
 source: <20260225183559.79303-1-lucasseikioshiro@gmail.com>


* ps/maintenance-geometric-default (2026-02-24) 8 commits
  (merged to 'next' on 2026-02-26 at 8ab085f657)
 + builtin/maintenance: use "geometric" strategy by default
 + t7900: prepare for switch of the default strategy
 + t6500: explicitly use "gc" strategy
 + t5510: explicitly use "gc" strategy
 + t5400: explicitly use "gc" strategy
 + t34xx: don't expire reflogs where it matters
 + t: disable maintenance where we verify object database structure
 + t: fix races caused by background maintenance

 "git maintenance" starts using the "geometric" strategy by default.

 Will merge to 'master'.
 source: <20260224-b4-pks-maintenance-default-geometric-strategy-v2-0-8657338c6fa1@pks.im>


* ps/refs-for-each (2026-02-23) 18 commits
  (merged to 'next' on 2026-02-27 at ec9e0a36ff)
 + refs: replace `refs_for_each_fullref_in()`
 + refs: replace `refs_for_each_namespaced_ref()`
 + refs: replace `refs_for_each_glob_ref()`
 + refs: replace `refs_for_each_glob_ref_in()`
 + refs: replace `refs_for_each_rawref_in()`
 + refs: replace `refs_for_each_rawref()`
 + refs: replace `refs_for_each_ref_in()`
 + refs: improve verification for-each-ref options
 + refs: generalize `refs_for_each_fullref_in_prefixes()`
 + refs: generalize `refs_for_each_namespaced_ref()`
 + refs: speed up `refs_for_each_glob_ref_in()`
 + refs: introduce `refs_for_each_ref_ext`
 + refs: rename `each_ref_fn`
 + refs: rename `do_for_each_ref_flags`
 + refs: move `do_for_each_ref_flags` further up
 + refs: move `refs_head_ref_namespaced()`
 + refs: remove unused `refs_for_each_include_root_ref()`
 + Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each

 Code refactoring around refs-for-each-* API functions.

 Will merge to 'master'.
 cf. <CAOLa=ZTz-9JKHC3H8tSwP=bDvX2mNA-erjr5Ni6Tiq4cm4WmLg@mail.gmail.com>
 source: <20260223-pks-refs-for-each-unification-v2-0-515d48c8087b@pks.im>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 cf. <405b0d34-c2ad-498d-93a1-2e7925ae11f1@gmail.com>
 cf. <c2048ddf-ced4-425d-af6e-14e9442e9d99@gmail.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/tree-diff-wo-the-repository (2026-02-20) 1 commit
  (merged to 'next' on 2026-02-26 at c5762ee063)
 + tree-diff: remove the usage of the_hash_algo global

 The last uses of the_repository in "tree-diff.c" have been
 eradicated.

 Will merge to 'master'.
 source: <20260220175331.1250726-1-shreyanshpaliwalcmsmn@gmail.com>


* dk/meson-regen-config-list (2026-02-24) 1 commit
  (merged to 'next' on 2026-02-26 at 64ea932d59)
 + build: regenerate config-list.h when Documentation changes

 Fix dependency screw-up in meson-based builds.

 Will merge to 'master'.
 source: <4ef96c6bbf698a08df1df87b7cb053b6d0d00822.1771943954.git.ben.knoble+github@gmail.com>


* ps/receive-pack-shallow-optim (2026-02-16) 3 commits
  (merged to 'next' on 2026-02-22 at ad6abc1ef8)
 + commit: use commit graph in `lookup_commit_reference_gently()`
 + commit: make `repo_parse_commit_no_graph()` more robust
 + commit: avoid parsing non-commits in `lookup_commit_reference_gently()`

 The code to accept shallow "git push" has been optimized.

 Will merge to 'master'.
 source: <20260216-b4-pks-receive-pack-optimize-shallow-v1-0-e98886daff2b@pks.im>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
 - wt-status: use hash_algo from local repository instead of global the_hash_algo
 - wt-status: replace uses of the_repository with local repository instances
 - wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'next'?
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-23) 4 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Needs review.
 cf. <xmqq5x7nknrd.fsf@gitster.g>
 source: <pull.2008.v5.git.1771856405.gitgitgadget@gmail.com>


* hy/diff-lazy-fetch-with-break-fix (2026-02-23) 1 commit
  (merged to 'next' on 2026-02-25 at afe07ad86c)
 + diffcore-break: avoid segfault with freed entries

 A prefetch call can be triggered to access a stale diff_queue entry
 after diffcore-break breaks a filepair into two and freed the
 original entry that is no longer used, leading to a segfault, which
 has been corrected.

 Will merge to 'master'.
 source: <20260224061329.60364-2-hanyang.tony@bytedance.com>


* kh/doc-patch-id-4 (2026-02-14) 3 commits
  (merged to 'next' on 2026-02-22 at bfae23ac5e)
 + doc: patch-id: see also git-cherry(1)
 + doc: patch-id: add script example
 + doc: patch-id: emphasize multi-patch processing

 Doc update.

 Will merge to 'master'.
 source: <V2_CV_doc_patch-id_4.371@msgid.xyz>


* kh/doc-am-xref (2026-02-09) 4 commits
  (merged to 'next' on 2026-02-22 at 920d0c2836)
 + doc: am: fill out hook discussion
 + doc: am: add missing config am.messageId
 + doc: am: say that --message-id adds a trailer
 + doc: am: normalize git(1) command links

 Doc update.

 Will merge to 'master'.
 source: <doc_am_gitlinks_and_am.messageId.321@msgid.xyz>


* pw/meson-doc-mergetool (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-22 at dfdfff02f8)
 + meson: fix building mergetool docs

 Update build precedure for mergetool documentation in meson-based builds.

 Will merge to 'master'.
 source: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>


* ds/config-list-with-type (2026-02-23) 13 commits
  (merged to 'next' on 2026-02-26 at cdaee07fde)
 + config: use an enum for type
 + config: restructure format_config()
 + config: format colors quietly
 + color: add color_parse_quietly()
 + config: format expiry dates quietly
 + config: format paths gently
 + config: format bools or strings in helper
 + config: format bools or ints gently
 + config: format bools gently
 + config: format int64s gently
 + config: make 'git config list --type=<X>' work
 + config: add 'gently' parameter to format_config()
 + config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.

 Will merge to 'master'.
 source: <pull.2044.v3.git.1771849615.gitgitgadget@gmail.com>


* rr/gitweb-mobile (2026-02-16) 5 commits
  (merged to 'next' on 2026-02-26 at b7e4c26f73)
 + gitweb: let page header grow on mobile for long wrapped project names
 + gitweb: fix mobile footer overflow by wrapping text and clearing floats
 + gitweb: fix mobile page overflow across log/commit/blob/diff views
 + gitweb: prevent project search bar from overflowing on mobile
 + gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.

 Will merge to 'master'.
 source: <pull.2043.v2.git.1771257211.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-19) 1 commit
  (merged to 'next' on 2026-02-26 at 913be932b0)
 + osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).

 Will merge to 'master'.
 source: <pull.2046.v4.git.1771551540816.gitgitgadget@gmail.com>


* aa/add-p-no-auto-advance (2026-02-14) 4 commits
  (merged to 'next' on 2026-02-25 at ce27f94bc2)
 + add-patch: allow interfile navigation when selecting hunks
 + add-patch: allow all-or-none application of patches
 + add-patch: modify patch_update_file() signature
 + interactive -p: add new `--auto-advance` flag

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Will merge to 'master'.
 source: <cover.1771066252.git.abrahamadekunle50@gmail.com>


* kn/ref-location (2026-02-25) 6 commits
  (merged to 'next' on 2026-02-26 at e87adbdb69)
 + refs: add GIT_REFERENCE_BACKEND to specify reference backend
 + refs: allow reference location in refstorage config
 + refs: receive and use the reference storage payload
 + refs: move out stub modification to generic layer
 + refs: extract out `refs_create_refdir_stubs()`
 + setup: don't modify repo in `create_reference_database()`

 Allow the directory in which reference backends store their data to
 be specified.

 Will merge to 'master'.
 source: <20260225-kn-alternate-ref-dir-v9-0-3fe118e40e28@gmail.com>


* ar/config-hooks (2026-02-18) 9 commits
  (merged to 'next' on 2026-02-27 at 6a04cca28e)
 + hook: add -z option to "git hook list"
 + hook: allow out-of-repo 'git hook' invocations
 + hook: allow event = "" to overwrite previous values
 + hook: allow disabling config hooks
 + hook: include hooks from the config
 + hook: add "git hook list" command
 + hook: run a list of hooks to prepare for multihook support
 + hook: add internal state alloc/free callbacks
 + Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.

 Will merge to 'master'.
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at a6cd49271f)
 + meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Will merge to 'master'.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at 094113b392)
 + gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'master'.
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-21) 11 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - hook: refactor hook_config_cache from strmap to named struct
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260222002904.1879356-1-adrian.ratiu@collabora.com>


* ps/object-info-bits-cleanup (2026-02-11) 5 commits
  (merged to 'next' on 2026-02-22 at 4d702cbecc)
 + odb: convert `odb_has_object()` flags into an enum
 + odb: convert object info flags into an enum
 + odb: drop gaps in object info flag values
 + builtin/fsck: fix flags passed to `odb_has_object()`
 + builtin/backfill: fix flags passed to `odb_has_object()`
 (this branch is used by ps/odb-sources.)

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Will merge to 'master'.
 source: <20260212-b4-pks-read-object-info-flags-v2-0-3bfa9bb149ef@pks.im>


* ty/symlinks-use-unsigned-for-bitset (2026-02-16) 1 commit
  (merged to 'next' on 2026-02-22 at 6546dc5cf2)
 + symlinks: use unsigned int for flags

 Code clean-up.

 Will merge to 'master'.
 source: <20260216172028.140525-1-a3205153416@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
  (merged to 'next' on 2026-02-22 at 4aa543f115)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + run-command: poll child input in addition to output
 + hook: add jobs option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: allow separate std[out|err] streams
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add helper for pp child states
 + t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Will merge to 'master'.
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx9WehtwSMie53xzZUU7iK3JTrgUbVK48WM7S+LBi=jpkQ@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Expecting review responses.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Will merge to 'next'.
 cf. <xmqq5x7rvyn4.fsf@gitster.g>
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* ps/odb-for-each-object (2026-01-26) 16 commits
  (merged to 'next' on 2026-02-22 at 80178ecd0d)
 + odb: drop unused `for_each_{loose,packed}_object()` functions
 + reachable: convert to use `odb_for_each_object()`
 + builtin/pack-objects: use `packfile_store_for_each_object()`
 + odb: introduce mtime fields for object info requests
 + treewide: drop uses of `for_each_{loose,packed}_object()`
 + treewide: enumerate promisor objects via `odb_for_each_object()`
 + builtin/fsck: refactor to use `odb_for_each_object()`
 + odb: introduce `odb_for_each_object()`
 + packfile: introduce function to iterate through objects
 + packfile: extract function to iterate through objects of a store
 + object-file: introduce function to iterate through objects
 + object-file: extract function to read object info from path
 + odb: fix flags parameter to be unsigned
 + odb: rename `FOR_EACH_OBJECT_*` flags
 + Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 + Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object
 (this branch is used by ps/odb-sources.)

 Revamp object enumeration API around odb.

 Will merge to 'master'.
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-22 at f44d607586)
 + subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'master'.
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-02-15) 2 commits
  (merged to 'next' on 2026-02-26 at 2183b3405e)
 + shallow: handling fetch relative-deepen
 + shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Will merge to 'master'.
 source: <pull.2121.v5.git.git.1771186316.gitgitgadget@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
  (merged to 'next' on 2026-02-22 at acae2989d4)
 + t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Will merge to 'master'.
 source: <20260107074724.13165-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
  (merged to 'next' on 2026-02-27 at 2b2e3a1fa9)
 + environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 + environment: stop using core.sparseCheckout globally
 + environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Will merge to 'master'.
 cf. <CAP8UFD2Rz3NMrTayi9yjRk4-51tStaLWKeBVB9RaJMWmiBLqrQ@mail.gmail.com>
 source: <cover.1771258573.git.belkid98@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'next'?
 source: <cover.1771959555.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Will merge to 'next'?
 Message-Id: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


* hn/status-compare-with-push (2026-02-26) 3 commits
  (merged to 'next' on 2026-02-26 at 1c11b8819a)
 + status: add status.compareBranches config for multiple branch comparisons
 + refactor format_branch_comparison in preparation
 + Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.

 Will merge to 'master'.
 cf. <xmqqa4wv5xsb.fsf@gitster.g>
 source: <pull.2138.v30.git.git.1772102022.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 . receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 May not be a good idea after all.  A controlled death would be OK, though.
 cf. <xmqqbjjgiz3a.fsf@gitster.g>
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* kh/alias-i18n-docfix (2026-02-23) 1 commit
 . doc: config: fix list continuation in alias section

 Doc mark-up fix.

 Superseded by jh/alias-i18n-fixes.
 source: <followup-alias-i18n.3e0@msgid.xyz>


* bc/do-not-reorder-packs-during-fsck (2026-02-22) 1 commit
 . fsck: do not loop infinitely when processing packs

 Access to packfiles during fsck would reorder the mru list of
 packs, which causes the fsck to loop forever going over the list.

 Supersided by ps/fsck-stream-from-the-right-object-instance.
 source: <20260222183710.2963424-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 16%]

* What's cooking in git.git (Feb 2026, #10)
@ 2026-02-26 21:00 16% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-26 21:00 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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/

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

* jt/repo-structure-extrema (2026-02-23) 5 commits
 - builtin/repo: find tree with most entries
 - builtin/repo: find commit with most parents
 - builtin/repo: add OID annotations to table output
 - builtin/repo: collect largest inflated objects
 - builtin/repo: update stats for each object

 "git repo structure" command learns to report maximum values on
 various aspects of objects it inspects.

 Will merge to 'next'?
 source: <20260223174120.2356504-1-jltobler@gmail.com>


* ps/fsck-stream-from-the-right-object-instance (2026-02-23) 4 commits
 - pack-check: fix verification of large objects
 - packfile: expose function to read object stream for an offset
 - object-file: adapt `stream_object_signature()` to take a stream
 - t/helper: improve "genrandom" test helper

 "fsck" iterates over packfiles and its access to pack data caused
 the list to be permuted, which caused it to loop forever; the code
 to access pack data by "fsck" has been updated to avoid this.

 Will merge to 'next'.
 source: <20260223-pks-fsck-fix-v2-0-99a0714ea3bd@pks.im>


* ps/odb-sources (2026-02-23) 19 commits
 - odb/source: make `begin_transaction()` function pluggable
 - odb/source: make `write_alternate()` function pluggable
 - odb/source: make `read_alternates()` function pluggable
 - odb/source: make `write_object_stream()` function pluggable
 - odb/source: make `write_object()` function pluggable
 - odb/source: make `freshen_object()` function pluggable
 - odb/source: make `for_each_object()` function pluggable
 - odb/source: make `read_object_stream()` function pluggable
 - odb/source: make `read_object_info()` function pluggable
 - odb/source: make `close()` function pluggable
 - odb/source: make `reprepare()` function pluggable
 - odb/source: make `free()` function pluggable
 - odb/source: introduce source type for robustness
 - odb: move reparenting logic into respective subsystems
 - odb: embed base source in the "files" backend
 - odb: introduce "files" source
 - odb: split `struct odb_source` into separate header
 - Merge branch 'ps/object-info-bits-cleanup' into ps/odb-sources
 - Merge branch 'ps/odb-for-each-object' into ps/odb-sources
 (this branch uses ps/object-info-bits-cleanup and ps/odb-for-each-object.)

 The object source API is getting restructured to allow plugging new
 backends.

 Comments?
 source: <20260223-b4-pks-odb-source-pluggable-v1-0-253bac1db598@pks.im>


* ds/for-each-repo-w-worktree (2026-02-24) 2 commits
 - for-each-repo: work correctly in a worktree
 - for-each-repo: test outside of repo context

 "git for-each-repo" started from a secondary worktree did not work
 as expected, which has been corrected.

 Expecting a (hopefully small and final) reroll?
 cf. <20260225131344.GA2139176@coredump.intra.peff.net>
 source: <pull.2056.v2.git.1771968924.gitgitgadget@gmail.com>


* jh/alias-i18n-fixes (2026-02-24) 4 commits
 - SQUASH??? leakfix
 - alias: treat empty subsection [alias ""] as plain [alias]
 - doc: fix list continuation in alias subsection example
 - Merge branch 'jh/alias-i18n' into jh/alias-i18n-fixes
 (this branch uses jh/alias-i18n.)

 Further update to the i18n alias support to avoid regressions.

 Expecting a (hopefully small and final) reroll?
 cf. <xmqq8qcga6ya.fsf@gitster.g>
 source: <20260224171245.458377-1-jonatan@jontes.page>


* lc/rebase-trailer (2026-02-23) 5 commits
 - rebase: support --trailer
 - commit, tag: parse --trailer with OPT_STRVEC
 - trailer: append trailers without fork/exec
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.

 Needs (hopefully final) review.
 cf. <xmqqecm74fcd.fsf@gitster.g>
 cf. <83cac4b2-c59d-4ab2-9dfc-2f615ed3959d@gmail.com>
 source: <20260224070552.148591-1-me@linux.beauty>


* mf/format-patch-cover-letter-format (2026-02-24) 3 commits
 - SQUASH???
 - format-patch: add commitListFormat config
 - format-patch: add ability to use alt cover format

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Expecting a (hopefully small and final) reroll?
 cf. <aZ4-_jmFS8yS4g49@exploit>
 source: <cover.1771925291.git.mroik@delayed.space>


* sp/send-email-validate-charset (2026-02-26) 1 commit
 - send-email: validate charset name in 8bit encoding prompt

 "git send-email" has learned to be a bit more careful when it
 accepts charset to use from the end-user, to avoid 'y' (mistaken
 'yes' when expecting a charset like 'UTF-8') and other nonsense.

 Expecting a review response.
 source: <20260226165559.187261-1-shreyanshpaliwalcmsmn@gmail.com>


* cx/fetch-display-ubfix (2026-02-24) 1 commit
  (merged to 'next' on 2026-02-26 at ebd1da8b75)
 + fetch: fix wrong evaluation order in URL trailing-slash trimming

 Undefined-behaviour fix in "git fetch".

 Will merge to 'master'.
 source: <pull.2211.git.git.1771984857879.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2026-02-25) 10 commits
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: add tests for Linux
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: deduplicate settings logic for Unix platforms
 - fsmonitor: deduplicate IPC path logic for Unix platforms
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Will merge to 'next'?
 cf. <xmqq5x7j5xje.fsf@gitster.g>
 source: <pull.2147.v7.git.git.1772065643.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Will merge to 'next'.
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-02-21) 2 commits
 - SQUASH??? simplify
 - help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Expecting a (hopefully small and final) reroll, with tests.
 cf. <CAPvEtrfmgq8f2z7tAvR-oCEYoiG2B+Pj9EqjUsKuewnO73tVPg@mail.gmail.com>
 source: <20260221162359.43336-2-amishhhaaaa@gmail.com>


* lg/t2004-test-path-is-helpers (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at c5862e1b3d)
 + t2004: use test_path_is_file instead of test -f

 Test code clean-up.

 Will merge to 'master'.
 source: <pull.2049.git.1771694893208.gitgitgadget@gmail.com>


* ps/simplify-normalize-path-copy-len (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at ce7c45c6fa)
 + path: factor out skip_slashes() in normalize_path_copy_len()

 Code clean-up.

 Will merge to 'master'.
 source: <20260221110511.1592-2-pushkarkumarsingh1970@gmail.com>


* sc/pack-redundant-leakfix (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at b2fda8839e)
 + pack-redundant: fix memory leak when open_pack_index() fails

 Leakfix.

 Will merge to 'master'.
 source: <20260221103900.41740-1-sahityajb@gmail.com>


* ty/setup-error-tightening (2026-02-22) 1 commit
 - setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.

 Will merge to 'next'.
 source: <20260223074410.917523-1-a3205153416@gmail.com>


* bc/do-not-reorder-packs-during-fsck (2026-02-22) 1 commit
 . fsck: do not loop infinitely when processing packs

 Access to packfiles during fsck would reorder the mru list of
 packs, which causes the fsck to loop forever going over the list.

 Supersided by ps/fsck-stream-from-the-right-object-instance?
 source: <20260222183710.2963424-1-sandals@crustytoothpaste.net>


* ap/use-test-seq-f-more (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at d847fcad1e)
 + t: use test_seq -f and pipes in a few more places

 Test clean-up.

 Will merge to 'master'.
 source: <20260218181019.1705160-1-aplattner@nvidia.com>


* bk/mailmap-wo-the-repository (2026-02-19) 2 commits
  (merged to 'next' on 2026-02-26 at f7e3afc1ff)
 + mailmap: drop global config variables
 + mailmap: stop using the_repository

 Wean the mailmap code off of the_repository dependency.

 Will merge to 'master'.
 source: <20260220060442.29469-1-bkkaracay@gmail.com>


* db/doc-fetch-jobs-auto (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at 4e20a85963)
 + doc: fetch: document `--jobs=0` behavior

 Doc update.

 Will merge to 'master'.
 source: <pull.2047.git.1771443159369.gitgitgadget@gmail.com>


* jt/object-file-use-container-of (2026-02-22) 2 commits
  (merged to 'next' on 2026-02-22 at 309c995771)
 + object-file.c: avoid container_of() of a NULL container
  (merged to 'next' on 2026-02-20 at 7a30cb262f)
 + object-file: use `container_of()` to convert from base types

 Code clean-up.

 Will merge to 'master'.
 source: <20260218210120.1146078-1-jltobler@gmail.com>
 source: <xmqqh5r8r0to.fsf_-_@gitster.g>


* kh/format-patch-noprefix-is-boolean (2026-02-23) 2 commits
  (merged to 'next' on 2026-02-26 at fcf4773929)
 + doc: diff-options.adoc: show format.noprefix for format-patch
 + format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.

 Will merge to 'master'.
 source: <V2_CV_format.noprefix_boolean.421@msgid.xyz>


* mf/format-patch-honor-from-for-cover-letter (2026-02-17) 1 commit
  (merged to 'next' on 2026-02-20 at d3efdd79b2)
 + format-patch: fix From header in cover letter

 "git format-patch --from=<me>" did not honor the command line
 option when writing out the cover letter, which has been corrected.

 Will merge to 'master'.
 source: <20260217232519.24898-1-mroik@delayed.space>


* pw/no-more-NULL-means-current-worktree (2026-02-19) 2 commits
  (merged to 'next' on 2026-02-26 at 281f28b140)
 + path: remove repository argument from worktree_git_path()
 + wt-status: avoid passing NULL worktree

 API clean-up for the worktree subsystem.

 Will merge to 'master'.
 cf. <d5866041-3e2f-4f5e-a8d1-725fd3eac2e2@gmail.com>
 source: <cover.1771511192.git.phillip.wood@dunelm.org.uk>


* cs/subtree-split-fixes (2026-02-17) 3 commits
  (merged to 'next' on 2026-02-25 at 3824d2c52d)
 + contrib/subtree: process out-of-prefix subtrees
 + contrib/subtree: test history depth
 + contrib/subtree: capture additional test-cases

 An earlier attempt to optimize "git subtree" discarded too much
 relevant histories, which has been corrected.

 Will merge to 'master'.
 source: <20260217-cs-subtree-remove-optimization-v2-0-4299e71a30c6@howdoi.land>


* dt/send-email-client-cert (2026-02-20) 1 commit
 - send-mail: add client certificate options

 "git send-email" learns to support use of client-side certificates.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqo6lb4fuy.fsf@gitster.g>
 source: <20260220081717.555185-2-dxdt@dev.snart.me>


* en/merge-ort-almost-wo-the-repository (2026-02-19) 6 commits
  (merged to 'next' on 2026-02-26 at 4c07a66173)
 + replay: prevent the_repository from coming back
 + merge-ort: prevent the_repository from coming back
 + merge-ort: replace the_hash_algo with opt->repo->hash_algo
 + merge-ort: replace the_repository with opt->repo
 + merge-ort: pass repository to write_tree()
 + merge,diff: remove the_repository check before prefetching blobs

 Mark the marge-ort codebase to prevent more uses of the_repository
 from getting added.

 Will merge to 'master'.
 cf. <143ab1c8-9f07-4df7-8200-69b5a78a0351@gmail.com>
 cf. <aZ12rYYwbh1fvrnE@pks.im>
 source: <pull.2048.v3.git.1771718393.gitgitgadget@gmail.com>


* jr/apply-directory-normalize (2026-02-17) 1 commit
  (merged to 'next' on 2026-02-26 at 588d44696d)
 + apply: normalize path in --directory argument

 "git apply --directory=./un/../normalized/path" now normalizes the
 given path before using it.

 Will merge to 'master'.
 source: <pull.2198.v2.git.git.1771373732749.gitgitgadget@gmail.com>


* lo/repo-leftover-bits (2026-02-25) 9 commits
  (merged to 'next' on 2026-02-26 at 962fc48d45)
 + Documentation/git-repo: capitalize format descriptions
 + Documentation/git-repo: replace 'NUL' with '_NUL_'
 + t1901: adjust nul format output instead of expected value
 + t1900: rename t1900-repo to t1900-repo-info
 + repo: rename struct field to repo_info_field
 + repo: replace get_value_fn_for_key by get_repo_info_field
 + repo: rename repo_info_fields to repo_info_field
 + CodingGuidelines: instruct to name arrays in singular
 + Merge branch 'lo/repo-info-keys' into lo/repo-leftover-bits
 (this branch uses lo/repo-info-keys.)

 Clean-up the code around "git repo info" command.

 Will merge to 'master'.
 source: <20260225183559.79303-1-lucasseikioshiro@gmail.com>


* ps/maintenance-geometric-default (2026-02-24) 8 commits
  (merged to 'next' on 2026-02-26 at 8ab085f657)
 + builtin/maintenance: use "geometric" strategy by default
 + t7900: prepare for switch of the default strategy
 + t6500: explicitly use "gc" strategy
 + t5510: explicitly use "gc" strategy
 + t5400: explicitly use "gc" strategy
 + t34xx: don't expire reflogs where it matters
 + t: disable maintenance where we verify object database structure
 + t: fix races caused by background maintenance

 "git maintenance" starts using the "geometric" strategy by default.

 Will merge to 'master'.
 source: <20260224-b4-pks-maintenance-default-geometric-strategy-v2-0-8657338c6fa1@pks.im>


* ps/refs-for-each (2026-02-23) 18 commits
 - refs: replace `refs_for_each_fullref_in()`
 - refs: replace `refs_for_each_namespaced_ref()`
 - refs: replace `refs_for_each_glob_ref()`
 - refs: replace `refs_for_each_glob_ref_in()`
 - refs: replace `refs_for_each_rawref_in()`
 - refs: replace `refs_for_each_rawref()`
 - refs: replace `refs_for_each_ref_in()`
 - refs: improve verification for-each-ref options
 - refs: generalize `refs_for_each_fullref_in_prefixes()`
 - refs: generalize `refs_for_each_namespaced_ref()`
 - refs: speed up `refs_for_each_glob_ref_in()`
 - refs: introduce `refs_for_each_ref_ext`
 - refs: rename `each_ref_fn`
 - refs: rename `do_for_each_ref_flags`
 - refs: move `do_for_each_ref_flags` further up
 - refs: move `refs_head_ref_namespaced()`
 - refs: remove unused `refs_for_each_include_root_ref()`
 - Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each
 (this branch uses ps/for-each-ref-in-fixes.)

 Code refactoring around refs-for-each-* API functions.

 Will merge to 'next'.
 cf. <CAOLa=ZTz-9JKHC3H8tSwP=bDvX2mNA-erjr5Ni6Tiq4cm4WmLg@mail.gmail.com>
 source: <20260223-pks-refs-for-each-unification-v2-0-515d48c8087b@pks.im>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 cf. <405b0d34-c2ad-498d-93a1-2e7925ae11f1@gmail.com>
 cf. <c2048ddf-ced4-425d-af6e-14e9442e9d99@gmail.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/tree-diff-wo-the-repository (2026-02-20) 1 commit
  (merged to 'next' on 2026-02-26 at c5762ee063)
 + tree-diff: remove the usage of the_hash_algo global

 The last uses of the_repository in "tree-diff.c" have been
 eradicated.

 Will merge to 'master'.
 source: <20260220175331.1250726-1-shreyanshpaliwalcmsmn@gmail.com>


* dk/meson-regen-config-list (2026-02-24) 1 commit
  (merged to 'next' on 2026-02-26 at 64ea932d59)
 + build: regenerate config-list.h when Documentation changes

 Fix dependency screw-up in meson-based builds.

 Will merge to 'master'.
 source: <4ef96c6bbf698a08df1df87b7cb053b6d0d00822.1771943954.git.ben.knoble+github@gmail.com>


* jk/ref-filter-lrstrip-optim (2026-02-19) 5 commits
  (merged to 'next' on 2026-02-20 at 88c2fb76b8)
 + ref-filter: clarify lstrip/rstrip component counting
  (merged to 'next' on 2026-02-19 at 6efc8a2023)
 + ref-filter: avoid strrchr() in rstrip_ref_components()
 + ref-filter: simplify rstrip_ref_components() memory handling
 + ref-filter: simplify lstrip_ref_components() memory handling
 + ref-filter: factor out refname component counting

 Code clean-up.

 Will merge to 'master'.
 source: <20260215085755.GA86262@coredump.intra.peff.net>
 source: <20260220060003.GA26256@coredump.intra.peff.net>


* ps/receive-pack-shallow-optim (2026-02-16) 3 commits
  (merged to 'next' on 2026-02-22 at ad6abc1ef8)
 + commit: use commit graph in `lookup_commit_reference_gently()`
 + commit: make `repo_parse_commit_no_graph()` more robust
 + commit: avoid parsing non-commits in `lookup_commit_reference_gently()`

 The code to accept shallow "git push" has been optimized.

 Will merge to 'master'.
 source: <20260216-b4-pks-receive-pack-optimize-shallow-v1-0-e98886daff2b@pks.im>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
 - wt-status: use hash_algo from local repository instead of global the_hash_algo
 - wt-status: replace uses of the_repository with local repository instances
 - wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'next'?
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-23) 4 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Needs review.
 cf. <xmqq5x7nknrd.fsf@gitster.g>
 source: <pull.2008.v5.git.1771856405.gitgitgadget@gmail.com>


* jh/alias-i18n (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-20 at b9a5c15c4f)
 + completion: fix zsh alias listing for subsection aliases
 + alias: support non-alphanumeric names via subsection syntax
 + alias: prepare for subsection aliases
 + help: use list_aliases() for alias listing
 (this branch is used by jh/alias-i18n-fixes and kh/alias-i18n-docfix.)

 Extend the alias configuration syntax to allow aliases using
 characters outside ASCII alphanumeric (plus '-').

 Will merge to 'master'.
 source: <20260218215737.1181147-1-jonatan@jontes.page>


* hy/diff-lazy-fetch-with-break-fix (2026-02-23) 1 commit
  (merged to 'next' on 2026-02-25 at afe07ad86c)
 + diffcore-break: avoid segfault with freed entries

 A prefetch call can be triggered to access a stale diff_queue entry
 after diffcore-break breaks a filepair into two and freed the
 original entry that is no longer used, leading to a segfault, which
 has been corrected.

 Will merge to 'master'.
 source: <20260224061329.60364-2-hanyang.tony@bytedance.com>


* ps/history-ergonomics-updates (2026-02-15) 5 commits
  (merged to 'next' on 2026-02-19 at 9d5bc4efc5)
 + Documentation/git-history: document default for "--update-refs="
 + builtin/history: rename "--ref-action=" to "--update-refs="
 + builtin/history: replace "--ref-action=print" with "--dry-run"
 + builtin/history: check for merges before asking for user input
 + builtin/history: perform revwalk checks before asking for user input

 UI improvements for "git history reword".

 Will merge to 'master'.
 source: <20260216-b4-pks-history-dry-run-v3-0-c4db58a651fc@pks.im>


* kh/doc-patch-id-4 (2026-02-14) 3 commits
  (merged to 'next' on 2026-02-22 at bfae23ac5e)
 + doc: patch-id: see also git-cherry(1)
 + doc: patch-id: add script example
 + doc: patch-id: emphasize multi-patch processing

 Doc update.

 Will merge to 'master'.
 source: <V2_CV_doc_patch-id_4.371@msgid.xyz>


* kh/doc-am-xref (2026-02-09) 4 commits
  (merged to 'next' on 2026-02-22 at 920d0c2836)
 + doc: am: fill out hook discussion
 + doc: am: add missing config am.messageId
 + doc: am: say that --message-id adds a trailer
 + doc: am: normalize git(1) command links

 Doc update.

 Will merge to 'master'.
 source: <doc_am_gitlinks_and_am.messageId.321@msgid.xyz>


* ps/ci-gitlab-msvc-updates (2026-02-18) 7 commits
  (merged to 'next' on 2026-02-20 at b2a8b7bf93)
 + gitlab-ci: handle failed tests on MSVC+Meson job
 + gitlab-ci: use "run-test-slice-meson.sh"
 + ci: make test slicing consistent across Meson/Make
 + github: fix Meson tests not executing at all
 + meson: fix MERGE_TOOL_DIR with "--no-bin-wrappers"
 + ci: don't skip smallest test slice in GitLab
 + ci: handle failures of test-slice helper

 CI update.

 Will merge to 'master'.
 source: <20260219-b4-pks-ci-meson-improvements-v2-0-6047b8307ab2@pks.im>


* ps/tests-wo-iconv-fixes (2026-02-20) 5 commits
  (merged to 'next' on 2026-02-20 at 277b2c99aa)
 + t6006: don't use iconv(1) without ICONV prereq
 + t5550: add ICONV prereq to tests that use "$HTTPD_URL/error"
 + t4205: improve handling of ICONV prerequisite
 + t40xx: don't use iconv(1) without ICONV prereq
 + t: don't set ICONV prereq when iconv(1) is missing

 Some tests assumed "iconv" is available without honoring ICONV
 prerequisite, which has been corrected.

 Will merge to 'master'.
 source: <20260220-b4-pks-ci-msvc-iconv-fixes-v4-0-e0e6bbcaeb5b@pks.im>


* pw/meson-doc-mergetool (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-22 at dfdfff02f8)
 + meson: fix building mergetool docs

 Update build precedure for mergetool documentation in meson-based builds.

 Will merge to 'master'.
 source: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>


* ds/config-list-with-type (2026-02-23) 13 commits
  (merged to 'next' on 2026-02-26 at cdaee07fde)
 + config: use an enum for type
 + config: restructure format_config()
 + config: format colors quietly
 + color: add color_parse_quietly()
 + config: format expiry dates quietly
 + config: format paths gently
 + config: format bools or strings in helper
 + config: format bools or ints gently
 + config: format bools gently
 + config: format int64s gently
 + config: make 'git config list --type=<X>' work
 + config: add 'gently' parameter to format_config()
 + config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.

 Will merge to 'master'.
 source: <pull.2044.v3.git.1771849615.gitgitgadget@gmail.com>


* rr/gitweb-mobile (2026-02-16) 5 commits
  (merged to 'next' on 2026-02-26 at b7e4c26f73)
 + gitweb: let page header grow on mobile for long wrapped project names
 + gitweb: fix mobile footer overflow by wrapping text and clearing floats
 + gitweb: fix mobile page overflow across log/commit/blob/diff views
 + gitweb: prevent project search bar from overflowing on mobile
 + gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.

 Will merge to 'master'.
 source: <pull.2043.v2.git.1771257211.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-19) 1 commit
  (merged to 'next' on 2026-02-26 at 913be932b0)
 + osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).

 Will merge to 'master'.
 source: <pull.2046.v4.git.1771551540816.gitgitgadget@gmail.com>


* aa/add-p-no-auto-advance (2026-02-14) 4 commits
  (merged to 'next' on 2026-02-25 at ce27f94bc2)
 + add-patch: allow interfile navigation when selecting hunks
 + add-patch: allow all-or-none application of patches
 + add-patch: modify patch_update_file() signature
 + interactive -p: add new `--auto-advance` flag

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Will merge to 'master'.
 source: <cover.1771066252.git.abrahamadekunle50@gmail.com>


* kn/ref-location (2026-02-25) 6 commits
  (merged to 'next' on 2026-02-26 at e87adbdb69)
 + refs: add GIT_REFERENCE_BACKEND to specify reference backend
 + refs: allow reference location in refstorage config
 + refs: receive and use the reference storage payload
 + refs: move out stub modification to generic layer
 + refs: extract out `refs_create_refdir_stubs()`
 + setup: don't modify repo in `create_reference_database()`

 Allow the directory in which reference backends store their data to
 be specified.

 Will merge to 'master'.
 source: <20260225-kn-alternate-ref-dir-v9-0-3fe118e40e28@gmail.com>


* ar/config-hooks (2026-02-18) 9 commits
 - hook: add -z option to "git hook list"
 - hook: allow out-of-repo 'git hook' invocations
 - hook: allow event = "" to overwrite previous values
 - hook: allow disabling config hooks
 - hook: include hooks from the config
 - hook: add "git hook list" command
 - hook: run a list of hooks to prepare for multihook support
 - hook: add internal state alloc/free callbacks
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.

 Will merge to 'next'.
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-20 at 1d5f62e778)
 + whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.

 Will merge to 'master'.
 source: <xmqqpl6hhm96.fsf@gitster.g>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at a6cd49271f)
 + meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Will merge to 'master'.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at 094113b392)
 + gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'master'.
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-21) 11 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - hook: refactor hook_config_cache from strmap to named struct
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260222002904.1879356-1-adrian.ratiu@collabora.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
  (merged to 'next' on 2026-02-20 at a386d47625)
 + checkout: tell "parse_remote_branch" which command is calling it
 + checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Will merge to 'master'.
 source: <20260129190616.645471-1-gitster@pobox.com>


* ps/for-each-ref-in-fixes (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-19 at 5397753d41)
 + bisect: simplify string_list memory handling
 + bisect: fix misuse of `refs_for_each_ref_in()`
 + pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 + pack-bitmap: deduplicate logic to iterate over preferred bitmap tips
 (this branch is used by ps/refs-for-each.)

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.

 Will merge to 'master'.
 source: <20260219-b4-pks-fix-for-each-ref-in-misuse-v4-0-57ac30172fae@pks.im>


* ps/object-info-bits-cleanup (2026-02-11) 5 commits
  (merged to 'next' on 2026-02-22 at 4d702cbecc)
 + odb: convert `odb_has_object()` flags into an enum
 + odb: convert object info flags into an enum
 + odb: drop gaps in object info flag values
 + builtin/fsck: fix flags passed to `odb_has_object()`
 + builtin/backfill: fix flags passed to `odb_has_object()`
 (this branch is used by ps/odb-sources.)

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Will merge to 'master'.
 source: <20260212-b4-pks-read-object-info-flags-v2-0-3bfa9bb149ef@pks.im>


* ty/symlinks-use-unsigned-for-bitset (2026-02-16) 1 commit
  (merged to 'next' on 2026-02-22 at 6546dc5cf2)
 + symlinks: use unsigned int for flags

 Code clean-up.

 Will merge to 'master'.
 source: <20260216172028.140525-1-a3205153416@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
  (merged to 'next' on 2026-02-22 at 4aa543f115)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + run-command: poll child input in addition to output
 + hook: add jobs option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: allow separate std[out|err] streams
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add helper for pp child states
 + t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Will merge to 'master'.
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx9WehtwSMie53xzZUU7iK3JTrgUbVK48WM7S+LBi=jpkQ@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Expecting review responses.
 cf. <xmqqv7gcnwd4.fsf@gitster.g>
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Will merge to 'next'.
 cf. <xmqq5x7rvyn4.fsf@gitster.g>
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* ps/odb-for-each-object (2026-01-26) 16 commits
  (merged to 'next' on 2026-02-22 at 80178ecd0d)
 + odb: drop unused `for_each_{loose,packed}_object()` functions
 + reachable: convert to use `odb_for_each_object()`
 + builtin/pack-objects: use `packfile_store_for_each_object()`
 + odb: introduce mtime fields for object info requests
 + treewide: drop uses of `for_each_{loose,packed}_object()`
 + treewide: enumerate promisor objects via `odb_for_each_object()`
 + builtin/fsck: refactor to use `odb_for_each_object()`
 + odb: introduce `odb_for_each_object()`
 + packfile: introduce function to iterate through objects
 + packfile: extract function to iterate through objects of a store
 + object-file: introduce function to iterate through objects
 + object-file: extract function to read object info from path
 + odb: fix flags parameter to be unsigned
 + odb: rename `FOR_EACH_OBJECT_*` flags
 + Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 + Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object
 (this branch is used by ps/odb-sources.)

 Revamp object enumeration API around odb.

 Will merge to 'master'.
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-22 at f44d607586)
 + subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'master'.
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-02-15) 2 commits
  (merged to 'next' on 2026-02-26 at 2183b3405e)
 + shallow: handling fetch relative-deepen
 + shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Will merge to 'master'.
 source: <pull.2121.v5.git.git.1771186316.gitgitgadget@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
  (merged to 'next' on 2026-02-22 at acae2989d4)
 + t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Will merge to 'master'.
 source: <20260107074724.13165-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Will merge to 'next'.
 cf. <CAP8UFD2Rz3NMrTayi9yjRk4-51tStaLWKeBVB9RaJMWmiBLqrQ@mail.gmail.com>
 source: <cover.1771258573.git.belkid98@gmail.com>


* lo/repo-info-keys (2026-02-13) 2 commits
  (merged to 'next' on 2026-02-19 at 3a9b510b86)
 + repo: add new flag --keys to git-repo-info
 + repo: rename the output format "keyvalue" to "lines"
 (this branch is used by lo/repo-leftover-bits.)

 "git repo info" learns "--keys" action to list known keys.

 Will merge to 'master'.
 source: <20260214005818.37349-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'next'?
 source: <cover.1771959555.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Will merge to 'next'?
 Message-Id: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


* hn/status-compare-with-push (2026-02-26) 3 commits
  (merged to 'next' on 2026-02-26 at 1c11b8819a)
 + status: add status.compareBranches config for multiple branch comparisons
 + refactor format_branch_comparison in preparation
 + Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.

 Will merge to 'master'.
 cf. <xmqqa4wv5xsb.fsf@gitster.g>
 source: <pull.2138.v30.git.git.1772102022.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 . receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 May not be a good idea after all.  A controlled death would be OK, though.
 cf. <xmqqbjjgiz3a.fsf@gitster.g>
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* kh/alias-i18n-docfix (2026-02-23) 1 commit
 . doc: config: fix list continuation in alias section
 (this branch uses jh/alias-i18n.)

 Doc mark-up fix.

 Superseded by jh/alias-i18n-fixes?
 source: <20260218215737.1181147-1-jonatan@jontes.page>


^ permalink raw reply	[relevance 16%]

* What's cooking in git.git (Feb 2026, #09)
@ 2026-02-26  1:40 16% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-26  1:40 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* ac/string-list-sort-u-and-tests (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-17 at 14b7b5d918)
 + sparse-checkout: use string_list_sort_u

 Code clean-up using a new helper function introduced lately.
 source: <20260213033729.50208-1-amishhhaaaa@gmail.com>


* cc/lop-filter-auto (2026-02-16) 9 commits
  (merged to 'next' on 2026-02-17 at f10e546e7b)
 + fetch-pack: wire up and enable auto filter logic
 + promisor-remote: change promisor_remote_reply()'s signature
 + promisor-remote: keep advertised filters in memory
 + list-objects-filter-options: support 'auto' mode for --filter
 + doc: fetch: document `--filter=<filter-spec>` option
 + fetch: make filter_options local to cmd_fetch()
 + clone: make filter_options local to cmd_clone()
 + promisor-remote: allow a client to store fields
 + promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.
 source: <20260216132317.15894-1-christian.couder@gmail.com>


* dk/complete-stash-import-export (2026-02-07) 1 commit
  (merged to 'next' on 2026-02-17 at 406e4cc3ee)
 + completion: add stash import, export

 Command line completion (in contrib/) update.
 source: <20260207215924.28863-1-ben.knoble+github@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
  (merged to 'next' on 2026-02-17 at 1ed2797464)
 + revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* jc/doc-cg-needswork (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-17 at 5e35bc87bd)
 + CodingGuidelines: document NEEDSWORK comments

 A CodingGuidelines update.
 source: <xmqqldgxmzbj.fsf@gitster.g>


* kh/doc-am-format-sendmail (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-13 at 8850dc2fa9)
 + doc: add caveat about round-tripping format-patch

 Doc update.
 source: <V3_format-patch_caveats.354@msgid.xyz>


* mc/tr2-process-ancestry-cleanup (2026-02-13) 6 commits
  (merged to 'next' on 2026-02-17 at 2ebebfc02c)
 + t0213: add trace2 cmd_ancestry tests
 + test-tool: extend trace2 helper with 400ancestry
 + trace2: emit cmd_ancestry data for Windows
 + trace2: refactor Windows process ancestry trace2 event
 + build: include procinfo.c impl for macOS
 + trace2: add macOS process ancestry tracing

 Add process ancestry data to trace2 on macOS to match what we
 already do on Linux and Windows.  Also adjust the way Windows
 implementation reports this information to match the other two.
 source: <pull.2040.v2.git.1771012500.gitgitgadget@gmail.com>


* ps/pack-concat-wo-backfill (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-17 at 221d0623a2)
 + builtin/pack-objects: don't fetch objects when merging packs

 "git pack-objects --stdin-packs" with "--exclude-promisor-objects"
 fetched objects that are promised, which was not wanted.  This has
 been fixed.
 source: <20260211-pks-pack-objects-stdin-skip-backfill-fetch-v1-1-870cad56d8ae@pks.im>


* pw/commit-msg-sample-hook (2026-02-13) 2 commits
  (merged to 'next' on 2026-02-17 at 6a23eb7fc3)
 + templates: detect commit messages containing diffs
 + templates: add .gitattributes entry for sample hooks

 Update sample commit-msg hook to complain when a log message has
 material mailinfo considers the end of log message in the middle.
 source: <cover.1770993281.git.phillip.wood@dunelm.org.uk>

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

* jt/repo-structure-extrema (2026-02-23) 5 commits
 - builtin/repo: find tree with most entries
 - builtin/repo: find commit with most parents
 - builtin/repo: add OID annotations to table output
 - builtin/repo: collect largest inflated objects
 - builtin/repo: update stats for each object

 "git repo structure" command learns to report maximum values on
 various aspects of objects it inspects.

 Comments?
 source: <20260223174120.2356504-1-jltobler@gmail.com>


* kh/alias-i18n-docfix (2026-02-23) 1 commit
 . doc: config: fix list continuation in alias section
 (this branch uses jh/alias-i18n.)

 Doc mark-up fix.

 Superseded by jh/alias-i18n-fixes?
 source: <20260218215737.1181147-1-jonatan@jontes.page>


* ps/fsck-stream-from-the-right-object-instance (2026-02-23) 4 commits
 - pack-check: fix verification of large objects
 - packfile: expose function to read object stream for an offset
 - object-file: adapt `stream_object_signature()` to take a stream
 - t/helper: improve "genrandom" test helper

 "fsck" iterates over packfiles and its access to pack data caused
 the list to be permuted, which caused it to loop forever; the code
 to access pack data by "fsck" has been updated to avoid this.

 Comments?
 source: <20260223-pks-fsck-fix-v2-0-99a0714ea3bd@pks.im>


* ps/odb-sources (2026-02-23) 19 commits
 - odb/source: make `begin_transaction()` function pluggable
 - odb/source: make `write_alternate()` function pluggable
 - odb/source: make `read_alternates()` function pluggable
 - odb/source: make `write_object_stream()` function pluggable
 - odb/source: make `write_object()` function pluggable
 - odb/source: make `freshen_object()` function pluggable
 - odb/source: make `for_each_object()` function pluggable
 - odb/source: make `read_object_stream()` function pluggable
 - odb/source: make `read_object_info()` function pluggable
 - odb/source: make `close()` function pluggable
 - odb/source: make `reprepare()` function pluggable
 - odb/source: make `free()` function pluggable
 - odb/source: introduce source type for robustness
 - odb: move reparenting logic into respective subsystems
 - odb: embed base source in the "files" backend
 - odb: introduce "files" source
 - odb: split `struct odb_source` into separate header
 - Merge branch 'ps/object-info-bits-cleanup' into ps/odb-sources
 - Merge branch 'ps/odb-for-each-object' into ps/odb-sources
 (this branch uses ps/object-info-bits-cleanup and ps/odb-for-each-object.)

 The object source API is getting restructured to allow plugging new
 backends.

 Comments?
 source: <20260223-b4-pks-odb-source-pluggable-v1-0-253bac1db598@pks.im>


* ds/for-each-repo-w-worktree (2026-02-24) 2 commits
 - for-each-repo: work correctly in a worktree
 - for-each-repo: test outside of repo context

 "git for-each-repo" started from a secondary worktree did not work
 as expected, which has been corrected.

 Expecting a (hopefully small and final) reroll?
 cf. <20260225131344.GA2139176@coredump.intra.peff.net>
 source: <pull.2056.v2.git.1771968924.gitgitgadget@gmail.com>


* jh/alias-i18n-fixes (2026-02-24) 4 commits
 - SQUASH??? leakfix
 - alias: treat empty subsection [alias ""] as plain [alias]
 - doc: fix list continuation in alias subsection example
 - Merge branch 'jh/alias-i18n' into jh/alias-i18n-fixes
 (this branch uses jh/alias-i18n.)

 Further update to the i18n alias support to avoid regressions.

 Expecting a (hopefully small and final) reroll?
 cf. <xmqq8qcga6ya.fsf@gitster.g>
 source: <20260224171245.458377-1-jonatan@jontes.page>


* lc/rebase-trailer (2026-02-23) 5 commits
 - rebase: support --trailer
 - commit, tag: parse --trailer with OPT_STRVEC
 - trailer: append trailers without fork/exec
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor trailer rewriting

 "git rebase" learns "--trailer" command to drive the
 interpret-trailers machinery.

 Comments?
 source: <20260224070552.148591-1-me@linux.beauty>


* mf/format-patch-cover-letter-format (2026-02-24) 3 commits
 - SQUASH???
 - format-patch: add commitListFormat config
 - format-patch: add ability to use alt cover format

 "git format-patch --cover-letter" learns to use a simpler format
 instead of the traditional shortlog format to list its commits with
 a new --cover-letter-format option and format.commitListFormat
 configuration variable.

 Expecting a (hopefully small and final) reroll?
 cf. <aZ4-_jmFS8yS4g49@exploit>
 source: <cover.1771925291.git.mroik@delayed.space>


* sp/send-email-validate-charset (2026-02-24) 1 commit
 - send-email: validate charset name in 8bit encoding prompt

 "git send-email" has learned to be a bit more careful when it
 accepts charset to use from the end-user, to avoid 'y' (mistaken
 'yes' when expecting a charset like 'UTF-8') and other nonsense.

 Expecting a reroll?
 cf. <CALnO6CDSJPnVi-1RUsr7tFMwa0_xTJkiQmzTL_b-BGq=6PSz0A@mail.gmail.com>
 source: <20260224143624.23678-1-shreyanshpaliwalcmsmn@gmail.com>


* cx/fetch-display-ubfix (2026-02-24) 1 commit
 - fetch: fix wrong evaluation order in URL trailing-slash trimming

 Undefined-behaviour fix in "git fetch".

 Will merge to 'next'.
 source: <pull.2211.git.git.1771984857879.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

These topics have been sitting without activity for too long.  They
may have to be discarded unless something new happens to them soon.

* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 May not be a good idea after all.  A controlled death would be OK, though.
 cf. <xmqqbjjgiz3a.fsf@gitster.g>
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>

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

* pt/fsmonitor-linux (2026-02-25) 10 commits
 - fsmonitor: close inherited file descriptors and detach in daemon
 - run-command: add close_fd_above_stderr option
 - fsmonitor: add tests for Linux
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: deduplicate settings logic for Unix platforms
 - fsmonitor: deduplicate IPC path logic for Unix platforms
 - fsmonitor: use pthread_cond_timedwait for cookie wait
 - compat/win32: add pthread_cond_timedwait
 - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
 - fsmonitor: fix khash memory leak in do_handle_client

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v6.git.git.1772050636.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* ac/help-sort-correctly (2026-02-21) 2 commits
 - SQUASH??? simplify
 - help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Expecting a (hopefully small and final) reroll, with tests?
 source: <20260221162359.43336-2-amishhhaaaa@gmail.com>


* lg/t2004-test-path-is-helpers (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at c5862e1b3d)
 + t2004: use test_path_is_file instead of test -f

 Test code clean-up.

 Will merge to 'master'.
 source: <pull.2049.git.1771694893208.gitgitgadget@gmail.com>


* ps/simplify-normalize-path-copy-len (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at ce7c45c6fa)
 + path: factor out skip_slashes() in normalize_path_copy_len()

 Code clean-up.

 Will merge to 'master'.
 source: <20260221110511.1592-2-pushkarkumarsingh1970@gmail.com>


* sc/pack-redundant-leakfix (2026-02-21) 1 commit
  (merged to 'next' on 2026-02-25 at b2fda8839e)
 + pack-redundant: fix memory leak when open_pack_index() fails

 Leakfix.

 Will merge to 'master'.
 source: <20260221103900.41740-1-sahityajb@gmail.com>


* ty/setup-error-tightening (2026-02-22) 1 commit
 - setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.

 Will merge to 'next'.
 source: <20260223074410.917523-1-a3205153416@gmail.com>


* bc/do-not-reorder-packs-during-fsck (2026-02-22) 1 commit
 . fsck: do not loop infinitely when processing packs

 Access to packfiles during fsck would reorder the mru list of
 packs, which causes the fsck to loop forever going over the list.

 Supersided by ps/fsck-stream-from-the-right-object-instance?
 source: <20260222183710.2963424-1-sandals@crustytoothpaste.net>


* ap/use-test-seq-f-more (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at d847fcad1e)
 + t: use test_seq -f and pipes in a few more places

 Test clean-up.

 Will merge to 'master'.
 source: <20260218181019.1705160-1-aplattner@nvidia.com>


* bk/mailmap-wo-the-repository (2026-02-19) 2 commits
 - mailmap: drop global config variables
 - mailmap: stop using the_repository

 Wean the mailmap code off of the_repository dependency.

 Will merge to 'next'.
 source: <20260220060442.29469-1-bkkaracay@gmail.com>


* db/doc-fetch-jobs-auto (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at 4e20a85963)
 + doc: fetch: document `--jobs=0` behavior

 Doc update.

 Will merge to 'master'.
 source: <pull.2047.git.1771443159369.gitgitgadget@gmail.com>


* jt/object-file-use-container-of (2026-02-22) 2 commits
  (merged to 'next' on 2026-02-22 at 309c995771)
 + object-file.c: avoid container_of() of a NULL container
  (merged to 'next' on 2026-02-20 at 7a30cb262f)
 + object-file: use `container_of()` to convert from base types

 Code clean-up.

 Will merge to 'master'.
 source: <20260218210120.1146078-1-jltobler@gmail.com>
 source: <xmqqh5r8r0to.fsf_-_@gitster.g>


* kh/format-patch-noprefix-is-boolean (2026-02-23) 2 commits
 - doc: diff-options.adoc: show format.noprefix for format-patch
 - format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.

 Will merge to 'next'.
 source: <V2_CV_format.noprefix_boolean.421@msgid.xyz>


* mf/format-patch-honor-from-for-cover-letter (2026-02-17) 1 commit
  (merged to 'next' on 2026-02-20 at d3efdd79b2)
 + format-patch: fix From header in cover letter

 "git format-patch --from=<me>" did not honor the command line
 option when writing out the cover letter, which has been corrected.

 Will merge to 'master'.
 source: <20260217232519.24898-1-mroik@delayed.space>


* pw/no-more-NULL-means-current-worktree (2026-02-19) 2 commits
 - path: remove repository argument from worktree_git_path()
 - wt-status: avoid passing NULL worktree

 API clean-up for the worktree subsystem.

 Will merge to 'next'?
 cf. <xmqqv7fs4jlp.fsf@gitster.g>
 source: <cover.1771511192.git.phillip.wood@dunelm.org.uk>


* cs/subtree-split-fixes (2026-02-17) 3 commits
  (merged to 'next' on 2026-02-25 at 3824d2c52d)
 + contrib/subtree: process out-of-prefix subtrees
 + contrib/subtree: test history depth
 + contrib/subtree: capture additional test-cases

 An earlier attempt to optimize "git subtree" discarded too much
 relevant histories, which has been corrected.

 Will merge to 'master'.
 source: <20260217-cs-subtree-remove-optimization-v2-0-4299e71a30c6@howdoi.land>


* dt/send-email-client-cert (2026-02-20) 1 commit
 - send-mail: add client certificate options

 "git send-email" learns to support use of client-side certificates.

 Expecting a (hopefully small and final) reroll?
 cf. <xmqqh5rbz83b.fsf@gitster.g>
 source: <20260220081717.555185-2-dxdt@dev.snart.me>


* en/merge-ort-almost-wo-the-repository (2026-02-19) 6 commits
 - replay: prevent the_repository from coming back
 - merge-ort: prevent the_repository from coming back
 - merge-ort: replace the_hash_algo with opt->repo->hash_algo
 - merge-ort: replace the_repository with opt->repo
 - merge-ort: pass repository to write_tree()
 - merge,diff: remove the_repository check before prefetching blobs

 Mark the marge-ort codebase to prevent more uses of the_repository
 from getting added.

 Expecting a reroll.
 cf. <CABPp-BGR5Mrm30sSb9Y96VkFC5-XFTYkoAp60LMAf6gCgW3QEg@mail.gmail.com>
 source: <pull.2048.v2.git.1771552788.gitgitgadget@gmail.com>


* jr/apply-directory-normalize (2026-02-17) 1 commit
 - apply: normalize path in --directory argument

 "git apply --directory=./un/../normalized/path" now normalizes the
 given path before using it.

 Will merge to 'next'.
 source: <pull.2198.v2.git.git.1771373732749.gitgitgadget@gmail.com>


* lo/repo-leftover-bits (2026-02-25) 9 commits
 - Documentation/git-repo: capitalize format descriptions
 - Documentation/git-repo: replace 'NUL' with '_NUL_'
 - t1901: adjust nul format output instead of expected value
 - t1900: rename t1900-repo to t1900-repo-info
 - repo: rename struct field to repo_info_field
 - repo: replace get_value_fn_for_key by get_repo_info_field
 - repo: rename repo_info_fields to repo_info_field
 - CodingGuidelines: instruct to name arrays in singular
 - Merge branch 'lo/repo-info-keys' into lo/repo-leftover-bits
 (this branch uses lo/repo-info-keys.)

 Clean-up the code around "git repo info" command.

 Will merge to 'next'?
 source: <20260225183559.79303-1-lucasseikioshiro@gmail.com>


* ps/maintenance-geometric-default (2026-02-24) 8 commits
 - builtin/maintenance: use "geometric" strategy by default
 - t7900: prepare for switch of the default strategy
 - t6500: explicitly use "gc" strategy
 - t5510: explicitly use "gc" strategy
 - t5400: explicitly use "gc" strategy
 - t34xx: don't expire reflogs where it matters
 - t: disable maintenance where we verify object database structure
 - t: fix races caused by background maintenance

 "git maintenance" starts using the "geometric" strategy by default.

 Will merge to 'next'.
 source: <20260224-b4-pks-maintenance-default-geometric-strategy-v2-0-8657338c6fa1@pks.im>


* ps/refs-for-each (2026-02-23) 18 commits
 - refs: replace `refs_for_each_fullref_in()`
 - refs: replace `refs_for_each_namespaced_ref()`
 - refs: replace `refs_for_each_glob_ref()`
 - refs: replace `refs_for_each_glob_ref_in()`
 - refs: replace `refs_for_each_rawref_in()`
 - refs: replace `refs_for_each_rawref()`
 - refs: replace `refs_for_each_ref_in()`
 - refs: improve verification for-each-ref options
 - refs: generalize `refs_for_each_fullref_in_prefixes()`
 - refs: generalize `refs_for_each_namespaced_ref()`
 - refs: speed up `refs_for_each_glob_ref_in()`
 - refs: introduce `refs_for_each_ref_ext`
 - refs: rename `each_ref_fn`
 - refs: rename `do_for_each_ref_flags`
 - refs: move `do_for_each_ref_flags` further up
 - refs: move `refs_head_ref_namespaced()`
 - refs: remove unused `refs_for_each_include_root_ref()`
 - Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each
 (this branch uses ps/for-each-ref-in-fixes.)

 Code refactoring around refs-for-each-* API functions.

 Comments?
 source: <20260223-pks-refs-for-each-unification-v2-0-515d48c8087b@pks.im>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/tree-diff-wo-the-repository (2026-02-20) 1 commit
 - tree-diff: remove the usage of the_hash_algo global

 The last uses of the_repository in "tree-diff.c" have been
 eradicated.

 Will merge to 'next'.
 source: <20260220175331.1250726-1-shreyanshpaliwalcmsmn@gmail.com>


* dk/meson-regen-config-list (2026-02-24) 1 commit
 - build: regenerate config-list.h when Documentation changes

 Fix dependency screw-up in meson-based builds.

 Will merge to 'next'.
 source: <4ef96c6bbf698a08df1df87b7cb053b6d0d00822.1771943954.git.ben.knoble+github@gmail.com>


* jk/ref-filter-lrstrip-optim (2026-02-19) 5 commits
  (merged to 'next' on 2026-02-20 at 88c2fb76b8)
 + ref-filter: clarify lstrip/rstrip component counting
  (merged to 'next' on 2026-02-19 at 6efc8a2023)
 + ref-filter: avoid strrchr() in rstrip_ref_components()
 + ref-filter: simplify rstrip_ref_components() memory handling
 + ref-filter: simplify lstrip_ref_components() memory handling
 + ref-filter: factor out refname component counting

 Code clean-up.

 Will merge to 'master'.
 source: <20260215085755.GA86262@coredump.intra.peff.net>
 source: <20260220060003.GA26256@coredump.intra.peff.net>


* ps/receive-pack-shallow-optim (2026-02-16) 3 commits
  (merged to 'next' on 2026-02-22 at ad6abc1ef8)
 + commit: use commit graph in `lookup_commit_reference_gently()`
 + commit: make `repo_parse_commit_no_graph()` more robust
 + commit: avoid parsing non-commits in `lookup_commit_reference_gently()`

 The code to accept shallow "git push" has been optimized.

 Will merge to 'master'.
 source: <20260216-b4-pks-receive-pack-optimize-shallow-v1-0-e98886daff2b@pks.im>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
 - wt-status: use hash_algo from local repository instead of global the_hash_algo
 - wt-status: replace uses of the_repository with local repository instances
 - wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'next'?
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-23) 4 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf_attach: fix call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Comments?
 source: <pull.2008.v5.git.1771856405.gitgitgadget@gmail.com>


* jh/alias-i18n (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-20 at b9a5c15c4f)
 + completion: fix zsh alias listing for subsection aliases
 + alias: support non-alphanumeric names via subsection syntax
 + alias: prepare for subsection aliases
 + help: use list_aliases() for alias listing
 (this branch is used by jh/alias-i18n-fixes and kh/alias-i18n-docfix.)

 Extend the alias configuration syntax to allow aliases using
 characters outside ASCII alphanumeric (plus '-').

 Will merge to 'master'.
 source: <20260218215737.1181147-1-jonatan@jontes.page>


* hy/diff-lazy-fetch-with-break-fix (2026-02-23) 1 commit
  (merged to 'next' on 2026-02-25 at afe07ad86c)
 + diffcore-break: avoid segfault with freed entries

 A prefetch call can be triggered to access a stale diff_queue entry
 after diffcore-break breaks a filepair into two and freed the
 original entry that is no longer used, leading to a segfault, which
 has been corrected.

 Will merge to 'master'.
 source: <20260224061329.60364-2-hanyang.tony@bytedance.com>


* ps/history-ergonomics-updates (2026-02-15) 5 commits
  (merged to 'next' on 2026-02-19 at 9d5bc4efc5)
 + Documentation/git-history: document default for "--update-refs="
 + builtin/history: rename "--ref-action=" to "--update-refs="
 + builtin/history: replace "--ref-action=print" with "--dry-run"
 + builtin/history: check for merges before asking for user input
 + builtin/history: perform revwalk checks before asking for user input

 UI improvements for "git history reword".

 Will merge to 'master'.
 source: <20260216-b4-pks-history-dry-run-v3-0-c4db58a651fc@pks.im>


* kh/doc-patch-id-4 (2026-02-14) 3 commits
  (merged to 'next' on 2026-02-22 at bfae23ac5e)
 + doc: patch-id: see also git-cherry(1)
 + doc: patch-id: add script example
 + doc: patch-id: emphasize multi-patch processing

 Doc update.

 Will merge to 'master'.
 source: <V2_CV_doc_patch-id_4.371@msgid.xyz>


* kh/doc-am-xref (2026-02-09) 4 commits
  (merged to 'next' on 2026-02-22 at 920d0c2836)
 + doc: am: fill out hook discussion
 + doc: am: add missing config am.messageId
 + doc: am: say that --message-id adds a trailer
 + doc: am: normalize git(1) command links

 Doc update.

 Will merge to 'master'.
 source: <doc_am_gitlinks_and_am.messageId.321@msgid.xyz>


* ps/ci-gitlab-msvc-updates (2026-02-18) 7 commits
  (merged to 'next' on 2026-02-20 at b2a8b7bf93)
 + gitlab-ci: handle failed tests on MSVC+Meson job
 + gitlab-ci: use "run-test-slice-meson.sh"
 + ci: make test slicing consistent across Meson/Make
 + github: fix Meson tests not executing at all
 + meson: fix MERGE_TOOL_DIR with "--no-bin-wrappers"
 + ci: don't skip smallest test slice in GitLab
 + ci: handle failures of test-slice helper

 CI update.

 Will merge to 'master'.
 source: <20260219-b4-pks-ci-meson-improvements-v2-0-6047b8307ab2@pks.im>


* ps/tests-wo-iconv-fixes (2026-02-20) 5 commits
  (merged to 'next' on 2026-02-20 at 277b2c99aa)
 + t6006: don't use iconv(1) without ICONV prereq
 + t5550: add ICONV prereq to tests that use "$HTTPD_URL/error"
 + t4205: improve handling of ICONV prerequisite
 + t40xx: don't use iconv(1) without ICONV prereq
 + t: don't set ICONV prereq when iconv(1) is missing

 Some tests assumed "iconv" is available without honoring ICONV
 prerequisite, which has been corrected.

 Will merge to 'master'.
 source: <20260220-b4-pks-ci-msvc-iconv-fixes-v4-0-e0e6bbcaeb5b@pks.im>


* pw/meson-doc-mergetool (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-22 at dfdfff02f8)
 + meson: fix building mergetool docs

 Update build precedure for mergetool documentation in meson-based builds.

 Will merge to 'master'.
 source: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>


* ds/config-list-with-type (2026-02-23) 13 commits
 - config: use an enum for type
 - config: restructure format_config()
 - config: format colors quietly
 - color: add color_parse_quietly()
 - config: format expiry dates quietly
 - config: format paths gently
 - config: format bools or strings in helper
 - config: format bools or ints gently
 - config: format bools gently
 - config: format int64s gently
 - config: make 'git config list --type=<X>' work
 - config: add 'gently' parameter to format_config()
 - config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.

 Will merge to 'next'.
 source: <pull.2044.v3.git.1771849615.gitgitgadget@gmail.com>


* rr/gitweb-mobile (2026-02-16) 5 commits
 - gitweb: let page header grow on mobile for long wrapped project names
 - gitweb: fix mobile footer overflow by wrapping text and clearing floats
 - gitweb: fix mobile page overflow across log/commit/blob/diff views
 - gitweb: prevent project search bar from overflowing on mobile
 - gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.

 Will merge to 'next'.
 source: <pull.2043.v2.git.1771257211.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-19) 1 commit
 - osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).

 Will merge to 'next'.
 source: <pull.2046.v4.git.1771551540816.gitgitgadget@gmail.com>


* aa/add-p-no-auto-advance (2026-02-14) 4 commits
  (merged to 'next' on 2026-02-25 at ce27f94bc2)
 + add-patch: allow interfile navigation when selecting hunks
 + add-patch: allow all-or-none application of patches
 + add-patch: modify patch_update_file() signature
 + interactive -p: add new `--auto-advance` flag

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Will merge to 'master'.
 source: <cover.1771066252.git.abrahamadekunle50@gmail.com>


* kn/ref-location (2026-02-25) 6 commits
 - refs: add GIT_REFERENCE_BACKEND to specify reference backend
 - refs: allow reference location in refstorage config
 - refs: receive and use the reference storage payload
 - refs: move out stub modification to generic layer
 - refs: extract out `refs_create_refdir_stubs()`
 - setup: don't modify repo in `create_reference_database()`

 Allow the directory in which reference backends store their data to
 be specified.

 Will merge to 'next'.
 source: <20260225-kn-alternate-ref-dir-v9-0-3fe118e40e28@gmail.com>


* ar/config-hooks (2026-02-18) 9 commits
 - hook: add -z option to "git hook list"
 - hook: allow out-of-repo 'git hook' invocations
 - hook: allow event = "" to overwrite previous values
 - hook: allow disabling config hooks
 - hook: include hooks from the config
 - hook: add "git hook list" command
 - hook: run a list of hooks to prepare for multihook support
 - hook: add internal state alloc/free callbacks
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.

 Will merge to 'next'.
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-20 at 1d5f62e778)
 + whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.

 Will merge to 'master'.
 source: <xmqqpl6hhm96.fsf@gitster.g>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at a6cd49271f)
 + meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Will merge to 'master'.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at 094113b392)
 + gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'master'.
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-21) 11 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - hook: refactor hook_config_cache from strmap to named struct
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260222002904.1879356-1-adrian.ratiu@collabora.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
  (merged to 'next' on 2026-02-20 at a386d47625)
 + checkout: tell "parse_remote_branch" which command is calling it
 + checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Will merge to 'master'.
 source: <20260129190616.645471-1-gitster@pobox.com>


* ps/for-each-ref-in-fixes (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-19 at 5397753d41)
 + bisect: simplify string_list memory handling
 + bisect: fix misuse of `refs_for_each_ref_in()`
 + pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 + pack-bitmap: deduplicate logic to iterate over preferred bitmap tips
 (this branch is used by ps/refs-for-each.)

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.

 Will merge to 'master'.
 source: <20260219-b4-pks-fix-for-each-ref-in-misuse-v4-0-57ac30172fae@pks.im>


* ps/object-info-bits-cleanup (2026-02-11) 5 commits
  (merged to 'next' on 2026-02-22 at 4d702cbecc)
 + odb: convert `odb_has_object()` flags into an enum
 + odb: convert object info flags into an enum
 + odb: drop gaps in object info flag values
 + builtin/fsck: fix flags passed to `odb_has_object()`
 + builtin/backfill: fix flags passed to `odb_has_object()`
 (this branch is used by ps/odb-sources.)

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Will merge to 'master'.
 source: <20260212-b4-pks-read-object-info-flags-v2-0-3bfa9bb149ef@pks.im>


* ty/symlinks-use-unsigned-for-bitset (2026-02-16) 1 commit
  (merged to 'next' on 2026-02-22 at 6546dc5cf2)
 + symlinks: use unsigned int for flags

 Code clean-up.

 Will merge to 'master'.
 source: <20260216172028.140525-1-a3205153416@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
  (merged to 'next' on 2026-02-22 at 4aa543f115)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + run-command: poll child input in addition to output
 + hook: add jobs option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: allow separate std[out|err] streams
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add helper for pp child states
 + t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Will merge to 'master'.
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx-TLwqbcdGcb2drD4vE6D3M93EPMjcAeTNR+XNTbmTVZg@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Comments?
 cf. <xmqq5x7rvyn4.fsf@gitster.g>
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* ps/odb-for-each-object (2026-01-26) 16 commits
  (merged to 'next' on 2026-02-22 at 80178ecd0d)
 + odb: drop unused `for_each_{loose,packed}_object()` functions
 + reachable: convert to use `odb_for_each_object()`
 + builtin/pack-objects: use `packfile_store_for_each_object()`
 + odb: introduce mtime fields for object info requests
 + treewide: drop uses of `for_each_{loose,packed}_object()`
 + treewide: enumerate promisor objects via `odb_for_each_object()`
 + builtin/fsck: refactor to use `odb_for_each_object()`
 + odb: introduce `odb_for_each_object()`
 + packfile: introduce function to iterate through objects
 + packfile: extract function to iterate through objects of a store
 + object-file: introduce function to iterate through objects
 + object-file: extract function to read object info from path
 + odb: fix flags parameter to be unsigned
 + odb: rename `FOR_EACH_OBJECT_*` flags
 + Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 + Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object
 (this branch is used by ps/odb-sources.)

 Revamp object enumeration API around odb.

 Will merge to 'master'.
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-22 at f44d607586)
 + subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'master'.
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-02-15) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Will merge to 'next'.
 source: <pull.2121.v5.git.git.1771186316.gitgitgadget@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
  (merged to 'next' on 2026-02-22 at acae2989d4)
 + t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Will merge to 'master'.
 source: <20260107074724.13165-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1771258573.git.belkid98@gmail.com>


* lo/repo-info-keys (2026-02-13) 2 commits
  (merged to 'next' on 2026-02-19 at 3a9b510b86)
 + repo: add new flag --keys to git-repo-info
 + repo: rename the output format "keyvalue" to "lines"
 (this branch is used by lo/repo-leftover-bits.)

 "git repo info" learns "--keys" action to list known keys.

 Will merge to 'master'.
 source: <20260214005818.37349-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-02-24) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Will merge to 'next'?
 source: <cover.1771959555.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Comments?  v1 saw a lot of discussions, v2 didn't, and this is v3,
 which is essentially identical to v2 with CI fixes (which work!).


* hn/status-compare-with-push (2026-02-25) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.
 source: <pull.2138.v29.git.git.1772056263.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 16%]

* Re: What's cooking in git.git (Feb 2026, #08)
  @ 2026-02-23 21:45 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-23 21:45 UTC (permalink / raw)
  To: Kristoffer Haugsbakk; +Cc: git, Jeff King

"Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> writes:

> On Mon, Feb 23, 2026, at 16:13, Junio C Hamano wrote:
>> * kh/format-patch-noprefix-is-boolean (2026-02-18) 2 commits
>>  - doc: diff-options.adoc: show format.noprefix for format-patch
>>  - format-patch: make format.noprefix a boolean
>>
>>  The configuration variable format.noprefix did not behave as a
>>  proper boolean variable, which has now been fixed and documented.
>>
>>  Will merge to 'next'?
>>  cf. <xmqqy0ko626g.fsf@gitster.g>
>>  source: <CV_format.noprefix_boolean.39c@msgid.xyz>
>
> I’ll make a new version.

Noted. Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Feb 2026, #08)
@ 2026-02-23 15:13 18% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-02-23 15:13 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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/

--------------------------------------------------
[Stalled]

These topics have been sitting without activity for too long.  They
may have to be discarded unless something new happens to them soon.

* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 May not be a good idea after all.  A controlled death would be OK, though.
 cf. <xmqqbjjgiz3a.fsf@gitster.g>
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 cf. <aVuplzNaoCHlZG3S@pks.im>
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>

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

* ac/help-sort-correctly (2026-02-21) 2 commits
 - SQUASH??? simplify
 - help: cleanup the contruction of keys_uniq

 The code in "git help" that shows configuration items in sorted
 order was awkwardly organized and prone to bugs.

 Expecting a (hopefully small and final) reroll, with tests?
 source: <20260221162359.43336-2-amishhhaaaa@gmail.com>


* lg/t2004-test-path-is-helpers (2026-02-21) 1 commit
 - t2004: use test_path_is_file instead of test -f

 Test code clean-up.

 Will merge to 'next'.
 source: <pull.2049.git.1771694893208.gitgitgadget@gmail.com>


* ps/simplify-normalize-path-copy-len (2026-02-21) 1 commit
 - path: factor out skip_slashes() in normalize_path_copy_len()

 Code clean-up.

 Will merge to 'next'.
 source: <20260221110511.1592-2-pushkarkumarsingh1970@gmail.com>


* sc/pack-redundant-leakfix (2026-02-21) 1 commit
 - pack-redundant: fix memory leak when open_pack_index() fails

 Leakfix.

 Will merge to 'next'.
 source: <20260221103900.41740-1-sahityajb@gmail.com>


* ty/setup-error-tightening (2026-02-22) 2 commits
 - SQUASH??? read_gitfile(): group ENOENT and ENOTDIR into a single MISSING error
 - setup: improve error diagnosis for invalid .git files

 While discovering a ".git" directory, the code treats any stat()
 failure as a sign that a filesystem entity .git does not exist
 there, and ignores ".git" that is not a "gitdir" file or a
 directory.  The code has been tightened to notice and report
 filesystem corruption better.

 Needs review.
 source: <20260222102928.377519-1-a3205153416@gmail.com>


* bc/do-not-reorder-packs-during-fsck (2026-02-22) 1 commit
 - fsck: do not loop infinitely when processing packs

 Access to packfiles during fsck would reorder the mru list of
 packs, which causes the fsck to loop forever going over the list.

 Will merge to 'next'?
 source: <20260222183710.2963424-1-sandals@crustytoothpaste.net>

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

* ap/use-test-seq-f-more (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at d847fcad1e)
 + t: use test_seq -f and pipes in a few more places

 Test clean-up.

 Will merge to 'master'.
 source: <20260218181019.1705160-1-aplattner@nvidia.com>


* bk/mailmap-wo-the-repository (2026-02-19) 2 commits
 - mailmap: drop global config variables
 - mailmap: stop using the_repository

 Wean the mailmap code off of the_repository dependency.

 Will merge to 'next'?
 source: <20260220060442.29469-1-bkkaracay@gmail.com>


* db/doc-fetch-jobs-auto (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at 4e20a85963)
 + doc: fetch: document `--jobs=0` behavior

 Doc update.

 Will merge to 'master'.
 source: <pull.2047.git.1771443159369.gitgitgadget@gmail.com>


* jt/object-file-use-container-of (2026-02-22) 2 commits
  (merged to 'next' on 2026-02-22 at 309c995771)
 + object-file.c: avoid container_of() of a NULL container
  (merged to 'next' on 2026-02-20 at 7a30cb262f)
 + object-file: use `container_of()` to convert from base types

 Code clean-up.

 Will merge to 'master'.
 source: <20260218210120.1146078-1-jltobler@gmail.com>
 source: <xmqqh5r8r0to.fsf_-_@gitster.g>


* kh/format-patch-noprefix-is-boolean (2026-02-18) 2 commits
 - doc: diff-options.adoc: show format.noprefix for format-patch
 - format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.

 Will merge to 'next'?
 cf. <xmqqy0ko626g.fsf@gitster.g>
 source: <CV_format.noprefix_boolean.39c@msgid.xyz>


* mf/format-patch-honor-from-for-cover-letter (2026-02-17) 1 commit
  (merged to 'next' on 2026-02-20 at d3efdd79b2)
 + format-patch: fix From header in cover letter

 "git format-patch --from=<me>" did not honor the command line
 option when writing out the cover letter, which has been corrected.

 Will merge to 'master'.
 source: <20260217232519.24898-1-mroik@delayed.space>


* pw/no-more-NULL-means-current-worktree (2026-02-19) 2 commits
 - path: remove repository argument from worktree_git_path()
 - wt-status: avoid passing NULL worktree

 API clean-up for the worktree subsystem.

 Will merge to 'next'?
 cf. <xmqqv7fs4jlp.fsf@gitster.g>
 source: <cover.1771511192.git.phillip.wood@dunelm.org.uk>


* cs/subtree-split-fixes (2026-02-17) 3 commits
 - contrib/subtree: process out-of-prefix subtrees
 - contrib/subtree: test history depth
 - contrib/subtree: capture additional test-cases

 An earlier attempt to optimize "git subtree" discarded too much
 relevant histories, which has been corrected.

 Will merge to 'next'.
 source: <20260217-cs-subtree-remove-optimization-v2-0-4299e71a30c6@howdoi.land>


* dt/send-email-client-cert (2026-02-20) 1 commit
 - send-mail: add client certificate options

 "git send-email" learns to support use of client-side certificates.

 Expecting a (hopefully small and final) reroll?
 cf. <xmqqh5rbz83b.fsf@gitster.g>
 source: <20260220081717.555185-2-dxdt@dev.snart.me>


* en/merge-ort-almost-wo-the-repository (2026-02-19) 6 commits
 - replay: prevent the_repository from coming back
 - merge-ort: prevent the_repository from coming back
 - merge-ort: replace the_hash_algo with opt->repo->hash_algo
 - merge-ort: replace the_repository with opt->repo
 - merge-ort: pass repository to write_tree()
 - merge,diff: remove the_repository check before prefetching blobs

 Mark the marge-ort codebase to prevent more uses of the_repository
 from getting added.

 Expecting a reroll.
 cf. <CABPp-BGR5Mrm30sSb9Y96VkFC5-XFTYkoAp60LMAf6gCgW3QEg@mail.gmail.com>
 source: <pull.2048.v2.git.1771552788.gitgitgadget@gmail.com>


* jr/apply-directory-normalize (2026-02-17) 1 commit
 - apply: normalize path in --directory argument

 "git apply --directory=./un/../normalized/path" now normalizes the
 given path before using it.

 Will merge to 'next'?
 source: <pull.2198.v2.git.git.1771373732749.gitgitgadget@gmail.com>


* lo/repo-leftover-bits (2026-02-18) 9 commits
 - Documentation/git-repo: capitalize format descriptions
 - Documentation/git-repo: replace 'NUL' with '_NUL_'
 - t1901: use tr in git repo structure output instead of expected value
 - t1900: rename t1900-repo to t1900-repo-info
 - repo: rename struct field to repo_info_field
 - repo: replace get_value_fn_for_key by get_repo_info_field
 - repo: rename repo_info_fields to repo_info_field
 - CodingGuidelines: instruct to name arrays in singular
 - Merge branch 'lo/repo-info-keys' into lo/repo-leftover-bits
 (this branch uses lo/repo-info-keys.)

 Clean-up the code around "git repo info" command.

 Expecting a (hopefully small and final) reroll?
 cf. <aZgzmlVfuXgI2UJ9@pks.im>
 cf. <CAPig+cRHm1vDABoHNKiuBRRsvk90Z1qGeeu3DT3VHdzEfJeP=g@mail.gmail.com>
 source: <20260218211845.96009-1-lucasseikioshiro@gmail.com>


* ps/maintenance-geometric-default (2026-02-20) 8 commits
 - builtin/maintenance: use "geometric" strategy by default
 - t7900: prepare for switch of the default strategy
 - t6500: explicitly use "gc" strategy
 - t5510: explicitly use "gc" strategy
 - t5400: explicitly use "gc" strategy
 - t34xx: don't expire reflogs where it matters
 - t: disable maintenance where we verify object database structure
 - t: fix races caused by background maintenance

 "git maintenance" starts using the "geometric" strategy by default.

 Comments?
 source: <20260220-b4-pks-maintenance-default-geometric-strategy-v1-0-faeb321ad13b@pks.im>


* ps/refs-for-each (2026-02-20) 18 commits
 - refs: replace `refs_for_each_fullref_in()`
 - refs: replace `refs_for_each_namespaced_ref()`
 - refs: replace `refs_for_each_glob_ref()`
 - refs: replace `refs_for_each_glob_ref_in()`
 - refs: replace `refs_for_each_rawref_in()`
 - refs: replace `refs_for_each_rawref()`
 - refs: replace `refs_for_each_ref_in()`
 - refs: improve verification for-each-ref options
 - refs: generalize `refs_for_each_fullref_in_prefixes()`
 - refs: generalize `refs_for_each_namespaced_ref()`
 - refs: speed up `refs_for_each_glob_ref_in()`
 - refs: introduce `refs_for_each_ref_ext`
 - refs: remove unused `refs_for_each_include_root_ref()`
 - refs: rename `each_ref_fn`
 - refs: rename `do_for_each_ref_flags`
 - refs: move `do_for_each_ref_flags` further up
 - refs: move `refs_head_ref_namespaced()`
 - Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each
 (this branch uses ps/for-each-ref-in-fixes.)

 Code refactoring around refs-for-each-* API functions.

 Comments?
 source: <20260220-pks-refs-for-each-unification-v1-0-17170bd99de1@pks.im>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/tree-diff-wo-the-repository (2026-02-20) 1 commit
 - tree-diff: remove the usage of the_hash_algo global

 The last uses of the_repository in "tree-diff.c" have been
 eradicated.

 Will merge to 'next'?
 source: <20260220175331.1250726-1-shreyanshpaliwalcmsmn@gmail.com>


* dk/meson-regen-config-list (2026-02-21) 1 commit
 - build: regenerate config-list.h when Documentation changes

 Fix dependency screw-up in meson-based builds

 Will merge to 'next'?
 source: <5dcd4e9308100a25603c50fecb36447c0ee4df62.1771682788.git.ben.knoble+github@gmail.com>


* jk/ref-filter-lrstrip-optim (2026-02-19) 5 commits
  (merged to 'next' on 2026-02-20 at 88c2fb76b8)
 + ref-filter: clarify lstrip/rstrip component counting
  (merged to 'next' on 2026-02-19 at 6efc8a2023)
 + ref-filter: avoid strrchr() in rstrip_ref_components()
 + ref-filter: simplify rstrip_ref_components() memory handling
 + ref-filter: simplify lstrip_ref_components() memory handling
 + ref-filter: factor out refname component counting

 Code clean-up.

 Will merge to 'master'.
 source: <20260215085755.GA86262@coredump.intra.peff.net>
 source: <20260220060003.GA26256@coredump.intra.peff.net>


* ps/receive-pack-shallow-optim (2026-02-16) 3 commits
  (merged to 'next' on 2026-02-22 at ad6abc1ef8)
 + commit: use commit graph in `lookup_commit_reference_gently()`
 + commit: make `repo_parse_commit_no_graph()` more robust
 + commit: avoid parsing non-commits in `lookup_commit_reference_gently()`

 The code to accept shallow "git push" has been optimized.

 Will merge to 'master'.
 source: <20260216-b4-pks-receive-pack-optimize-shallow-v1-0-e98886daff2b@pks.im>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
 - wt-status: use hash_algo from local repository instead of global the_hash_algo
 - wt-status: replace uses of the_repository with local repository instances
 - wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'next'?
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-18) 5 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf: replace strbuf_grow() in strbuf_attach() with BUG() check
 - strbuf_attach: fix all call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Comments?
 source: <pull.2008.v4.git.1771423748.gitgitgadget@gmail.com>


* ps/pack-concat-wo-backfill (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-17 at 221d0623a2)
 + builtin/pack-objects: don't fetch objects when merging packs

 "git pack-objects --stdin-packs" with "--exclude-promisor-objects"
 fetched objects that are promised, which was not wanted.  This has
 been fixed.

 Will merge to 'master'.
 source: <20260211-pks-pack-objects-stdin-skip-backfill-fetch-v1-1-870cad56d8ae@pks.im>


* jc/doc-cg-needswork (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-17 at 5e35bc87bd)
 + CodingGuidelines: document NEEDSWORK comments

 A CodingGuidelines update.

 Will merge to 'master'.
 source: <xmqqldgxmzbj.fsf@gitster.g>


* jh/alias-i18n (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-20 at b9a5c15c4f)
 + completion: fix zsh alias listing for subsection aliases
 + alias: support non-alphanumeric names via subsection syntax
 + alias: prepare for subsection aliases
 + help: use list_aliases() for alias listing

 Extend the alias configuration syntax to allow aliases using
 characters outside ASCII alphanumeric (plus '-').

 Will merge to 'master'.
 source: <20260218215737.1181147-1-jonatan@jontes.page>


* hy/diff-lazy-fetch-with-break-fix (2026-02-12) 2 commits
 - SQUASH???
 - diffcore-break: prevent dangling pointer

 A prefetch call can be triggered to access a stale diff_queue entry
 after diffcore-break breaks a filepair into two and freed the
 original entry that is no longer used, leading to a segfault, which
 has been corrected.

 Will squash in the fixup and merge to 'next'.
 source: <20260212072002.2347-2-hanyang.tony@bytedance.com>


* ps/history-ergonomics-updates (2026-02-15) 5 commits
  (merged to 'next' on 2026-02-19 at 9d5bc4efc5)
 + Documentation/git-history: document default for "--update-refs="
 + builtin/history: rename "--ref-action=" to "--update-refs="
 + builtin/history: replace "--ref-action=print" with "--dry-run"
 + builtin/history: check for merges before asking for user input
 + builtin/history: perform revwalk checks before asking for user input

 UI improvements for "git history reword".

 Will merge to 'master'.
 source: <20260216-b4-pks-history-dry-run-v3-0-c4db58a651fc@pks.im>


* ac/string-list-sort-u-and-tests (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-17 at 14b7b5d918)
 + sparse-checkout: use string_list_sort_u

 Code clean-up using a new helper function introduced lately.

 Will merge to 'master'.
 source: <20260213033729.50208-1-amishhhaaaa@gmail.com>


* dk/complete-stash-import-export (2026-02-07) 1 commit
  (merged to 'next' on 2026-02-17 at 406e4cc3ee)
 + completion: add stash import, export

 Command line completion (in contrib/) update.

 Will merge to 'master'.
 source: <20260207215924.28863-1-ben.knoble+github@gmail.com>


* kh/doc-am-format-sendmail (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-13 at 8850dc2fa9)
 + doc: add caveat about round-tripping format-patch

 Doc update.

 Will merge to 'master'.
 source: <V3_format-patch_caveats.354@msgid.xyz>


* kh/doc-patch-id-4 (2026-02-14) 3 commits
  (merged to 'next' on 2026-02-22 at bfae23ac5e)
 + doc: patch-id: see also git-cherry(1)
 + doc: patch-id: add script example
 + doc: patch-id: emphasize multi-patch processing

 Doc update.

 Will merge to 'master'.
 source: <V2_CV_doc_patch-id_4.371@msgid.xyz>


* pw/commit-msg-sample-hook (2026-02-13) 2 commits
  (merged to 'next' on 2026-02-17 at 6a23eb7fc3)
 + templates: detect commit messages containing diffs
 + templates: add .gitattributes entry for sample hooks

 Update sample commit-msg hook to complain when a log message has
 material mailinfo considers the end of log message in the middle.

 Will merge to 'master'.
 source: <cover.1770993281.git.phillip.wood@dunelm.org.uk>


* kh/doc-am-xref (2026-02-09) 4 commits
  (merged to 'next' on 2026-02-22 at 920d0c2836)
 + doc: am: fill out hook discussion
 + doc: am: add missing config am.messageId
 + doc: am: say that --message-id adds a trailer
 + doc: am: normalize git(1) command links

 Doc update.

 Will merge to 'master'.
 source: <doc_am_gitlinks_and_am.messageId.321@msgid.xyz>


* ps/ci-gitlab-msvc-updates (2026-02-18) 7 commits
  (merged to 'next' on 2026-02-20 at b2a8b7bf93)
 + gitlab-ci: handle failed tests on MSVC+Meson job
 + gitlab-ci: use "run-test-slice-meson.sh"
 + ci: make test slicing consistent across Meson/Make
 + github: fix Meson tests not executing at all
 + meson: fix MERGE_TOOL_DIR with "--no-bin-wrappers"
 + ci: don't skip smallest test slice in GitLab
 + ci: handle failures of test-slice helper

 CI update.

 Will merge to 'master'.
 source: <20260219-b4-pks-ci-meson-improvements-v2-0-6047b8307ab2@pks.im>


* ps/tests-wo-iconv-fixes (2026-02-20) 5 commits
  (merged to 'next' on 2026-02-20 at 277b2c99aa)
 + t6006: don't use iconv(1) without ICONV prereq
 + t5550: add ICONV prereq to tests that use "$HTTPD_URL/error"
 + t4205: improve handling of ICONV prerequisite
 + t40xx: don't use iconv(1) without ICONV prereq
 + t: don't set ICONV prereq when iconv(1) is missing

 Some tests assumed "iconv" is available without honoring ICONV
 prerequisite, which has been corrected.

 Will merge to 'master'.
 source: <20260220-b4-pks-ci-msvc-iconv-fixes-v4-0-e0e6bbcaeb5b@pks.im>


* pw/meson-doc-mergetool (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-22 at dfdfff02f8)
 + meson: fix building mergetool docs

 Update build precedure for mergetool documentation in meson-based builds.

 Will merge to 'master'.
 source: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>


* ds/config-list-with-type (2026-02-13) 13 commits
 - config: restructure format_config()
 - config: format colors gently
 - color: add color_parse_gently()
 - config: format expiry dates gently
 - config: format paths gently
 - parse: add git_parse_maybe_pathname()
 - config: format bools or strings in helper
 - config: format bools or ints gently
 - config: format bools gently
 - config: format int64s gently
 - config: make 'git config list --type=<X>' work
 - config: add 'gently' parameter to format_config()
 - config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.

 Expecting a reroll?
 cf. <aZQvSvBEebHFf9Bb@pks.im>
 source: <pull.2044.v2.git.1771026918.gitgitgadget@gmail.com>


* rr/gitweb-mobile (2026-02-16) 5 commits
 - gitweb: let page header grow on mobile for long wrapped project names
 - gitweb: fix mobile footer overflow by wrapping text and clearing floats
 - gitweb: fix mobile page overflow across log/commit/blob/diff views
 - gitweb: prevent project search bar from overflowing on mobile
 - gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.

 Will merge to 'next'?
 source: <pull.2043.v2.git.1771257211.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-19) 1 commit
 - osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).

 Will merge to 'next'?
 source: <pull.2046.v4.git.1771551540816.gitgitgadget@gmail.com>


* aa/add-p-no-auto-advance (2026-02-14) 4 commits
 - add-patch: allow interfile navigation when selecting hunks
 - add-patch: allow all-or-none application of patches
 - add-patch: modify patch_update_file() signature
 - interactive -p: add new `--auto-advance` flag

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Will merge to 'next'?
 source: <cover.1771066252.git.abrahamadekunle50@gmail.com>


* kn/ref-location (2026-02-19) 5 commits
 - refs: allow reference location in refstorage config
 - refs: receive and use the reference storage payload
 - refs: move out stub modification to generic layer
 - refs: extract out `refs_create_refdir_stubs()`
 - setup: don't modify repo in `create_reference_database()`

 Allow the directory in which reference backends store their data to
 be specified.

 Will merge to 'next'?
 source: <20260219-kn-alternate-ref-dir-v7-0-16f27860dbdf@gmail.com>


* ar/config-hooks (2026-02-18) 9 commits
 - hook: add -z option to "git hook list"
 - hook: allow out-of-repo 'git hook' invocations
 - hook: allow event = "" to overwrite previous values
 - hook: allow disabling config hooks
 - hook: include hooks from the config
 - hook: add "git hook list" command
 - hook: run a list of hooks to prepare for multihook support
 - hook: add internal state alloc/free callbacks
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.

 Will merge to 'next'?
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-20 at 1d5f62e778)
 + whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.

 Will merge to 'master'.
 source: <xmqqpl6hhm96.fsf@gitster.g>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at a6cd49271f)
 + meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Will merge to 'master'.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-22 at 094113b392)
 + gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'master'.
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-21) 11 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: add per-event jobs config
 - hook: add -j/--jobs option to git hook run
 - hook: mark non-parallelizable hooks
 - hook: allow parallel hook execution
 - hook: parse the hook.jobs config
 - hook: refactor hook_config_cache from strmap to named struct
 - config: add a repo_config_get_uint() helper
 - repository: fix repo_init() memleak due to missing _clear()
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260222002904.1879356-1-adrian.ratiu@collabora.com>


* mc/tr2-process-ancestry-cleanup (2026-02-13) 6 commits
  (merged to 'next' on 2026-02-17 at 2ebebfc02c)
 + t0213: add trace2 cmd_ancestry tests
 + test-tool: extend trace2 helper with 400ancestry
 + trace2: emit cmd_ancestry data for Windows
 + trace2: refactor Windows process ancestry trace2 event
 + build: include procinfo.c impl for macOS
 + trace2: add macOS process ancestry tracing

 Add process ancestry data to trace2 on macOS to match what we
 already do on Linux and Windows.  Also adjust the way Windows
 implementation reports this information to match the other two.

 Will merge to 'master'.
 source: <pull.2040.v2.git.1771012500.gitgitgadget@gmail.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
  (merged to 'next' on 2026-02-20 at a386d47625)
 + checkout: tell "parse_remote_branch" which command is calling it
 + checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Will merge to 'master'.
 source: <20260129190616.645471-1-gitster@pobox.com>


* ps/for-each-ref-in-fixes (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-19 at 5397753d41)
 + bisect: simplify string_list memory handling
 + bisect: fix misuse of `refs_for_each_ref_in()`
 + pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 + pack-bitmap: deduplicate logic to iterate over preferred bitmap tips
 (this branch is used by ps/refs-for-each.)

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.

 Will merge to 'master'.
 source: <20260219-b4-pks-fix-for-each-ref-in-misuse-v4-0-57ac30172fae@pks.im>


* ps/object-info-bits-cleanup (2026-02-11) 5 commits
  (merged to 'next' on 2026-02-22 at 4d702cbecc)
 + odb: convert `odb_has_object()` flags into an enum
 + odb: convert object info flags into an enum
 + odb: drop gaps in object info flag values
 + builtin/fsck: fix flags passed to `odb_has_object()`
 + builtin/backfill: fix flags passed to `odb_has_object()`

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Will merge to 'master'.
 source: <20260212-b4-pks-read-object-info-flags-v2-0-3bfa9bb149ef@pks.im>


* ty/symlinks-use-unsigned-for-bitset (2026-02-16) 1 commit
  (merged to 'next' on 2026-02-22 at 6546dc5cf2)
 + symlinks: use unsigned int for flags

 Code clean-up.

 Will merge to 'master'.
 source: <20260216172028.140525-1-a3205153416@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
  (merged to 'next' on 2026-02-17 at 1ed2797464)
 + revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'master'.
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
  (merged to 'next' on 2026-02-22 at 4aa543f115)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + run-command: poll child input in addition to output
 + hook: add jobs option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: allow separate std[out|err] streams
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add helper for pp child states
 + t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Will merge to 'master'.
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx-TLwqbcdGcb2drD4vE6D3M93EPMjcAeTNR+XNTbmTVZg@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Comments?
 cf. <xmqq5x7rvyn4.fsf@gitster.g>
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* ps/odb-for-each-object (2026-01-26) 16 commits
  (merged to 'next' on 2026-02-22 at 80178ecd0d)
 + odb: drop unused `for_each_{loose,packed}_object()` functions
 + reachable: convert to use `odb_for_each_object()`
 + builtin/pack-objects: use `packfile_store_for_each_object()`
 + odb: introduce mtime fields for object info requests
 + treewide: drop uses of `for_each_{loose,packed}_object()`
 + treewide: enumerate promisor objects via `odb_for_each_object()`
 + builtin/fsck: refactor to use `odb_for_each_object()`
 + odb: introduce `odb_for_each_object()`
 + packfile: introduce function to iterate through objects
 + packfile: extract function to iterate through objects of a store
 + object-file: introduce function to iterate through objects
 + object-file: extract function to read object info from path
 + odb: fix flags parameter to be unsigned
 + odb: rename `FOR_EACH_OBJECT_*` flags
 + Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 + Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Will merge to 'master'.
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-22 at f44d607586)
 + subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'master'.
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-02-15) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Will merge to 'next'?
 source: <pull.2121.v5.git.git.1771186316.gitgitgadget@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
  (merged to 'next' on 2026-02-22 at acae2989d4)
 + t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Will merge to 'master'.
 source: <20260107074724.13165-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1771258573.git.belkid98@gmail.com>


* cc/lop-filter-auto (2026-02-16) 9 commits
  (merged to 'next' on 2026-02-17 at f10e546e7b)
 + fetch-pack: wire up and enable auto filter logic
 + promisor-remote: change promisor_remote_reply()'s signature
 + promisor-remote: keep advertised filters in memory
 + list-objects-filter-options: support 'auto' mode for --filter
 + doc: fetch: document `--filter=<filter-spec>` option
 + fetch: make filter_options local to cmd_fetch()
 + clone: make filter_options local to cmd_clone()
 + promisor-remote: allow a client to store fields
 + promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Will merge to 'master'.
 source: <20260216132317.15894-1-christian.couder@gmail.com>


* lo/repo-info-keys (2026-02-13) 2 commits
  (merged to 'next' on 2026-02-19 at 3a9b510b86)
 + repo: add new flag --keys to git-repo-info
 + repo: rename the output format "keyvalue" to "lines"
 (this branch is used by lo/repo-leftover-bits.)

 "git repo info" learns "--keys" action to list known keys.

 Will merge to 'master'.
 source: <20260214005818.37349-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Comments?  v1 saw a lot of discussions, v2 didn't, and this is v3,
 which is essentially identical to v2 with CI fixes (which work!).


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and various other branches listed on status.compareBranches
 configuration.

 Will merge to 'next'?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 cf. <aZs6OvvBB4WPNx8j@denethor>
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 18%]

* What's cooking in git.git (Feb 2026, #07)
@ 2026-02-21  1:20 18% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-21  1:20 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* ak/t9812-test-path-is-helpers (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-13 at a9746d98e4)
 + t9812: modernize test path helpers

 Test update.
 source: <20260212054530.4763-1-ashwanikamal.im421@gmail.com>


* jc/doc-cg-c-comment (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-12 at d1286b26eb)
 + CodingGuidelines: document // comments

 A CodingGuidelines update.
 source: <xmqqikc3t7hf.fsf@gitster.g>


* pw/diff-anchored-optim (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-13 at a8e8191f03)
 + diff --anchored: avoid checking unmatched lines

 "git diff --anchored=<text>" has been optimized.
 source: <2a8cc2d6c37f25a58823b501500165d597321749.1770911599.git.phillip.wood@dunelm.org.uk>


* pw/xdiff-cleanups (2026-01-26) 2 commits
  (merged to 'next' on 2026-02-11 at e6df42d605)
 + xdiff: remove unused data from xdlclass_t
 + xdiff: remove "line_hash" field from xrecord_t

 Small clean-up of xdiff library to remove unnecessary data
 duplication.
 source: <cover.1769424529.git.phillip.wood@dunelm.org.uk>

--------------------------------------------------
[Stalled]

These topics have been sitting without activity for too long.  They
may have to be discarded unless something new happens to them soon.


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 May not be a good idea after all.  A controlled death would be OK, though.
 cf. <xmqqbjjgiz3a.fsf@gitster.g>
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 cf. <aVuplzNaoCHlZG3S@pks.im>
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 What's the status of this topic?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>

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

* ap/use-test-seq-f-more (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at d847fcad1e)
 + t: use test_seq -f and pipes in a few more places

 Test clean-up.

 Will merge to 'master'.
 source: <20260218181019.1705160-1-aplattner@nvidia.com>


* bk/mailmap-wo-the-repository (2026-02-19) 2 commits
 - mailmap: drop global config variables
 - mailmap: stop using the_repository

 Wean the mailmap code off of the_repository dependency.

 Will merge to 'next'?
 source: <20260220060442.29469-1-bkkaracay@gmail.com>


* db/doc-fetch-jobs-auto (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at 4e20a85963)
 + doc: fetch: document `--jobs=0` behavior

 Doc update.

 Will merge to 'master'.
 source: <pull.2047.git.1771443159369.gitgitgadget@gmail.com>


* jt/object-file-use-container-of (2026-02-18) 1 commit
  (merged to 'next' on 2026-02-20 at 7a30cb262f)
 + object-file: use `container_of()` to convert from base types

 Code clean-up.

 Will merge to 'master'.
 source: <20260218210120.1146078-1-jltobler@gmail.com>


* kh/format-patch-noprefix-is-boolean (2026-02-18) 2 commits
 - doc: diff-options.adoc: show format.noprefix for format-patch
 - format-patch: make format.noprefix a boolean

 The configuration variable format.noprefix did not behave as a
 proper boolean variable, which has now been fixed and documented.

 Will merge to 'next'?
 cf. <xmqqy0ko626g.fsf@gitster.g>
 source: <CV_format.noprefix_boolean.39c@msgid.xyz>


* mf/format-patch-honor-from-for-cover-letter (2026-02-17) 1 commit
  (merged to 'next' on 2026-02-20 at d3efdd79b2)
 + format-patch: fix From header in cover letter

 "git format-patch --from=<me>" did not honor the command line
 option when writing out the cover letter, which has been corrected.

 Will merge to 'master'.
 source: <20260217232519.24898-1-mroik@delayed.space>


* pw/no-more-NULL-means-current-worktree (2026-02-19) 2 commits
 - path: remove repository argument from worktree_git_path()
 - wt-status: avoid passing NULL worktree

 API clean-up for the worktree subsystem.

 Will merge to 'next'?
 cf. <xmqqv7fs4jlp.fsf@gitster.g>
 source: <cover.1771511192.git.phillip.wood@dunelm.org.uk>


* cs/subtree-split-fixes (2026-02-17) 3 commits
 - contrib/subtree: process out-of-prefix subtrees
 - contrib/subtree: test history depth
 - contrib/subtree: capture additional test-cases

 An earlier attempt to optimize "git subtree" discarded too much
 relevant histories, which has been corrected.

 Will merge to next?
 source: <20260217-cs-subtree-remove-optimization-v2-0-4299e71a30c6@howdoi.land>


* dt/send-email-client-cert (2026-02-20) 1 commit
 - send-mail: add client certificate options

 "git send-email" learns to support use of client-side certificates.

 Expecting a (hopefully small and final) reroll?
 cf. <xmqqh5rbz83b.fsf@gitster.g>
 source: <20260220081717.555185-2-dxdt@dev.snart.me>


* en/merge-ort-almost-wo-the-repository (2026-02-19) 6 commits
 - replay: prevent the_repository from coming back
 - merge-ort: prevent the_repository from coming back
 - merge-ort: replace the_hash_algo with opt->repo->hash_algo
 - merge-ort: replace the_repository with opt->repo
 - merge-ort: pass repository to write_tree()
 - merge,diff: remove the_repository check before prefetching blobs

 Mark the marge-ort codebase to prevent more uses of the_repository
 from getting added.

 Expecting a reroll.
 cf. <CABPp-BGR5Mrm30sSb9Y96VkFC5-XFTYkoAp60LMAf6gCgW3QEg@mail.gmail.com>
 source: <pull.2048.v2.git.1771552788.gitgitgadget@gmail.com>


* jr/apply-directory-normalize (2026-02-17) 1 commit
 - apply: normalize path in --directory argument

 "git apply --directory=./un/../normalized/path" now normalizes the
 given path before using it.

 Will merge to 'next'?
 source: <pull.2198.v2.git.git.1771373732749.gitgitgadget@gmail.com>


* lo/repo-leftover-bits (2026-02-18) 9 commits
 - Documentation/git-repo: capitalize format descriptions
 - Documentation/git-repo: replace 'NUL' with '_NUL_'
 - t1901: use tr in git repo structure output instead of expected value
 - t1900: rename t1900-repo to t1900-repo-info
 - repo: rename struct field to repo_info_field
 - repo: replace get_value_fn_for_key by get_repo_info_field
 - repo: rename repo_info_fields to repo_info_field
 - CodingGuidelines: instruct to name arrays in singular
 - Merge branch 'lo/repo-info-keys' into lo/repo-leftover-bits
 (this branch uses lo/repo-info-keys.)

 Clean-up the code around "git repo info" command.

 Expecting a (hopefully small and final) reroll?
 cf. <aZgzmlVfuXgI2UJ9@pks.im>
 cf. <CAPig+cRHm1vDABoHNKiuBRRsvk90Z1qGeeu3DT3VHdzEfJeP=g@mail.gmail.com>
 source: <20260218211845.96009-1-lucasseikioshiro@gmail.com>


* ps/maintenance-geometric-default (2026-02-20) 8 commits
 - builtin/maintenance: use "geometric" strategy by default
 - t7900: prepare for switch of the default strategy
 - t6500: explicitly use "gc" strategy
 - t5510: explicitly use "gc" strategy
 - t5400: explicitly use "gc" strategy
 - t34xx: don't expire reflogs where it matters
 - t: disable maintenance where we verify object database structure
 - t: fix races caused by background maintenance

 "git maintenance" starts using the "geometric" strategy by default.

 Comments?
 source: <20260220-b4-pks-maintenance-default-geometric-strategy-v1-0-faeb321ad13b@pks.im>


* ps/refs-for-each (2026-02-20) 18 commits
 - refs: replace `refs_for_each_fullref_in()`
 - refs: replace `refs_for_each_namespaced_ref()`
 - refs: replace `refs_for_each_glob_ref()`
 - refs: replace `refs_for_each_glob_ref_in()`
 - refs: replace `refs_for_each_rawref_in()`
 - refs: replace `refs_for_each_rawref()`
 - refs: replace `refs_for_each_ref_in()`
 - refs: improve verification for-each-ref options
 - refs: generalize `refs_for_each_fullref_in_prefixes()`
 - refs: generalize `refs_for_each_namespaced_ref()`
 - refs: speed up `refs_for_each_glob_ref_in()`
 - refs: introduce `refs_for_each_ref_ext`
 - refs: remove unused `refs_for_each_include_root_ref()`
 - refs: rename `each_ref_fn`
 - refs: rename `do_for_each_ref_flags`
 - refs: move `do_for_each_ref_flags` further up
 - refs: move `refs_head_ref_namespaced()`
 - Merge branch 'ps/for-each-ref-in-fixes' into ps/refs-for-each
 (this branch uses ps/for-each-ref-in-fixes.)

 Code refactoring around refs-for-each-* API functions.

 Comments?
 source: <20260220-pks-refs-for-each-unification-v1-0-17170bd99de1@pks.im>


* sa/replay-revert (2026-02-18) 2 commits
 - replay: add --revert mode to reverse commit changes
 - sequencer: extract revert message formatting into shared function

 "git replay" (experimental) learns, in addition to "pick" and
 "replay", a new operating mode "revert".

 Expecting a reroll?
 cf. <87wm07e4ck.fsf@iotcl.com>
 cf. <87tsvbe2sm.fsf@iotcl.com>
 source: <20260218234215.89326-1-siddharthasthana31@gmail.com>


* sp/tree-diff-wo-the-repository (2026-02-20) 1 commit
 - tree-diff: remove the usage of the_hash_algo global

 The last uses of the_repository in "tree-diff.c" have been
 eradicated.

 Will merge to 'next'?
 source: <20260220175331.1250726-1-shreyanshpaliwalcmsmn@gmail.com>

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

* dk/meson-regen-config-list (2026-02-18) 1 commit
 - build: regenerate config-list.h when Documentation changes

 Fix dependency screw-up in meson-based builds

 Will merge to 'next'?
 source: <611a94cd988e3795bc63dba2f1b270aa0d058bd2.1771425395.git.ben.knoble+github@gmail.com>


* jk/ref-filter-lrstrip-optim (2026-02-19) 5 commits
  (merged to 'next' on 2026-02-20 at 88c2fb76b8)
 + ref-filter: clarify lstrip/rstrip component counting
  (merged to 'next' on 2026-02-19 at 6efc8a2023)
 + ref-filter: avoid strrchr() in rstrip_ref_components()
 + ref-filter: simplify rstrip_ref_components() memory handling
 + ref-filter: simplify lstrip_ref_components() memory handling
 + ref-filter: factor out refname component counting

 Code clean-up.

 Will merge to 'master'.
 source: <20260215085755.GA86262@coredump.intra.peff.net>
 source: <20260220060003.GA26256@coredump.intra.peff.net>


* ps/receive-pack-shallow-optim (2026-02-16) 3 commits
 - commit: use commit graph in `lookup_commit_reference_gently()`
 - commit: make `repo_parse_commit_no_graph()` more robust
 - commit: avoid parsing non-commits in `lookup_commit_reference_gently()`

 The code to accept shallow "git push" has been optimized.

 Will merge to 'next'.
 source: <20260216-b4-pks-receive-pack-optimize-shallow-v1-0-e98886daff2b@pks.im>


* sp/wt-status-wo-the-repository (2026-02-18) 3 commits
 - wt-status: use hash_algo from local repository instead of global the_hash_algo
 - wt-status: replace uses of the_repository with local repository instances
 - wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'next'?
 source: <20260218175654.66004-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-18) 5 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf: replace strbuf_grow() in strbuf_attach() with BUG() check
 - strbuf_attach: fix all call sites to pass correct alloc
 - strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Comments?
 source: <pull.2008.v4.git.1771423748.gitgitgadget@gmail.com>


* ps/pack-concat-wo-backfill (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-17 at 221d0623a2)
 + builtin/pack-objects: don't fetch objects when merging packs

 "git pack-objects --stdin-packs" with "--exclude-promisor-objects"
 fetched objects that are promised, which was not wanted.  This has
 been fixed.

 Will merge to 'master'.
 source: <20260211-pks-pack-objects-stdin-skip-backfill-fetch-v1-1-870cad56d8ae@pks.im>


* jc/doc-cg-needswork (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-17 at 5e35bc87bd)
 + CodingGuidelines: document NEEDSWORK comments

 A CodingGuidelines update.

 Will merge to 'master'.
 source: <xmqqldgxmzbj.fsf@gitster.g>


* jh/alias-i18n (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-20 at b9a5c15c4f)
 + completion: fix zsh alias listing for subsection aliases
 + alias: support non-alphanumeric names via subsection syntax
 + alias: prepare for subsection aliases
 + help: use list_aliases() for alias listing

 Extend the alias configuration syntax to allow aliases using
 characters outside ASCII alphanumeric (plus '-').

 Will merge to 'master'.
 source: <20260218215737.1181147-1-jonatan@jontes.page>


* hy/diff-lazy-fetch-with-break-fix (2026-02-12) 2 commits
 - SQUASH???
 - diffcore-break: prevent dangling pointer

 A prefetch call can be triggered to access a stale diff_queue entry
 after diffcore-break breaks a filepair into two and freed the
 original entry that is no longer used, leading to a segfault, which
 has been corrected.

 Will squash in the fixup and merge to 'next'.
 source: <20260212072002.2347-2-hanyang.tony@bytedance.com>


* ps/history-ergonomics-updates (2026-02-15) 5 commits
  (merged to 'next' on 2026-02-19 at 9d5bc4efc5)
 + Documentation/git-history: document default for "--update-refs="
 + builtin/history: rename "--ref-action=" to "--update-refs="
 + builtin/history: replace "--ref-action=print" with "--dry-run"
 + builtin/history: check for merges before asking for user input
 + builtin/history: perform revwalk checks before asking for user input

 UI improvements for "git history reword".

 Will merge to 'master'.
 source: <20260216-b4-pks-history-dry-run-v3-0-c4db58a651fc@pks.im>


* ac/string-list-sort-u-and-tests (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-17 at 14b7b5d918)
 + sparse-checkout: use string_list_sort_u

 Code clean-up using a new helper function introduced lately.

 Will merge to 'master'.
 source: <20260213033729.50208-1-amishhhaaaa@gmail.com>


* dk/complete-stash-import-export (2026-02-07) 1 commit
  (merged to 'next' on 2026-02-17 at 406e4cc3ee)
 + completion: add stash import, export

 Command line completion (in contrib/) update.

 Will merge to 'master'.
 source: <20260207215924.28863-1-ben.knoble+github@gmail.com>


* kh/doc-am-format-sendmail (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-13 at 8850dc2fa9)
 + doc: add caveat about round-tripping format-patch

 Doc update.

 Will merge to 'master'.
 source: <V3_format-patch_caveats.354@msgid.xyz>


* kh/doc-patch-id-4 (2026-02-14) 3 commits
 - doc: patch-id: see also git-cherry(1)
 - doc: patch-id: add script example
 - doc: patch-id: emphasize multi-patch processing

 Doc update.

 Will merge to 'next'.
 source: <V2_CV_doc_patch-id_4.371@msgid.xyz>


* pw/commit-msg-sample-hook (2026-02-13) 2 commits
  (merged to 'next' on 2026-02-17 at 6a23eb7fc3)
 + templates: detect commit messages containing diffs
 + templates: add .gitattributes entry for sample hooks

 Update sample commit-msg hook to complain when a log message has
 material mailinfo considers the end of log message in the middle.

 Will merge to 'master'.
 source: <cover.1770993281.git.phillip.wood@dunelm.org.uk>


* kh/doc-am-xref (2026-02-09) 4 commits
 - doc: am: fill out hook discussion
 - doc: am: add missing config am.messageId
 - doc: am: say that --message-id adds a trailer
 - doc: am: normalize git(1) command links

 Doc update.

 Will merge to 'next'.
 source: <doc_am_gitlinks_and_am.messageId.321@msgid.xyz>


* ps/ci-gitlab-msvc-updates (2026-02-18) 7 commits
  (merged to 'next' on 2026-02-20 at b2a8b7bf93)
 + gitlab-ci: handle failed tests on MSVC+Meson job
 + gitlab-ci: use "run-test-slice-meson.sh"
 + ci: make test slicing consistent across Meson/Make
 + github: fix Meson tests not executing at all
 + meson: fix MERGE_TOOL_DIR with "--no-bin-wrappers"
 + ci: don't skip smallest test slice in GitLab
 + ci: handle failures of test-slice helper

 CI update.

 Will merge to 'master'.
 source: <20260219-b4-pks-ci-meson-improvements-v2-0-6047b8307ab2@pks.im>


* ps/tests-wo-iconv-fixes (2026-02-20) 5 commits
  (merged to 'next' on 2026-02-20 at 277b2c99aa)
 + t6006: don't use iconv(1) without ICONV prereq
 + t5550: add ICONV prereq to tests that use "$HTTPD_URL/error"
 + t4205: improve handling of ICONV prerequisite
 + t40xx: don't use iconv(1) without ICONV prereq
 + t: don't set ICONV prereq when iconv(1) is missing

 Some tests assumed "iconv" is available without honoring ICONV
 prerequisite, which has been corrected.

 Will merge to 'master'.
 source: <20260220-b4-pks-ci-msvc-iconv-fixes-v4-0-e0e6bbcaeb5b@pks.im>


* pw/meson-doc-mergetool (2026-02-09) 1 commit
 - meson: fix building mergetool docs

 Update build precedure for mergetool documentation in meson-based builds.

 Will merge to 'next'.
 source: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>


* ds/config-list-with-type (2026-02-13) 13 commits
 - config: restructure format_config()
 - config: format colors gently
 - color: add color_parse_gently()
 - config: format expiry dates gently
 - config: format paths gently
 - parse: add git_parse_maybe_pathname()
 - config: format bools or strings in helper
 - config: format bools or ints gently
 - config: format bools gently
 - config: format int64s gently
 - config: make 'git config list --type=<X>' work
 - config: add 'gently' parameter to format_config()
 - config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.

 Expecting a reroll?
 cf. <aZQvSvBEebHFf9Bb@pks.im>
 source: <pull.2044.v2.git.1771026918.gitgitgadget@gmail.com>


* rr/gitweb-mobile (2026-02-16) 5 commits
 - gitweb: let page header grow on mobile for long wrapped project names
 - gitweb: fix mobile footer overflow by wrapping text and clearing floats
 - gitweb: fix mobile page overflow across log/commit/blob/diff views
 - gitweb: prevent project search bar from overflowing on mobile
 - gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.

 Will merge to 'next'?
 source: <pull.2043.v2.git.1771257211.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-19) 1 commit
 - osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).

 Will merge to 'next'?
 source: <pull.2046.v4.git.1771551540816.gitgitgadget@gmail.com>


* aa/add-p-no-auto-advance (2026-02-14) 4 commits
 - add-patch: allow interfile navigation when selecting hunks
 - add-patch: allow all-or-none application of patches
 - add-patch: modify patch_update_file() signature
 - interactive -p: add new `--auto-advance` flag

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Will merge to 'next'?
 source: <cover.1771066252.git.abrahamadekunle50@gmail.com>


* kn/ref-location (2026-02-19) 5 commits
 - refs: allow reference location in refstorage config
 - refs: receive and use the reference storage payload
 - refs: move out stub modification to generic layer
 - refs: extract out `refs_create_refdir_stubs()`
 - setup: don't modify repo in `create_reference_database()`

 Allow the directory in which reference backends store their data to
 be specified.

 Will merge to 'next'?
 source: <20260219-kn-alternate-ref-dir-v7-0-16f27860dbdf@gmail.com>


* ar/config-hooks (2026-02-18) 9 commits
 - hook: add -z option to "git hook list"
 - hook: allow out-of-repo 'git hook' invocations
 - hook: allow event = "" to overwrite previous values
 - hook: allow disabling config hooks
 - hook: include hooks from the config
 - hook: add "git hook list" command
 - hook: run a list of hooks to prepare for multihook support
 - hook: add internal state alloc/free callbacks
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Allow hook commands to be defined (possibly centrally) in the
 configuration files, and run multiple of them for the same hook
 event.

 Will merge to 'next'?
 source: <20260218222352.55393-1-adrian.ratiu@collabora.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
  (merged to 'next' on 2026-02-20 at 1d5f62e778)
 + whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.

 Will merge to 'master'.
 source: <xmqqpl6hhm96.fsf@gitster.g>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
 - meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Will merge to 'next'.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
 - gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'next'.
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-04) 5 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: allow parallel hook execution
 - config: add a repo_config_get_uint() helper
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204173328.1601807-1-adrian.ratiu@collabora.com>


* mc/tr2-process-ancestry-cleanup (2026-02-13) 6 commits
  (merged to 'next' on 2026-02-17 at 2ebebfc02c)
 + t0213: add trace2 cmd_ancestry tests
 + test-tool: extend trace2 helper with 400ancestry
 + trace2: emit cmd_ancestry data for Windows
 + trace2: refactor Windows process ancestry trace2 event
 + build: include procinfo.c impl for macOS
 + trace2: add macOS process ancestry tracing

 Add process ancestry data to trace2 on macOS to match what we
 already do on Linux and Windows.  Also adjust the way Windows
 implementation reports this information to match the other two.

 Will merge to 'master'.
 source: <pull.2040.v2.git.1771012500.gitgitgadget@gmail.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
  (merged to 'next' on 2026-02-20 at a386d47625)
 + checkout: tell "parse_remote_branch" which command is calling it
 + checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Will merge to 'master'.
 source: <20260129190616.645471-1-gitster@pobox.com>


* ps/for-each-ref-in-fixes (2026-02-18) 4 commits
  (merged to 'next' on 2026-02-19 at 5397753d41)
 + bisect: simplify string_list memory handling
 + bisect: fix misuse of `refs_for_each_ref_in()`
 + pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 + pack-bitmap: deduplicate logic to iterate over preferred bitmap tips
 (this branch is used by ps/refs-for-each.)

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.

 Will merge to 'master'.
 source: <20260219-b4-pks-fix-for-each-ref-in-misuse-v4-0-57ac30172fae@pks.im>


* ps/object-info-bits-cleanup (2026-02-11) 5 commits
 - odb: convert `odb_has_object()` flags into an enum
 - odb: convert object info flags into an enum
 - odb: drop gaps in object info flag values
 - builtin/fsck: fix flags passed to `odb_has_object()`
 - builtin/backfill: fix flags passed to `odb_has_object()`

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Will merge to 'next'.
 source: <20260212-b4-pks-read-object-info-flags-v2-0-3bfa9bb149ef@pks.im>


* ty/symlinks-use-unsigned-for-bitset (2026-01-21) 1 commit
 - symlinks: use unsigned int for flags

 Code clean-up.

 Will merge to 'next'.
 source: <20260121162640.424126-1-a3205153416@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
  (merged to 'next' on 2026-02-17 at 1ed2797464)
 + revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'master'.
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - run-command: poll child input in addition to output
 - hook: add jobs option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: allow separate std[out|err] streams
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add helper for pp child states
 - t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Will merge to 'next'.
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx-TLwqbcdGcb2drD4vE6D3M93EPMjcAeTNR+XNTbmTVZg@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Comments?
 cf. <xmqq5x7rvyn4.fsf@gitster.g>
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* ps/odb-for-each-object (2026-01-26) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Will merge to 'next'.
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'next'.
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-02-15) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Will merge to 'next'?
 source: <pull.2121.v5.git.git.1771186316.gitgitgadget@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Will merge to 'next'.
 source: <20260107074724.13165-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1771258573.git.belkid98@gmail.com>


* cc/lop-filter-auto (2026-02-16) 9 commits
  (merged to 'next' on 2026-02-17 at f10e546e7b)
 + fetch-pack: wire up and enable auto filter logic
 + promisor-remote: change promisor_remote_reply()'s signature
 + promisor-remote: keep advertised filters in memory
 + list-objects-filter-options: support 'auto' mode for --filter
 + doc: fetch: document `--filter=<filter-spec>` option
 + fetch: make filter_options local to cmd_fetch()
 + clone: make filter_options local to cmd_clone()
 + promisor-remote: allow a client to store fields
 + promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Will merge to 'master'.
 source: <20260216132317.15894-1-christian.couder@gmail.com>


* lo/repo-info-keys (2026-02-13) 2 commits
  (merged to 'next' on 2026-02-19 at 3a9b510b86)
 + repo: add new flag --keys to git-repo-info
 + repo: rename the output format "keyvalue" to "lines"
 (this branch is used by lo/repo-leftover-bits.)

 "git repo info" learns "--keys" action to list known keys.

 Will merge to 'master'.
 source: <20260214005818.37349-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Comments?  v1 saw a lot of discussions, v2 didn't, and this is v3,
 which is essentially identical to v2 with CI fixes (which work!).
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 18%]

* What's cooking in git.git (Feb 2026, #06)
@ 2026-02-18  0:50 21% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-18  0:50 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* bk/t2003-modernise (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at 561a73205e)
 + t2003: modernize path existence checks using test helpers

 Test update.
 source: <20260209112444.1268765-1-bkkaracay@gmail.com>


* ja/doc-synopsis-style-even-more (2026-02-05) 4 commits
  (merged to 'next' on 2026-02-09 at d732b9d6a0)
 + doc: convert git-show to synopsis style
 + doc: fix some style issues in git-clone and for-each-ref-options
 + doc: finalize git-clone documentation conversion to synopsis style
 + doc: convert git-submodule to synopsis style

 A handful of documentation pages have been modernized to use the
 "synopsis" style.
 source: <pull.2036.v4.git.1770351146.gitgitgadget@gmail.com>


* jc/doc-rerere-update (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at 88a6c151d7)
 + rerere: minor documantation update

 Doc update.
 source: <xmqqikc54vse.fsf@gitster.g>


* kh/doc-rerere-options-xref (2026-02-10) 1 commit
  (merged to 'next' on 2026-02-10 at 1ade94535a)
 + doc: rerere-options.adoc: link to git-rerere(1)

 Doc update.
 source: <V2_doc_link_rerere.34f@msgid.xyz>


* pc/lockfile-pid (2026-01-22) 1 commit
  (merged to 'next' on 2026-02-09 at 87bfa08d16)
 + lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.
 source: <pull.2011.v6.git.1769109815197.gitgitgadget@gmail.com>


* rs/clean-includes (2026-02-08) 1 commit
  (merged to 'next' on 2026-02-10 at 883d07f2eb)
 + remove duplicate includes

 Clean up redundant includes of header files.
 source: <280325e3-401c-47c7-98cf-c5cc7f719ee4@web.de>


* rs/commit-commit-stack (2026-02-08) 1 commit
  (merged to 'next' on 2026-02-10 at c1a50b2859)
 + commit: use commit_stack

 Code clean-up to use the commit_stack API.
 source: <db40d132-14ca-4749-937a-9410ecc17dde@web.de>


* rs/version-wo-the-repository (2026-02-08) 1 commit
  (merged to 'next' on 2026-02-10 at 80809d2b3d)
 + version: stop using the_repository

 Code clean-up.
 source: <afccdc3a-8672-49a7-b260-e77e617d8976@web.de>


* rs/xdiff-wo-the-repository (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at dbb8a23008)
 + xdiff-interface: stop using the_repository

 Reduce dependency on the_repository of xdiff-interface layer.
 source: <59fe4ac7-605d-4eae-b13c-46996dd8814e@web.de>


* sd/t7003-test-path-is-helpers (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at 5e3bc9f2b9)
 + t7003: modernize path existence checks using test helpers

 Test updates.
 source: <20260209172445.39536-1-valusoutrik@gmail.com>


* yt/merge-file-outside-a-repository (2026-02-07) 1 commit
  (merged to 'next' on 2026-02-10 at ee1ced4120)
 + merge-file: honor merge.conflictStyle outside of a repository

 "git merge-file" can be run outside a repository, but it ignored
 all configuration, even the per-user ones.  The command now uses
 available configuration files to find its customization.
 source: <3488DCC3-D127-465B-BB95-3D87BB2E48F6@ytausch.de>

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

* dk/meson-regen-config-list (2026-02-16) 1 commit
 - meson: regenerate config-list.h when Documentation changes

 Fix dependency screw-up in meson-based builds

 Will merge to 'next'?
 source: <9cdcc9de04f0f8fff657f0474b31c063466ed808.1771280837.git.ben.knoble+github@gmail.com>


* jk/ref-filter-lrstrip-optim (2026-02-15) 4 commits
 - ref-filter: avoid strrchr() in rstrip_ref_components()
 - ref-filter: simplify rstrip_ref_components() memory handling
 - ref-filter: simplify lstrip_ref_components() memory handling
 - ref-filter: factor out refname component counting

 Code clean-up.

 Will merge to 'next'.
 source: <20260215085755.GA86262@coredump.intra.peff.net>


* ps/receive-pack-shallow-optim (2026-02-16) 3 commits
 - commit: use commit graph in `lookup_commit_reference_gently()`
 - commit: make `repo_parse_commit_no_graph()` more robust
 - commit: avoid parsing non-commits in `lookup_commit_reference_gently()`

 The code to accept shallow "git push" has been optimized.

 Will merge to 'next'.
 source: <20260216-b4-pks-receive-pack-optimize-shallow-v1-0-e98886daff2b@pks.im>


* sp/wt-status-wo-the-repository (2026-02-17) 3 commits
 - wt-status: use hash_algo from local repository instead of global the_hash_algo
 - wt-status: replace uses of the_repository with local repository instances
 - wt-status: pass struct repository through function parameters

 Reduce dependence on the global the_hash_algo and the_repository
 variables of wt-status code path.

 Will merge to 'next'?
 source: <20260217173037.63438-1-shreyanshpaliwalcmsmn@gmail.com>


* vp/http-rate-limit-retries (2026-02-17) 3 commits
 - http: add support for HTTP 429 rate limit retries
 - remote-curl: introduce show_http_message_fatal() helper
 - strbuf: fix incorrect alloc size in strbuf_reencode()

 The HTTP transport learned to react to "429 Too Many Requests".

 Comments?
 source: <pull.2008.v3.git.1771326521.gitgitgadget@gmail.com>

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

* ps/pack-concat-wo-backfill (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-17 at 221d0623a2)
 + builtin/pack-objects: don't fetch objects when merging packs

 "git pack-objects --stdin-packs" with "--exclude-promisor-objects"
 fetched objects that are promised, which was not wanted.  This has
 been fixed.

 Will merge to 'master'.
 source: <20260211-pks-pack-objects-stdin-skip-backfill-fetch-v1-1-870cad56d8ae@pks.im>


* jc/doc-cg-c-comment (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-12 at d1286b26eb)
 + CodingGuidelines: document // comments

 A CodingGuidelines update.

 Will merge to 'master'.
 source: <xmqqikc3t7hf.fsf@gitster.g>


* jc/doc-cg-needswork (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-17 at 5e35bc87bd)
 + CodingGuidelines: document NEEDSWORK comments

 A CodingGuidelines update.

 Will merge to 'master'.
 source: <xmqqldgxmzbj.fsf@gitster.g>


* jh/alias-i18n (2026-02-16) 4 commits
 - completion: fix zsh alias listing for subsection aliases
 - alias: support non-alphanumeric names via subsection syntax
 - alias: prepare for subsection aliases
 - help: use list_aliases() for alias listing

 Extend the alias configuration syntax to allow aliases using
 characters outside ASCII alphanumeric (plus '-').

 Will merge to 'next'?
 source: <20260216161513.2533141-1-jonatan@jontes.page>


* ak/t9812-test-path-is-helpers (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-13 at a9746d98e4)
 + t9812: modernize test path helpers

 Test update.

 Will merge to 'master'.
 source: <20260212054530.4763-1-ashwanikamal.im421@gmail.com>


* hy/diff-lazy-fetch-with-break-fix (2026-02-12) 2 commits
 - SQUASH???
 - diffcore-break: prevent dangling pointer

 A prefetch call can be triggered to access a stale diff_queue entry
 after diffcore-break breaks a filepair into two and freed the
 original entry that is no longer used, leading to a segfault, which
 has been corrected.

 Expecting a reroll?
 source: <20260212072002.2347-2-hanyang.tony@bytedance.com>


* ps/history-ergonomics-updates (2026-02-15) 5 commits
 - Documentation/git-history: document default for "--update-refs="
 - builtin/history: rename "--ref-action=" to "--update-refs="
 - builtin/history: replace "--ref-action=print" with "--dry-run"
 - builtin/history: check for merges before asking for user input
 - builtin/history: perform revwalk checks before asking for user input

 UI improvements for "git history reword".

 Will merge to 'next'.
 source: <20260216-b4-pks-history-dry-run-v3-0-c4db58a651fc@pks.im>


* pw/diff-anchored-optim (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-13 at a8e8191f03)
 + diff --anchored: avoid checking unmatched lines

 "git diff --anchored=<text>" has been optimized.

 Will merge to 'master'.
 source: <2a8cc2d6c37f25a58823b501500165d597321749.1770911599.git.phillip.wood@dunelm.org.uk>


* ac/string-list-sort-u-and-tests (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-17 at 14b7b5d918)
 + sparse-checkout: use string_list_sort_u

 Code clean-up using a new helper function introduced lately.

 Will merge to 'master'.
 source: <20260213033729.50208-1-amishhhaaaa@gmail.com>


* dk/complete-stash-import-export (2026-02-07) 1 commit
  (merged to 'next' on 2026-02-17 at 406e4cc3ee)
 + completion: add stash import, export

 Command line completion (in contrib/) update.

 Will merge to 'master'.
 source: <20260207215924.28863-1-ben.knoble+github@gmail.com>


* kh/doc-am-format-sendmail (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-13 at 8850dc2fa9)
 + doc: add caveat about round-tripping format-patch

 Doc update.

 Will merge to 'master'.
 source: <V3_format-patch_caveats.354@msgid.xyz>


* kh/doc-patch-id-4 (2026-02-14) 3 commits
 - doc: patch-id: see also git-cherry(1)
 - doc: patch-id: add script example
 - doc: patch-id: emphasize multi-patch processing

 Doc update.

 Comments?
 source: <V2_CV_doc_patch-id_4.371@msgid.xyz>


* pw/commit-msg-sample-hook (2026-02-13) 2 commits
  (merged to 'next' on 2026-02-17 at 6a23eb7fc3)
 + templates: detect commit messages containing diffs
 + templates: add .gitattributes entry for sample hooks

 Update sample commit-msg hook to complain when a log message has
 material mailinfo considers the end of log message in the middle.

 Will merge to 'master'.
 source: <cover.1770993281.git.phillip.wood@dunelm.org.uk>


* kh/doc-am-xref (2026-02-09) 4 commits
 - doc: am: fill out hook discussion
 - doc: am: add missing config am.messageId
 - doc: am: say that --message-id adds a trailer
 - doc: am: normalize git(1) command links

 Doc update.

 Comments?
 source: <doc_am_gitlinks_and_am.messageId.321@msgid.xyz>


* ps/ci-gitlab-msvc-updates (2026-02-11) 7 commits
 - gitlab-ci: handle failed tests on MSVC+Meson job
 - gitlab-ci: use "run-test-slice-meson.sh"
 - ci: make test slicing consistent across Meson/Make
 - github: fix Meson tests not executing at all
 - meson: fix MERGE_TOOL_DIR with "--no-bin-wrappers"
 - ci: don't skip smallest test slice in GitLab
 - ci: handle failures of test-slice helper

 CI update.

 Will merge to 'next'?
 source: <20260211-b4-pks-ci-meson-improvements-v1-0-cb167cc80b86@pks.im>


* ps/tests-wo-iconv-fixes (2026-02-17) 4 commits
 - t6006: don't use iconv(1) without ICONV prereq
 - t5550: add ICONV prereq to tests that use "$HTTPD_URL/error"
 - t4205: improve handling of ICONV prerequisite
 - t4xxx: don't use iconv(1) without ICONV prereq

 Some tests assumed "iconv" is available without honoring ICONV
 prerequisite, which has been corrected.

 Will merge to 'next'?
 source: <20260217-b4-pks-ci-msvc-iconv-fixes-v2-0-25491bc8dbf8@pks.im>


* pw/meson-doc-mergetool (2026-02-09) 1 commit
 - meson: fix building mergetool docs

 Update build precedure for mergetool documentation in meson-based builds.

 WIll merge to 'next'.
 source: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>


* ds/config-list-with-type (2026-02-13) 13 commits
 - config: restructure format_config()
 - config: format colors gently
 - color: add color_parse_gently()
 - config: format expiry dates gently
 - config: format paths gently
 - parse: add git_parse_maybe_pathname()
 - config: format bools or strings in helper
 - config: format bools or ints gently
 - config: format bools gently
 - config: format int64s gently
 - config: make 'git config list --type=<X>' work
 - config: add 'gently' parameter to format_config()
 - config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.

 Expecting a reroll?
 cf. <aZQvSvBEebHFf9Bb@pks.im>
 source: <pull.2044.v2.git.1771026918.gitgitgadget@gmail.com>


* rr/gitweb-mobile (2026-02-16) 5 commits
 - gitweb: let page header grow on mobile for long wrapped project names
 - gitweb: fix mobile footer overflow by wrapping text and clearing floats
 - gitweb: fix mobile page overflow across log/commit/blob/diff views
 - gitweb: prevent project search bar from overflowing on mobile
 - gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.

 Comments?
 source: <pull.2043.v2.git.1771257211.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-10) 1 commit
 - osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).

 Will merge to 'next'?
 source: <pull.2046.v2.git.1770775169908.gitgitgadget@gmail.com>


* aa/add-p-no-auto-advance (2026-02-14) 4 commits
 - add-patch: allow interfile navigation when selecting hunks
 - add-patch: allow all-or-none application of patches
 - add-patch: modify patch_update_file() signature
 - interactive -p: add new `--auto-advance` flag

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Comments?
 source: <cover.1771066252.git.abrahamadekunle50@gmail.com>


* kn/ref-location (2026-02-14) 6 commits
 - refs: add GIT_REFERENCE_BACKEND to specify reference backend
 - refs: allow reference location in refstorage config
 - refs: move out stub modification to generic layer
 - refs: receive and use the reference storage payload
 - refs: extract out `refs_create_refdir_stubs()`
 - setup: don't modify repo in `create_reference_database()`

 Allow the directory in which reference backends store their data to
 be specified.

 Expecting a reroll.
 cf. <CAOLa=ZQwrOGpZfVtfTfPFhnkJ_qnEhv8mxO3Ot7nQXusbkJkYw@mail.gmail.com>
 cf. <CAOLa=ZQFOLh6ixB4=ukPS44uE9k3-1Zw1U2bCYf+TsKyHEqLiA@mail.gmail.com>
 source: <20260214-kn-alternate-ref-dir-v6-0-86a82c77cf59@gmail.com>


* ar/config-hooks (2026-02-04) 5 commits
 - hook: allow out-of-repo 'git hook' invocations
 - hook: include hooks from the config
 - hook: introduce "git hook list"
 - hook: run a list of hooks
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204165126.1548805-1-adrian.ratiu@collabora.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
 - whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.

 Will merge to 'next'?
 source: <xmqqecn0nqyt.fsf@gitster.g>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
 - meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Expecting a pull request for gitk.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
 - gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'next'?
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-04) 5 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: allow parallel hook execution
 - config: add a repo_config_get_uint() helper
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204173328.1601807-1-adrian.ratiu@collabora.com>


* mc/tr2-process-ancestry-cleanup (2026-02-13) 6 commits
  (merged to 'next' on 2026-02-17 at 2ebebfc02c)
 + t0213: add trace2 cmd_ancestry tests
 + test-tool: extend trace2 helper with 400ancestry
 + trace2: emit cmd_ancestry data for Windows
 + trace2: refactor Windows process ancestry trace2 event
 + build: include procinfo.c impl for macOS
 + trace2: add macOS process ancestry tracing

 Add process ancestry data to trace2 on macOS to match what we
 already do on Linux and Windows.  Also adjust the way Windows
 implementation reports this information to match the other two.

 Will merge to 'master'.
 source: <pull.2040.v2.git.1771012500.gitgitgadget@gmail.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
 - checkout: tell "parse_remote_branch" which command is calling it
 - checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Will merge to 'next'?
 source: <20260129190616.645471-1-gitster@pobox.com>


* ps/for-each-ref-in-fixes (2026-02-05) 4 commits
 - bisect: simplify string_list memory handling
 - bisect: fix misuse of `refs_for_each_ref_in()`
 - pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 - pack-bitmap: deduplicate logic to iterate over preferred bitmap tips

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.

 Will merge to 'next'?
 cf. <aYmleK3kGqzLXyJe@pks.im>
 source: <20260206-b4-pks-fix-for-each-ref-in-misuse-v3-0-1e050c3d6a50@pks.im>


* ps/object-info-bits-cleanup (2026-02-11) 5 commits
 - odb: convert `odb_has_object()` flags into an enum
 - odb: convert object info flags into an enum
 - odb: drop gaps in object info flag values
 - builtin/fsck: fix flags passed to `odb_has_object()`
 - builtin/backfill: fix flags passed to `odb_has_object()`

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Will merge to 'next'?
 source: <20260212-b4-pks-read-object-info-flags-v2-0-3bfa9bb149ef@pks.im>


* pw/xdiff-cleanups (2026-01-26) 2 commits
  (merged to 'next' on 2026-02-11 at e6df42d605)
 + xdiff: remove unused data from xdlclass_t
 + xdiff: remove "line_hash" field from xrecord_t

 Small clean-up of xdiff library to remove unnecessary data
 duplication.

 Will merge to 'master'.
 source: <cover.1769424529.git.phillip.wood@dunelm.org.uk>


* ty/symlinks-use-unsigned-for-bitset (2026-01-21) 1 commit
 - symlinks: use unsigned int for flags

 Code clean-up.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf66u9jj.fsf@gitster.g>
 source: <20260121162640.424126-1-a3205153416@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
  (merged to 'next' on 2026-02-17 at 1ed2797464)
 + revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'master'.
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - run-command: poll child input in addition to output
 - hook: add jobs option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: allow separate std[out|err] streams
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add helper for pp child states
 - t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Comments?
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx-TLwqbcdGcb2drD4vE6D3M93EPMjcAeTNR+XNTbmTVZg@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Comments?
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* ps/odb-for-each-object (2026-01-26) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Will merge to 'next'?
 cf. <aXk2FjTUMMThs5Kp@nand.local>
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'next'?
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-02-15) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v5.git.git.1771186316.gitgitgadget@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 What's the status of this topic?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-16) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1771258573.git.belkid98@gmail.com>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2026-02-16) 9 commits
  (merged to 'next' on 2026-02-17 at f10e546e7b)
 + fetch-pack: wire up and enable auto filter logic
 + promisor-remote: change promisor_remote_reply()'s signature
 + promisor-remote: keep advertised filters in memory
 + list-objects-filter-options: support 'auto' mode for --filter
 + doc: fetch: document `--filter=<filter-spec>` option
 + fetch: make filter_options local to cmd_fetch()
 + clone: make filter_options local to cmd_clone()
 + promisor-remote: allow a client to store fields
 + promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Will merge to 'master'.
 source: <20260216132317.15894-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* lo/repo-info-keys (2026-02-13) 2 commits
 - repo: add new flag --keys to git-repo-info
 - repo: rename the output format "keyvalue" to "lines"

 "git repo info" learns "--keys" action to list known keys.

 Will merge to 'next'.
 source: <20260214005818.37349-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Comments?  v1 saw a lot of discussions, v2 didn't, and this is v3,
 which is essentially identical to v2 with CI fixes (which work!).
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 21%]

* Re: ds/revision-maximal-only (was Re: What's cooking in git.git (Feb 2026, #05))
  @ 2026-02-17 16:33 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-17 16:33 UTC (permalink / raw)
  To: Derrick Stolee; +Cc: git

Derrick Stolee <stolee@gmail.com> writes:

> On 2/13/26 9:01 PM, Junio C Hamano wrote:
>
>> * ds/revision-maximal-only (2026-01-22) 1 commit
>>   - revision: add --maximal-only option
>> 
>>   "git rev-list" and friends learn "--maximal-only" to show only the
>>   commits that are not reachable by other commits.
>> 
>>   Will merge to 'next'?
>>   source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>
>
> This has been stable for a few weeks, so I think it's ready for
> 'next'.

I am not 100% sure if "stable" is the most appropriate word to
describe the topic, or if it is "dormant".  Let's merge it down.

Thanks.




^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Feb 2026, #05)
@ 2026-02-14  2:01 19% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-02-14  2:01 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* am/doc-github-contributiong-link-to-submittingpatches (2026-01-31) 1 commit
  (merged to 'next' on 2026-02-04 at 1f4534468b)
 + .github/CONTRIBUTING.md: link to SubmittingPatches on git-scm.com

 GitHub repository banner update.
 source: <20260201002658.133153-1-Eng.Abdalrhman.Abdalmonem@gmail.com>


* cf/c23-const-preserving-strchr-updates-0 (2026-02-05) 2 commits
  (merged to 'next' on 2026-02-06 at ac9d269e5c)
 + gpg-interface: remove an unnecessary NULL initialization
 + global: constify some pointers that are not written to

 ISO C23 redefines strchr and friends that tradiotionally took
 a const pointer and returned a non-const pointer derived from it to
 preserve constness (i.e., if you ask for a substring in a const
 string, you get a const pointer to the substring).  Update code
 paths that used non-const pointer to receive their results that did
 not have to be non-const to adjust.
 source: <342b01acd42f1fcaa3abefa38dc589e12ccb1134.1770261829.git.collin.funk1@gmail.com>


* cs/subtree-reftable-testfix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-05 at d953fc69cc)
 + contrib/subtree: fix tests with reftable backend

 Test fix (in contrib/)
 source: <20260204043812.814884-3-ask+git@howdoi.land>


* hs/t9160-test-paths (2026-02-02) 1 commit
  (merged to 'next' on 2026-02-04 at 0d4010771a)
 + t9160:modernize test path checking

 Test update.
 source: <20260202161759.84355-2-hoda.s.salim@gmail.com>


* jc/ci-test-contrib-too (2026-02-06) 2 commits
  (merged to 'next' on 2026-02-06 at 2890869b63)
 + ci: ubuntu: use GNU coreutils for dirname
 + test: optionally test contrib in CI

 Test contrib/ things in CI to catch breakages before they enter the
 "next" branch.
 source: <20260207042703.1180704-1-ask+git@howdoi.land>
 source: <xmqqjywuyhu9.fsf@gitster.g>


* jc/diff-highlight-main-master-testfix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-05 at 128a77dfe5)
 + diff-highlight: allow testing with Git 3.0 breaking changes

 Test fix (in contrib/)
 source: <xmqq7bstsemv.fsf@gitster.g>


* jt/odb-transaction-per-source (2026-02-02) 4 commits
  (merged to 'next' on 2026-02-06 at 9f85ed3c47)
 + odb: transparently handle common transaction behavior
 + odb: prepare `struct odb_transaction` to become generic
 + object-file: rename transaction functions
 + odb: store ODB source in `struct odb_transaction`

 Transaction to create objects (or not) is currently tied to the
 repository, but in the future a repository can have multiple object
 sources, which may have different transaction mechanisms.  Make the
 odb transaction API per object source.
 source: <20260203001002.2500198-1-jltobler@gmail.com>


* kh/doc-shortlog-fix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-04 at 0b24d64c43)
 + doc: shortlog: put back trailer paragraphs

 Doc fix.
 source: <V2_shortlog_trailers.254@msgid.xyz>


* mc/doc-send-email-signed-off-by-cc (2026-02-05) 1 commit
  (merged to 'next' on 2026-02-06 at 2a3d683680)
 + doc: send-email: correct --no-signed-off-by-cc misspelling

 Docfix.
 source: <V3_--no-signed-off-by-cc.260@msgid.xyz>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
  (merged to 'next' on 2026-02-06 at f7ef001af4)
 + commit: rename `free_commit_list()` to conform to coding guidelines
 + commit: rename `reverse_commit_list()` to conform to coding guidelines
 + commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* rs/blame-ignore-colors-fix (2026-02-01) 1 commit
  (merged to 'next' on 2026-02-04 at 305ecc6b61)
 + blame: fix coloring for repeated suspects

 "git blame --ignore-revs=... --color-lines" did not account for
 ignored revisions passing blame to the same commit an adjacent line
 gets blamed for.
 source: <28ac1ee6-f3e9-4789-92b7-903788430697@web.de>


* sb/merge-ours-sparse (2026-02-06) 2 commits
  (merged to 'next' on 2026-02-06 at 64333814d3)
 + merge-ours: integrate with sparse-index
 + merge-ours: drop USE_THE_REPOSITORY_VARIABLE

 "git merge-ours" is taught to work better in a sparse checkout.
 source: <pull.2189.v2.git.git.1770405383.gitgitgadget@gmail.com>


* sd/doc-my1c-api-config-reference-fix (2026-02-05) 1 commit
  (merged to 'next' on 2026-02-06 at 222e701dd5)
 + doc: fix repo_config documentation reference

 Docfix.
 source: <20260206062108.74072-1-valusoutrik@gmail.com>


* sp/show-index-warn-fallback (2026-01-30) 2 commits
  (merged to 'next' on 2026-02-04 at 58399695e4)
 + show-index: use gettext wrapping in user facing error messages
 + show-index: warn when falling back to SHA-1 outside a repository

 When "git show-index" is run outside a repository, it silently
 defaults to SHA-1; the tool now warns when this happens.
 source: <20260130153603.290196-1-shreyanshpaliwalcmsmn@gmail.com>


* tc/last-modified-not-a-tree (2026-01-30) 4 commits
  (merged to 'next' on 2026-02-06 at b3dcd27ef8)
 + last-modified: verify revision argument is a commit-ish
 + last-modified: remove double error message
 + last-modified: fix memory leak when more than one commit is given
 + last-modified: rewrite error message when more than one commit given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.
 cf. <aYYO9SxiC5zFbB71@pks.im>
 source: <20260130-toon-last-modified-tree-v6-0-db827e5df985@iotcl.com>


* tc/memzero-array (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-05 at 0755d57f09)
 + cocci: extend MEMZERO_ARRAY() rules

 Coccinelle rules update.
 source: <20260203102908.749954-1-toon@iotcl.com>

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

* ps/pack-concat-wo-backfill (2026-02-11) 1 commit
 - builtin/pack-objects: don't fetch objects when merging packs

 "git pack-objects --stdin-packs" with "--exclude-promisor-objects"
 fetched objects that are promised, which was not wanted.  This has
 been fixed.

 Will merge to 'next'?
 source: <20260211-pks-pack-objects-stdin-skip-backfill-fetch-v1-1-870cad56d8ae@pks.im>


* jc/doc-cg-c-comment (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-12 at d1286b26eb)
 + CodingGuidelines: document // comments

 A CodingGuidelines update.

 Will merge to 'master'.
 source: <xmqqikc3t7hf.fsf@gitster.g>


* jc/doc-cg-needswork (2026-02-12) 1 commit
 - CodingGuidelines: document NEEDSWORK comments

 A CodingGuidelines update.

 Will merge to 'next'?
 source: <xmqqldgxmzbj.fsf@gitster.g>


* jh/alias-i18n (2026-02-11) 3 commits
 - alias: support non-alphanumeric names via subsection syntax
 - alias: prepare for subsection aliases
 - help: use list_aliases() for alias listing

 Extend the alias configuration syntax to allow aliases using
 characters outside ASCII alphanumeric (plus '-').

 Will merge to 'next'?
 source: <20260211211810.278806-1-jonatan@jontes.page>


* ak/t9812-test-path-is-helpers (2026-02-11) 1 commit
  (merged to 'next' on 2026-02-13 at a9746d98e4)
 + t9812: modernize test path helpers

 Test update.

 Will merge to 'master'.
 source: <20260212054530.4763-1-ashwanikamal.im421@gmail.com>


* hy/diff-lazy-fetch-with-break-fix (2026-02-12) 2 commits
 - SQUASH???
 - diffcore-break: prevent dangling pointer

 A prefetch call can be triggered to access a stale diff_queue entry
 after diffcore-break breaks a filepair into two and freed the
 original entry that is no longer used, leading to a segfault, which
 has been corrected.

 Expecting a reroll?
 source: <20260212072002.2347-2-hanyang.tony@bytedance.com>


* ps/history-ergonomics-updates (2026-02-13) 5 commits
 - Documentation/git-history: document default for "--update-refs="
 - builtin/history: rename "--ref-action=" to "--update-refs="
 - builtin/history: replace "--ref-action=print" with "--dry-run"
 - builtin/history: check for merges before asking for user input
 - builtin/history: perform revwalk checks before asking for user input

 UI improvements for "git history reword".

 Will merge to 'next'?
 source: <20260213-b4-pks-history-dry-run-v2-0-756ac376e9e5@pks.im>


* pw/diff-anchored-optim (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-13 at a8e8191f03)
 + diff --anchored: avoid checking unmatched lines

 "git diff --anchored=<text>" has been optimized.

 Will merge to 'master'.
 source: <2a8cc2d6c37f25a58823b501500165d597321749.1770911599.git.phillip.wood@dunelm.org.uk>


* ac/string-list-sort-u-and-tests (2026-02-12) 1 commit
 . sparse-checkout: use string_list_sort_u

 source: <20260213033729.50208-1-amishhhaaaa@gmail.com>

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

* dk/complete-stash-import-export (2026-02-07) 1 commit
 - completion: add stash import, export

 Command line completion (in contrib/) update.

 Comments?
 source: <20260207215924.28863-1-ben.knoble+github@gmail.com>


* kh/doc-am-format-sendmail (2026-02-12) 1 commit
  (merged to 'next' on 2026-02-13 at 8850dc2fa9)
 + doc: add caveat about round-tripping format-patch

 Doc update.

 Will merge to 'master'.
 source: <V3_format-patch_caveats.354@msgid.xyz>


* kh/doc-patch-id-4 (2026-02-07) 3 commits
 - doc: patch-id: see also git-cherry(1)
 - doc: patch-id: add script example
 - doc: patch-id: emphasize multi-patch processing

 Doc update.

 Comments?
 source: <CV_doc_patch-id_4.275@msgid.xyz>


* pw/commit-msg-sample-hook (2026-02-13) 2 commits
 - templates: detect commit messages containing diffs
 - templates: add .gitattributes entry for sample hooks

 Update sample commit-msg hook to complain when a log message has
 material mailinfo considers the end of log message in the middle.

 Will merge to 'next'.
 source: <cover.1770993281.git.phillip.wood@dunelm.org.uk>


* bk/t2003-modernise (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at 561a73205e)
 + t2003: modernize path existence checks using test helpers

 Test update.

 Will merge to 'master'.
 source: <20260209112444.1268765-1-bkkaracay@gmail.com>


* kh/doc-am-xref (2026-02-09) 4 commits
 - doc: am: fill out hook discussion
 - doc: am: add missing config am.messageId
 - doc: am: say that --message-id adds a trailer
 - doc: am: normalize git(1) command links

 Doc update.

 Comments?
 source: <doc_am_gitlinks_and_am.messageId.321@msgid.xyz>


* kh/doc-rerere-options-xref (2026-02-10) 1 commit
  (merged to 'next' on 2026-02-10 at 1ade94535a)
 + doc: rerere-options.adoc: link to git-rerere(1)

 Doc update.

 Will merge to 'master'.
 source: <V2_doc_link_rerere.34f@msgid.xyz>


* ps/ci-gitlab-msvc-updates (2026-02-11) 7 commits
 - gitlab-ci: handle failed tests on MSVC+Meson job
 - gitlab-ci: use "run-test-slice-meson.sh"
 - ci: make test slicing consistent across Meson/Make
 - github: fix Meson tests not executing at all
 - meson: fix MERGE_TOOL_DIR with "--no-bin-wrappers"
 - ci: don't skip smallest test slice in GitLab
 - ci: handle failures of test-slice helper

 CI update.

 Will merge to 'next'?
 source: <20260211-b4-pks-ci-meson-improvements-v1-0-cb167cc80b86@pks.im>


* ps/tests-wo-iconv-fixes (2026-02-09) 4 commits
 - t6006: don't use iconv(1) without ICONV prereq
 - t5550: add ICONV prereq to tests that use "$HTTPD_URL/error"
 - t4205: improve handling of ICONV prerequisite
 - t4xxx: don't use iconv(1) without ICONV prereq

 Some tests assumed "iconv" is available without honoring ICONV
 prerequisite, which has been corrected.

 Comments?
 source: <20260209-b4-pks-ci-msvc-iconv-fixes-v1-0-1e3167cd8828@pks.im>


* pw/meson-doc-mergetool (2026-02-09) 1 commit
 - meson: fix building mergetool docs

 Update build precedure for mergetool documentation in meson-based builds.

 WIll merge to 'next'.
 source: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>


* rs/clean-includes (2026-02-08) 1 commit
  (merged to 'next' on 2026-02-10 at 883d07f2eb)
 + remove duplicate includes

 Clean up redundant includes of header files.

 Will merge to 'master'.
 source: <280325e3-401c-47c7-98cf-c5cc7f719ee4@web.de>


* rs/commit-commit-stack (2026-02-08) 1 commit
  (merged to 'next' on 2026-02-10 at c1a50b2859)
 + commit: use commit_stack

 Code clean-up to use the commit_stack API.

 Will merge to 'master'.
 source: <db40d132-14ca-4749-937a-9410ecc17dde@web.de>


* rs/version-wo-the-repository (2026-02-08) 1 commit
  (merged to 'next' on 2026-02-10 at 80809d2b3d)
 + version: stop using the_repository

 Code clean-up.

 Will merge to 'master'.
 source: <afccdc3a-8672-49a7-b260-e77e617d8976@web.de>


* rs/xdiff-wo-the-repository (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at dbb8a23008)
 + xdiff-interface: stop using the_repository

 Reduce dependency on the_repository of xdiff-interface layer.

 Will merge to 'master'.
 source: <59fe4ac7-605d-4eae-b13c-46996dd8814e@web.de>


* sd/t7003-test-path-is-helpers (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at 5e3bc9f2b9)
 + t7003: modernize path existence checks using test helpers

 Test updates.

 Will merge to 'master'.
 source: <20260209172445.39536-1-valusoutrik@gmail.com>


* ds/config-list-with-type (2026-02-09) 5 commits
 - config: make 'git config list --type=<X>' work
 - config: create special init for list mode
 - config: allow format_config() to filter
 - parse: add git_parse_maybe_pathname()
 - config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.

 Comments?
 source: <pull.2044.git.1770698579.gitgitgadget@gmail.com>


* jc/doc-rerere-update (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at 88a6c151d7)
 + rerere: minor documantation update

 Doc update.

 Will merge to 'master'.
 source: <xmqqikc54vse.fsf@gitster.g>


* rr/gitweb-mobile (2026-02-09) 5 commits
 - gitweb: let page header grow on mobile for long wrapped project names
 - gitweb: fix mobile footer overflow by wrapping text and clearing floats
 - gitweb: fix mobile page overflow across log/commit/blob/diff views
 - gitweb: prevent project search bar from overflowing on mobile
 - gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.

 Comments?
 source: <pull.2043.git.1770679038.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-10) 1 commit
 - osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).

 Will merge to 'next'?
 source: <pull.2046.v2.git.1770775169908.gitgitgadget@gmail.com>


* yt/merge-file-outside-a-repository (2026-02-07) 1 commit
  (merged to 'next' on 2026-02-10 at ee1ced4120)
 + merge-file: honor merge.conflictStyle outside of a repository

 "git merge-file" can be run outside a repository, but it ignored
 all configuration, even the per-user ones.  The command now uses
 available configuration files to find its customization.

 Will merge to 'master'.
 source: <3488DCC3-D127-465B-BB95-3D87BB2E48F6@ytausch.de>


* aa/add-p-no-auto-advance (2026-02-13) 4 commits
 - add-patch: allow interfile navigation when selecting hunks
 - add-patch: allow all-or-none application of patches
 - add-patch: modify patch_update_file() signature
 - interactive -p: add new `--auto-advance` flag

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Comments?
 source: <cover.1771015581.git.abrahamadekunle50@gmail.com>


* kn/ref-location (2026-02-09) 4 commits
 - refs: add GIT_REFERENCE_BACKEND to specify reference backend
 - refs: allow reference location in refstorage config
 - refs: forward and use the reference storage payload
 - refs: extract out `refs_create_refdir_stubs()`

 Allow the directory in which reference backends store their data to
 be specified.

 Expecting a reroll or two?
 cf. <aYoMmhClPzdmLjII@pks.im>
 source: <20260209-kn-alternate-ref-dir-v5-0-740899834ceb@gmail.com>


* ar/config-hooks (2026-02-04) 5 commits
 - hook: allow out-of-repo 'git hook' invocations
 - hook: include hooks from the config
 - hook: introduce "git hook list"
 - hook: run a list of hooks
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204165126.1548805-1-adrian.ratiu@collabora.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
 - whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.

 Will merge to 'next'?
 source: <xmqqecn0nqyt.fsf@gitster.g>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
 - meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Expecting a pull request for gitk.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
 - gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'next'?
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-04) 5 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: allow parallel hook execution
 - config: add a repo_config_get_uint() helper
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204173328.1601807-1-adrian.ratiu@collabora.com>


* mc/tr2-process-ancestry-cleanup (2026-02-13) 6 commits
 - t0213: add trace2 cmd_ancestry tests
 - test-tool: extend trace2 helper with 400ancestry
 - trace2: emit cmd_ancestry data for Windows
 - trace2: refactor Windows process ancestry trace2 event
 - build: include procinfo.c impl for macOS
 - trace2: add macOS process ancestry tracing

 Add process ancestry data to trace2 on macOS to match what we
 already do on Linux and Windows.  Also adjust the way Windows
 implementation reports this information to match the other two.

 Will merge to 'next'.
 source: <pull.2040.v2.git.1771012500.gitgitgadget@gmail.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
 - checkout: tell "parse_remote_branch" which command is calling it
 - checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Will merge to 'next'?
 source: <20260129190616.645471-1-gitster@pobox.com>


* ps/for-each-ref-in-fixes (2026-02-05) 4 commits
 - bisect: simplify string_list memory handling
 - bisect: fix misuse of `refs_for_each_ref_in()`
 - pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 - pack-bitmap: deduplicate logic to iterate over preferred bitmap tips

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.

 Will merge to 'next'?
 cf. <aYmleK3kGqzLXyJe@pks.im>
 source: <20260206-b4-pks-fix-for-each-ref-in-misuse-v3-0-1e050c3d6a50@pks.im>


* ja/doc-synopsis-style-even-more (2026-02-05) 4 commits
  (merged to 'next' on 2026-02-09 at d732b9d6a0)
 + doc: convert git-show to synopsis style
 + doc: fix some style issues in git-clone and for-each-ref-options
 + doc: finalize git-clone documentation conversion to synopsis style
 + doc: convert git-submodule to synopsis style

 A handful of documentation pages have been modernized to use the
 "synopsis" style.

 Will merge to 'master'.
 source: <pull.2036.v4.git.1770351146.gitgitgadget@gmail.com>


* ps/object-info-bits-cleanup (2026-02-11) 5 commits
 - odb: convert `odb_has_object()` flags into an enum
 - odb: convert object info flags into an enum
 - odb: drop gaps in object info flag values
 - builtin/fsck: fix flags passed to `odb_has_object()`
 - builtin/backfill: fix flags passed to `odb_has_object()`

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Will merge to 'next'?
 source: <20260212-b4-pks-read-object-info-flags-v2-0-3bfa9bb149ef@pks.im>


* pw/xdiff-cleanups (2026-01-26) 2 commits
  (merged to 'next' on 2026-02-11 at e6df42d605)
 + xdiff: remove unused data from xdlclass_t
 + xdiff: remove "line_hash" field from xrecord_t

 Small clean-up of xdiff library to remove unnecessary data
 duplication.

 Will merge to 'master'.
 source: <cover.1769424529.git.phillip.wood@dunelm.org.uk>


* ty/symlinks-use-unsigned-for-bitset (2026-01-21) 1 commit
 - symlinks: use unsigned int for flags

 Code clean-up.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf66u9jj.fsf@gitster.g>
 source: <20260121162640.424126-1-a3205153416@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
 - revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'next'?
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - run-command: poll child input in addition to output
 - hook: add jobs option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: allow separate std[out|err] streams
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add helper for pp child states
 - t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Comments?
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx-TLwqbcdGcb2drD4vE6D3M93EPMjcAeTNR+XNTbmTVZg@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Comments?
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* ps/odb-for-each-object (2026-01-26) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Will merge to 'next'?
 cf. <aXk2FjTUMMThs5Kp@nand.local>
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'next'?
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-01-16) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v4.git.git.1768602661.gitgitgadget@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 What's the status of this topic?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-03) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Breaks fuzz smoke test.
 cf. <xmqq7bspcq3c.fsf@gitster.g>
 source: <cover.1770127568.git.belkid98@gmail.com>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2026-02-12) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: change promisor_remote_reply()'s signature
 - promisor-remote: keep advertised filters in memory
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Will merge to 'next'.
 source: <20260212100843.883623-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-22) 1 commit
  (merged to 'next' on 2026-02-09 at 87bfa08d16)
 + lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Will merge to 'master'.
 source: <pull.2011.v6.git.1769109815197.gitgitgadget@gmail.com>


* lo/repo-info-keys (2026-01-23) 2 commits
 - repo: add new flag --keys to git-repo-info
 - repo: rename "keyvalue" to "lines"

 "git repo info" learns "--keys" action to list known keys.

 Expecting a reroll.
 cf. <F857412A-6B47-4DE0-85BC-D8AC2E54669F@gmail.com>
 source: <20260123164900.35092-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Comments?  v1 saw a lot of discussions, v2 didn't, and this is v3,
 which is essentially identical to v2 with CI fixes (which work!).
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 19%]

* Re: What's cooking in git.git (Feb 2026, #04)
  @ 2026-02-12 16:38 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-12 16:38 UTC (permalink / raw)
  To: Phillip Wood; +Cc: git

Phillip Wood <phillip.wood123@gmail.com> writes:

> On 10/02/2026 22:21, Junio C Hamano wrote:
>> 
>> * pw/commit-msg-sample-hook (2026-02-07) 3 commits
>>   - templates: detect messages that contain a separator line
>>   - templates: detect commit messages containing diffs
>>   - templates: add .gitattributes entry for sample hooks
>> 
>>   Update sample commit-msg hook to complain when a log message has
>>   material mailinfo considers the end of log message in the middle.
>> 
>>   Will merge to 'next'?
>>   source: <cover.1770476279.git.phillip.wood@dunelm.org.uk>
>
> I'm planning a re-roll to handle subject lines that start with "diff -" 
> after using this hook while preparing 
> <2a8cc2d6c37f25a58823b501500165d597321749.1770911599.git.phillip.wood@dunelm.org.uk>. 
> Such subject lines are safe because "git format-patch" prefixes them 
> with [PATCH]. I think I'll probably drop the last patch as well.

OK.  Even though the "[PATCH] " prefix is optional in format-patch
output, it will be on the line that begins with "Subject:", so it
should be safe, so you can safely exclude the lines in the first
paragraph of a commit message from the check.

Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Feb 2026, #04)
  2026-02-10 22:21 19% What's cooking in git.git (Feb 2026, #04) Junio C Hamano
@ 2026-02-11 20:46 99% ` Junio C Hamano
    1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-11 20:46 UTC (permalink / raw)
  To: git; +Cc: Patrick Steinhardt, Abraham Samuel Adekunle

Junio C Hamano <gitster@pobox.com> writes:

Sorry, but I need to fix a few obvious "oops, that's embarrassing"
mistakes.

> * aa/add-p-no-auto-advance (2026-02-06) 3 commits
>  - add-patch: Allow proper 'git apply' when using the --rework-with-file flag
>  - add-patch: Allow interfile navigation when selecting hunks
>  - interactive -p: add new `--rework-with-file` flag to interactive machinery
>
>  "git add -p" learned a new mode that allows the user to revisit a
>  file that was already dealt with.
>
>  Expecting a gitk update.
>  source: <cover.1770390576.git.abrahamadekunle50@gmail.com>

No, this is not about "gitk" at all.  It is expecting a hopefully
small and final reroll.

> * ps/meson-gitk-git-gui (2026-02-04) 1 commit
>  - meson: wire up gitk and git-gui
>
>  Plumb gitk/git-gui build and install procedure in meson based
>  builds.
>
>  Expecting a reroll.
>  source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>

This is the one that waits updated "gitk".

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Feb 2026, #04)
@ 2026-02-10 22:21 19% Junio C Hamano
  2026-02-11 20:46 99% ` Junio C Hamano
    0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-02-10 22:21 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* ac/string-list-sort-u-and-tests (2026-01-29) 2 commits
  (merged to 'next' on 2026-01-30 at 742890e56f)
 + string-list: add string_list_sort_u() that mimics "sort -u"
 + u-string-list: add unit tests for string-list methods

 The string_list API gains a new helper, string_list_sort_u(), and
 new unit tests to extend coverage.
 source: <20260125201500.63904-2-amishhhaaaa@gmail.com>


* kn/ref-batch-output-error-reporting-fix (2026-01-25) 6 commits
  (merged to 'next' on 2026-01-30 at fe8044c396)
 + fetch: delay user information post committing of transaction
 + receive-pack: utilize rejected ref error details
 + fetch: utilize rejected ref error details
 + update-ref: utilize rejected error details if available
 + refs: add rejection detail to the callback function
 + refs: skip to next ref when current ref is rejected

 A handful of code paths that started using batched ref update API
 (after Git 2.51 or so) lost detailed error output, which have been
 corrected.
 source: <20260125-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v5-0-d58f3a9edf98@gmail.com>


* ps/history (2026-01-13) 9 commits
  (merged to 'next' on 2026-01-29 at ecac247f83)
 + builtin/history: implement "reword" subcommand
 + builtin: add new "history" command
 + wt-status: provide function to expose status for trees
 + replay: support updating detached HEAD
 + replay: support empty commit ranges
 + replay: small set of cleanups
 + builtin/replay: move core logic into "libgit.a"
 + builtin/replay: extract core logic to replay revisions
 + Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.
 source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>


* pw/replay-drop-empty (2025-12-18) 2 commits
  (merged to 'next' on 2026-01-29 at 66b2238f5c)
 + replay: drop commits that become empty
 + Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* sb/doc-worktree-prune-expire-improvement (2026-01-27) 1 commit
  (merged to 'next' on 2026-01-30 at faf2e087b8)
 + worktree: clarify that --expire only affects missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.
 source: <pull.2135.v3.git.git.1769578785381.gitgitgadget@gmail.com>


* ty/perf-3400-optim (2026-01-30) 1 commit
  (merged to 'next' on 2026-02-01 at 6c019af192)
 + t/perf/p3400: speed up setup using fast-import

 Improve set-up time of a perf test.
 source: <20260130170123.642344-1-a3205153416@gmail.com>

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

* dk/complete-stash-import-export (2026-02-07) 1 commit
 - completion: add stash import, export

 Command line completion (in contrib/) update.

 Comments?
 source: <20260207215924.28863-1-ben.knoble+github@gmail.com>


* kh/doc-am-format-sendmail (2026-02-09) 1 commit
 - doc: add caveat about roundtripping format-patch

 Doc update.

 Comments?
 source: <V2_format-patch_caveats.34b@msgid.xyz>


* kh/doc-patch-id-4 (2026-02-07) 3 commits
 - doc: patch-id: see also git-cherry(1)
 - doc: patch-id: add script example
 - doc: patch-id: emphasize multi-patch processing

 Doc update.

 Comments?
 source: <CV_doc_patch-id_4.275@msgid.xyz>


* pw/commit-msg-sample-hook (2026-02-07) 3 commits
 - templates: detect messages that contain a separator line
 - templates: detect commit messages containing diffs
 - templates: add .gitattributes entry for sample hooks

 Update sample commit-msg hook to complain when a log message has
 material mailinfo considers the end of log message in the middle.

 Will merge to 'next'?
 source: <cover.1770476279.git.phillip.wood@dunelm.org.uk>


* bk/t2003-modernise (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at 561a73205e)
 + t2003: modernize path existence checks using test helpers

 Test update.

 Will merge to 'master'.
 source: <20260209112444.1268765-1-bkkaracay@gmail.com>


* kh/doc-am-xref (2026-02-09) 4 commits
 - doc: am: fill out hook discussion
 - doc: am: add missing config am.messageId
 - doc: am: say that --message-id adds a trailer
 - doc: am: normalize git(1) command links

 Doc update.

 Comments?
 source: <doc_am_gitlinks_and_am.messageId.321@msgid.xyz>


* kh/doc-rerere-options-xref (2026-02-10) 1 commit
  (merged to 'next' on 2026-02-10 at 1ade94535a)
 + doc: rerere-options.adoc: link to git-rerere(1)

 Doc update.

 Will merge to 'master'.
 source: <V2_doc_link_rerere.34f@msgid.xyz>



* ps/ci-gitlab-msvc-updates (2026-02-09) 5 commits
 - gitlab-ci: handle failed tests on MSVC+Meson job
 - gitlab-ci: use "run-test-slice-meson.sh"
 - ci: make test slicing consistent across Meson/Make
 - ci: don't skip smallest test slice in GitLab
 - ci: handle failures of test-slice helper

 CI update.

 Breaks GitHub Actions CI.
 cf. <xmqqa4xgxn2m.fsf@gitster.g>
 source: <20260209-b4-pks-ci-meson-improvements-v1-0-38444dec4874@pks.im>


* ps/tests-wo-iconv-fixes (2026-02-09) 4 commits
 - t6006: don't use iconv(1) without ICONV prereq
 - t5550: add ICONV prereq to tests that use "$HTTPD_URL/error"
 - t4205: improve handling of ICONV prerequisite
 - t4xxx: don't use iconv(1) without ICONV prereq

 Some tests assumed "iconv" is available without honoring ICONV
 prerequisite, which has been corrected.

 Comments?
 source: <20260209-b4-pks-ci-msvc-iconv-fixes-v1-0-1e3167cd8828@pks.im>


* pw/meson-doc-mergetool (2026-02-09) 1 commit
 - meson: fix building mergetool docs

 Update build precedure for mergetool documentation in meson-based builds.

 WIll merge to 'next'.
 source: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>


* rs/clean-includes (2026-02-08) 1 commit
  (merged to 'next' on 2026-02-10 at 883d07f2eb)
 + remove duplicate includes

 Clean up redundant includes of header files.

 Will merge to 'master'.
 source: <280325e3-401c-47c7-98cf-c5cc7f719ee4@web.de>


* rs/commit-commit-stack (2026-02-08) 1 commit
  (merged to 'next' on 2026-02-10 at c1a50b2859)
 + commit: use commit_stack

 Code clean-up to use the commit_stack API.

 Will merge to 'master'.
 source: <db40d132-14ca-4749-937a-9410ecc17dde@web.de>


* rs/version-wo-the-repository (2026-02-08) 1 commit
  (merged to 'next' on 2026-02-10 at 80809d2b3d)
 + version: stop using the_repository

 Code clean-up.

 Will merge to 'master'.
 source: <afccdc3a-8672-49a7-b260-e77e617d8976@web.de>


* rs/xdiff-wo-the-repository (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at dbb8a23008)
 + xdiff-interface: stop using the_repository

 Reduce dependency on the_repository of xdiff-interface layer.

 Will merge to 'master'.
 source: <59fe4ac7-605d-4eae-b13c-46996dd8814e@web.de>


* sd/t7003-test-path-is-helpers (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at 5e3bc9f2b9)
 + t7003: modernize path existence checks using test helpers

 Test updates.

 Will merge to 'master'.
 source: <20260209172445.39536-1-valusoutrik@gmail.com>


* ds/config-list-with-type (2026-02-09) 5 commits
 - config: make 'git config list --type=<X>' work
 - config: create special init for list mode
 - config: allow format_config() to filter
 - parse: add git_parse_maybe_pathname()
 - config: move show_all_config()

 "git config list" is taught to show the values interpreted for
 specific type with "--type=<X>" option.

 Comments?
 source: <pull.2044.git.1770698579.gitgitgadget@gmail.com>


* jc/doc-rerere-update (2026-02-09) 1 commit
  (merged to 'next' on 2026-02-10 at 88a6c151d7)
 + rerere: minor documantation update

 Doc update.

 Will merge to 'master'.
 source: <xmqqikc54vse.fsf@gitster.g>


* rr/gitweb-mobile (2026-02-09) 5 commits
 - gitweb: let page header grow on mobile for long wrapped project names
 - gitweb: fix mobile footer overflow by wrapping text and clearing floats
 - gitweb: fix mobile page overflow across log/commit/blob/diff views
 - gitweb: prevent project search bar from overflowing on mobile
 - gitweb: add viewport meta tag for mobile devices

 "gitweb" has been taught to be mobile friendly.

 Comments?
 source: <pull.2043.git.1770679038.gitgitgadget@gmail.com>


* kn/osxkeychain-buildfix (2026-02-10) 1 commit
 - osxkeychain: define build targets in the top-level Makefile.

 Simplify build procedure for oxskeychain (in contrib/).

 Expecting a (hopefully small and final) reroll?
 cf. <xmqqpl6cxtr7.fsf@gitster.g>
 source: <pull.2046.git.1770746461307.gitgitgadget@gmail.com>

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

* yt/merge-file-outside-a-repository (2026-02-07) 1 commit
  (merged to 'next' on 2026-02-10 at ee1ced4120)
 + merge-file: honor merge.conflictStyle outside of a repository

 "git merge-file" can be run outside a repository, but it ignored
 all configuration, even the per-user ones.  The command now uses
 available configuration files to find its customization.

 Will merge to 'master'.
 source: <3488DCC3-D127-465B-BB95-3D87BB2E48F6@ytausch.de>


* sb/merge-ours-sparse (2026-02-06) 2 commits
  (merged to 'next' on 2026-02-06 at 64333814d3)
 + merge-ours: integrate with sparse-index
 + merge-ours: drop USE_THE_REPOSITORY_VARIABLE

 "git merge-ours" is taught to work better in a sparse checkout.

 Will merge to 'master'.
 source: <pull.2189.v2.git.git.1770405383.gitgitgadget@gmail.com>


* aa/add-p-no-auto-advance (2026-02-06) 3 commits
 - add-patch: Allow proper 'git apply' when using the --rework-with-file flag
 - add-patch: Allow interfile navigation when selecting hunks
 - interactive -p: add new `--rework-with-file` flag to interactive machinery

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Expecting a gitk update.
 source: <cover.1770390576.git.abrahamadekunle50@gmail.com>


* sd/doc-my1c-api-config-reference-fix (2026-02-05) 1 commit
  (merged to 'next' on 2026-02-06 at 222e701dd5)
 + doc: fix repo_config documentation reference

 Docfix.

 Will merge to 'master'.
 source: <20260206062108.74072-1-valusoutrik@gmail.com>


* am/doc-github-contributiong-link-to-submittingpatches (2026-01-31) 1 commit
  (merged to 'next' on 2026-02-04 at 1f4534468b)
 + .github/CONTRIBUTING.md: link to SubmittingPatches on git-scm.com

 GitHub repository banner update.

 Will merge to 'master'.
 source: <20260201002658.133153-1-Eng.Abdalrhman.Abdalmonem@gmail.com>


* hs/t9160-test-paths (2026-02-02) 1 commit
  (merged to 'next' on 2026-02-04 at 0d4010771a)
 + t9160:modernize test path checking

 Test update.

 Will merge to 'master'.
 source: <20260202161759.84355-2-hoda.s.salim@gmail.com>


* jc/ci-test-contrib-too (2026-02-06) 2 commits
  (merged to 'next' on 2026-02-06 at 2890869b63)
 + ci: ubuntu: use GNU coreutils for dirname
 + test: optionally test contrib in CI

 Test contrib/ things in CI to catch breakages before they enter the
 "next" branch.

 Will merge to 'master'.
 source: <20260207042703.1180704-1-ask+git@howdoi.land>
 source: <xmqqjywuyhu9.fsf@gitster.g>


* kh/doc-shortlog-fix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-04 at 0b24d64c43)
 + doc: shortlog: put back trailer paragraphs

 Doc fix.

 Will merge to 'master'.
 source: <V2_shortlog_trailers.254@msgid.xyz>


* kn/ref-location (2026-02-09) 4 commits
 - refs: add GIT_REFERENCE_BACKEND to specify reference backend
 - refs: allow reference location in refstorage config
 - refs: forward and use the reference storage payload
 - refs: extract out `refs_create_refdir_stubs()`

 Allow the directory in which reference backends store their data to
 be specified.

 Expecting a reroll or two?
 cf. <aYoMmhClPzdmLjII@pks.im>
 source: <20260209-kn-alternate-ref-dir-v5-0-740899834ceb@gmail.com>


* rs/blame-ignore-colors-fix (2026-02-01) 1 commit
  (merged to 'next' on 2026-02-04 at 305ecc6b61)
 + blame: fix coloring for repeated suspects

 "git blame --ignore-revs=... --color-lines" did not account for
 ignored revisions passing blame to the same commit an adjacent line
 gets blamed for.

 Will merge to 'master'.
 source: <28ac1ee6-f3e9-4789-92b7-903788430697@web.de>


* jc/diff-highlight-main-master-testfix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-05 at 128a77dfe5)
 + diff-highlight: allow testing with Git 3.0 breaking changes

 Test fix (in contrib/)

 Will merge to 'master'.
 source: <xmqq7bstsemv.fsf@gitster.g>


* cs/subtree-reftable-testfix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-05 at d953fc69cc)
 + contrib/subtree: fix tests with reftable backend

 Test fix (in contrib/)

 Will merge to 'master'.
 source: <20260204043812.814884-3-ask+git@howdoi.land>


* tc/memzero-array (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-05 at 0755d57f09)
 + cocci: extend MEMZERO_ARRAY() rules

 Coccinelle rules update.

 Will merge to 'master'.
 source: <20260203102908.749954-1-toon@iotcl.com>


* ar/config-hooks (2026-02-04) 5 commits
 - hook: allow out-of-repo 'git hook' invocations
 - hook: include hooks from the config
 - hook: introduce "git hook list"
 - hook: run a list of hooks
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204165126.1548805-1-adrian.ratiu@collabora.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
 - whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.

 Will merge to 'next'?
 source: <xmqqecn0nqyt.fsf@gitster.g>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
 - meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Expecting a reroll.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
 - gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'next'?
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-04) 5 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: allow parallel hook execution
 - config: add a repo_config_get_uint() helper
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204173328.1601807-1-adrian.ratiu@collabora.com>


* cf/c23-const-preserving-strchr-updates-0 (2026-02-05) 2 commits
  (merged to 'next' on 2026-02-06 at ac9d269e5c)
 + gpg-interface: remove an unnecessary NULL initialization
 + global: constify some pointers that are not written to

 ISO C23 redefines strchr and friends that tradiotionally took
 a const pointer and returned a non-const pointer derived from it to
 preserve constness (i.e., if you ask for a substring in a const
 string, you get a const pointer to the substring).  Update code
 paths that used non-const pointer to receive their results that did
 not have to be non-const to adjust.

 Will merge to 'master'.
 source: <342b01acd42f1fcaa3abefa38dc589e12ccb1134.1770261829.git.collin.funk1@gmail.com>


* mc/doc-send-email-signed-off-by-cc (2026-02-05) 1 commit
  (merged to 'next' on 2026-02-06 at 2a3d683680)
 + doc: send-email: correct --no-signed-off-by-cc misspelling

 Docfix.

 Will merge to 'master'.
 source: <V3_--no-signed-off-by-cc.260@msgid.xyz>


* mc/tr2-process-ancestry-cleanup (2026-02-05) 4 commits
 - trace2: emit cmd_ancestry data for Windows
 - trace2: refactor Windows process ancestry trace2 event
 - build: include procinfo.c impl for macOS
 - trace2: add macOS process ancestry tracing

 Add process ancestry data to trace2 on macOS to match what we
 already do on Linux and Windows.  Also adjust the way Windows
 implementation reports this information to match the other two.

 Expecting a (hopefully small and final) reroll?
 cf. <56c1a7eb-a645-4453-8024-b320c1ebd55e@gmail.com>
 source: <pull.2040.git.1770307510.gitgitgadget@gmail.com>


* sp/show-index-warn-fallback (2026-01-30) 2 commits
  (merged to 'next' on 2026-02-04 at 58399695e4)
 + show-index: use gettext wrapping in user facing error messages
 + show-index: warn when falling back to SHA-1 outside a repository

 When "git show-index" is run outside a repository, it silently
 defaults to SHA-1; the tool now warns when this happens.

 Will merge to 'master'.
 source: <20260130153603.290196-1-shreyanshpaliwalcmsmn@gmail.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
 - checkout: tell "parse_remote_branch" which command is calling it
 - checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Will merge to 'next'?
 source: <20260129190616.645471-1-gitster@pobox.com>


* jt/odb-transaction-per-source (2026-02-02) 4 commits
  (merged to 'next' on 2026-02-06 at 9f85ed3c47)
 + odb: transparently handle common transaction behavior
 + odb: prepare `struct odb_transaction` to become generic
 + object-file: rename transaction functions
 + odb: store ODB source in `struct odb_transaction`

 Transaction to create objects (or not) is currently tied to the
 repository, but in the future a repository can have multiple object
 sources, which may have different transaction mechanisms.  Make the
 odb transaction API per object source.

 Will merge to 'master'.
 source: <20260203001002.2500198-1-jltobler@gmail.com>


* ps/for-each-ref-in-fixes (2026-02-05) 4 commits
 - bisect: simplify string_list memory handling
 - bisect: fix misuse of `refs_for_each_ref_in()`
 - pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 - pack-bitmap: deduplicate logic to iterate over preferred bitmap tips

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.

 Will merge to 'next'?
 cf. <aYmleK3kGqzLXyJe@pks.im>
 source: <20260206-b4-pks-fix-for-each-ref-in-misuse-v3-0-1e050c3d6a50@pks.im>


* ja/doc-synopsis-style-even-more (2026-02-05) 4 commits
  (merged to 'next' on 2026-02-09 at d732b9d6a0)
 + doc: convert git-show to synopsis style
 + doc: fix some style issues in git-clone and for-each-ref-options
 + doc: finalize git-clone documentation conversion to synopsis style
 + doc: convert git-submodule to synopsis style

 A handful of documentation pages have been modernized to use the
 "synopsis" style.

 Will merge to 'master'.
 source: <pull.2036.v4.git.1770351146.gitgitgadget@gmail.com>


* ps/object-info-bits-cleanup (2026-01-26) 3 commits
 - odb: drop gaps in object info flag values
 - builtin/fsck: fix flags passed to `odb_has_object()`
 - builtin/backfill: fix flags passed to `odb_has_object()`

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Comments?
 source: <20260126-b4-pks-read-object-info-flags-v1-0-e682a003b17c@pks.im>


* pw/xdiff-cleanups (2026-01-26) 2 commits
 - xdiff: remove unused data from xdlclass_t
 - xdiff: remove "line_hash" field from xrecord_t

 Small clean-up of xdiff library to remove unnecessary data
 duplication.

 Will merge to 'next'.
 source: <cover.1769424529.git.phillip.wood@dunelm.org.uk>


* ty/symlinks-use-unsigned-for-bitset (2026-01-21) 1 commit
 - symlinks: use unsigned int for flags

 Code clean-up.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf66u9jj.fsf@gitster.g>
 source: <20260121162640.424126-1-a3205153416@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
 - revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'next'?
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - run-command: poll child input in addition to output
 - hook: add jobs option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: allow separate std[out|err] streams
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add helper for pp child states
 - t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Comments?
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx-TLwqbcdGcb2drD4vE6D3M93EPMjcAeTNR+XNTbmTVZg@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* tc/last-modified-not-a-tree (2026-01-30) 4 commits
  (merged to 'next' on 2026-02-06 at b3dcd27ef8)
 + last-modified: verify revision argument is a commit-ish
 + last-modified: remove double error message
 + last-modified: fix memory leak when more than one commit is given
 + last-modified: rewrite error message when more than one commit given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.

 Will merge to 'master'.
 cf. <aYYO9SxiC5zFbB71@pks.im>
 source: <20260130-toon-last-modified-tree-v6-0-db827e5df985@iotcl.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Comments?
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
  (merged to 'next' on 2026-02-06 at f7ef001af4)
 + commit: rename `free_commit_list()` to conform to coding guidelines
 + commit: rename `reverse_commit_list()` to conform to coding guidelines
 + commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.

 Will merge to 'master'.
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* ps/odb-for-each-object (2026-01-26) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Will merge to 'next'?
 cf. <aXk2FjTUMMThs5Kp@nand.local>
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'next'?
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-01-16) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v4.git.git.1768602661.gitgitgadget@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Maybe rebase on top of a merge of 'master' with pw/xdiff-cleanups?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 What's the status of this topic?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-03) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Breaks fuzz somke test.
 cf. <xmqq7bspcq3c.fsf@gitster.g>
 source: <cover.1770127568.git.belkid98@gmail.com>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2026-02-04) 8 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filters in memory
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20260204110818.2919273-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-22) 1 commit
  (merged to 'next' on 2026-02-09 at 87bfa08d16)
 + lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Will merge to 'master'.
 source: <pull.2011.v6.git.1769109815197.gitgitgadget@gmail.com>


* lo/repo-info-keys (2026-01-23) 2 commits
 - repo: add new flag --keys to git-repo-info
 - repo: rename "keyvalue" to "lines"

 "git repo info" learns "--keys" action to list known keys.

 Expecting a reroll.
 cf. <F857412A-6B47-4DE0-85BC-D8AC2E54669F@gmail.com>
 source: <20260123164900.35092-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Comments?  v1 saw a lot of discussions, v2 didn't, and this is v3,
 which is essentially identical to v2 with CI fixes (which work!).
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 19%]

* Re: What's cooking in git.git (Feb 2026, #03)
  @ 2026-02-09 16:37 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-09 16:37 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

>> * yt/merge-file-outside-a-repository (2026-02-05) 1 commit
> This patch looks good to me.

Likewise.

>> * ps/meson-gitk-git-gui (2026-02-04) 1 commit
> Probably makes more sense to say that this is waiting on a pull request
> of gitk, as the patch series itself doesn't need to change.

Thanks for a reminder.  Updated.

>> * jc/checkout-switch-restore (2026-01-29) 2 commits
> I think this is a good change, and I'm happy with the current layout. I
> had the tiniest nit on the first patch, but really don't think the
> series needs a reroll because of it.

Thanks again.  Updated.

>> * ps/for-each-ref-in-fixes (2026-02-05) 4 commits
> I expect it's ready, but I'd like to wait for Taylor to have a final
> look before we merge it down.

Noted.

Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Feb 2026, #03)
  @ 2026-02-09  0:55 93%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-09  0:55 UTC (permalink / raw)
  To: brian m. carlson; +Cc: git

"brian m. carlson" <sandals@crustytoothpaste.net> writes:

> On 2026-02-07 at 23:15:51, Junio C Hamano wrote:
>> * bc/sha1-256-interop-02 (2025-11-17) 15 commits
>>  - object-file-convert: always make sure object ID algo is valid
>>  - rust: add a small wrapper around the hashfile code
>>  - rust: add a new binary object map format
>>  - rust: add functionality to hash an object
>>  - rust: add a build.rs script for tests
>>  - hash: expose hash context functions to Rust
>>  - write-or-die: add an fsync component for the object map
>>  - csum-file: define hashwrite's count as a uint32_t
>>  - rust: add additional helpers for ObjectID
>>  - hash: add a function to look up hash algo structs
>>  - rust: add a hash algorithm abstraction
>>  - rust: add a ObjectID struct
>>  - hash: use uint32_t for object_id algorithm
>>  - conversion: don't crash when no destination algo
>>  - repository: require Rust support for interoperability
>> 
>>  The code to maintain mapping between object names in multiple hash
>>  functions is being added, written in Rust.
>> 
>>  Any progress on CI breakages???
>>  source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>
>
> I just sent v3 yesterday which fixes the CI breakages.

Yup, I replaced the topic with the latest one, and the draft for the
next issue of "What's cooking" has this entry updated already.

Thanks.


* bc/sha1-256-interop-02 (2026-02-07) 16 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - rust: fix linking binaries with cargo
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Comments?  v1 saw a lot of discussions, v2 didn't, and this is v3,
 which is essentially identical to v2 with CI fixes (which work!).
 source: <20260207200446.2837699-1-sandals@crustytoothpaste.net>


^ permalink raw reply	[relevance 93%]

* What's cooking in git.git (Feb 2026, #03)
@ 2026-02-07 23:15 20% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-02-07 23:15 UTC (permalink / raw)
  To: git

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.

We will be rewinding the tip of 'next' soonish.

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

* aa/add-p-previous-decisions (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-21 at 4e2fe2bd9b)
 + add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends note what the current status of the hunk
 being shown is.
 source: <aV_IGCld5T_dBxTs@Adekunles-MacBook-Air.local>


* ac/sparse-checkout-string-list-cleanup (2026-01-21) 1 commit
  (merged to 'next' on 2026-01-23 at 885244a10d)
 + sparse-checkout: optimize string_list construction and add tests to verify deduplication.

 Code clean-up.
 source: <20260121130005.72375-1-amishhhaaaa@gmail.com>


* ap/http-probe-rpc-use-auth (2026-01-14) 1 commit
  (merged to 'next' on 2026-01-23 at 0439366395)
 + remote-curl: use auth for probe_rpc() requests too

 HTTP transport failed to authenticate in some code paths, which has
 been corrected.
 source: <20260114163619.614297-2-aplattner@nvidia.com>


* ar/submodule-gitdir-tweak (2026-01-12) 11 commits
  (merged to 'next' on 2026-01-23 at ef3c2cab02)
 + submodule: detect conflicts with existing gitdir configs
 + submodule: hash the submodule name for the gitdir path
 + submodule: fix case-folding gitdir filesystem collisions
 + submodule--helper: fix filesystem collisions by encoding gitdir paths
 + builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 + submodule--helper: add gitdir migration command
 + submodule: allow runtime enabling extensions.submodulePathConfig
 + submodule: introduce extensions.submodulePathConfig
 + builtin/submodule--helper: add gitdir command
 + submodule: always validate gitdirs inside submodule_name_to_gitdir
 + submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.
 cf. <aWXh9hQYxFhWYC6a@pks.im>
 source: <20260112184632.1334495-1-adrian.ratiu@collabora.com>


* dd/t5403-modernise (2026-01-12) 2 commits
  (merged to 'next' on 2026-01-23 at ca3ceb637e)
 + t5403: use test_cmp for post-checkout argument checks
 + t5403: introduce check_post_checkout helper function

 Test clean-up.


* jk/remote-tracking-ref-leakfix (2026-01-18) 4 commits
  (merged to 'next' on 2026-01-21 at 7f0736a973)
 + remote: always allocate branch.push_tracking_ref
 + remote: fix leak in branch_get_push_1() with invalid "simple" config
 + remote: drop const return of tracking_for_push_dest()
 + remote: return non-const pointer from error_buf()
 (this branch is used by hn/status-compare-with-push.)

 Leakfix.
 source: <20260119051858.GA1991308@coredump.intra.peff.net>


* lp/diff-stat-utf8-display-width-fix (2026-01-15) 2 commits
  (merged to 'next' on 2026-01-23 at 80e7ddce3e)
 + t4073: add test for diffstat paths length when containing UTF-8 chars
 + diff: improve scaling of filenames in diffstat to handle UTF-8 chars

 The computation of column width made by "git diff --stat" was
 confused when pathnames contain non-ASCII characters.
 source: <cover.1768520441.git.lorenzo.pegorari2002@gmail.com>


* sp/myfirstcontribution-include-update (2026-01-12) 1 commit
  (merged to 'next' on 2026-01-23 at 2d039d03ff)
 + doc: MyFirstContribution: fix missing dependencies and clarify build steps

 Doc update.
 source: <20260112195625.391821-1-shreyanshpaliwalcmsmn@gmail.com>


* sp/t5500-cleanup (2026-01-21) 1 commit
  (merged to 'next' on 2026-01-23 at d5adc61ce8)
 + t5500: simplify test implementation and fix git exit code suppression

 Test clean-up.
 source: <20260121130012.888299-1-shreyanshpaliwalcmsmn@gmail.com>


* tc/last-modified-options-cleanup (2026-01-20) 4 commits
  (merged to 'next' on 2026-01-23 at e514d98b11)
 + last-modified: change default max-depth to 0
 + last-modified: document option '--max-depth'
 + last-modified: document option '-z'
 + last-modified: clarify in the docs the command takes a pathspec

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.
 source: <20260120-toon-last-modified-zzzz-v3-0-9bffd4968b0e@iotcl.com>

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

* yt/merge-file-outside-a-repository (2026-02-05) 1 commit
 - merge-file: honor merge.conflictStyle outside of a repository

 "git merge-file" can be run outside a repository, but it ignored
 all configuration, even the per-user ones.  The command now uses
 available configuration files to find its customization.

 Will merge to 'next'?
 source: <D514F3BA-36DD-4DAD-BF73-609730390A27@ytausch.de>


* sb/merge-ours-sparse (2026-02-06) 2 commits
  (merged to 'next' on 2026-02-06 at 64333814d3)
 + merge-ours: integrate with sparse-index
 + merge-ours: drop USE_THE_REPOSITORY_VARIABLE

 "git merge-ours" is taught to work better in a sparse checkout.

 Will merge to 'master'.
 source: <pull.2189.v2.git.git.1770405383.gitgitgadget@gmail.com>


* aa/add-p-no-auto-advance (2026-02-06) 3 commits
 - add-patch: Allow proper 'git apply' when using the --rework-with-file flag
 - add-patch: Allow interfile navigation when selecting hunks
 - interactive -p: add new `--rework-with-file` flag to interactive machinery

 "git add -p" learned a new mode that allows the user to revisit a
 file that was already dealt with.

 Expecting a reroll.
 source: <cover.1770390576.git.abrahamadekunle50@gmail.com>


* sd/doc-my1c-api-config-reference-fix (2026-02-05) 1 commit
  (merged to 'next' on 2026-02-06 at 222e701dd5)
 + doc: fix repo_config documentation reference

 Docfix.

 Will merge to 'master'.
 source: <20260206062108.74072-1-valusoutrik@gmail.com>

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

* am/doc-github-contributiong-link-to-submittingpatches (2026-01-31) 1 commit
  (merged to 'next' on 2026-02-04 at 1f4534468b)
 + .github/CONTRIBUTING.md: link to SubmittingPatches on git-scm.com

 GitHub repository banner update.

 Will merge to 'master'.
 source: <20260201002658.133153-1-Eng.Abdalrhman.Abdalmonem@gmail.com>


* hs/t9160-test-paths (2026-02-02) 1 commit
  (merged to 'next' on 2026-02-04 at 0d4010771a)
 + t9160:modernize test path checking

 Test update.

 Will merge to 'master'.
 source: <20260202161759.84355-2-hoda.s.salim@gmail.com>


* jc/ci-test-contrib-too (2026-02-06) 2 commits
  (merged to 'next' on 2026-02-06 at 2890869b63)
 + ci: ubuntu: use GNU coreutils for dirname
 + test: optionally test contrib in CI

 Test contrib/ things in CI to catch breakages before they enter the
 "next" branch.

 Will merge to 'master'.
 source: <20260207042703.1180704-1-ask+git@howdoi.land>
 source: <xmqqjywuyhu9.fsf@gitster.g>


* kh/doc-shortlog-fix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-04 at 0b24d64c43)
 + doc: shortlog: put back trailer paragraphs

 Doc fix.

 Will merge to 'master'.
 source: <V2_shortlog_trailers.254@msgid.xyz>


* kn/ref-location (2026-02-02) 4 commits
 - refs: add GIT_REFERENCE_BACKEND to specify reference backend
 - refs: parse and use the reference storage payload
 - refs: extract out `refs_create_refdir_stubs()`
 - refs: allow reference location in refstorage config

 Allow the directory in which reference backends store their data to
 be specified.

 Expecting a (hopefully small and final) reroll?
 cf. <aYX7z_nUc4xJC8Qs@pks.im>
 source: <20260202-kn-alternate-ref-dir-v4-0-3b30430411e3@gmail.com>


* rs/blame-ignore-colors-fix (2026-02-01) 1 commit
  (merged to 'next' on 2026-02-04 at 305ecc6b61)
 + blame: fix coloring for repeated suspects

 "git blame --ignore-revs=... --color-lines" did not account for
 ignored revisions passing blame to the same commit an adjacent line
 gets blamed for.

 Will merge to 'master'.
 source: <28ac1ee6-f3e9-4789-92b7-903788430697@web.de>


* jc/diff-highlight-main-master-testfix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-05 at 128a77dfe5)
 + diff-highlight: allow testing with Git 3.0 breaking changes

 Test fix (in contrib/)

 Will merge to 'master'.
 source: <xmqq7bstsemv.fsf@gitster.g>


* cs/subtree-reftable-testfix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-05 at d953fc69cc)
 + contrib/subtree: fix tests with reftable backend

 Test fix (in contrib/)

 Will merge to 'master'.
 source: <20260204043812.814884-3-ask+git@howdoi.land>


* tc/memzero-array (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-05 at 0755d57f09)
 + cocci: extend MEMZERO_ARRAY() rules

 Coccinelle rules update.

 Will merge to 'master'.
 source: <20260203102908.749954-1-toon@iotcl.com>


* ar/config-hooks (2026-02-04) 5 commits
 - hook: allow out-of-repo 'git hook' invocations
 - hook: include hooks from the config
 - hook: introduce "git hook list"
 - hook: run a list of hooks
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204165126.1548805-1-adrian.ratiu@collabora.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
 - whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.

 Will merge to 'next'?
 source: <xmqqecn0nqyt.fsf@gitster.g>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
 - meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Expecting a reroll.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
 - gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'next'?
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-04) 5 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: allow parallel hook execution
 - config: add a repo_config_get_uint() helper
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204173328.1601807-1-adrian.ratiu@collabora.com>


* cf/c23-const-preserving-strchr-updates-0 (2026-02-05) 2 commits
  (merged to 'next' on 2026-02-06 at ac9d269e5c)
 + gpg-interface: remove an unnecessary NULL initialization
 + global: constify some pointers that are not written to

 ISO C23 redefines strchr and friends that tradiotionally took
 a const pointer and returned a non-const pointer derived from it to
 preserve constness (i.e., if you ask for a substring in a const
 string, you get a const pointer to the substring).  Update code
 paths that used non-const pointer to receive their results that did
 not have to be non-const to adjust.

 Will merge to 'master'.
 source: <342b01acd42f1fcaa3abefa38dc589e12ccb1134.1770261829.git.collin.funk1@gmail.com>


* mc/doc-send-email-signed-off-by-cc (2026-02-05) 1 commit
  (merged to 'next' on 2026-02-06 at 2a3d683680)
 + doc: send-email: correct --no-signed-off-by-cc misspelling

 Docfix.

 Will merge to 'master'.
 source: <V3_--no-signed-off-by-cc.260@msgid.xyz>


* mc/tr2-process-ancestry-cleanup (2026-02-05) 4 commits
 - trace2: emit cmd_ancestry data for Windows
 - trace2: refactor Windows process ancestry trace2 event
 - build: include procinfo.c impl for macOS
 - trace2: add macOS process ancestry tracing

 Add process ancestry data to trace2 on macOS to match what we
 already do on Linux and Windows.  Also adjust the way Windows
 implementation reports this information to match the other two.

 Needs review.
 source: <pull.2040.git.1770307510.gitgitgadget@gmail.com>


* sp/show-index-warn-fallback (2026-01-30) 2 commits
  (merged to 'next' on 2026-02-04 at 58399695e4)
 + show-index: use gettext wrapping in user facing error messages
 + show-index: warn when falling back to SHA-1 outside a repository

 When "git show-index" is run outside a repository, it silently
 defaults to SHA-1; the tool now warns when this happens.

 Will merge to 'master'.
 source: <20260130153603.290196-1-shreyanshpaliwalcmsmn@gmail.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
 - checkout: tell "parse_remote_branch" which command is calling it
 - checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Comments?
 source: <20260129190616.645471-1-gitster@pobox.com>


* jt/odb-transaction-per-source (2026-02-02) 4 commits
  (merged to 'next' on 2026-02-06 at 9f85ed3c47)
 + odb: transparently handle common transaction behavior
 + odb: prepare `struct odb_transaction` to become generic
 + object-file: rename transaction functions
 + odb: store ODB source in `struct odb_transaction`

 Transaction to create objects (or not) is currently tied to the
 repository, but in the future a repository can have multiple object
 sources, which may have different transaction mechanisms.  Make the
 odb transaction API per object source.

 Will merge to 'master'.
 source: <20260203001002.2500198-1-jltobler@gmail.com>


* ps/for-each-ref-in-fixes (2026-02-05) 4 commits
 - bisect: simplify string_list memory handling
 - bisect: fix misuse of `refs_for_each_ref_in()`
 - pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 - pack-bitmap: deduplicate logic to iterate over preferred bitmap tips

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.

 Will merge to 'next'?
 source: <20260206-b4-pks-fix-for-each-ref-in-misuse-v3-0-1e050c3d6a50@pks.im>


* ty/perf-3400-optim (2026-01-30) 1 commit
  (merged to 'next' on 2026-02-01 at 6c019af192)
 + t/perf/p3400: speed up setup using fast-import

 Improve set-up time of a perf test.

 Will merge to 'master'.
 source: <20260130170123.642344-1-a3205153416@gmail.com>


* ja/doc-synopsis-style-even-more (2026-02-05) 4 commits
 - doc: convert git-show to synopsis style
 - doc: fix some style issues in git-clone and for-each-ref-options
 - doc: finalize git-clone documentation conversion to synopsis style
 - doc: convert git-submodule to synopsis style

 A handful of documentation pages have been modernized to use the
 "synopsis" style.

 Will merge to 'next'?
 source: <pull.2036.v4.git.1770351146.gitgitgadget@gmail.com>


* ac/string-list-sort-u-and-tests (2026-01-29) 2 commits
  (merged to 'next' on 2026-01-30 at 742890e56f)
 + string-list: add string_list_sort_u() that mimics "sort -u"
 + u-string-list: add unit tests for string-list methods

 The string_list API gains a new helper, string_list_sort_u(), and
 new unit tests to extend coverage.

 Will merge to 'master'.
 source: <20260125201500.63904-2-amishhhaaaa@gmail.com>


* ps/object-info-bits-cleanup (2026-01-26) 3 commits
 - odb: drop gaps in object info flag values
 - builtin/fsck: fix flags passed to `odb_has_object()`
 - builtin/backfill: fix flags passed to `odb_has_object()`

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Comments?
 source: <20260126-b4-pks-read-object-info-flags-v1-0-e682a003b17c@pks.im>


* pw/xdiff-cleanups (2026-01-26) 2 commits
 - xdiff: remove unused data from xdlclass_t
 - xdiff: remove "line_hash" field from xrecord_t

 Small clean-up of xdiff library to remove unnecessary data
 duplication.

 Comments?
 This conflicts with en/xdiff-cleanup-3 that has been dormant for some time.
 source: <cover.1769424529.git.phillip.wood@dunelm.org.uk>


* ty/symlinks-use-unsigned-for-bitset (2026-01-21) 1 commit
 - symlinks: use unsigned int for flags

 Code clean-up.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf66u9jj.fsf@gitster.g>
 source: <20260121162640.424126-1-a3205153416@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
 - revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'next'?
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - run-command: poll child input in addition to output
 - hook: add jobs option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: allow separate std[out|err] streams
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add helper for pp child states
 - t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Comments?
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx-TLwqbcdGcb2drD4vE6D3M93EPMjcAeTNR+XNTbmTVZg@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* tc/last-modified-not-a-tree (2026-01-30) 4 commits
  (merged to 'next' on 2026-02-06 at b3dcd27ef8)
 + last-modified: verify revision argument is a commit-ish
 + last-modified: remove double error message
 + last-modified: fix memory leak when more than one commit is given
 + last-modified: rewrite error message when more than one commit given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.

 Will merge to 'master'.
 cf. <aYYO9SxiC5zFbB71@pks.im>
 source: <20260130-toon-last-modified-tree-v6-0-db827e5df985@iotcl.com>


* cs/add-skip-submodule-ignore-all (2026-02-06) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Comments?
 source: <pull.1987.v4.git.1770384180.gitgitgadget@gmail.com>


* kn/ref-batch-output-error-reporting-fix (2026-01-25) 6 commits
  (merged to 'next' on 2026-01-30 at fe8044c396)
 + fetch: delay user information post committing of transaction
 + receive-pack: utilize rejected ref error details
 + fetch: utilize rejected ref error details
 + update-ref: utilize rejected error details if available
 + refs: add rejection detail to the callback function
 + refs: skip to next ref when current ref is rejected

 A handful of code paths that started using batched ref update API
 (after Git 2.51 or so) lost detailed error output, which have been
 corrected.

 Will merge to 'master'.
 source: <20260125-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v5-0-d58f3a9edf98@gmail.com>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
  (merged to 'next' on 2026-02-06 at f7ef001af4)
 + commit: rename `free_commit_list()` to conform to coding guidelines
 + commit: rename `reverse_commit_list()` to conform to coding guidelines
 + commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.

 Will merge to 'master'.
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* ps/odb-for-each-object (2026-01-26) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Will merge to 'next'?
 cf. <aXk2FjTUMMThs5Kp@nand.local>
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'next'?
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-01-16) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v4.git.git.1768602661.gitgitgadget@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 What's the status of this one?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 What's the status of this topic?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-03) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Breaks fuzz somke test.
 cf. <xmqq7bspcq3c.fsf@gitster.g>
 source: <cover.1770127568.git.belkid98@gmail.com>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2026-02-04) 8 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filters in memory
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20260204110818.2919273-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2026-01-27) 1 commit
  (merged to 'next' on 2026-01-30 at faf2e087b8)
 + worktree: clarify that --expire only affects missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Will merge to 'master'.
 source: <pull.2135.v3.git.git.1769578785381.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-22) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Will merge to 'next'.
 source: <pull.2011.v6.git.1769109815197.gitgitgadget@gmail.com>


* lo/repo-info-keys (2026-01-23) 2 commits
 - repo: add new flag --keys to git-repo-info
 - repo: rename "keyvalue" to "lines"

 "git repo info" learns "--keys" action to list known keys.

 Expecting a reroll.
 cf. <F857412A-6B47-4DE0-85BC-D8AC2E54669F@gmail.com>
 source: <20260123164900.35092-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
  (merged to 'next' on 2026-01-29 at 66b2238f5c)
 + replay: drop commits that become empty
 + Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold.  We need to figure out what to do with ps/history.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Any progress on CI breakages???
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ps/history (2026-01-13) 9 commits
  (merged to 'next' on 2026-01-29 at ecac247f83)
 + builtin/history: implement "reword" subcommand
 + builtin: add new "history" command
 + wt-status: provide function to expose status for trees
 + replay: support updating detached HEAD
 + replay: support empty commit ranges
 + replay: small set of cleanups
 + builtin/replay: move core logic into "libgit.a"
 + builtin/replay: extract core logic to replay revisions
 + Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's next for this topic?CABPp-BHkNLdH4C7U4sFoVhrsSPH8KAaDtOdLEQGyajmXZz9hVg@mail.gmail.com
 cf. <aWpoMcgwsfRCCrr4@szeder.dev>
 cf. <CABPp-BHkNLdH4C7U4sFoVhrsSPH8KAaDtOdLEQGyajmXZz9hVg@mail.gmail.com>
 source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>


^ permalink raw reply	[relevance 20%]

* Re: What's cooking in git.git (Jan 2026, #09)
  @ 2026-02-06 19:39 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-06 19:39 UTC (permalink / raw)
  To: Taylor Blau; +Cc: Junio C Hamano, git

Taylor Blau <me@ttaylorr.com> writes:

> On Tue, Jan 27, 2026 at 09:42:00AM -0800, Junio C Hamano wrote:
>> * ps/odb-for-each-object (2026-01-26) 16 commits
>>  - odb: drop unused `for_each_{loose,packed}_object()` functions
>>  - reachable: convert to use `odb_for_each_object()`
>>  - builtin/pack-objects: use `packfile_store_for_each_object()`
>>  - odb: introduce mtime fields for object info requests
>>  - treewide: drop uses of `for_each_{loose,packed}_object()`
>>  - treewide: enumerate promisor objects via `odb_for_each_object()`
>>  - builtin/fsck: refactor to use `odb_for_each_object()`
>>  - odb: introduce `odb_for_each_object()`
>>  - packfile: introduce function to iterate through objects
>>  - packfile: extract function to iterate through objects of a store
>>  - object-file: introduce function to iterate through objects
>>  - object-file: extract function to read object info from path
>>  - odb: fix flags parameter to be unsigned
>>  - odb: rename `FOR_EACH_OBJECT_*` flags
>>  - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
>>  - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object
>>
>>  Revamp object enumeration API around odb.
>>
>>  Will merge to 'next'?
>>  source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>
>
> I have some lingering questions about the mtime-related changes. I am
> not opposed to the series in general, but I think some more time to
> continue the discussion in that thread would be beneficial before
> starting to merge it down.

Has any further discussions took place outside the original thread

https://lore.kernel.org/git/20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im/

or are we pretty much done with this iteration and polish
incrementally if necessary?

Thanks.



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Feb 2026, #02)
  @ 2026-02-06 19:37 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-06 19:37 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

>> * ps/commit-list-functions-renamed (2026-01-15) 3 commits
>>  - commit: rename `free_commit_list()` to conform to coding guidelines
>>  - commit: rename `reverse_commit_list()` to conform to coding guidelines
>>  - commit: rename `copy_commit_list()` to conform to coding guidelines
>> 
>>  Rename three functions around the commit_list data structure.
>> 
>>  Will merge to 'next'?
>>  source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>
>
> I guess this one depends on the outcome of the discussion we had about
> renaming stuff. I think it's worth the churn, and don't expect to do
> another reroll. Otherwise I guess the series can be discarded.

After having it in 'seen' for half a month, we haven't seen any new
users to conflict with it, so I am inclined to say we go ahead and
merge it down.

>> * ps/odb-for-each-object (2026-01-26) 16 commits
>>  - odb: drop unused `for_each_{loose,packed}_object()` functions
>>  - reachable: convert to use `odb_for_each_object()`
>>  - builtin/pack-objects: use `packfile_store_for_each_object()`
>>  - odb: introduce mtime fields for object info requests
>>  - treewide: drop uses of `for_each_{loose,packed}_object()`
>>  - treewide: enumerate promisor objects via `odb_for_each_object()`
>>  - builtin/fsck: refactor to use `odb_for_each_object()`
>>  - odb: introduce `odb_for_each_object()`
>>  - packfile: introduce function to iterate through objects
>>  - packfile: extract function to iterate through objects of a store
>>  - object-file: introduce function to iterate through objects
>>  - object-file: extract function to read object info from path
>>  - odb: fix flags parameter to be unsigned
>>  - odb: rename `FOR_EACH_OBJECT_*` flags
>>  - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
>>  - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object
>> 
>>  Revamp object enumeration API around odb.
>> 
>>  Will merge to 'next'?
>>  cf. <aXk2FjTUMMThs5Kp@nand.local>
>>  source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>
>
> There's been some discussions around the mtime handling, but I think
> I've addressed the concerns both with documentation in v4 and with the
> plans I've layed out in <aXcrftLpfcG4S5AX@pks.im> and subsequent
> messages.

Let me ping the thread.  Taylor asked a bit more time to discuss
mtime related changes a week ago and I do not recall seeing a
further discussion.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Feb 2026, #02)
@ 2026-02-06  1:15 21% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-02-06  1:15 UTC (permalink / raw)
  To: git

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.

Git 2.53 has been tagged.  Let's wait to see if there are regression
reports from the real world and then start the new cycle.

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]

* am/doc-github-contributiong-link-to-submittingpatches (2026-01-31) 1 commit
  (merged to 'next' on 2026-02-04 at 1f4534468b)
 + .github/CONTRIBUTING.md: link to SubmittingPatches on git-scm.com

 GitHub repository banner update.

 Will merge to 'master'.
 source: <20260201002658.133153-1-Eng.Abdalrhman.Abdalmonem@gmail.com>


* hs/t9160-test-paths (2026-02-02) 1 commit
  (merged to 'next' on 2026-02-04 at 0d4010771a)
 + t9160:modernize test path checking

 Test update.

 Will merge to 'master'.
 source: <20260202161759.84355-2-hoda.s.salim@gmail.com>


* jc/ci-test-contrib-too (2026-02-05) 2 commits
 - ci: avoid ubuntu:rolling in most jobs for now
 - test: optionally test contrib in CI

 Test contrib/ things in CI to catch breakages before they enter the
 "next" branch.

 Will merge to 'next'?
 source: <xmqqjywuyhu9.fsf@gitster.g>


* kh/doc-shortlog-fix (2026-02-03) 1 commit
  (merged to 'next' on 2026-02-04 at 0b24d64c43)
 + doc: shortlog: put back trailer paragraphs

 Doc fix.

 Will merge to 'master'.
 source: <V2_shortlog_trailers.254@msgid.xyz>


* kn/ref-location (2026-02-02) 4 commits
 - refs: add GIT_REFERENCE_BACKEND to specify reference backend
 - refs: parse and use the reference storage payload
 - refs: extract out `refs_create_refdir_stubs()`
 - refs: allow reference location in refstorage config

 Allow the directory in which reference backends store their data to
 be specified.

 Needs review.
 source: <20260202-kn-alternate-ref-dir-v4-0-3b30430411e3@gmail.com>


* rs/blame-ignore-colors-fix (2026-02-01) 1 commit
  (merged to 'next' on 2026-02-04 at 305ecc6b61)
 + blame: fix coloring for repeated suspects

 "git blame --ignore-revs=... --color-lines" did not account for
 ignored revisions passing blame to the same commit an adjacent line
 gets blamed for.

 Will merge to 'master'.
 source: <28ac1ee6-f3e9-4789-92b7-903788430697@web.de>


* jc/diff-highlight-main-master-testfix (2026-02-03) 1 commit
 - diff-highlight: allow testing with Git 3.0 breaking changes

 Test fix (in contrib/)

 Will merge to 'next'.
 source: <xmqq7bstsemv.fsf@gitster.g>


* cs/subtree-reftable-testfix (2026-02-03) 1 commit
 - contrib/subtree: fix tests with reftable backend

 Test fix (in contrib/)

 Will merge to 'next'.
 source: <20260204043812.814884-3-ask+git@howdoi.land>


* tc/memzero-array (2026-02-03) 1 commit
 - cocci: extend MEMZERO_ARRAY() rules

 Coccinelle rules update.

 Will merge to 'next'.
 source: <20260203102908.749954-1-toon@iotcl.com>


* ar/config-hooks (2026-02-04) 5 commits
 - hook: allow out-of-repo 'git hook' invocations
 - hook: include hooks from the config
 - hook: introduce "git hook list"
 - hook: run a list of hooks
 - Merge branch 'ar/run-command-hook-take-2' into ar/config-hooks
 (this branch is used by ar/parallel-hooks; uses ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204165126.1548805-1-adrian.ratiu@collabora.com>


* jc/whitespace-incomplete-line (2026-02-04) 1 commit
 - whitespace: symbolic links usually lack LF at the end

 It does not make much sense to apply the "incomplete-line"
 whitespace rule to symbolic links, whose contents almost always
 lack the final newline.  "git apply" and "git diff" are now taught
 to exclude them for a change to symbolic links.

 Will merge to 'next'?
 source: <xmqqecn0nqyt.fsf@gitster.g>


* ps/meson-gitk-git-gui (2026-02-04) 1 commit
 - meson: wire up gitk and git-gui

 Plumb gitk/git-gui build and install procedure in meson based
 builds.

 Expecting a reroll.
 source: <20260204-b4-pks-meson-tcl-tk-v2-1-5bc3ccf3a8ce@pks.im>


* uk/signature-is-good-after-key-expires (2026-02-04) 1 commit
 - gpg-interface: signatures by expired keys are fine

 A signature on a commit that was GPG signed long time ago ought to
 be still valid after the key that was used to sign it has expired,
 but we showed them in alarming red.

 Will merge to 'next'?
 source: <20260204152306.1767112-2-ukleinek@kernel.org>


* ar/parallel-hooks (2026-02-04) 5 commits
 - hook: allow runtime enabling extensions.hookStdoutToStderr
 - hook: introduce extensions.hookStdoutToStderr
 - hook: allow parallel hook execution
 - config: add a repo_config_get_uint() helper
 - Merge branch 'ar/config-hooks' into ar/parallel-hooks
 (this branch uses ar/config-hooks and ar/run-command-hook-take-2.)

 Needs review.
 source: <20260204173328.1601807-1-adrian.ratiu@collabora.com>


* cf/c23-const-preserving-strchr-updates-0 (2026-02-04) 1 commit
 - global: constify some pointers that are not written to

 ISO C23 redefines strchr and friends that tradiotionally took
 a const pointer and returned a non-const pointer derived from it to
 preserve constness (i.e., if you ask for a substring in a const
 string, you get a const pointer to the substring).  Update code
 paths that used non-const pointer to receive their results that did
 not have to be non-const to adjust.

 Will merge to 'next'.
 source: <342b01acd42f1fcaa3abefa38dc589e12ccb1134.1770261829.git.collin.funk1@gmail.com>


* mc/doc-send-email-signed-off-by-cc (2026-02-05) 1 commit
 - doc: send-email: correct --no-signed-off-by-cc misspelling

 Docfix.

 Will merge to 'next'.
 source: <V3_--no-signed-off-by-cc.260@msgid.xyz>


* mc/tr2-process-ancestry-cleanup (2026-02-05) 4 commits
 - trace2: emit cmd_ancestry data for Windows
 - trace2: refactor Windows process ancestry trace2 event
 - build: include procinfo.c impl for macOS
 - trace2: add macOS process ancestry tracing

 Add process ancestry data to trace2 on macOS to match what we
 already do on Linux and Windows.  Also adjust the way Windows
 implementation reports this information to match the other two.

 Needs review.
 source: <pull.2040.git.1770307510.gitgitgadget@gmail.com>

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

* sp/show-index-warn-fallback (2026-01-30) 2 commits
  (merged to 'next' on 2026-02-04 at 58399695e4)
 + show-index: use gettext wrapping in user facing error messages
 + show-index: warn when falling back to SHA-1 outside a repository

 When "git show-index" is run outside a repository, it silently
 defaults to SHA-1; the tool now warns when this happens.

 Will merge to 'master'.
 source: <20260130153603.290196-1-shreyanshpaliwalcmsmn@gmail.com>


* jc/checkout-switch-restore (2026-01-29) 2 commits
 - checkout: tell "parse_remote_branch" which command is calling it
 - checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Comments?
 source: <20260129190616.645471-1-gitster@pobox.com>


* jt/odb-transaction-per-source (2026-02-02) 4 commits
 - odb: transparently handle common transaction behavior
 - odb: prepare `struct odb_transaction` to become generic
 - object-file: rename transaction functions
 - odb: store ODB source in `struct odb_transaction`

 Transaction to create objects (or not) is currently tied to the
 repository, but in the future a repository can have multiple object
 sources, which may have different transaction mechanisms.  Make the
 odb transaction API per object source.

 Comments?
 source: <20260203001002.2500198-1-jltobler@gmail.com>


* ps/for-each-ref-in-fixes (2026-01-30) 4 commits
 - bisect: simplify string_list memory handling
 - bisect: fix misuse of `refs_for_each_ref_in()`
 - pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 - pack-bitmap: deduplicate logic to iterate over preferred bitmap tips

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.
 source: <20260130-b4-pks-fix-for-each-ref-in-misuse-v2-0-0449b198a681@pks.im>


* ty/perf-3400-optim (2026-01-30) 1 commit
  (merged to 'next' on 2026-02-01 at 6c019af192)
 + t/perf/p3400: speed up setup using fast-import

 Improve set-up time of a perf test.

 Will merge to 'master'.
 source: <20260130170123.642344-1-a3205153416@gmail.com>


* ja/doc-synopsis-style-even-more (2026-02-03) 4 commits
 - doc: convert git-show to synopsis style
 - doc: fix some style issues in git-clone and for-each-ref-options
 - doc: finalize git-clone documentation conversion to synopsis style
 - doc: convert git-submodule to synopsis style

 A handful of documentation pages have been modernized to use the
 "synopsis" style.

 Comments?
 source: <pull.2036.v3.git.1770138215.gitgitgadget@gmail.com>


* ac/string-list-sort-u-and-tests (2026-01-29) 2 commits
  (merged to 'next' on 2026-01-30 at 742890e56f)
 + string-list: add string_list_sort_u() that mimics "sort -u"
 + u-string-list: add unit tests for string-list methods

 The string_list API gains a new helper, string_list_sort_u(), and
 new unit tests to extend coverage.

 Will merge to 'master'.
 source: <20260125201500.63904-2-amishhhaaaa@gmail.com>


* ps/object-info-bits-cleanup (2026-01-26) 3 commits
 - odb: drop gaps in object info flag values
 - builtin/fsck: fix flags passed to `odb_has_object()`
 - builtin/backfill: fix flags passed to `odb_has_object()`

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Comments?
 source: <20260126-b4-pks-read-object-info-flags-v1-0-e682a003b17c@pks.im>


* pw/xdiff-cleanups (2026-01-26) 2 commits
 - xdiff: remove unused data from xdlclass_t
 - xdiff: remove "line_hash" field from xrecord_t

 Small clean-up of xdiff library to remove unnecessary data
 duplication.

 Comments?
 This conflicts with en/xdiff-cleanup-3 that has been dormant for some time.
 source: <cover.1769424529.git.phillip.wood@dunelm.org.uk>


* sp/t5500-cleanup (2026-01-21) 1 commit
  (merged to 'next' on 2026-01-23 at d5adc61ce8)
 + t5500: simplify test implementation and fix git exit code suppression

 Test clean-up.

 Will merge to 'master'.
 source: <20260121130012.888299-1-shreyanshpaliwalcmsmn@gmail.com>


* ty/symlinks-use-unsigned-for-bitset (2026-01-21) 1 commit
 - symlinks: use unsigned int for flags

 Code clean-up.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf66u9jj.fsf@gitster.g>
 source: <20260121162640.424126-1-a3205153416@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
 - revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'next'?
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - run-command: poll child input in addition to output
 - hook: add jobs option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: allow separate std[out|err] streams
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add helper for pp child states
 - t1800: add hook output stream tests
 (this branch is used by ar/config-hooks and ar/parallel-hooks.)

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Comments?
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* lp/diff-stat-utf8-display-width-fix (2026-01-15) 2 commits
  (merged to 'next' on 2026-01-23 at 80e7ddce3e)
 + t4073: add test for diffstat paths length when containing UTF-8 chars
 + diff: improve scaling of filenames in diffstat to handle UTF-8 chars

 The computation of column width made by "git diff --stat" was
 confused when pathnames contain non-ASCII characters.

 Will merge to 'master'.
 source: <cover.1768520441.git.lorenzo.pegorari2002@gmail.com>


* jk/remote-tracking-ref-leakfix (2026-01-18) 4 commits
  (merged to 'next' on 2026-01-21 at 7f0736a973)
 + remote: always allocate branch.push_tracking_ref
 + remote: fix leak in branch_get_push_1() with invalid "simple" config
 + remote: drop const return of tracking_for_push_dest()
 + remote: return non-const pointer from error_buf()
 (this branch is used by hn/status-compare-with-push.)

 Leakfix.

 Will merge to 'master'.
 source: <20260119051858.GA1991308@coredump.intra.peff.net>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx-TLwqbcdGcb2drD4vE6D3M93EPMjcAeTNR+XNTbmTVZg@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-02-03) 6 commits
 - sideband: delay sanitizing by default to Git v3.0
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 source: <pull.1853.v4.git.1770113882.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2026-01-20) 4 commits
  (merged to 'next' on 2026-01-23 at e514d98b11)
 + last-modified: change default max-depth to 0
 + last-modified: document option '--max-depth'
 + last-modified: document option '-z'
 + last-modified: clarify in the docs the command takes a pathspec

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Will merge to 'master'.
 source: <20260120-toon-last-modified-zzzz-v3-0-9bffd4968b0e@iotcl.com>


* tc/last-modified-not-a-tree (2026-01-30) 4 commits
 - last-modified: verify revision argument is a commit-ish
 - last-modified: remove double error message
 - last-modified: fix memory leak when more than one commit is given
 - last-modified: rewrite error message when more than one commit given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.

 Will merge to 'next'?
 source: <20260130-toon-last-modified-tree-v6-0-db827e5df985@iotcl.com>


* sp/myfirstcontribution-include-update (2026-01-12) 1 commit
  (merged to 'next' on 2026-01-23 at 2d039d03ff)
 + doc: MyFirstContribution: fix missing dependencies and clarify build steps

 Doc update.

 Will merge to 'master'.
 source: <20260112195625.391821-1-shreyanshpaliwalcmsmn@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-01-13) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Expecting a reroll.
 cf. <CA+GP4bqY02wcESuz1vPMcknigx_fUXFfi_xQ1EG_muGw6EszRg@mail.gmail.com>
 cf. <CA+GP4bpwMui5RT9ixo8iWyZ6XZDw3GnYhvgiqVmRq8dW7yo5RQ@mail.gmail.com>
 source: <37fe7956e089394bb1d75f4c8af4a3347b204803.1768376879.git.gitgitgadget@gmail.com>


* kn/ref-batch-output-error-reporting-fix (2026-01-25) 6 commits
  (merged to 'next' on 2026-01-30 at fe8044c396)
 + fetch: delay user information post committing of transaction
 + receive-pack: utilize rejected ref error details
 + fetch: utilize rejected ref error details
 + update-ref: utilize rejected error details if available
 + refs: add rejection detail to the callback function
 + refs: skip to next ref when current ref is rejected

 A handful of code paths that started using batched ref update API
 (after Git 2.51 or so) lost detailed error output, which have been
 corrected.

 Will merge to 'master'.
 source: <20260125-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v5-0-d58f3a9edf98@gmail.com>


* ac/sparse-checkout-string-list-cleanup (2026-01-21) 1 commit
  (merged to 'next' on 2026-01-23 at 885244a10d)
 + sparse-checkout: optimize string_list construction and add tests to verify deduplication.

 Code clean-up.

 Will merge to 'master'.
 source: <20260121130005.72375-1-amishhhaaaa@gmail.com>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
 - commit: rename `free_commit_list()` to conform to coding guidelines
 - commit: rename `reverse_commit_list()` to conform to coding guidelines
 - commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.

 Will merge to 'next'?
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* ps/odb-for-each-object (2026-01-26) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Will merge to 'next'?
 cf. <aXk2FjTUMMThs5Kp@nand.local>
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-02-03) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will merge to 'next'?
 source: <20260203164815.68258-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-01-16) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v4.git.git.1768602661.gitgitgadget@gmail.com>


* dd/t5403-modernise (2026-01-12) 2 commits
  (merged to 'next' on 2026-01-23 at ca3ceb637e)
 + t5403: use test_cmp for post-checkout argument checks
 + t5403: introduce check_post_checkout helper function

 Test clean-up.

 Will merge to 'master'.


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 What's the status of this one?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push
 (this branch uses jk/remote-tracking-ref-leakfix.)

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Under further discussion?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-02-03) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1770127568.git.belkid98@gmail.com>


* aa/add-p-previous-decisions (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-21 at 4e2fe2bd9b)
 + add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Will merge to 'master'.
 source: <aV_IGCld5T_dBxTs@Adekunles-MacBook-Air.local>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2026-02-04) 8 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filters in memory
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20260204110818.2919273-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2026-01-27) 1 commit
  (merged to 'next' on 2026-01-30 at faf2e087b8)
 + worktree: clarify that --expire only affects missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Will merge to 'master'.
 source: <pull.2135.v3.git.git.1769578785381.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-22) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Will mrge to 'next'?
 source: <pull.2011.v6.git.1769109815197.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2026-01-14) 1 commit
  (merged to 'next' on 2026-01-23 at 0439366395)
 + remote-curl: use auth for probe_rpc() requests too

 HTTP transport failed to authenticate in some code paths, which has
 been corrected.

 Will merge to 'master'.
 source: <20260114163619.614297-2-aplattner@nvidia.com>


* lo/repo-info-keys (2026-01-23) 2 commits
 - repo: add new flag --keys to git-repo-info
 - repo: rename "keyvalue" to "lines"

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20260123164900.35092-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
  (merged to 'next' on 2026-01-29 at 66b2238f5c)
 + replay: drop commits that become empty
 + Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold.  We need to figure out what to do with ps/history.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Any progress on CI breakages???
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ps/history (2026-01-13) 9 commits
  (merged to 'next' on 2026-01-29 at ecac247f83)
 + builtin/history: implement "reword" subcommand
 + builtin: add new "history" command
 + wt-status: provide function to expose status for trees
 + replay: support updating detached HEAD
 + replay: support empty commit ranges
 + replay: small set of cleanups
 + builtin/replay: move core logic into "libgit.a"
 + builtin/replay: extract core logic to replay revisions
 + Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's next for this topic?CABPp-BHkNLdH4C7U4sFoVhrsSPH8KAaDtOdLEQGyajmXZz9hVg@mail.gmail.com
 cf. <aWpoMcgwsfRCCrr4@szeder.dev>
 cf. <CABPp-BHkNLdH4C7U4sFoVhrsSPH8KAaDtOdLEQGyajmXZz9hVg@mail.gmail.com>
 source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>


* ar/submodule-gitdir-tweak (2026-01-12) 11 commits
  (merged to 'next' on 2026-01-23 at ef3c2cab02)
 + submodule: detect conflicts with existing gitdir configs
 + submodule: hash the submodule name for the gitdir path
 + submodule: fix case-folding gitdir filesystem collisions
 + submodule--helper: fix filesystem collisions by encoding gitdir paths
 + builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 + submodule--helper: add gitdir migration command
 + submodule: allow runtime enabling extensions.submodulePathConfig
 + submodule: introduce extensions.submodulePathConfig
 + builtin/submodule--helper: add gitdir command
 + submodule: always validate gitdirs inside submodule_name_to_gitdir
 + submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will merge to 'master'.
 cf. <aWXh9hQYxFhWYC6a@pks.im>
 source: <20260112184632.1334495-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 21%]

* What's cooking in git.git (Feb 2026, #01)
@ 2026-02-02 17:36 22% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-02-02 17:36 UTC (permalink / raw)
  To: git

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.

Git 2.53 has been tagged.  Let's wait to see if there are regression
reports from the real world and then start the new cycle.

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]

* sp/show-index-warn-fallback (2026-01-30) 2 commits
 - show-index: use gettext wrapping in user facing error messages
 - show-index: warn when falling back to SHA-1 outside a repository

 source: <20260130153603.290196-1-shreyanshpaliwalcmsmn@gmail.com>

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

* jc/checkout-switch-restore (2026-01-29) 2 commits
 - checkout: tell "parse_remote_branch" which command is calling it
 - checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Comments?
 source: <20260129190616.645471-1-gitster@pobox.com>


* jt/odb-transaction-per-source (2026-01-28) 4 commits
 - odb: transparently handle common transaction behavior
 - odb: prepare `struct odb_transaction` to support more sources
 - object-file: rename transaction functions
 - odb: store ODB source in `struct odb_transaction`

 Transaction to create objects (or not) is currently tied to the
 repository, but in the future a repository can have multiple object
 sources, which may have different transaction mechanisms.  Make the
 odb transaction API per object source.

 Expecting a reroll?
 cf. <aXtDZyFoSQahkxBa@pks.im>
 source: <20260128234519.2721179-1-jltobler@gmail.com>


* ps/for-each-ref-in-fixes (2026-01-30) 4 commits
 - bisect: simplify string_list memory handling
 - bisect: fix misuse of `refs_for_each_ref_in()`
 - pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 - pack-bitmap: deduplicate logic to iterate over preferred bitmap tips

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.
 source: <20260130-b4-pks-fix-for-each-ref-in-misuse-v2-0-0449b198a681@pks.im>


* ty/perf-3400-optim (2026-01-30) 1 commit
  (merged to 'next' on 2026-02-01 at 6c019af192)
 + t/perf/p3400: speed up setup using fast-import

 Improve set-up time of a perf test.

 Will cook in 'next'.
 source: <20260130170123.642344-1-a3205153416@gmail.com>


* ja/doc-synopsis-style-even-more (2026-01-26) 4 commits
 - doc: convert git-show to synopsis style
 - doc: fix some style issues in git-clone and for-each-ref-options
 - doc: finalize git-clone documentation conversion to synopsis style
 - convert git-submodule doc to synopsis style

 A handful of documentation pages have been modernized to use the
 "synopsis" style.

 Expecting a reroll.
 cf. <13939780.uLZWGnKmhe@piment-oiseau>
 source: <pull.2036.v2.git.1769462744.gitgitgadget@gmail.com>


* ac/string-list-sort-u-and-tests (2026-01-29) 2 commits
  (merged to 'next' on 2026-01-30 at 742890e56f)
 + string-list: add string_list_sort_u() that mimics "sort -u"
 + u-string-list: add unit tests for string-list methods

 The string_list API gains a new helper, string_list_sort_u(), and
 new unit tests to extend coverage.

 Will cook in 'next'.
 source: <20260125201500.63904-2-amishhhaaaa@gmail.com>


* ps/object-info-bits-cleanup (2026-01-26) 3 commits
 - odb: drop gaps in object info flag values
 - builtin/fsck: fix flags passed to `odb_has_object()`
 - builtin/backfill: fix flags passed to `odb_has_object()`

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Comments?
 source: <20260126-b4-pks-read-object-info-flags-v1-0-e682a003b17c@pks.im>


* pw/xdiff-cleanups (2026-01-26) 2 commits
 - xdiff: remove unused data from xdlclass_t
 - xdiff: remove "line_hash" field from xrecord_t

 Small clean-up of xdiff library to remove unnecessary data
 duplication.

 Comments?
 This conflicts with en/xdiff-cleanup-3 that has been dormant for some time.
 source: <cover.1769424529.git.phillip.wood@dunelm.org.uk>


* sp/t5500-cleanup (2026-01-21) 1 commit
  (merged to 'next' on 2026-01-23 at d5adc61ce8)
 + t5500: simplify test implementation and fix git exit code suppression

 Test clean-up.

 Will cook in 'next'.
 source: <20260121130012.888299-1-shreyanshpaliwalcmsmn@gmail.com>


* ty/symlinks-use-unsigned-for-bitset (2026-01-21) 1 commit
 - symlinks: use unsigned int for flags

 Code clean-up.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf66u9jj.fsf@gitster.g>
 source: <20260121162640.424126-1-a3205153416@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
 - revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'next'?
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a reroll.
 cf. <xmqqms23lpn2.fsf@gitster.g>
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - run-command: poll child input in addition to output
 - hook: add jobs option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: allow separate std[out|err] streams
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add helper for pp child states
 - t1800: add hook output stream tests

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Comments?
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* lp/diff-stat-utf8-display-width-fix (2026-01-15) 2 commits
  (merged to 'next' on 2026-01-23 at 80e7ddce3e)
 + t4073: add test for diffstat paths length when containing UTF-8 chars
 + diff: improve scaling of filenames in diffstat to handle UTF-8 chars

 The computation of column width made by "git diff --stat" was
 confused when pathnames contain non-ASCII characters.

 Will cook in 'next'.
 source: <cover.1768520441.git.lorenzo.pegorari2002@gmail.com>


* jk/remote-tracking-ref-leakfix (2026-01-18) 4 commits
  (merged to 'next' on 2026-01-21 at 7f0736a973)
 + remote: always allocate branch.push_tracking_ref
 + remote: fix leak in branch_get_push_1() with invalid "simple" config
 + remote: drop const return of tracking_for_push_dest()
 + remote: return non-const pointer from error_buf()
 (this branch is used by hn/status-compare-with-push.)

 Leakfix.

 Will cook in 'next'.
 source: <20260119051858.GA1991308@coredump.intra.peff.net>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx-TLwqbcdGcb2drD4vE6D3M93EPMjcAeTNR+XNTbmTVZg@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-01-16) 5 commits
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Expecting a reroll to make things opt-in, not opt-out.
 source: <pull.1853.v3.git.1768602373.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2026-01-20) 4 commits
  (merged to 'next' on 2026-01-23 at e514d98b11)
 + last-modified: change default max-depth to 0
 + last-modified: document option '--max-depth'
 + last-modified: document option '-z'
 + last-modified: clarify in the docs the command takes a pathspec

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Will cook in 'next'.
 source: <20260120-toon-last-modified-zzzz-v3-0-9bffd4968b0e@iotcl.com>


* tc/last-modified-not-a-tree (2026-01-30) 4 commits
 - last-modified: verify revision argument is a commit-ish
 - last-modified: remove double error message
 - last-modified: fix memory leak when more than one commit is given
 - last-modified: rewrite error message when more than one commit given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.

 Will merge to 'next'?
 source: <20260130-toon-last-modified-tree-v6-0-db827e5df985@iotcl.com>


* sp/myfirstcontribution-include-update (2026-01-12) 1 commit
  (merged to 'next' on 2026-01-23 at 2d039d03ff)
 + doc: MyFirstContribution: fix missing dependencies and clarify build steps

 Doc update.

 Will cook in 'next'.
 source: <20260112195625.391821-1-shreyanshpaliwalcmsmn@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-01-13) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Expecting a reroll.
 cf. <CA+GP4bqY02wcESuz1vPMcknigx_fUXFfi_xQ1EG_muGw6EszRg@mail.gmail.com>
 cf. <CA+GP4bpwMui5RT9ixo8iWyZ6XZDw3GnYhvgiqVmRq8dW7yo5RQ@mail.gmail.com>
 source: <37fe7956e089394bb1d75f4c8af4a3347b204803.1768376879.git.gitgitgadget@gmail.com>


* kn/ref-batch-output-error-reporting-fix (2026-01-25) 6 commits
  (merged to 'next' on 2026-01-30 at fe8044c396)
 + fetch: delay user information post committing of transaction
 + receive-pack: utilize rejected ref error details
 + fetch: utilize rejected ref error details
 + update-ref: utilize rejected error details if available
 + refs: add rejection detail to the callback function
 + refs: skip to next ref when current ref is rejected

 A handful of code paths that started using batched ref update API
 (after Git 2.51 or so) lost detailed error output, which have been
 corrected.

 Will cook in 'next'.
 source: <20260125-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v5-0-d58f3a9edf98@gmail.com>


* ac/sparse-checkout-string-list-cleanup (2026-01-21) 1 commit
  (merged to 'next' on 2026-01-23 at 885244a10d)
 + sparse-checkout: optimize string_list construction and add tests to verify deduplication.

 Code clean-up.

 Will cook in 'next'.
 source: <20260121130005.72375-1-amishhhaaaa@gmail.com>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
 - commit: rename `free_commit_list()` to conform to coding guidelines
 - commit: rename `reverse_commit_list()` to conform to coding guidelines
 - commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.

 Will merge to 'next'?
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* ps/odb-for-each-object (2026-01-26) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Will merge to 'next'?
 cf. <aXk2FjTUMMThs5Kp@nand.local>
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-01-15) 1 commit
  (merged to 'next' on 2026-01-30 at 70c03b7148)
 + subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Will cook in 'next'.
 source: <20260115175403.3971-3-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-01-16) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v4.git.git.1768602661.gitgitgadget@gmail.com>


* dd/t5403-modernise (2026-01-12) 2 commits
  (merged to 'next' on 2026-01-23 at ca3ceb637e)
 + t5403: use test_cmp for post-checkout argument checks
 + t5403: introduce check_post_checkout helper function

 Test clean-up.

 Will cook in 'next'.


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 What's the status of this one?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push
 (this branch uses jk/remote-tracking-ref-leakfix.)

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Under further discussion?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-01-24) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1769256839.git.belkid98@gmail.com>


* aa/add-p-previous-decisions (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-21 at 4e2fe2bd9b)
 + add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Will cook in 'next'.
 source: <aV_IGCld5T_dBxTs@Adekunles-MacBook-Air.local>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2026-01-27) 1 commit
  (merged to 'next' on 2026-01-30 at faf2e087b8)
 + worktree: clarify that --expire only affects missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Will cook in 'next'.
 source: <pull.2135.v3.git.git.1769578785381.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-22) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Will mrge to 'next'?
 source: <pull.2011.v6.git.1769109815197.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2026-01-14) 1 commit
  (merged to 'next' on 2026-01-23 at 0439366395)
 + remote-curl: use auth for probe_rpc() requests too

 HTTP transport failed to authenticate in some code paths, which has
 been corrected.

 Will cook in 'next'.
 source: <20260114163619.614297-2-aplattner@nvidia.com>


* lo/repo-info-keys (2026-01-23) 2 commits
 - repo: add new flag --keys to git-repo-info
 - repo: rename "keyvalue" to "lines"

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20260123164900.35092-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
  (merged to 'next' on 2026-01-29 at 66b2238f5c)
 + replay: drop commits that become empty
 + Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 Will cook in 'next'.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Any progress on CI breakages???
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ps/history (2026-01-13) 9 commits
  (merged to 'next' on 2026-01-29 at ecac247f83)
 + builtin/history: implement "reword" subcommand
 + builtin: add new "history" command
 + wt-status: provide function to expose status for trees
 + replay: support updating detached HEAD
 + replay: support empty commit ranges
 + replay: small set of cleanups
 + builtin/replay: move core logic into "libgit.a"
 + builtin/replay: extract core logic to replay revisions
 + Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Will cook in 'next'.
 cf. <aWpoMcgwsfRCCrr4@szeder.dev>
 cf. <CABPp-BHkNLdH4C7U4sFoVhrsSPH8KAaDtOdLEQGyajmXZz9hVg@mail.gmail.com>
 source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>


* ar/submodule-gitdir-tweak (2026-01-12) 11 commits
  (merged to 'next' on 2026-01-23 at ef3c2cab02)
 + submodule: detect conflicts with existing gitdir configs
 + submodule: hash the submodule name for the gitdir path
 + submodule: fix case-folding gitdir filesystem collisions
 + submodule--helper: fix filesystem collisions by encoding gitdir paths
 + builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 + submodule--helper: add gitdir migration command
 + submodule: allow runtime enabling extensions.submodulePathConfig
 + submodule: introduce extensions.submodulePathConfig
 + builtin/submodule--helper: add gitdir command
 + submodule: always validate gitdirs inside submodule_name_to_gitdir
 + submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will cook in 'next'.
 cf. <aWXh9hQYxFhWYC6a@pks.im>
 source: <20260112184632.1334495-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* dw/config-global-list (2025-10-09) 4 commits
 . config: keep bailing on unreadable global files
 . config: read global scope via config_sequence
 . config: test home and xdg files in `list --global`
 . cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Will discard. Has been waiting for a reroll for too long.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 cf. <xmqq1pjkyq25.fsf@gitster.g>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 . doc: git-worktree: Add side by side branch checkout example
 . doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Will discard. Has been waiting for a reroll for too long.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 cf. <xmqq7btcyq7f.fsf@gitster.g>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 . dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqwm1cxbad.fsf@gitster.g>
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* lc/rebase-trailer (2025-11-05) 4 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`
 . trailer: move process_trailers to trailer.h
 . interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Will discard. Has been waiting for a reroll for too long.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 cf. <xmqqsec0xb50.fsf@gitster.g>
 source: <20251105142944.73061-1-me@linux.beauty>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 . shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqfr80xanx.fsf@gitster.g>
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 . fsck: use parse_unsigned_from_buf() for parsing timestamp
 . cache-tree: use parse_int_from_buf()
 . parse: add functions for parsing from non-string buffers
 . parse: prefer bool to int for boolean returns
 . Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Will discard. Has been waiting for a reroll for too long.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 cf. <xmqqldhsxawm.fsf@gitster.g>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* kn/ref-location (2025-12-01) 2 commits
 . refs: add GIT_REF_URI to specify reference backend and directory
 . refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqbjioxahm.fsf@gitster.g>
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


^ permalink raw reply	[relevance 22%]

* Re: What's cooking in git.git (Jan 2026, #10)
  @ 2026-01-30 16:50 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-30 16:50 UTC (permalink / raw)
  To: Pushkar Singh; +Cc: git

Pushkar Singh <pushkarkumarsingh1970@gmail.com> writes:

> On Thu, Jan 15, 2026 at 12:26 PM Junio C Hamano wrote:
>> * ps/validate-prefix-in-subtree-split (2026-01-15) 1 commit
>>  - subtree: validate --prefix against commit in split
>>
>>  "git subtree split --prefix=P <commit>" now checks the prefix P
>>  against the tree of the (potentially quite different from the
>>  current working tree) given commit.
>>
>>  Expecting a reroll?
>>  source: <20260115122652.18673-2-pushkarkumarsingh1970@gmail.com>
>
> Hi Junio,
>
> Thanks for the update.

Sorry for the non-update ;-)  The expectation was against v2 of this
patch, which was met with v3.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Jan 2026, #10)
  @ 2026-01-30  5:43 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-30  5:43 UTC (permalink / raw)
  To: Eric Sunshine; +Cc: git, Sam Bostock

Eric Sunshine <sunshine@sunshineco.com> writes:

> On Thu, Jan 29, 2026 at 6:52 PM Junio C Hamano <gitster@pobox.com> wrote:
>> * sb/doc-worktree-prune-expire-improvement (2026-01-27) 1 commit
>>  - worktree: clarify that --expire only affects missing worktrees
>>
>>  The help text and the documentation for the "--expire" option of
>>  "git worktree [list|prune]" have been improved.
>>
>>  Will merge to 'next'?
>>  source: <pull.2135.v3.git.git.1769578785381.gitgitgadget@gmail.com>
>
> Yes, I believe that the recently-posted v3 addresses all the points
> covered by the two reviewers (Eric & Junio) who commented on the
> submission.

Yup, the latest round looked good.  Thanks, both of you.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jan 2026, #10)
@ 2026-01-29 23:52 23% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-01-29 23:52 UTC (permalink / raw)
  To: git

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.

Git 2.53-rc2 has been tagged, with one topic reverted recently due
to a regression. Please keep hunting for regressions.

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]

* jc/checkout-switch-restore (2026-01-29) 2 commits
 - checkout: tell "parse_remote_branch" which command is calling it
 - checkout: pass program-readable token to unified "main"

 "git switch <name>", in an attempt to create a local branch <name>
 after a remote tracking branch of the same name gave an advise
 message to disambiguate using "git checkout", which has been
 updated to use "git switch".

 Comments?
 source: <20260129190616.645471-1-gitster@pobox.com>


* jt/odb-transaction-per-source (2026-01-28) 4 commits
 - odb: transparently handle common transaction behavior
 - odb: prepare `struct odb_transaction` to support more sources
 - object-file: rename transaction functions
 - odb: store ODB source in `struct odb_transaction`

 Transaction to create objects (or not) is currently tied to the
 repository, but in the future a repository can have multiple object
 sources, which may have different transaction mechanisms.  Make the
 odb transaction API per object source.

 Expecting a reroll?
 cf. <aXtDZyFoSQahkxBa@pks.im>
 source: <20260128234519.2721179-1-jltobler@gmail.com>


* ps/for-each-ref-in-fixes (2026-01-29) 4 commits
 - bisect: simplify string_list memory handling
 - bisect: fix misuse of `refs_for_each_ref_in()`
 - pack-bitmap: fix bug with exact ref match in "pack.preferBitmapTips"
 - pack-bitmap: deduplicate logic to iterate over preferred bitmap tips

 A handful of places used refs_for_each_ref_in() API incorrectly,
 which has been corrected.

 Need any more work on pack-bitmap side?
 cf. <xmqq7bt0cqec.fsf@gitster.g>
 source: <20260128-b4-pks-fix-for-each-ref-in-misuse-v1-0-deccae3ea725@pks.im>


* ty/perf-3400-optim (2026-01-28) 1 commit
 - t/perf/p3400: speed up setup using fast-import

 Improve set-up time of a perf test.

 Comments?
 source: <20260128160717.611391-1-a3205153416@gmail.com>

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

* ja/doc-synopsis-style-even-more (2026-01-26) 4 commits
 - doc: convert git-show to synopsis style
 - doc: fix some style issues in git-clone and for-each-ref-options
 - doc: finalize git-clone documentation conversion to synopsis style
 - convert git-submodule doc to synopsis style

 A handful of documentation pages have been modernized to use the
 "synopsis" style.

 Will merge to 'next'?
 source: <pull.2036.v2.git.1769462744.gitgitgadget@gmail.com>


* ac/string-list-sort-u-and-tests (2026-01-29) 2 commits
 - string-list: add string_list_sort_u() that mimics "sort -u"
 - u-string-list: add unit tests for string-list methods

 The string_list API gains a new helper, string_list_sort_u(), and
 new unit tests to extend coverage.

 Will merge to 'next'.
 source: <20260125201500.63904-2-amishhhaaaa@gmail.com>


* ps/object-info-bits-cleanup (2026-01-26) 3 commits
 - odb: drop gaps in object info flag values
 - builtin/fsck: fix flags passed to `odb_has_object()`
 - builtin/backfill: fix flags passed to `odb_has_object()`

 A couple of bugs in use of flag bits around odb API has been
 corrected, and the flag bits reordered.

 Comments?
 source: <20260126-b4-pks-read-object-info-flags-v1-0-e682a003b17c@pks.im>


* pw/xdiff-cleanups (2026-01-26) 2 commits
 - xdiff: remove unused data from xdlclass_t
 - xdiff: remove "line_hash" field from xrecord_t

 Small clean-up of xdiff library to remove unnecessary data
 duplication.

 Comments?
 This conflicts with en/xdiff-cleanup-3 that has been dormant for some time.
 source: <cover.1769424529.git.phillip.wood@dunelm.org.uk>


* sp/t5500-cleanup (2026-01-21) 1 commit
  (merged to 'next' on 2026-01-23 at d5adc61ce8)
 + t5500: simplify test implementation and fix git exit code suppression

 Test clean-up.

 Will cook in 'next'.
 source: <20260121130012.888299-1-shreyanshpaliwalcmsmn@gmail.com>


* ty/symlinks-use-unsigned-for-bitset (2026-01-21) 1 commit
 - symlinks: use unsigned int for flags

 Code clean-up.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf66u9jj.fsf@gitster.g>
 source: <20260121162640.424126-1-a3205153416@gmail.com>


* ds/revision-maximal-only (2026-01-22) 1 commit
 - revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'next'?
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-23) 3 commits
 - SQUASH??? fixup
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a review response.
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>


* ar/run-command-hook-take-2 (2026-01-28) 12 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - run-command: poll child input in addition to output
 - hook: add jobs option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: allow separate std[out|err] streams
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add helper for pp child states
 - t1800: add hook output stream tests

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Comments?
 source: <20260128213927.3026875-1-adrian.ratiu@collabora.com>


* lp/diff-stat-utf8-display-width-fix (2026-01-15) 2 commits
  (merged to 'next' on 2026-01-23 at 80e7ddce3e)
 + t4073: add test for diffstat paths length when containing UTF-8 chars
 + diff: improve scaling of filenames in diffstat to handle UTF-8 chars

 The computation of column width made by "git diff --stat" was
 confused when pathnames contain non-ASCII characters.

 Will cook in 'next'.
 source: <cover.1768520441.git.lorenzo.pegorari2002@gmail.com>


* jk/remote-tracking-ref-leakfix (2026-01-18) 4 commits
  (merged to 'next' on 2026-01-21 at 7f0736a973)
 + remote: always allocate branch.push_tracking_ref
 + remote: fix leak in branch_get_push_1() with invalid "simple" config
 + remote: drop const return of tracking_for_push_dest()
 + remote: return non-const pointer from error_buf()
 (this branch is used by hn/status-compare-with-push.)

 Leakfix.

 Will cook in 'next'.
 source: <20260119051858.GA1991308@coredump.intra.peff.net>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Expecting a reroll.
 cf. <CAHTeOx8SOZmqvi0pkcheSjFpbEALmOwaUiX0tKLmNP7fqvjMXA@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-01-16) 5 commits
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Expecting a reroll to make things opt-in, not opt-out.
 source: <pull.1853.v3.git.1768602373.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2026-01-20) 4 commits
  (merged to 'next' on 2026-01-23 at e514d98b11)
 + last-modified: change default max-depth to 0
 + last-modified: document option '--max-depth'
 + last-modified: document option '-z'
 + last-modified: clarify in the docs the command takes a pathspec

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Will cook in 'next'.
 source: <20260120-toon-last-modified-zzzz-v3-0-9bffd4968b0e@iotcl.com>


* tc/last-modified-not-a-tree (2026-01-27) 4 commits
 - last-modified: verify revision argument is a commit-ish
 - last-modified: remove double error message
 - last-modified: fix memory leak when more than one commit is given
 - last-modified: rewrite error message when more than one commit given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.

 Expecting a reroll.
 cf. <87v7gkqxb0.fsf@iotcl.com>
 source: <20260127-toon-last-modified-tree-v5-0-38d18a0956d4@iotcl.com>


* sp/myfirstcontribution-include-update (2026-01-12) 1 commit
  (merged to 'next' on 2026-01-23 at 2d039d03ff)
 + doc: MyFirstContribution: fix missing dependencies and clarify build steps

 Doc update.

 Will cook in 'next'.
 source: <20260112195625.391821-1-shreyanshpaliwalcmsmn@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-01-13) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Expecting a reroll.
 cf. <CA+GP4bqY02wcESuz1vPMcknigx_fUXFfi_xQ1EG_muGw6EszRg@mail.gmail.com>
 cf. <CA+GP4bpwMui5RT9ixo8iWyZ6XZDw3GnYhvgiqVmRq8dW7yo5RQ@mail.gmail.com>
 source: <37fe7956e089394bb1d75f4c8af4a3347b204803.1768376879.git.gitgitgadget@gmail.com>


* kn/ref-batch-output-error-reporting-fix (2026-01-25) 6 commits
 - fetch: delay user information post committing of transaction
 - receive-pack: utilize rejected ref error details
 - fetch: utilize rejected ref error details
 - update-ref: utilize rejected error details if available
 - refs: add rejection detail to the callback function
 - refs: skip to next ref when current ref is rejected

 A handful of code paths that started using batched ref update API
 (after Git 2.51 or so) lost detailed error output, which have been
 corrected.

 Will merge to 'next'?
 source: <20260125-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v5-0-d58f3a9edf98@gmail.com>


* ac/sparse-checkout-string-list-cleanup (2026-01-21) 1 commit
  (merged to 'next' on 2026-01-23 at 885244a10d)
 + sparse-checkout: optimize string_list construction and add tests to verify deduplication.

 Code clean-up.

 Will cook in 'next'.
 source: <20260121130005.72375-1-amishhhaaaa@gmail.com>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
 - commit: rename `free_commit_list()` to conform to coding guidelines
 - commit: rename `reverse_commit_list()` to conform to coding guidelines
 - commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.

 Will merge to 'next'?
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* ps/odb-for-each-object (2026-01-26) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Will merge to 'next'?
 cf. <aXk2FjTUMMThs5Kp@nand.local>
 source: <20260126-pks-odb-for-each-object-v4-0-5a64a038c791@pks.im>


* ps/validate-prefix-in-subtree-split (2026-01-15) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Expecting a reroll?
 source: <20260115122652.18673-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-01-16) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v4.git.git.1768602661.gitgitgadget@gmail.com>


* dd/t5403-modernise (2026-01-12) 2 commits
  (merged to 'next' on 2026-01-23 at ca3ceb637e)
 + t5403: use test_cmp for post-checkout argument checks
 + t5403: introduce check_post_checkout helper function

 Test clean-up.

 Will cook in 'next'.


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 . SQUASH??? cocci
 . xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 . xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 . xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 . xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 . xdiff: cleanup xdl_trim_ends()
 . xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 . xdiff: let patience and histogram benefit from xdl_trim_ends()
 . xdiff: don't waste time guessing the number of lines
 . xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 . ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 What's the status of this one?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push
 (this branch uses jk/remote-tracking-ref-leakfix.)

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Under further discussion?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-01-24) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1769256839.git.belkid98@gmail.com>


* aa/add-p-previous-decisions (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-21 at 4e2fe2bd9b)
 + add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Will cook in 'next'.
 source: <aV_IGCld5T_dBxTs@Adekunles-MacBook-Air.local>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2026-01-27) 1 commit
 - worktree: clarify that --expire only affects missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Will merge to 'next'?
 source: <pull.2135.v3.git.git.1769578785381.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-22) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Will mrge to 'next'?
 source: <pull.2011.v6.git.1769109815197.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2026-01-14) 1 commit
  (merged to 'next' on 2026-01-23 at 0439366395)
 + remote-curl: use auth for probe_rpc() requests too

 HTTP transport failed to authenticate in some code paths, which has
 been corrected.

 Will cook in 'next'.
 source: <20260114163619.614297-2-aplattner@nvidia.com>


* lo/repo-info-keys (2026-01-23) 2 commits
 - repo: add new flag --keys to git-repo-info
 - repo: rename "keyvalue" to "lines"

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20260123164900.35092-1-lucasseikioshiro@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
  (merged to 'next' on 2026-01-29 at 66b2238f5c)
 + replay: drop commits that become empty
 + Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 Will cook in 'next'.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Any progress on CI breakages???
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ps/history (2026-01-13) 9 commits
  (merged to 'next' on 2026-01-29 at ecac247f83)
 + builtin/history: implement "reword" subcommand
 + builtin: add new "history" command
 + wt-status: provide function to expose status for trees
 + replay: support updating detached HEAD
 + replay: support empty commit ranges
 + replay: small set of cleanups
 + builtin/replay: move core logic into "libgit.a"
 + builtin/replay: extract core logic to replay revisions
 + Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Will cook in 'next'.
 cf. <aWpoMcgwsfRCCrr4@szeder.dev>
 cf. <CABPp-BHkNLdH4C7U4sFoVhrsSPH8KAaDtOdLEQGyajmXZz9hVg@mail.gmail.com>
 source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>


* ar/submodule-gitdir-tweak (2026-01-12) 11 commits
  (merged to 'next' on 2026-01-23 at ef3c2cab02)
 + submodule: detect conflicts with existing gitdir configs
 + submodule: hash the submodule name for the gitdir path
 + submodule: fix case-folding gitdir filesystem collisions
 + submodule--helper: fix filesystem collisions by encoding gitdir paths
 + builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 + submodule--helper: add gitdir migration command
 + submodule: allow runtime enabling extensions.submodulePathConfig
 + submodule: introduce extensions.submodulePathConfig
 + builtin/submodule--helper: add gitdir command
 + submodule: always validate gitdirs inside submodule_name_to_gitdir
 + submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will cook in 'next'.
 cf. <aWXh9hQYxFhWYC6a@pks.im>
 source: <20260112184632.1334495-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* dw/config-global-list (2025-10-09) 4 commits
 . config: keep bailing on unreadable global files
 . config: read global scope via config_sequence
 . config: test home and xdg files in `list --global`
 . cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Will discard. Has been waiting for a reroll for too long.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 cf. <xmqq1pjkyq25.fsf@gitster.g>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 . doc: git-worktree: Add side by side branch checkout example
 . doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Will discard. Has been waiting for a reroll for too long.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 cf. <xmqq7btcyq7f.fsf@gitster.g>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 . dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqwm1cxbad.fsf@gitster.g>
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* lc/rebase-trailer (2025-11-05) 4 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`
 . trailer: move process_trailers to trailer.h
 . interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Will discard. Has been waiting for a reroll for too long.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 cf. <xmqqsec0xb50.fsf@gitster.g>
 source: <20251105142944.73061-1-me@linux.beauty>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 . shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqfr80xanx.fsf@gitster.g>
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 . fsck: use parse_unsigned_from_buf() for parsing timestamp
 . cache-tree: use parse_int_from_buf()
 . parse: add functions for parsing from non-string buffers
 . parse: prefer bool to int for boolean returns
 . Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Will discard. Has been waiting for a reroll for too long.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 cf. <xmqqldhsxawm.fsf@gitster.g>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* kn/ref-location (2025-12-01) 2 commits
 . refs: add GIT_REF_URI to specify reference backend and directory
 . refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqbjioxahm.fsf@gitster.g>
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


^ permalink raw reply	[relevance 23%]

* Re: What's cooking in git.git (Jan 2026, #08)
  @ 2026-01-23 17:22 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-23 17:22 UTC (permalink / raw)
  To: Toon Claes; +Cc: git

Toon Claes <toon@iotcl.com> writes:

> Junio C Hamano <gitster@pobox.com> writes:
>
>> * tc/last-modified-not-a-tree (2026-01-16) 4 commits
>>  - last-modified: verify revision argument is a commit-ish
>>  - last-modified: remove double error message
>>  - last-modified: fix memory leak when more than one revision is given
>>  - last-modified: rewrite error message when more than one revision given
>>
>>  Giving "git last-modified" a tree (not a commit-ish) died an
>>  uncontrolled death, which has been corrected.
>>
>>  Will merge to 'next'.
>>  source: <20260116-toon-last-modified-tree-v3-0-e6ade4dc35ab@iotcl.com>
>
> Sorry for the late response, I decided to reroll this after all. Changes
> are small though.

Thanks, I just took a look and had a few comments on the first one.



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jan 2026, #08)
@ 2026-01-23 10:01 21% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-01-23 10:01 UTC (permalink / raw)
  To: git

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.

Git 2.53-rc1 has been tagged.  What's slated to 'master' as of this
edition of the "What's cooking" report will be merged and would
appear in the upcoming release, while everything else will have to
wait until the next cycle begins.  Until then, please hunt for
regressions.

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

* ps/config-doc-get-urlmatch-fix (2026-01-15) 1 commit
  (merged to 'next' on 2026-01-16 at b479b54381)
 + Documentation/config: fix replacement for --get-urlmatch

 Docfix.
 source: <20260115110832.15315-1-pushkarkumarsingh1970@gmail.com>


* ps/geometric-repacking-with-promisor-remotes (2026-01-05) 5 commits
  (merged to 'next' on 2026-01-15 at a5a24c2f14)
 + builtin/repack: handle promisor packs with geometric repacking
 + repack-promisor: extract function to remove redundant packs
 + repack-promisor: extract function to finalize repacking
 + repack-geometry: extract function to compute repacking split
 + builtin/pack-objects: exclude promisor objects with "--stdin-packs"

 "git repack --geometric" did not work with promisor packs, which
 has been corrected.
 source: <20260105-pks-geometric-repack-with-promisors-v1-0-c4660573437e@pks.im>


* rs/tree-wo-the-repository (2026-01-15) 11 commits
  (merged to 'next' on 2026-01-16 at 72f0a82905)
 + cocci: remove obsolete the_repository rules
 + cocci: convert parse_tree functions to repo_ variants
 + tree: stop using the_repository
 + tree: use repo_parse_tree()
 + path-walk: use repo_parse_tree_gently()
 + pack-bitmap-write: use repo_parse_tree()
 + delta-islands: use repo_parse_tree()
 + bloom: use repo_parse_tree()
 + add-interactive: use repo_parse_tree_indirect()
 + tree: add repo_parse_tree*()
 + environment: move access to core.maxTreeDepth into repo settings

 Remove implicit reliance on the_repository global in the APIs
 around tree objects and make it explicit which repository to work
 in.
 source: <20260109213021.2546-1-l.s.r@web.de>


* tb/midx-write-corrupt-checksum-fix (2026-01-12) 3 commits
  (merged to 'next' on 2026-01-15 at c387b3f023)
 + midx-write.c: assume checksum-invalid MIDXs require an update
 + t/t5319-multi-pack-index.sh: drop early 'test_done'
 + Merge branch 'ps/repack-avoid-noop-midx-rewrite' into tb/midx-write-corrupt-checksum-fix
 (this branch is used by tb/incremental-midx-part-3.2.)

 The logic that avoids reusing MIDX files with a wrong checksum was
 broken, which has been corrected.
 source: <cover.1768261435.git.me@ttaylorr.com>

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

* sp/t5500-cleanup (2026-01-21) 1 commit
 - t5500: simplify test implementation and fix git exit code suppression

 Test clean-up.

 Will merge to 'next'.
 source: <20260121130012.888299-1-shreyanshpaliwalcmsmn@gmail.com>


* ty/symlinks-use-unsigned-for-bitset (2026-01-21) 1 commit
 - symlinks: use unsigned int for flags

 Code clean-up.

 Will merge to 'next'.
 source: <20260121162640.424126-1-a3205153416@gmail.com>


* kh/mailmap-avila (2026-01-21) 1 commit
  (merged to 'next' on 2026-01-22 at d81095ad13)
 + .mailmap: fix and expand mappings for Jean-Noël Avila

 Will merge to 'master'.
 source: <gggadget.24e@msgid.xyz>


* ds/revision-maximal-only (2026-01-22) 1 commit
 - revision: add --maximal-only option

 "git rev-list" and friends learn "--maximal-only" to show only the
 commits that are not reachable by other commits.

 Will merge to 'next'?
 source: <pull.2032.v2.git.1769097958549.gitgitgadget@gmail.com>


* ng/submodule-default-remote (2026-01-22) 2 commits
 - SQUASH??? fixup
 - submodule: fetch missing objects from default remote

 Instead of hardcoded 'origin', use the configured default remote
 when fetching from submodules.

 Expecting a review response.
 source: <20260122152722.866341-1-nasser.grainawi@oss.qualcomm.com>

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

* dk/replay-doc-omit-irrelevant-rev-list-options (2026-01-21) 2 commits
  (merged to 'next' on 2026-01-21 at a17b449304)
 + lint-gitlink: preemptively ignore all /ifn?def|endif/ macros
 + replay: drop rev-list formatting options from manual

 Documentation clean-up.

 Will merge to 'master'.
 source: <01a7acfaf87494419b3766da57d4c05cf99c79bb.1768873599.git.ben.knoble+github@gmail.com>


* pw/mailmap-self (2026-01-20) 1 commit
  (merged to 'next' on 2026-01-21 at da7d118d77)
 + mailmap: add an entry for Phillip Wood

 Unify entries in .mailmap file for Phillip Wood.

 Will merge to 'master'.
 source: <f10c3f680d58ca0abbf795ae8b0f2ad14ab85419.1768906910.git.phillip.wood@dunelm.org.uk>


* ar/run-command-hook-take-2 (2026-01-21) 12 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - run-command: poll child stdin in addition to stdout
 - hook: add jobs option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: allow separate std[out|err] streams
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states
 - t1800: add hook output stream tests

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Expecting a reroll.
 cf. <87cy32q9qh.fsf@collabora.com>
 source: <20260121215436.1473800-1-adrian.ratiu@collabora.com>


* lp/diff-stat-utf8-display-width-fix (2026-01-15) 2 commits
 - t4073: add test for diffstat paths length when containing UTF-8 chars
 - diff: improve scaling of filenames in diffstat to handle UTF-8 chars

 The computation of column width made by "git diff --stat" was
 confused when pathnames contain non-ASCII characters.

 Will merge to 'next'.
 source: <cover.1768520441.git.lorenzo.pegorari2002@gmail.com>


* rj/cygwin-test-fixes-for-2.53 (2026-01-16) 2 commits
  (merged to 'next' on 2026-01-21 at 8a1ed2cace)
 + t0610-reftable-basics: mitigate a flaky test on cygwin
 + t9700/test.pl: fix path type expectation on cygwin

 Test fixup.

 Will merge to 'master'.
 source: <f46e023b-1925-41b2-9842-42e7cb727056@ramsayjones.plus.com>


* jx/build-options-gettext (2026-01-17) 1 commit
  (merged to 'next' on 2026-01-21 at dd35ac2e2a)
 + help: report on whether or not gettext is enabled

 "git bugreport" and "git version --build-options" learned to
 include use of 'gettext' feature, to make it easier to diagnose
 problems around l10n.

 Will merge to 'master'.
 source: <251e1b533ca2e38a9bedae44360ce636cdea4bc3.1768657640.git.zhiyou.jx@alibaba-inc.com>


* ty/t1005-test-path-is-helpers (2026-01-16) 1 commit
  (merged to 'next' on 2026-01-21 at 690bb3b255)
 + t1005: modernize "! test -f" to "test_path_is_missing"

 Test clean-up.

 Will merge to 'master'.
 source: <20260117062515.319664-1-a3205153416@gmail.com>


* js/ci-leak-skip-svn (2026-01-17) 2 commits
  (merged to 'next' on 2026-01-21 at ebcf21d088)
 + ci: skip CVS and P4 tests in leaks job, too
 + ci(*-leaks): skip the git-svn tests to save time

 Dscho observed that SVN tests are taking too much time in CI leak
 checking tasks, but most time is spent not in our code but in libsvn
 code (which happen to be written in Perl), whose leaks have little
 value to discover for us.  Skip SVN, P4, and CVS tests in the leak
 checking tasks.

 Will merge to 'master'.
 source: <b649f137-7140-4fb6-848a-b3408e54bbe5@gmail.com>


* jk/remote-tracking-ref-leakfix (2026-01-18) 4 commits
  (merged to 'next' on 2026-01-21 at 7f0736a973)
 + remote: always allocate branch.push_tracking_ref
 + remote: fix leak in branch_get_push_1() with invalid "simple" config
 + remote: drop const return of tracking_for_push_dest()
 + remote: return non-const pointer from error_buf()
 (this branch is used by hn/status-compare-with-push.)

 Leakfix.

 Will cook in 'next'.
 source: <20260119051858.GA1991308@coredump.intra.peff.net>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?  We do want a real review around here...
 cf. <CALnO6CC3WTBjaLR7yAr-w5eaqzyd2qF5MAyfV2wQY3+TDEbEsw@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-01-16) 5 commits
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Expecting a reroll to make things opt-in, not opt-out.
 source: <pull.1853.v3.git.1768602373.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2026-01-20) 4 commits
 - last-modified: change default max-depth to 0
 - last-modified: document option '--max-depth'
 - last-modified: document option '-z'
 - last-modified: clarify in the docs the command takes a pathspec

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Will merge to 'next'.
 source: <20260120-toon-last-modified-zzzz-v3-0-9bffd4968b0e@iotcl.com>


* tc/last-modified-not-a-tree (2026-01-16) 4 commits
 - last-modified: verify revision argument is a commit-ish
 - last-modified: remove double error message
 - last-modified: fix memory leak when more than one revision is given
 - last-modified: rewrite error message when more than one revision given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.

 Will merge to 'next'.
 source: <20260116-toon-last-modified-tree-v3-0-e6ade4dc35ab@iotcl.com>


* sp/myfirstcontribution-include-update (2026-01-12) 1 commit
 - doc: MyFirstContribution: fix missing dependencies and clarify build steps

 Doc update.

 Will merge to 'next'.
 source: <20260112195625.391821-1-shreyanshpaliwalcmsmn@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-01-13) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Expecting a reroll?
 cf. <B94F0800-06B5-47BC-8C22-AAE1882E5B9C@gmail.com>
 source: <37fe7956e089394bb1d75f4c8af4a3347b204803.1768376879.git.gitgitgadget@gmail.com>


* kn/ref-batch-output-error-reporting-fix (2026-01-22) 6 commits
 - fetch: delay user information post committing of transaction
 - receive-pack: utilize rejected ref error details
 - fetch: utilize rejected ref error details
 - update-ref: utilize rejected error details if available
 - refs: add rejection detail to the callback function
 - refs: skip to next ref when current ref is rejected

 A handful of code paths that started using batched ref update API
 (after Git 2.51 or so) lost detailed error output, which have been
 corrected.

 Merge to 'next'?
 source: <20260122-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v4-0-2ddba0832440@gmail.com>


* ac/sparse-checkout-string-list-cleanup (2026-01-21) 1 commit
 - sparse-checkout: optimize string_list construction and add tests to verify deduplication.

 Code clean-up.

 Will merge to 'next'.
 source: <20260121130005.72375-1-amishhhaaaa@gmail.com>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
 - commit: rename `free_commit_list()` to conform to coding guidelines
 - commit: rename `reverse_commit_list()` to conform to coding guidelines
 - commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.

 Will merge to 'next'?
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* ps/odb-for-each-object (2026-01-21) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Comments?
 source: <20260121-pks-odb-for-each-object-v3-0-12c4dfd24227@pks.im>


* ps/validate-prefix-in-subtree-split (2026-01-15) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Expecting a reroll?
 source: <20260115122652.18673-2-pushkarkumarsingh1970@gmail.com>


* sp/shallow-deepen-relative-fix (2026-01-16) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v4.git.git.1768602661.gitgitgadget@gmail.com>


* dd/t5403-modernise (2026-01-12) 2 commits
 - t5403: use test_cmp for post-checkout argument checks
 - t5403: introduce check_post_checkout helper function

 Test clean-up.

 Will merge to 'next'.
 source: <20260112163643.231-3-deveshigurgaon@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 - SQUASH??? cocci
 - xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 - xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 - xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 - xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 - xdiff: cleanup xdl_trim_ends()
 - xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 - xdiff: let patience and histogram benefit from xdl_trim_ends()
 - xdiff: don't waste time guessing the number of lines
 - xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 - ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Comments?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-22) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push
 (this branch uses jk/remote-tracking-ref-leakfix.)

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Under further discussion?
 cf. <20260122220154.GA2107958@coredump.intra.peff.net>
 source: <pull.2138.v28.git.git.1769112471.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-01-13) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1768318762.git.belkid98@gmail.com>


* aa/add-p-previous-decisions (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-21 at 4e2fe2bd9b)
 + add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Will cook in 'next'.
 source: <aV_IGCld5T_dBxTs@Adekunles-MacBook-Air.local>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* js/symlink-windows (2026-01-09) 19 commits
  (merged to 'next' on 2026-01-21 at eaaead3f22)
 + mingw: special-case index entries for symlinks with buggy size
 + mingw: emulate `stat()` a little more faithfully
 + mingw: try to create symlinks without elevated permissions
 + mingw: add support for symlinks to directories
 + mingw: implement basic `symlink()` functionality (file symlinks only)
 + mingw: implement `readlink()`
 + mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 + mingw: support renaming symlinks
 + mingw: handle symlinks to directories in `mingw_unlink()`
 + mingw: add symlink-specific error codes
 + mingw: change default of `core.symlinks` to false
 + mingw: factor out the retry logic
 + mingw: compute the correct size for symlinks in `mingw_lstat()`
 + mingw: teach dirent about symlinks
 + mingw: let `mingw_lstat()` error early upon problems with reparse points
 + mingw: drop the separate `do_lstat()` function
 + mingw: implement `stat()` with symlink support
 + mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 + Merge branch 'js/prep-symlink-windows' into js/symlink-windows

 Upstream symbolic link support on Windows from Git-for-Windows.

 Will merge to 'master'.
 source: <pull.2018.v2.git.1767989115.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-22) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Will mrge to 'next'?
 source: <pull.2011.v6.git.1769109815197.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2026-01-14) 1 commit
 - remote-curl: use auth for probe_rpc() requests too

 HTTP transport failed to authenticate in some code pahts, which has
 been corrected.

 Will merge to 'next'.
 source: <20260114163619.614297-2-aplattner@nvidia.com>


* lo/repo-info-keys (2026-01-19) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Expecting a reroll.
 cf. <E8095CC7-E913-4012-8036-DD2FC5A0E290@gmail.com>
 source: <20260119210932.68893-1-lucasseikioshiro@gmail.com>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
  (merged to 'next' on 2026-01-21 at 60d4750233)
 + doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merge to 'master'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 Will merge to 'next', together with 'ps/history'?
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Any progress on CI breakages???
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ps/history (2026-01-13) 9 commits
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - wt-status: provide function to expose status for trees
 - replay: support updating detached HEAD
 - replay: support empty commit ranges
 - replay: small set of cleanups
 - builtin/replay: move core logic into "libgit.a"
 - builtin/replay: extract core logic to replay revisions
 - Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Will merge to 'next'?
 cf. <aWpoMcgwsfRCCrr4@szeder.dev>
 cf. <CABPp-BHkNLdH4C7U4sFoVhrsSPH8KAaDtOdLEQGyajmXZz9hVg@mail.gmail.com>
 source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>


* ar/submodule-gitdir-tweak (2026-01-12) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will merge to 'next'.
 cf. <aWXh9hQYxFhWYC6a@pks.im>
 source: <20260112184632.1334495-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* dw/config-global-list (2025-10-09) 4 commits
 . config: keep bailing on unreadable global files
 . config: read global scope via config_sequence
 . config: test home and xdg files in `list --global`
 . cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Will discard. Has been waiting for a reroll for too long.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 cf. <xmqq1pjkyq25.fsf@gitster.g>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 . doc: git-worktree: Add side by side branch checkout example
 . doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Will discard. Has been waiting for a reroll for too long.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 cf. <xmqq7btcyq7f.fsf@gitster.g>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 . dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqwm1cxbad.fsf@gitster.g>
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* lc/rebase-trailer (2025-11-05) 4 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`
 . trailer: move process_trailers to trailer.h
 . interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Will discard. Has been waiting for a reroll for too long.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 cf. <xmqqsec0xb50.fsf@gitster.g>
 source: <20251105142944.73061-1-me@linux.beauty>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 . shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqfr80xanx.fsf@gitster.g>
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 . fsck: use parse_unsigned_from_buf() for parsing timestamp
 . cache-tree: use parse_int_from_buf()
 . parse: add functions for parsing from non-string buffers
 . parse: prefer bool to int for boolean returns
 . Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Will discard. Has been waiting for a reroll for too long.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 cf. <xmqqldhsxawm.fsf@gitster.g>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* kn/ref-location (2025-12-01) 2 commits
 . refs: add GIT_REF_URI to specify reference backend and directory
 . refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqbjioxahm.fsf@gitster.g>
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


^ permalink raw reply	[relevance 21%]

* Re: What's cooking in git.git (Jan 2026, #07)
  @ 2026-01-21 21:08 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-21 21:08 UTC (permalink / raw)
  To: Lucas Seiki Oshiro; +Cc: git

Lucas Seiki Oshiro <lucasseikioshiro@gmail.com> writes:

> Hi, Junio
>
>> "git repo info" learns "--keys" action to list known keys.
>> 
>> Will merge to 'next'?
>> source: <20260119210932.68893-1-lucasseikioshiro@gmail.com>
>
> Not yet. The last review by Patrick made me rethink the entire
> series and I still need to iterate a little more on it.

Yup, I already marked the topic to be expecting a (major) reroll.
Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jan 2026, #07)
@ 2026-01-21 19:00 19% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-01-21 19:00 UTC (permalink / raw)
  To: git

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.

Git 2.53-rc1 has been tagged.  What's slated to 'master' as of this
edition of the "What's cooking" report will be merged and would
appear in the upcoming release, while everything else will have to
wait until the next cycle begins.  Until then, please hunt for
regressions.

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

* cs/rebased-subtree-split (2026-01-09) 1 commit
  (merged to 'next' on 2026-01-13 at b213ccc8c1)
 + contrib/subtree: detect rewritten subtree commits

 The split command in "git subtree" (in contrib/) has been taught to
 deal better with rebased history.
 source: <20260110011811.788219-1-ask+git@howdoi.land>


* en/fsck-snapshot-ref-state (2026-01-09) 1 commit
  (merged to 'next' on 2026-01-12 at d5dff1bba4)
 + fsck: snapshot default refs before object walk

 "git fsck" used inconsistent set of refs to show a confused
 warning, which has been corrected.
 source: <pull.2026.v3.git.1767980953134.gitgitgadget@gmail.com>


* je/doc-reset (2026-01-05) 4 commits
  (merged to 'next' on 2026-01-12 at 44b4f99803)
 + doc: git-reset: clarify `git reset <pathspec>`
 + doc: git-reset: clarify `git reset [mode]`
 + doc: git-reset: clarify intro
 + doc: git-reset: reorder the forms

 Documentation updates.
 source: <cover.1767649692.git.ben.knoble+github@gmail.com>


* js/prep-symlink-windows (2026-01-09) 6 commits
  (merged to 'next' on 2026-01-14 at d05f3a8ea5)
 + trim_last_path_component(): avoid hard-coding the directory separator
 + strbuf_readlink(): support link targets that exceed 2*PATH_MAX
 + strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 + init: do parse _all_ core.* settings early
 + mingw: do resolve symlinks in `getcwd()`
 + Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.
 source: <pull.2017.v2.git.1767989109.gitgitgadget@gmail.com>


* kt/http-backend-errors (2026-01-11) 1 commit
  (merged to 'next' on 2026-01-13 at 35d72c8eb9)
 + http-backend: write newlines to stderr when responding with errors

 Some error messages from the http transport layer lacked the
 terminating newline, which has been corrected.
 source: <20260112014508.17248-1-kj@kjtsanaktsidis.id.au>


* ps/packfile-store-in-odb-source (2026-01-09) 12 commits
  (merged to 'next' on 2026-01-14 at f375c8e347)
 + packfile: move MIDX into packfile store
 + packfile: refactor `find_pack_entry()` to work on the packfile store
 + packfile: inline `find_kept_pack_entry()`
 + packfile: only prepare owning store in `packfile_store_prepare()`
 + packfile: only prepare owning store in `packfile_store_get_packs()`
 + packfile: move packfile store into object source
 + packfile: refactor misleading code when unusing pack windows
 + packfile: refactor kept-pack cache to work with packfile stores
 + packfile: pass source to `prepare_pack()`
 + packfile: create store via its owning source
 + Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 + Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch is used by ps/odb-for-each-object.)

 The packfile_store data structure is moved from object store to odb
 source.
 source: <20260109-b4-pks-pack-store-via-source-v3-0-877fd7b7bf81@pks.im>


* ps/read-object-info-improvements (2026-01-12) 8 commits
  (merged to 'next' on 2026-01-14 at e84be1a7bc)
 + packfile: drop repository parameter from `packed_object_info()`
 + packfile: skip unpacking object header for disk size requests
 + packfile: disentangle return value of `packed_object_info()`
 + packfile: always populate pack-specific info when reading object info
 + packfile: extend `is_delta` field to allow for "unknown" state
 + packfile: always declare object info to be OI_PACKED
 + object-file: always set OI_LOOSE when reading object info
 + Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements
 (this branch is used by ps/odb-for-each-object.)

 The object-info API has been cleaned up.
 source: <20260112-b4-pks-odb-read-object-info-improvements-v5-0-9a6124e95bf2@pks.im>


* ps/ref-consistency-checks (2026-01-12) 17 commits
  (merged to 'next' on 2026-01-13 at ba6c9deadb)
 + builtin/fsck: drop `fsck_head_link()`
 + builtin/fsck: move generic HEAD check into `refs_fsck()`
 + builtin/fsck: move generic object ID checks into `refs_fsck()`
 + refs/reftable: introduce generic checks for refs
 + refs/reftable: fix consistency checks with worktrees
 + refs/reftable: extract function to retrieve backend for worktree
 + refs/reftable: adapt includes to become consistent
 + refs/files: introduce function to perform normal ref checks
 + refs/files: extract generic symref target checks
 + fsck: drop unused fields from `struct fsck_ref_report`
 + refs/files: perform consistency checks for root refs
 + refs/files: improve error handling when verifying symrefs
 + refs/files: extract function to check single ref
 + refs/files: remove useless indirection
 + refs/files: remove `refs_check_dir` parameter
 + refs/files: move fsck functions into global scope
 + refs/files: simplify iterating through root refs

 Update code paths that check data integrity around refs subsystem.
 cf. <CAOLa=ZShPP3BPXa=YnC-vuX4zF=pUTFdUidZwOdna8bfVTNM9w@mail.gmail.com>
 source: <20260112-pks-refs-verify-fixes-v2-0-2e9e453bd6c3@pks.im>


* ps/t1410-cleanup (2026-01-11) 1 commit
  (merged to 'next' on 2026-01-13 at 51b666d16e)
 + t1410: use test helpers in reflog rewind test

 Test clean-up.
 source: <20260111191525.17087-1-pushkarkumarsingh1970@gmail.com>


* tb/macos-iconv-workarounds (2026-01-12) 2 commits
  (merged to 'next' on 2026-01-13 at f2e51d72b8)
 + utf8.c: enable workaround for iconv under macOS 14/15
 + utf8.c: prepare workaround for iconv under macOS 14/15

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.
 source: <20260112162553.774051-1-tboegi@web.de>

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

* dk/replay-doc-omit-irrelevant-rev-list-options (2026-01-21) 2 commits
  (merged to 'next' on 2026-01-21 at a17b449304)
 + lint-gitlink: preemptively ignore all /ifn?def|endif/ macros
 + replay: drop rev-list formatting options from manual

 Documentation clean-up.

 Will merge to 'master'.
 source: <01a7acfaf87494419b3766da57d4c05cf99c79bb.1768873599.git.ben.knoble+github@gmail.com>


* pw/mailmap-self (2026-01-20) 1 commit
  (merged to 'next' on 2026-01-21 at da7d118d77)
 + mailmap: add an entry for Phillip Wood

 Unify entries in .mailmap file for Phillip Wood.

 Will merge to 'master'.
 source: <f10c3f680d58ca0abbf795ae8b0f2ad14ab85419.1768906910.git.phillip.wood@dunelm.org.uk>

--------------------------------------------------
[Stalled]

* dw/config-global-list (2025-10-09) 4 commits
 . config: keep bailing on unreadable global files
 . config: read global scope via config_sequence
 . config: test home and xdg files in `list --global`
 . cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Will discard. Has been waiting for a reroll for too long.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 cf. <xmqq1pjkyq25.fsf@gitster.g>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 . doc: git-worktree: Add side by side branch checkout example
 . doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Will discard. Has been waiting for a reroll for too long.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 cf. <xmqq7btcyq7f.fsf@gitster.g>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 . dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqwm1cxbad.fsf@gitster.g>
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* lc/rebase-trailer (2025-11-05) 4 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`
 . trailer: move process_trailers to trailer.h
 . interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Will discard. Has been waiting for a reroll for too long.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 cf. <xmqqsec0xb50.fsf@gitster.g>
 source: <20251105142944.73061-1-me@linux.beauty>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 . shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqfr80xanx.fsf@gitster.g>
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 . fsck: use parse_unsigned_from_buf() for parsing timestamp
 . cache-tree: use parse_int_from_buf()
 . parse: add functions for parsing from non-string buffers
 . parse: prefer bool to int for boolean returns
 . Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Will discard. Has been waiting for a reroll for too long.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 cf. <xmqqldhsxawm.fsf@gitster.g>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* kn/ref-location (2025-12-01) 2 commits
 . refs: add GIT_REF_URI to specify reference backend and directory
 . refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Will discard. Has been waiting for further comments for too long.
 cf. <xmqqbjioxahm.fsf@gitster.g>
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>

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

* ar/run-command-hook-take-2 (2026-01-14) 14 commits
 - hook: make ungroup opt-out instead of opt-in
 - hook: allow hooks to disable stdout_to_stderr
 - hook: check for NULL pointer before deref
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Expecting a reroll.
 cf. <87h5smlgbu.fsf@collabora.com>
 source: <20251226122334.16687-1-adrian.ratiu@collabora.com>
 source: <20260114185731.2381550-1-adrian.ratiu@collabora.com>


* lp/diff-stat-utf8-display-width-fix (2026-01-15) 2 commits
 - t4073: add test for diffstat paths length when containing UTF-8 chars
 - diff: improve scaling of filenames in diffstat to handle UTF-8 chars

 The computation of column width made by "git diff --stat" was
 confused when pathnames contain non-ASCII characters.

 Will merge to 'next'?
 source: <cover.1768520441.git.lorenzo.pegorari2002@gmail.com>


* rj/cygwin-test-fixes-for-2.53 (2026-01-16) 2 commits
  (merged to 'next' on 2026-01-21 at 8a1ed2cace)
 + t0610-reftable-basics: mitigate a flaky test on cygwin
 + t9700/test.pl: fix path type expectation on cygwin

 Test fixup.

 Will merge to 'master'.
 source: <f46e023b-1925-41b2-9842-42e7cb727056@ramsayjones.plus.com>


* jx/build-options-gettext (2026-01-17) 1 commit
  (merged to 'next' on 2026-01-21 at dd35ac2e2a)
 + help: report on whether or not gettext is enabled

 "git bugreport" and "git version --build-options" learned to
 include use of 'gettext' feature, to make it easier to diagnose
 problems around l10n.

 Will merge to 'master'.
 source: <251e1b533ca2e38a9bedae44360ce636cdea4bc3.1768657640.git.zhiyou.jx@alibaba-inc.com>


* ty/t1005-test-path-is-helpers (2026-01-16) 1 commit
  (merged to 'next' on 2026-01-21 at 690bb3b255)
 + t1005: modernize "! test -f" to "test_path_is_missing"

 Test clean-up.

 Will merge to 'master'.
 source: <20260117062515.319664-1-a3205153416@gmail.com>


* js/ci-leak-skip-svn (2026-01-17) 2 commits
  (merged to 'next' on 2026-01-21 at ebcf21d088)
 + ci: skip CVS and P4 tests in leaks job, too
 + ci(*-leaks): skip the git-svn tests to save time

 Dscho observed that SVN tests are taking too much time in CI leak
 checking tasks, but most time is spent not in our code but in libsvn
 code (which happen to be written in Perl), whose leaks have little
 value to discover for us.  Skip SVN, P4, and CVS tests in the leak
 checking tasks.

 Will merge to 'master'.
 source: <b649f137-7140-4fb6-848a-b3408e54bbe5@gmail.com>


* jk/remote-tracking-ref-leakfix (2026-01-18) 4 commits
  (merged to 'next' on 2026-01-21 at 7f0736a973)
 + remote: always allocate branch.push_tracking_ref
 + remote: fix leak in branch_get_push_1() with invalid "simple" config
 + remote: drop const return of tracking_for_push_dest()
 + remote: return non-const pointer from error_buf()
 (this branch is used by hn/status-compare-with-push.)

 Leakfix.

 Will cook in 'next'.
 source: <20260119051858.GA1991308@coredump.intra.peff.net>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?  We do want a real review around here...
 cf. <CALnO6CC3WTBjaLR7yAr-w5eaqzyd2qF5MAyfV2wQY3+TDEbEsw@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-01-16) 5 commits
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Expecting a reroll to make things opt-in, not opt-out.
 source: <pull.1853.v3.git.1768602373.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2026-01-20) 4 commits
 - last-modified: change default max-depth to 0
 - last-modified: document option '--max-depth'
 - last-modified: document option '-z'
 - last-modified: clarify in the docs the command takes a pathspec

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Will merge to 'next'?
 source: <20260120-toon-last-modified-zzzz-v3-0-9bffd4968b0e@iotcl.com>


* tc/last-modified-not-a-tree (2026-01-16) 4 commits
 - last-modified: verify revision argument is a commit-ish
 - last-modified: remove double error message
 - last-modified: fix memory leak when more than one revision is given
 - last-modified: rewrite error message when more than one revision given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.

 Will merge to 'next'?
 source: <20260116-toon-last-modified-tree-v3-0-e6ade4dc35ab@iotcl.com>


* sp/myfirstcontribution-include-update (2026-01-12) 1 commit
 - doc: MyFirstContribution: fix missing dependencies and clarify build steps

 Doc update.

 Will merge to 'next'?
 source: <20260112195625.391821-1-shreyanshpaliwalcmsmn@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-01-13) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Expecting a reroll?
 cf. <B94F0800-06B5-47BC-8C22-AAE1882E5B9C@gmail.com>
 source: <37fe7956e089394bb1d75f4c8af4a3347b204803.1768376879.git.gitgitgadget@gmail.com>


* kn/ref-batch-output-error-reporting-fix (2026-01-20) 6 commits
 - fetch: delay user information post committing of transaction
 - receive-pack: utilize rejected ref error details
 - fetch: utilize rejected ref error details
 - update-ref: utilize rejected error details if available
 - refs: add rejection detail to the callback function
 - refs: skip to next ref when current ref is rejected

 A handful of code paths that started using batched ref update API
 (after Git 2.51 or so) lost detailed error output, which have been
 corrected.

 Will merge to 'next'?
 source: <20260120-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v3-0-e0edb29acbef@gmail.com>


* ps/geometric-repacking-with-promisor-remotes (2026-01-05) 5 commits
  (merged to 'next' on 2026-01-15 at a5a24c2f14)
 + builtin/repack: handle promisor packs with geometric repacking
 + repack-promisor: extract function to remove redundant packs
 + repack-promisor: extract function to finalize repacking
 + repack-geometry: extract function to compute repacking split
 + builtin/pack-objects: exclude promisor objects with "--stdin-packs"

 "git repack --geometric" did not work with promisor packs, which
 has been corrected.

 Will merge to 'master'.
 source: <20260105-pks-geometric-repack-with-promisors-v1-0-c4660573437e@pks.im>


* tb/midx-write-corrupt-checksum-fix (2026-01-12) 3 commits
  (merged to 'next' on 2026-01-15 at c387b3f023)
 + midx-write.c: assume checksum-invalid MIDXs require an update
 + t/t5319-multi-pack-index.sh: drop early 'test_done'
 + Merge branch 'ps/repack-avoid-noop-midx-rewrite' into tb/midx-write-corrupt-checksum-fix
 (this branch is used by tb/incremental-midx-part-3.2.)

 The logic that avoids reusing MIDX files with a wrong checksum was
 broken, which has been corrected.

 Will merge to 'master'.
 source: <cover.1768261435.git.me@ttaylorr.com>


* ac/sparse-checkout-string-list-cleanup (2026-01-16) 1 commit
 - sparse-checkout: optimize string_list construction

 Code clean-up.

 Will merge to 'next'?
 source: <20260116165003.95314-1-amishhhaaaa@gmail.com>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
 - commit: rename `free_commit_list()` to conform to coding guidelines
 - commit: rename `reverse_commit_list()` to conform to coding guidelines
 - commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.

 Will merge to 'next'?
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* ps/config-doc-get-urlmatch-fix (2026-01-15) 1 commit
  (merged to 'next' on 2026-01-16 at b479b54381)
 + Documentation/config: fix replacement for --get-urlmatch

 Docfix.

 Will merge to 'master'.
 source: <20260115110832.15315-1-pushkarkumarsingh1970@gmail.com>


* ps/odb-for-each-object (2026-01-20) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object

 Revamp object enumeration API around odb.

 Comments?
 source: <20260120-pks-odb-for-each-object-v2-0-d05cbfd3d6f8@pks.im>


* ps/validate-prefix-in-subtree-split (2026-01-15) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Expecting a reroll?
 source: <20260115122652.18673-2-pushkarkumarsingh1970@gmail.com>


* rs/tree-wo-the-repository (2026-01-15) 11 commits
  (merged to 'next' on 2026-01-16 at 72f0a82905)
 + cocci: remove obsolete the_repository rules
 + cocci: convert parse_tree functions to repo_ variants
 + tree: stop using the_repository
 + tree: use repo_parse_tree()
 + path-walk: use repo_parse_tree_gently()
 + pack-bitmap-write: use repo_parse_tree()
 + delta-islands: use repo_parse_tree()
 + bloom: use repo_parse_tree()
 + add-interactive: use repo_parse_tree_indirect()
 + tree: add repo_parse_tree*()
 + environment: move access to core.maxTreeDepth into repo settings

 Remove implicit reliance on the_repository global in the APIs
 around tree objects and make it explicit which repository to work
 in.

 Will merge to 'master'.
 source: <20260109213021.2546-1-l.s.r@web.de>


* sp/shallow-deepen-relative-fix (2026-01-16) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v4.git.git.1768602661.gitgitgadget@gmail.com>


* dd/t5403-modernise (2026-01-12) 2 commits
 - t5403: use test_cmp for post-checkout argument checks
 - t5403: introduce check_post_checkout helper function

 Test clean-up.

 Will merge to 'next'?
 source: <20260112163643.231-3-deveshigurgaon@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 - SQUASH??? cocci
 - xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 - xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 - xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 - xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 - xdiff: cleanup xdl_trim_ends()
 - xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 - xdiff: let patience and histogram benefit from xdl_trim_ends()
 - xdiff: don't waste time guessing the number of lines
 - xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 - ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Comments?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-18) 3 commits
 - status: add status.compareBranches config for multiple branch comparisons
 - refactor format_branch_comparison in preparation
 - Merge branch 'jk/remote-tracking-ref-leakfix' into hn/status-compare-with-push
 (this branch uses jk/remote-tracking-ref-leakfix.)

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Will merge to 'next'?
 source: <pull.2138.v26.git.git.1768766353.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-01-13) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1768318762.git.belkid98@gmail.com>


* aa/add-p-previous-decisions (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-21 at 4e2fe2bd9b)
 + add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Will cook in 'next'.
 source: <aV_IGCld5T_dBxTs@Adekunles-MacBook-Air.local>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* js/symlink-windows (2026-01-09) 19 commits
  (merged to 'next' on 2026-01-21 at eaaead3f22)
 + mingw: special-case index entries for symlinks with buggy size
 + mingw: emulate `stat()` a little more faithfully
 + mingw: try to create symlinks without elevated permissions
 + mingw: add support for symlinks to directories
 + mingw: implement basic `symlink()` functionality (file symlinks only)
 + mingw: implement `readlink()`
 + mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 + mingw: support renaming symlinks
 + mingw: handle symlinks to directories in `mingw_unlink()`
 + mingw: add symlink-specific error codes
 + mingw: change default of `core.symlinks` to false
 + mingw: factor out the retry logic
 + mingw: compute the correct size for symlinks in `mingw_lstat()`
 + mingw: teach dirent about symlinks
 + mingw: let `mingw_lstat()` error early upon problems with reparse points
 + mingw: drop the separate `do_lstat()` function
 + mingw: implement `stat()` with symlink support
 + mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 + Merge branch 'js/prep-symlink-windows' into js/symlink-windows

 Upstream symbolic link support on Windows from Git-for-Windows.

 Will merge to 'master'.
 source: <pull.2018.v2.git.1767989115.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-20) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Will merge to 'next'?
 source: <pull.2011.v5.git.1768933954845.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2026-01-14) 1 commit
 - remote-curl: use auth for probe_rpc() requests too

 HTTP transport failed to authenticate in some code pahts, which has
 been corrected.

 Will merge to 'next'?
 source: <20260114163619.614297-2-aplattner@nvidia.com>


* lo/repo-info-keys (2026-01-19) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Will merge to 'next'?
 source: <20260119210932.68893-1-lucasseikioshiro@gmail.com>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
  (merged to 'next' on 2026-01-21 at 60d4750233)
 + doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merge to 'master'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2
 (this branch uses tb/midx-write-corrupt-checksum-fix.)

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Any progress on CI breakages???
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ps/history (2026-01-13) 9 commits
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - wt-status: provide function to expose status for trees
 - replay: support updating detached HEAD
 - replay: support empty commit ranges
 - replay: small set of cleanups
 - builtin/replay: move core logic into "libgit.a"
 - builtin/replay: extract core logic to replay revisions
 - Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Will merge to 'next'?
 cf. <aWpoMcgwsfRCCrr4@szeder.dev>
 source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>


* ar/submodule-gitdir-tweak (2026-01-12) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will merge to 'next'?
 source: <20260112184632.1334495-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 19%]

* Re: What's cooking in git.git (Jan 2026, #06)
  @ 2026-01-21 15:26 99%   ` Junio C Hamano
  2026-01-21 16:20 99%     ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-01-21 15:26 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

>>  ...
>>  - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
>>  (this branch uses js/prep-symlink-windows.)
>> 
>>  Upstream symbolic link support on Windows from Git-for-Windows.
>> 
>>  Expecting a reroll.
>>  cf. <5fe64b77-d10b-b66e-8622-14bec1e96f4a@gmx.de>
>>  cf. <14388349-d1b5-fc8f-b6c7-4a7b43e64494@gmx.de>
>>  cf. <704e952d-7924-00ce-b8b0-ad355e659335@gmx.de>
>>  source: <pull.2018.v2.git.1767989115.gitgitgadget@gmail.com>
>
> I do not quite understand.
>
> v2 was sent out on Jan 9. The three replies you are referring to as
> blockers were all sent out on the same day, as replies to the respective
> reviewer comments in v1. Naturally, whan I did sent out those replies
> acknowleding problems whose fixes I promised, I did not then go on and
> omit the fixes from v2!

Sorry, my mistake.  It is very possible that the references may be
stale for this topic, as I can forget update them when I queue a
newer iteration.

Will take a look later today.  Thanks.



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Jan 2026, #06)
  2026-01-21 15:26 99%   ` Junio C Hamano
@ 2026-01-21 16:20 99%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-21 16:20 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git, Ben Knoble, Johannes Sixt

Junio C Hamano <gitster@pobox.com> writes:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
>>>  ...
>>>  - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
>>>  (this branch uses js/prep-symlink-windows.)
>>> 
>>>  Upstream symbolic link support on Windows from Git-for-Windows.
>>> 
>>>  Expecting a reroll.
>>>  cf. <5fe64b77-d10b-b66e-8622-14bec1e96f4a@gmx.de>
>>>  cf. <14388349-d1b5-fc8f-b6c7-4a7b43e64494@gmx.de>
>>>  cf. <704e952d-7924-00ce-b8b0-ad355e659335@gmx.de>
>>>  source: <pull.2018.v2.git.1767989115.gitgitgadget@gmail.com>
>>
>> I do not quite understand.
>>
>> v2 was sent out on Jan 9. The three replies you are referring to as
>> blockers were all sent out on the same day, as replies to the respective
>> reviewer comments in v1. Naturally, whan I did sent out those replies
>> acknowleding problems whose fixes I promised, I did not then go on and
>> omit the fixes from v2!
>
> Sorry, my mistake.  It is very possible that the references may be
> stale for this topic, as I can forget update them when I queue a
> newer iteration.
>
> Will take a look later today.  Thanks.

I think I understood what happened.  You send those referenced
messages to v1 review comments at the same time or after you sent
v2, and said "I'll drop this" or "I'll do that" in them, which
confused me into thinking "oh, after sending the v2 Dscho realized
there were still some things to be addressed and responded to v1
reviews?", hence these references.  Sorry about the confusion.

Let's mark it for 'next'.  As the "prep" topic will be part of -rc1,
I really didn't want just half the topic in the upcoming release
while leaving out the other half out of it.  Thanks for pinging.



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Jan 2026, #06)
  @ 2026-01-20 16:30 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-20 16:30 UTC (permalink / raw)
  To: Shreyansh Paliwal; +Cc: git

Shreyansh Paliwal <shreyanshpaliwalcmsmn@gmail.com> writes:

> While going through, I noticed that patch [1] related to
> t5500-fetch-pack.sh doesn't appear in the seen branch yet.
>
> I just wanted to ask whether that got left unintentionally,
> or if it might still be pending any updates or changes.

When I saw it I thought "gee, the implementation and the explanation
have changed so much, this needs a full review", then I got
distracted X-<.




^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jan 2026, #06)
@ 2026-01-20 12:10 18% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-01-20 12:10 UTC (permalink / raw)
  To: git

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

* ac/t1420-use-more-direct-check (2026-01-06) 1 commit
  (merged to 'next' on 2026-01-10 at 6bccdd0e04)
 + t1420: modernize the lost-found test

 Test update.
 source: <20260106132658.798706-1-andchi@fastmail.com>


* bc/doc-stash-import-export (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-10 at 48f26103bc)
 + gitfaq: document using stash import/export to sync working tree

 Update a FAQ entry on synching two separate repositories using the
 "git stash export/import" recently introduced.
 source: <20260109014608.42773-1-sandals@crustytoothpaste.net>


* ds/builtin-doc-update (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-10 at a98a468cf0)
 + builtin.h: update documentation

 Update in-code comment doc to match the current API.
 source: <pull.2028.git.1767929941577.gitgitgadget@gmail.com>


* jk/cat-file-avoid-bitmap-when-unneeded (2026-01-06) 1 commit
  (merged to 'next' on 2026-01-10 at 5e3f0240f7)
 + cat-file: only use bitmaps when filtering

 Fix for a performance regression in "git cat-file".
 cf. <aV4Xa9ceY4ahYj2m@pks.im>
 source: <20260106102558.GA68914@coredump.intra.peff.net>


* jk/t-perf-fixes (2026-01-06) 2 commits
  (merged to 'next' on 2026-01-10 at 9a633e87df)
 + t/perf/run: preserve GIT_PERF_* from environment
 + t/perf/perf-lib: fix assignment of TEST_OUTPUT_DIRECTORY

 Perf-test fixes.
 source: <20260106101043.GA3723319@coredump.intra.peff.net>


* kh/doc-patch-id (2026-01-07) 6 commits
  (merged to 'next' on 2026-01-10 at 27a1d947d1)
 + doc: patch-id: --verbatim locks in --stable
 + doc: patch-id: spell out the git-diff-tree(1) form
 + doc: patch-id: use definite article for the result
 + patch-id: use “patch ID” throughout
 + doc: patch-id: capitalize Git version
 + doc: patch-id: don’t use semicolon between bullet points

 "git patch-id" documentation updates.
 source: <CV_doc_patch-id_3.1ab@msgid.xyz>


* kj/t7101-modernize (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-10 at c33f8ae0bb)
 + t7101: modernize test path checks

 Test update.
 source: <20260109032027.68680-1-jayatheerthkulkarni2005@gmail.com>


* ml/doc-blame-markup (2026-01-08) 2 commits
  (merged to 'next' on 2026-01-10 at 1f87b77810)
 + doc: git-blame: convert to new doc format
 + doc: blame-options: convert to new doc format

 Doc mark-up update.
 cf. <2813520.mvXUDI8C0e@piment-oiseau>
 source: <20260108153039.658217-1-git@michael.lyo.nz>

--------------------------------------------------
[Stalled]

* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Will discard. Has been waiting for a reroll for too long.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Will discard. Has been waiting for a reroll for too long.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Will discard. Has been waiting for further comments for too long.
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Will discard. Has been waiting for a reroll for too long.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Will discard. Has been waiting for further comments for too long.
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Will discard. Has been waiting for a reroll for too long.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Will discard. Has been waiting for further comments for too long.
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>

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

* ar/run-command-hook-take-2 (2026-01-14) 14 commits
 - hook: make ungroup opt-out instead of opt-in
 - hook: allow hooks to disable stdout_to_stderr
 - hook: check for NULL pointer before deref
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states

 Use the hook API to replace ad-hoc invocation of hook scripts via
 the run_command() API.

 Expecting a reroll.
 cf. <87h5smlgbu.fsf@collabora.com>
 source: <20251226122334.16687-1-adrian.ratiu@collabora.com>
 source: <20260114185731.2381550-1-adrian.ratiu@collabora.com>


* lp/diff-stat-utf8-display-width-fix (2026-01-15) 2 commits
 - t4073: add test for diffstat paths length when containing UTF-8 chars
 - diff: improve scaling of filenames in diffstat to handle UTF-8 chars

 The computation of column width made by "git diff --stat" was
 confused when pathnames contain non-ASCII characters.

 Will merge to 'next'?
 source: <cover.1768520441.git.lorenzo.pegorari2002@gmail.com>


* rj/cygwin-test-fixes-for-2.53 (2026-01-16) 2 commits
 - t0610-reftable-basics: mitigate a flaky test on cygwin
 - t9700/test.pl: fix path type expectation on cygwin

 Test fixup.

 Will merge to 'next' and then to 'master'.
 source: <f46e023b-1925-41b2-9842-42e7cb727056@ramsayjones.plus.com>


* jx/build-options-gettext (2026-01-17) 1 commit
 - help: report on whether or not gettext is enabled

 "git bugreport" and "git version --build-options" learned to
 include use of 'gettext' feature, to make it easier to diagnose
 problems around l10n.

 Will merge to 'next'.
 source: <251e1b533ca2e38a9bedae44360ce636cdea4bc3.1768657640.git.zhiyou.jx@alibaba-inc.com>


* ty/t1005-test-path-is-helpers (2026-01-16) 1 commit
 - t1005: modernize "! test -f" to "test_path_is_missing"

 Test clean-up.

 Will merge to 'next'.
 source: <20260117062515.319664-1-a3205153416@gmail.com>


* js/ci-leak-skip-svn (2026-01-17) 2 commits
 - ci: skip CVS and P4 tests in leaks job, too
 - ci(*-leaks): skip the git-svn tests to save time

 Dscho observed that SVN tests are taking too much time in CI leak
 checking tasks, but most time is spent not in our code but in libsvn
 code (which happen to be written in Perl), whose leaks have little
 value to discover for us.  Skip SVN, P4, and CVS tests in the leak
 checking tasks.

 Will merge to 'next' and down to 'master'.
 source: <pull.2031.git.1768584676520.gitgitgadget@gmail.com>


* jk/remote-tracking-ref-leakfix (2026-01-18) 4 commits
 - remote: always allocate branch.push_tracking_ref
 - remote: fix leak in branch_get_push_1() with invalid "simple" config
 - remote: drop const return of tracking_for_push_dest()
 - remote: return non-const pointer from error_buf()

 Leakfix.

 Will merge to 'next'.
 source: <20260119051858.GA1991308@coredump.intra.peff.net>

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

* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?  We do want a real review around here...
 cf. <CALnO6CC3WTBjaLR7yAr-w5eaqzyd2qF5MAyfV2wQY3+TDEbEsw@mail.gmail.com>
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2026-01-16) 5 commits
 - sideband: offer to configure sanitizing on a per-URL basis
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Expecting a reroll to make things opt-in, not opt-out.
 source: <pull.1853.v3.git.1768602373.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2026-01-16) 5 commits
 - last-modified: change default max-depth to 0
 - last-modified: add option '--max-depth' to help output
 - last-modified: document option --max-depth
 - last-modified: add option '-z' to help output
 - last-modified: document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Will merge to 'next'?
 source: <20260116-toon-last-modified-zzzz-v2-0-79e44f2806fe@iotcl.com>


* tc/last-modified-not-a-tree (2026-01-16) 4 commits
 - last-modified: verify revision argument is a commit-ish
 - last-modified: remove double error message
 - last-modified: fix memory leak when more than one revision is given
 - last-modified: rewrite error message when more than one revision given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.

 Will merge to 'next'?
 source: <20260116-toon-last-modified-tree-v3-0-e6ade4dc35ab@iotcl.com>


* sp/myfirstcontribution-include-update (2026-01-12) 1 commit
 - doc: MyFirstContribution: fix missing dependencies and clarify build steps

 Doc update.

 Will merge to 'next'?
 source: <20260112195625.391821-1-shreyanshpaliwalcmsmn@gmail.com>


* cs/add-skip-submodule-ignore-all (2026-01-13) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Expecting a reroll?
 cf. <B94F0800-06B5-47BC-8C22-AAE1882E5B9C@gmail.com>
 source: <37fe7956e089394bb1d75f4c8af4a3347b204803.1768376879.git.gitgitgadget@gmail.com>


* kn/ref-batch-output-error-reporting-fix (2026-01-16) 7 commits
 - fetch: delay user information post committing of transaction
 - receive-pack: utilize rejected ref error details
 - fetch: utilize rejected ref error details
 - update-ref: utilize rejected error details if available
 - refs: add rejection detail to the callback function
 - refs: skip to next ref when current ref is rejected
 - refs: drop unnecessary header includes

 A handful of code paths that started using batched ref update API
 (after Git 2.51 or so) lost detailed error output, which have been
 corrected.

 Will merge to 'next'?
 source: <20260116-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v2-0-925a0e9c7f32@gmail.com>


* ps/geometric-repacking-with-promisor-remotes (2026-01-05) 5 commits
  (merged to 'next' on 2026-01-15 at a5a24c2f14)
 + builtin/repack: handle promisor packs with geometric repacking
 + repack-promisor: extract function to remove redundant packs
 + repack-promisor: extract function to finalize repacking
 + repack-geometry: extract function to compute repacking split
 + builtin/pack-objects: exclude promisor objects with "--stdin-packs"

 "git repack --geometric" did not work with promisor packs, which
 has been corrected.

 Will merge to 'master'.
 source: <20260105-pks-geometric-repack-with-promisors-v1-0-c4660573437e@pks.im>


* tb/midx-write-corrupt-checksum-fix (2026-01-12) 3 commits
  (merged to 'next' on 2026-01-15 at c387b3f023)
 + midx-write.c: assume checksum-invalid MIDXs require an update
 + t/t5319-multi-pack-index.sh: drop early 'test_done'
 + Merge branch 'ps/repack-avoid-noop-midx-rewrite' into tb/midx-write-corrupt-checksum-fix
 (this branch is used by tb/incremental-midx-part-3.2.)

 The logic that avoids reusing MIDX files with a wrong checksum was
 broken, which has been corrected.

 Will merge to 'master'.
 source: <cover.1768261435.git.me@ttaylorr.com>


* ac/sparse-checkout-string-list-cleanup (2026-01-16) 1 commit
 - sparse-checkout: optimize string_list construction

 Code clean-up.

 Will merge to 'next'?
 source: <20260116165003.95314-1-amishhhaaaa@gmail.com>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
 - commit: rename `free_commit_list()` to conform to coding guidelines
 - commit: rename `reverse_commit_list()` to conform to coding guidelines
 - commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.

 Will merge to 'next'?
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* ps/config-doc-get-urlmatch-fix (2026-01-15) 1 commit
  (merged to 'next' on 2026-01-16 at b479b54381)
 + Documentation/config: fix replacement for --get-urlmatch

 Docfix.

 Will merge to 'master'.
 source: <20260115110832.15315-1-pushkarkumarsingh1970@gmail.com>


* ps/odb-for-each-object (2026-01-15) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object
 (this branch uses ps/packfile-store-in-odb-source and ps/read-object-info-improvements.)

 Revamp object enumeration API around odb.

 Comments?
 source: <20260115-pks-odb-for-each-object-v1-0-5418a91d5d99@pks.im>


* ps/validate-prefix-in-subtree-split (2026-01-15) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Expecting a reroll?
 source: <20260115122652.18673-2-pushkarkumarsingh1970@gmail.com>


* ps/ref-consistency-checks (2026-01-12) 17 commits
  (merged to 'next' on 2026-01-13 at ba6c9deadb)
 + builtin/fsck: drop `fsck_head_link()`
 + builtin/fsck: move generic HEAD check into `refs_fsck()`
 + builtin/fsck: move generic object ID checks into `refs_fsck()`
 + refs/reftable: introduce generic checks for refs
 + refs/reftable: fix consistency checks with worktrees
 + refs/reftable: extract function to retrieve backend for worktree
 + refs/reftable: adapt includes to become consistent
 + refs/files: introduce function to perform normal ref checks
 + refs/files: extract generic symref target checks
 + fsck: drop unused fields from `struct fsck_ref_report`
 + refs/files: perform consistency checks for root refs
 + refs/files: improve error handling when verifying symrefs
 + refs/files: extract function to check single ref
 + refs/files: remove useless indirection
 + refs/files: remove `refs_check_dir` parameter
 + refs/files: move fsck functions into global scope
 + refs/files: simplify iterating through root refs

 Update code paths that check data integrity around refs subsystem.

 Will merge to 'master'.
 cf. <CAOLa=ZShPP3BPXa=YnC-vuX4zF=pUTFdUidZwOdna8bfVTNM9w@mail.gmail.com>
 source: <20260112-pks-refs-verify-fixes-v2-0-2e9e453bd6c3@pks.im>


* rs/tree-wo-the-repository (2026-01-15) 11 commits
  (merged to 'next' on 2026-01-16 at 72f0a82905)
 + cocci: remove obsolete the_repository rules
 + cocci: convert parse_tree functions to repo_ variants
 + tree: stop using the_repository
 + tree: use repo_parse_tree()
 + path-walk: use repo_parse_tree_gently()
 + pack-bitmap-write: use repo_parse_tree()
 + delta-islands: use repo_parse_tree()
 + bloom: use repo_parse_tree()
 + add-interactive: use repo_parse_tree_indirect()
 + tree: add repo_parse_tree*()
 + environment: move access to core.maxTreeDepth into repo settings

 Remove implicit reliance on the_repository global in the APIs
 around tree objects and make it explicit which repository to work
 in.

 Will merge to 'master'.
 source: <20260109213021.2546-1-l.s.r@web.de>


* cs/rebased-subtree-split (2026-01-09) 1 commit
  (merged to 'next' on 2026-01-13 at b213ccc8c1)
 + contrib/subtree: detect rewritten subtree commits

 The split command in "git subtree" (in contrib/) has been taught to
 deal better with rebased history.

 Will merge to 'master'.
 source: <20260110011811.788219-1-ask+git@howdoi.land>


* sp/shallow-deepen-relative-fix (2026-01-16) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Comments?
 source: <pull.2121.v4.git.git.1768602661.gitgitgadget@gmail.com>


* kt/http-backend-errors (2026-01-11) 1 commit
  (merged to 'next' on 2026-01-13 at 35d72c8eb9)
 + http-backend: write newlines to stderr when responding with errors

 Some error messages from the http transport layer lacked the
 terminating newline, which has been corrected.

 Will merge to 'master'.
 source: <20260112014508.17248-1-kj@kjtsanaktsidis.id.au>


* ps/t1410-cleanup (2026-01-11) 1 commit
  (merged to 'next' on 2026-01-13 at 51b666d16e)
 + t1410: use test helpers in reflog rewind test

 Test clean-up.

 Will merge to 'master'.
 source: <20260111191525.17087-1-pushkarkumarsingh1970@gmail.com>


* dd/t5403-modernise (2026-01-12) 2 commits
 - t5403: use test_cmp for post-checkout argument checks
 - t5403: introduce check_post_checkout helper function

 Test clean-up.

 Will merge to 'next'?
 source: <20260112163643.231-3-deveshigurgaon@gmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 - SQUASH??? cocci
 - xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 - xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 - xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 - xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 - xdiff: cleanup xdl_trim_ends()
 - xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 - xdiff: let patience and histogram benefit from xdl_trim_ends()
 - xdiff: don't waste time guessing the number of lines
 - xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 - ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Comments?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-13) 2 commits
 - status: show comparison with push remote tracking branch
 - refactor format_branch_comparison in preparation

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Will merge to 'next'?
 source: <pull.2138.v25.git.git.1768306316.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-01-13) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1768318762.git.belkid98@gmail.com>


* aa/add-p-previous-decisions (2026-01-08) 1 commit
 - add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Will merge to 'next'?
 source: <aV_IGCld5T_dBxTs@Adekunles-MacBook-Air.local>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* en/fsck-snapshot-ref-state (2026-01-09) 1 commit
  (merged to 'next' on 2026-01-12 at d5dff1bba4)
 + fsck: snapshot default refs before object walk

 "git fsck" used inconsistent set of refs to show a confused
 warning, which has been corrected.

 Will merge to 'master'.
 source: <pull.2026.v3.git.1767980953134.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* js/symlink-windows (2026-01-09) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Expecting a reroll.
 cf. <5fe64b77-d10b-b66e-8622-14bec1e96f4a@gmx.de>
 cf. <14388349-d1b5-fc8f-b6c7-4a7b43e64494@gmx.de>
 cf. <704e952d-7924-00ce-b8b0-ad355e659335@gmx.de>
 source: <pull.2018.v2.git.1767989115.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-07) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Comments?
 source: <pull.2011.v4.git.1767804355831.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2026-01-12) 8 commits
  (merged to 'next' on 2026-01-14 at e84be1a7bc)
 + packfile: drop repository parameter from `packed_object_info()`
 + packfile: skip unpacking object header for disk size requests
 + packfile: disentangle return value of `packed_object_info()`
 + packfile: always populate pack-specific info when reading object info
 + packfile: extend `is_delta` field to allow for "unknown" state
 + packfile: always declare object info to be OI_PACKED
 + object-file: always set OI_LOOSE when reading object info
 + Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements
 (this branch is used by ps/odb-for-each-object.)

 The object-info API has been cleaned up.

 Will merge to 'master'.
 source: <20260112-b4-pks-odb-read-object-info-improvements-v5-0-9a6124e95bf2@pks.im>


* tb/macos-iconv-workarounds (2026-01-12) 2 commits
  (merged to 'next' on 2026-01-13 at f2e51d72b8)
 + utf8.c: enable workaround for iconv under macOS 14/15
 + utf8.c: prepare workaround for iconv under macOS 14/15

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 Will merge to 'master'.
 source: <20260112162553.774051-1-tboegi@web.de>


* js/prep-symlink-windows (2026-01-09) 6 commits
  (merged to 'next' on 2026-01-14 at d05f3a8ea5)
 + trim_last_path_component(): avoid hard-coding the directory separator
 + strbuf_readlink(): support link targets that exceed 2*PATH_MAX
 + strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 + init: do parse _all_ core.* settings early
 + mingw: do resolve symlinks in `getcwd()`
 + Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Will merge to 'master'.
 source: <pull.2017.v2.git.1767989109.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2026-01-14) 1 commit
 - remote-curl: use auth for probe_rpc() requests too

 HTTP transport failed to authenticate in some code pahts, which has
 been corrected.

 Will merge to 'next'?
 source: <20260114163619.614297-2-aplattner@nvidia.com>


* ps/packfile-store-in-odb-source (2026-01-09) 12 commits
  (merged to 'next' on 2026-01-14 at f375c8e347)
 + packfile: move MIDX into packfile store
 + packfile: refactor `find_pack_entry()` to work on the packfile store
 + packfile: inline `find_kept_pack_entry()`
 + packfile: only prepare owning store in `packfile_store_prepare()`
 + packfile: only prepare owning store in `packfile_store_get_packs()`
 + packfile: move packfile store into object source
 + packfile: refactor misleading code when unusing pack windows
 + packfile: refactor kept-pack cache to work with packfile stores
 + packfile: pass source to `prepare_pack()`
 + packfile: create store via its owning source
 + Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 + Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch is used by ps/odb-for-each-object.)

 The packfile_store data structure is moved from object store to odb
 source.

 Will merge to 'master'.
 source: <20260109-b4-pks-pack-store-via-source-v3-0-877fd7b7bf81@pks.im>


* lo/repo-info-keys (2026-01-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Expecting a (hopefully small and final) reroll?
 cf. <12814829.O9o76ZdvQC@piment-oiseau>
 source: <20251207190532.67107-1-lucasseikioshiro@gmail.com>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merge to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2
 (this branch uses tb/midx-write-corrupt-checksum-fix.)

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Any progress on CI breakages???
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* je/doc-reset (2026-01-05) 4 commits
  (merged to 'next' on 2026-01-12 at 44b4f99803)
 + doc: git-reset: clarify `git reset <pathspec>`
 + doc: git-reset: clarify `git reset [mode]`
 + doc: git-reset: clarify intro
 + doc: git-reset: reorder the forms

 Documentation updates.

 Will merge to 'master'.
 source: <cover.1767649692.git.ben.knoble+github@gmail.com>


* ps/history (2026-01-13) 9 commits
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - wt-status: provide function to expose status for trees
 - replay: support updating detached HEAD
 - replay: support empty commit ranges
 - replay: small set of cleanups
 - builtin/replay: move core logic into "libgit.a"
 - builtin/replay: extract core logic to replay revisions
 - Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Will merge to 'next'?
 cf. <aWpoMcgwsfRCCrr4@szeder.dev>
 source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>


* ar/submodule-gitdir-tweak (2026-01-12) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will merge to 'next'?
 source: <20260112184632.1334495-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 . completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 18%]

* Re: What's cooking in git.git (Jan 2026, #05)
  @ 2026-01-16 15:23 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-16 15:23 UTC (permalink / raw)
  To: Elijah Newren; +Cc: git

Elijah Newren <newren@gmail.com> writes:

> On Thu, Jan 15, 2026 at 10:59 AM Junio C Hamano <gitster@pobox.com> wrote:
>
>> * ac/sparse-checkout-string-list-cleanup (2026-01-15) 1 commit
>>  - sparse-checkout: optimize string_list construction
>>
>>  Code clean-up.
>>
>>  Will merge to 'next'.
>> ...
>
> Shouldn't it restore the string_list_remove_duplicates() calls first?
> (See 20260115200903.GB1053259@coredump.intra.peff.net and
> fc14e0e5-93bc-4805-a20d-d2aa4eb87ddb@web.de )

Yes, my mistake.  The draft for the next issue of "What's cooking"
report has it corrected, almost immediately after I sent out the one
you are responding to.  Thanks for confirming.

>> * pw/replay-drop-empty (2025-12-18) 2 commits
>>  - replay: drop commits that become empty
>>  - Merge branch 'ps/history' into pw/replay-drop-empty
>>  (this branch uses ps/history.)
>>
>>  "git replay" is taught to drop commits that become empty (not the
>>  ones that are empty in the original).
>>
>>  On hold, until the base topic gains consensus and stabilizes.
>>  source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>
>
> I think the base topic has done so now (as I'll note below), so this
> should be ready to advance.

THis has been blocked by ps/history for way too long.  I think we
can finally move them now, which means they are good topics for the
next cycle.

>> * ps/history (2026-01-13) 9 commits
>>  - builtin/history: implement "reword" subcommand
>>  - builtin: add new "history" command
>>  - wt-status: provide function to expose status for trees
>>  - replay: support updating detached HEAD
>>  - replay: support empty commit ranges
>>  - replay: small set of cleanups
>>  - builtin/replay: move core logic into "libgit.a"
>>  - builtin/replay: extract core logic to replay revisions
>>  - Merge branch 'kh/replay-invalid-onto-advance' into ps/history
>>  (this branch is used by pw/replay-drop-empty.)
>>
>>  "git history" history rewriting UI.
>>
>>  Will merge to 'next'?
>>  source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>
>
> Yes, I think it's ready.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jan 2026, #05)
@ 2026-01-15 18:44 18% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-01-15 18:44 UTC (permalink / raw)
  To: git

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

Git 2.53-rc0 has been tagged, but do not read too much into it.  The
fallout from the run-command-hook topic hasn't been sorted out yet,
which hopefully should happen before -rc1.

Many topics that expected but haven't seen a reroll for quite some
time, and/or haven't collected visible support, are moved to the
[Stalled] category to be discarded; of course it is perfectly OK to
breeze new life into them, once the pre-release freeze is over, but
I'd prefer not to distract ourselves during the pre-release period
with them.

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

* kh/replay-invalid-onto-advance (2026-01-05) 6 commits
  (merged to 'next' on 2026-01-08 at 1024748f91)
 + t3650: add more regression tests for failure conditions
 + replay: die if we cannot parse object
 + replay: improve code comment and die message
 + replay: die descriptively when invalid commit-ish is given
 + replay: find *onto only after testing for ref name
 + replay: remove dead code and rearrange
 (this branch is used by ps/history and pw/replay-drop-empty.)

 Improve the error message when a bad argument is given to the
 `--onto` option of "git replay".  Test coverage of "git replay" has
 been improved.
 cf. <CABPp-BGFNyKkpcWWksqvNqyXspMqfywbYyyhuSUaL41YHNHoNg@mail.gmail.com>
 source: <V3_CV_replay_die_descr.1a4@msgid.xyz>


* ps/clar-integers (2025-12-06) 3 commits
  (merged to 'next' on 2026-01-08 at 9f9674ac20)
 + gitattributes: disable blank-at-eof errors for clar test expectations
 + t/unit-tests: demonstrate use of integer comparison assertions
 + t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* ps/odb-misc-fixes (2026-01-06) 3 commits
  (merged to 'next' on 2026-01-08 at 850d35a76d)
 + odb: properly close sources before freeing them
 + builtin/gc: fix condition for whether to write commit graphs
 + Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.
 source: <20260106-odb-related-fixes-v3-0-7ac157207b20@pks.im>


* pt/t7800-difftool-test-racefix (2026-01-03) 1 commit
  (merged to 'next' on 2026-01-06 at 572d775bca)
 + t7800: fix racy "difftool --dir-diff syncs worktree" test

 Test fixup.
 source: <pull.2149.v3.git.git.1767472809897.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Will discard. Has been waiting for a reroll for too long.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Will discard. Has been waiting for a reroll for too long.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Will discard. Has been waiting for further comments for too long.
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Will discard. Has been waiting for a reroll for too long.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Will discard. Has been waiting for further comments for too long.
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Will discard. Has been waiting for a reroll for too long.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Will discard. Has been waiting for a reroll for too long.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Will discard. Has been waiting for further comments for too long.
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Will discard. Has been waiting for further comments for too long.
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Will discard. Has been waiting for further comments for too long.
 cf. <aS-D5lD2Kk6BHNIl@fruit.crustytoothpaste.net>
 source: <pull.1853.v2.git.1765981422.gitgitgadget@gmail.com>

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

* tc/last-modified-not-a-tree (2026-01-14) 3 commits
 - last-modified: verify revision argument is a commit-ish
 - last-modified: remove double error message
 - last-modified: rewrite error message when more than one revision given

 Giving "git last-modified" a tree (not a commit-ish) died an
 uncontrolled death, which has been corrected.

 Expecting a reroll?
 cf. <aWd2VcX7gERTDK2t@pks.im>
 cf. <bc0db8d5-3c5f-4dd4-9c35-ccb02a6bf5c9@app.fastmail.com>
 source: <20260114-toon-last-modified-tree-v2-0-ba3b1860898f@iotcl.com>


* sp/myfirstcontribution-include-update (2026-01-12) 1 commit
 - doc: MyFirstContribution: fix missing dependencies and clarify build steps

 Doc update.

 Will merge to 'next'?
 source: <20260112195625.391821-1-shreyanshpaliwalcmsmn@gmail.com>


* ar/run-command-hook-pre-push-fix (2026-01-14) 2 commits
 - hook: make ungroup opt-out instead of opt-in
 - hook: allow hooks to disable stdout_to_stderr
 (this branch uses ar/run-command-hook.)

 Recent update to use run-hooks API broke pre-push hook, which has
 been corrected.

 Will merge to 'next' and then to 'master'.
 source: <20260114185731.2381550-3-adrian.ratiu@collabora.com>


* cs/add-skip-submodule-ignore-all (2026-01-13) 5 commits
 - Documentation: update add --force option + ignore=all config
 - tests: fix existing tests when add an ignore=all submodule
 - tests: t2206-add-submodule-ignored: ignore=all and add --force tests
 - read-cache: submodule add need --force given ignore=all configuration
 - read-cache: update add_files_to_cache take param ignored_too

 "git add <submodule>" has been taught to honor
 submodule.<name>.ignore that is set to "all" (and requires "git add
 -f" to override it).

 Expecting a reroll?
 cf. <B94F0800-06B5-47BC-8C22-AAE1882E5B9C@gmail.com>
 source: <37fe7956e089394bb1d75f4c8af4a3347b204803.1768376879.git.gitgitgadget@gmail.com>


* kn/ref-batch-output-error-reporting-fix (2026-01-14) 6 commits
 - receive-pack: utilize rejected ref error details
 - fetch: utilize rejected ref error details
 - update-ref: utilize rejected error details if available
 - refs: add rejection detail to the callback function
 - refs: attach rejection details to updates
 - refs: remove unused header

 A handful of code paths that started using batched ref update API
 (after Git 2.51 or so) lost detailed error output, which have been
 corrected.

 Expecting a reroll?
 cf. <20260114175558.GG885771@coredump.intra.peff.net>
 source: <20260114-633-regression-lost-diagnostic-message-when-pushing-non-commit-objects-to-refs-heads-v1-6-f5f8b173c501@gmail.com>


* ps/geometric-repacking-with-promisor-remotes (2026-01-05) 5 commits
  (merged to 'next' on 2026-01-15 at a5a24c2f14)
 + builtin/repack: handle promisor packs with geometric repacking
 + repack-promisor: extract function to remove redundant packs
 + repack-promisor: extract function to finalize repacking
 + repack-geometry: extract function to compute repacking split
 + builtin/pack-objects: exclude promisor objects with "--stdin-packs"

 "git repack --geometric" did not work with promisor packs, which
 has been corrected.

 Will merge to 'master'.
 source: <20260105-pks-geometric-repack-with-promisors-v1-0-c4660573437e@pks.im>


* tb/midx-write-corrupt-checksum-fix (2026-01-12) 3 commits
  (merged to 'next' on 2026-01-15 at c387b3f023)
 + midx-write.c: assume checksum-invalid MIDXs require an update
 + t/t5319-multi-pack-index.sh: drop early 'test_done'
 + Merge branch 'ps/repack-avoid-noop-midx-rewrite' into tb/midx-write-corrupt-checksum-fix
 (this branch is used by tb/incremental-midx-part-3.2.)

 The logic that avoids reusing MIDX files with a wrong checksum was
 broken, which has been corrected.

 Will merge to 'master'.
 source: <cover.1768261435.git.me@ttaylorr.com>


* ac/sparse-checkout-string-list-cleanup (2026-01-15) 1 commit
 - sparse-checkout: optimize string_list construction

 Code clean-up.

 Will merge to 'next'.
 source: <20260115130935.93526-1-amishhhaaaa@gmail.com>


* ps/commit-list-functions-renamed (2026-01-15) 3 commits
 - commit: rename `free_commit_list()` to conform to coding guidelines
 - commit: rename `reverse_commit_list()` to conform to coding guidelines
 - commit: rename `copy_commit_list()` to conform to coding guidelines

 Rename three functions around the commit_list data structure.

 Comments?
 source: <20260115-pks-commit-list-coding-guidelines-v1-0-c58868dbf412@pks.im>


* ps/config-doc-get-urlmatch-fix (2026-01-15) 1 commit
 - Documentation/config: fix replacement for --get-urlmatch

 Docfix.

 Will merge to 'next'.
 source: <20260115110832.15315-1-pushkarkumarsingh1970@gmail.com>


* ps/odb-for-each-object (2026-01-15) 16 commits
 - odb: drop unused `for_each_{loose,packed}_object()` functions
 - reachable: convert to use `odb_for_each_object()`
 - builtin/pack-objects: use `packfile_store_for_each_object()`
 - odb: introduce mtime fields for object info requests
 - treewide: drop uses of `for_each_{loose,packed}_object()`
 - treewide: enumerate promisor objects via `odb_for_each_object()`
 - builtin/fsck: refactor to use `odb_for_each_object()`
 - odb: introduce `odb_for_each_object()`
 - packfile: introduce function to iterate through objects
 - packfile: extract function to iterate through objects of a store
 - object-file: introduce function to iterate through objects
 - object-file: extract function to read object info from path
 - odb: fix flags parameter to be unsigned
 - odb: rename `FOR_EACH_OBJECT_*` flags
 - Merge branch 'ps/packfile-store-in-odb-source' into ps/odb-for-each-object
 - Merge branch 'ps/read-object-info-improvements' into ps/odb-for-each-object
 (this branch uses ps/packfile-store-in-odb-source and ps/read-object-info-improvements.)

 Revamp object enumeration API around odb.

 Comments?
 source: <20260115-pks-odb-for-each-object-v1-0-5418a91d5d99@pks.im>


* ps/validate-prefix-in-subtree-split (2026-01-15) 1 commit
 - subtree: validate --prefix against commit in split

 "git subtree split --prefix=P <commit>" now checks the prefix P
 against the tree of the (potentially quite different from the
 current working tree) given commit.

 Expecting a reroll?
 source: <20260115122652.18673-2-pushkarkumarsingh1970@gmail.com>

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

* bc/doc-stash-import-export (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-10 at 48f26103bc)
 + gitfaq: document using stash import/export to sync working tree

 Update a FAQ entry on synching two separate repositories using the
 "git stash export/import" recently introduced.

 Will merge to 'master'.
 source: <20260109014608.42773-1-sandals@crustytoothpaste.net>


* ds/builtin-doc-update (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-10 at a98a468cf0)
 + builtin.h: update documentation

 Update in-code comment doc to match the current API.

 Will merge to 'master'.
 source: <pull.2028.git.1767929941577.gitgitgadget@gmail.com>


* kh/doc-patch-id (2026-01-07) 6 commits
  (merged to 'next' on 2026-01-10 at 27a1d947d1)
 + doc: patch-id: --verbatim locks in --stable
 + doc: patch-id: spell out the git-diff-tree(1) form
 + doc: patch-id: use definite article for the result
 + patch-id: use “patch ID” throughout
 + doc: patch-id: capitalize Git version
 + doc: patch-id: don’t use semicolon between bullet points

 "git patch-id" documentation updates.

 Will merge to 'master'.
 source: <CV_doc_patch-id_3.1ab@msgid.xyz>


* kj/t7101-modernize (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-10 at c33f8ae0bb)
 + t7101: modernize test path checks

 Test update.

 Will merge to 'master'.
 source: <20260109032027.68680-1-jayatheerthkulkarni2005@gmail.com>


* ar/run-command-hook (2026-01-09) 1 commit
  (merged to 'next' on 2026-01-10 at 236f60e30d)
 + hook: check for NULL pointer before deref
 (this branch is used by ar/run-command-hook-pre-push-fix.)

 Fix-up a topic that has recently graduated to 'master'.

 Will merge to 'master'.
 source: <20260109181912.689409-1-adrian.ratiu@collabora.com>


* ps/ref-consistency-checks (2026-01-12) 17 commits
  (merged to 'next' on 2026-01-13 at ba6c9deadb)
 + builtin/fsck: drop `fsck_head_link()`
 + builtin/fsck: move generic HEAD check into `refs_fsck()`
 + builtin/fsck: move generic object ID checks into `refs_fsck()`
 + refs/reftable: introduce generic checks for refs
 + refs/reftable: fix consistency checks with worktrees
 + refs/reftable: extract function to retrieve backend for worktree
 + refs/reftable: adapt includes to become consistent
 + refs/files: introduce function to perform normal ref checks
 + refs/files: extract generic symref target checks
 + fsck: drop unused fields from `struct fsck_ref_report`
 + refs/files: perform consistency checks for root refs
 + refs/files: improve error handling when verifying symrefs
 + refs/files: extract function to check single ref
 + refs/files: remove useless indirection
 + refs/files: remove `refs_check_dir` parameter
 + refs/files: move fsck functions into global scope
 + refs/files: simplify iterating through root refs

 Update code paths that check data integrity around refs subsystem.

 Will merge to 'master'.
 cf. <CAOLa=ZShPP3BPXa=YnC-vuX4zF=pUTFdUidZwOdna8bfVTNM9w@mail.gmail.com>
 source: <20260112-pks-refs-verify-fixes-v2-0-2e9e453bd6c3@pks.im>


* rs/tree-wo-the-repository (2026-01-09) 10 commits
 - cocci: convert parse_tree functions to repo_ variants
 - tree: stop using the_repository
 - tree: use repo_parse_tree()
 - path-walk: use repo_parse_tree_gently()
 - pack-bitmap-write: use repo_parse_tree()
 - delta-islands: use repo_parse_tree()
 - bloom: use repo_parse_tree()
 - add-interactive: use repo_parse_tree_indirect()
 - tree: add repo_parse_tree*()
 - environment: move access to core.maxTreeDepth into repo settings

 Remove implicit reliance on the_repository global in the APIs
 around tree objects and make it explicit which repository to work
 in.

 Comments?
 cf. <aWS9JLb3UyxOwg9Z@pks.im>
 source: <20260109213021.2546-1-l.s.r@web.de>


* cs/rebased-subtree-split (2026-01-09) 1 commit
  (merged to 'next' on 2026-01-13 at b213ccc8c1)
 + contrib/subtree: detect rewritten subtree commits

 The split command in "git subtree" (in contrib/) has been taught to
 deal better with rebased history.

 Will merge to 'master'.
 source: <20260110011811.788219-1-ask+git@howdoi.land>


* sp/shallow-deepen-relative-fix (2026-01-09) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Expecting a reroll?
 cf. <11b951ab-b624-4ab8-b7b1-fe41a40c9d0e@app.fastmail.com>
 cf. <f021269b-c89c-41c8-aa08-2ec2443ac7e8@app.fastmail.com>
 source: <pull.2121.v2.git.git.1767997426.gitgitgadget@gmail.com>


* kt/http-backend-errors (2026-01-11) 1 commit
  (merged to 'next' on 2026-01-13 at 35d72c8eb9)
 + http-backend: write newlines to stderr when responding with errors

 Some error messages from the http transport layer lacked the
 terminating newline, which has been corrected.

 Will merge to 'master'.
 source: <20260112014508.17248-1-kj@kjtsanaktsidis.id.au>


* ps/t1410-cleanup (2026-01-11) 1 commit
  (merged to 'next' on 2026-01-13 at 51b666d16e)
 + t1410: use test helpers in reflog rewind test

 Test clean-up.

 Will merge to 'master'.
 source: <20260111191525.17087-1-pushkarkumarsingh1970@gmail.com>


* dd/t5403-modernise (2026-01-12) 2 commits
 - t5403: use test_cmp for post-checkout argument checks
 - t5403: introduce check_post_checkout helper function

 Test clean-up.

 Will merge to 'next'?
 source: <20260112163643.231-3-deveshigurgaon@gmail.com>


* ml/doc-blame-markup (2026-01-08) 2 commits
  (merged to 'next' on 2026-01-10 at 1f87b77810)
 + doc: git-blame: convert to new doc format
 + doc: blame-options: convert to new doc format

 Doc mark-up update.

 Will merge to 'master'.
 cf. <2813520.mvXUDI8C0e@piment-oiseau>
 source: <20260108153039.658217-1-git@michael.lyo.nz>


* ac/t1420-use-more-direct-check (2026-01-06) 1 commit
  (merged to 'next' on 2026-01-10 at 6bccdd0e04)
 + t1420: modernize the lost-found test

 Test update.

 Will merge to 'master'.
 source: <20260106132658.798706-1-andchi@fastmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* jk/cat-file-avoid-bitmap-when-unneeded (2026-01-06) 1 commit
  (merged to 'next' on 2026-01-10 at 5e3f0240f7)
 + cat-file: only use bitmaps when filtering

 Fix for a performance regression in "git cat-file".

 Will merge to 'master'.
 cf. <aV4Xa9ceY4ahYj2m@pks.im>
 source: <20260106102558.GA68914@coredump.intra.peff.net>


* jk/t-perf-fixes (2026-01-06) 2 commits
  (merged to 'next' on 2026-01-10 at 9a633e87df)
 + t/perf/run: preserve GIT_PERF_* from environment
 + t/perf/perf-lib: fix assignment of TEST_OUTPUT_DIRECTORY

 Perf-test fixes.

 Will merge to 'master'.
 source: <20260106101043.GA3723319@coredump.intra.peff.net>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 - SQUASH??? cocci
 - xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 - xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 - xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 - xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 - xdiff: cleanup xdl_trim_ends()
 - xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 - xdiff: let patience and histogram benefit from xdl_trim_ends()
 - xdiff: don't waste time guessing the number of lines
 - xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 - ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Comments?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-13) 2 commits
 - status: show comparison with push remote tracking branch
 - refactor format_branch_comparison in preparation

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Will merge to 'next'?
 source: <pull.2138.v25.git.git.1768306316.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-01-13) 3 commits
 - environment: move "branch.autoSetupMerge" into `struct repo_config_values`
 - environment: environment: stop using core.sparseCheckout globally
 - environment: stop storing `core.attributesFile` globally

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <cover.1768318762.git.belkid98@gmail.com>


* aa/add-p-previous-decisions (2026-01-08) 1 commit
 - add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Will merge to 'next'?
 source: <aV_IGCld5T_dBxTs@Adekunles-MacBook-Air.local>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* en/fsck-snapshot-ref-state (2026-01-09) 1 commit
  (merged to 'next' on 2026-01-12 at d5dff1bba4)
 + fsck: snapshot default refs before object walk

 "git fsck" used inconsistent set of refs to show a confused
 warning, which has been corrected.

 Will merge to 'master'.
 source: <pull.2026.v3.git.1767980953134.gitgitgadget@gmail.com>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* js/symlink-windows (2026-01-09) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Expecting a reroll.
 cf. <5fe64b77-d10b-b66e-8622-14bec1e96f4a@gmx.de>
 cf. <14388349-d1b5-fc8f-b6c7-4a7b43e64494@gmx.de>
 cf. <704e952d-7924-00ce-b8b0-ad355e659335@gmx.de>
 source: <pull.2018.v2.git.1767989115.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-07) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Comments?
 source: <pull.2011.v4.git.1767804355831.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2026-01-12) 8 commits
  (merged to 'next' on 2026-01-14 at e84be1a7bc)
 + packfile: drop repository parameter from `packed_object_info()`
 + packfile: skip unpacking object header for disk size requests
 + packfile: disentangle return value of `packed_object_info()`
 + packfile: always populate pack-specific info when reading object info
 + packfile: extend `is_delta` field to allow for "unknown" state
 + packfile: always declare object info to be OI_PACKED
 + object-file: always set OI_LOOSE when reading object info
 + Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements
 (this branch is used by ps/odb-for-each-object.)

 The object-info API has been cleaned up.

 Will merge to 'master'.
 source: <20260112-b4-pks-odb-read-object-info-improvements-v5-0-9a6124e95bf2@pks.im>


* tb/macos-iconv-workarounds (2026-01-12) 2 commits
  (merged to 'next' on 2026-01-13 at f2e51d72b8)
 + utf8.c: enable workaround for iconv under macOS 14/15
 + utf8.c: prepare workaround for iconv under macOS 14/15

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 Will merge to 'master'.
 source: <20260112162553.774051-1-tboegi@web.de>


* js/prep-symlink-windows (2026-01-09) 6 commits
  (merged to 'next' on 2026-01-14 at d05f3a8ea5)
 + trim_last_path_component(): avoid hard-coding the directory separator
 + strbuf_readlink(): support link targets that exceed 2*PATH_MAX
 + strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 + init: do parse _all_ core.* settings early
 + mingw: do resolve symlinks in `getcwd()`
 + Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Will merge to 'master'.
 source: <pull.2017.v2.git.1767989109.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2026-01-14) 1 commit
 - remote-curl: use auth for probe_rpc() requests too

 HTTP transport failed to authenticate in some code pahts, which has
 been corrected.

 Will merge to 'next'?
 source: <20260114163619.614297-2-aplattner@nvidia.com>


* ps/packfile-store-in-odb-source (2026-01-09) 12 commits
  (merged to 'next' on 2026-01-14 at f375c8e347)
 + packfile: move MIDX into packfile store
 + packfile: refactor `find_pack_entry()` to work on the packfile store
 + packfile: inline `find_kept_pack_entry()`
 + packfile: only prepare owning store in `packfile_store_prepare()`
 + packfile: only prepare owning store in `packfile_store_get_packs()`
 + packfile: move packfile store into object source
 + packfile: refactor misleading code when unusing pack windows
 + packfile: refactor kept-pack cache to work with packfile stores
 + packfile: pass source to `prepare_pack()`
 + packfile: create store via its owning source
 + Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 + Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch is used by ps/odb-for-each-object.)

 The packfile_store data structure is moved from object store to odb
 source.

 Will merge to 'master'.
 source: <20260109-b4-pks-pack-store-via-source-v3-0-877fd7b7bf81@pks.im>


* lo/repo-info-keys (2026-01-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Expecting a (hopefully small and final) reroll?
 cf. <12814829.O9o76ZdvQC@piment-oiseau>
 source: <20251207190532.67107-1-lucasseikioshiro@gmail.com>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.2 (2026-01-14) 19 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: introduce `midx_get_checksum_hex()`
 - midx: rename `get_midx_checksum()` to `midx_get_checksum_hash()`
 - midx: mark `get_midx_checksum()` arguments as const
 - Merge branch 'tb/midx-write-corrupt-checksum-fix' into tb/incremental-midx-part-3.2
 (this branch uses tb/midx-write-corrupt-checksum-fix.)

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1768420450.git.me@ttaylorr.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* je/doc-reset (2026-01-05) 4 commits
  (merged to 'next' on 2026-01-12 at 44b4f99803)
 + doc: git-reset: clarify `git reset <pathspec>`
 + doc: git-reset: clarify `git reset [mode]`
 + doc: git-reset: clarify intro
 + doc: git-reset: reorder the forms

 Documentation updates.

 Will merge to 'master'.
 source: <cover.1767649692.git.ben.knoble+github@gmail.com>


* ps/history (2026-01-13) 9 commits
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - wt-status: provide function to expose status for trees
 - replay: support updating detached HEAD
 - replay: support empty commit ranges
 - replay: small set of cleanups
 - builtin/replay: move core logic into "libgit.a"
 - builtin/replay: extract core logic to replay revisions
 - Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Will merge to 'next'?
 source: <20260113-b4-pks-history-builtin-v11-0-e74ebfa2652d@pks.im>


* ar/submodule-gitdir-tweak (2026-01-12) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will merge to 'next'?
 source: <20260112184632.1334495-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 18%]

* Re: What's cooking in git.git (Jan 2026, #04)
  @ 2026-01-14 14:26 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-14 14:26 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

> On Tue, Jan 13, 2026 at 12:10:13PM -0800, Junio C Hamano wrote:
>> * ps/read-object-info-improvements (2026-01-12) 8 commits
>>  - packfile: drop repository parameter from `packed_object_info()`
>>  - packfile: skip unpacking object header for disk size requests
>>  - packfile: disentangle return value of `packed_object_info()`
>>  - packfile: always populate pack-specific info when reading object info
>>  - packfile: extend `is_delta` field to allow for "unknown" state
>>  - packfile: always declare object info to be OI_PACKED
>>  - object-file: always set OI_LOOSE when reading object info
>>  - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements
>> 
>>  The object-info API has been cleaned up.
>> 
>>  Comments?
>>  source: <20260112-b4-pks-odb-read-object-info-improvements-v5-0-9a6124e95bf2@pks.im>
>
> I think this topic should be ready by now. The last iteration only added
> another test that catches a bug we recently started to hit in production
> systems, and the previous iterations all received reviews.
>
> I can try to loop in another set of reviewers though if you prefer.

For a topic like this with multiple iterations, I always revisit the
thread overview

https://lore.kernel.org/git/20260112-b4-pks-odb-read-object-info-improvements-v5-0-9a6124e95bf2@pks.im/

at lore, but it is hard to judge quickly if we have reached the
point of diminishing returns when the last few rounds got almost no
responses.

> I also noticed that the patch series at [1] is not in "seen" yet. Is
> that intentional or merely an oversight?
>
> Thanks!
>
> Patrick
>
> [1]: <20260105-pks-geometric-repack-with-promisors-v1-0-c4660573437e@pks.im>

It was more like "this topic saw a few responses, one saying the
thing is confusing, another saying the series is good up to one
point without mentioning anything about the later steps. perhaps it
is time to see an updated series, in which case my time is better
spent on other topics first".

Will take a look at them later today.  Thanks for pinging.



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Jan 2026, #04)
  2026-01-13 20:10 21% What's cooking in git.git (Jan 2026, #04) Junio C Hamano
@ 2026-01-14  0:27 99% ` Junio C Hamano
    1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-14  0:27 UTC (permalink / raw)
  To: git

The following topics have been merged to 'next'.

> * ps/ref-consistency-checks (2026-01-12) 17 commits
>
>  Update code paths that check data integrity around refs subsystem.
>
>  Will merge to 'next".
>  cf. <CAOLa=ZShPP3BPXa=YnC-vuX4zF=pUTFdUidZwOdna8bfVTNM9w@mail.gmail.com>
>  source: <20260112-pks-refs-verify-fixes-v2-0-2e9e453bd6c3@pks.im>

> * cs/rebased-subtree-split (2026-01-09) 1 commit
>
>  The split command in "git subtree" (in contrib/) has been taught to
>  deal better with rebased history.
>
>  Will merge to 'next'.
>  source: <20260110011811.788219-1-ask+git@howdoi.land>

> * kt/http-backend-errors (2026-01-11) 1 commit
>
>  Some error messages from the http transport layer lacked the
>  terminating newline, which has been corrected.
>
>  Will merge to 'next'.
>  source: <20260112014508.17248-1-kj@kjtsanaktsidis.id.au>

> * ps/t1410-cleanup (2026-01-11) 1 commit
>
>  Test clean-up.
>
>  Will merge to 'next'.
>  source: <20260111191525.17087-1-pushkarkumarsingh1970@gmail.com>

> * tb/macos-iconv-workarounds (2026-01-11) 2 commits
>
>  The iconv library on macOS fails to correctly handle stateful
>  ISO/IEC 2022 encoded strings.  Work it around instead of replacing
>  it wholesale from homebrew.
>
>  Will merge to 'next'.
>  source: <20260111195151.716191-1-tboegi@web.de>


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jan 2026, #04)
@ 2026-01-13 20:10 21% Junio C Hamano
  2026-01-14  0:27 99% ` Junio C Hamano
    0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2026-01-13 20:10 UTC (permalink / raw)
  To: git

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

* ja/doc-synopsis-style-more (2025-12-20) 5 commits
  (merged to 'next' on 2026-01-05 at 20eb741139)
 + doc: convert git-remote to synopsis style
 + doc: convert git stage to use synopsis block
 + doc: convert git-status tables to AsciiDoc format
 + doc: convert git-status to synopsis style
 + doc: fix t0450-txt-doc-vs-help to select only first synopsis block

 More doc style updates.
 source: <pull.2020.git.1766258187.gitgitgadget@gmail.com>


* js/mailmap-karsten-blees (2026-01-10) 1 commit
  (merged to 'next' on 2026-01-10 at 90c69f0044)
 + .mailmap: replace Karsten Blees' default address

 Mailmap update for Karsten
 source: <pull.2029.git.1768043204134.gitgitgadget@gmail.com>


* ps/t1300-2021-use-test-path-is-helpers (2026-01-04) 1 commit
  (merged to 'next' on 2026-01-05 at c9366fe5a0)
 + t1300: use test helpers instead of `test` command

 Test updates.
 source: <20260104194812.15134-1-pushkarkumarsingh1970@gmail.com>


* rs/commit-stack (2025-12-24) 14 commits
  (merged to 'next' on 2026-01-05 at 8b44eff694)
 + commit-reach: use commit_stack
 + commit-graph: use commit_stack
 + commit: add commit_stack_grow()
 + shallow: use commit_stack
 + pack-bitmap-write: use commit_stack
 + commit: add commit_stack_init()
 + test-reach: use commit_stack
 + remote: use commit_stack for src_commits
 + remote: use commit_stack for sent_tips
 + remote: use commit_stack for local_commits
 + name-rev: use commit_stack
 + midx: use commit_stack
 + log: use commit_stack
 + revision: export commit_stack

 Code clean-up, unifying various hand-rolled "list of commit
 objects" and use the commit_stack API.
 source: <20251224170327.68049-1-l.s.r@web.de>


* sb/bundle-uri-without-uri (2025-12-19) 1 commit
  (merged to 'next' on 2026-01-05 at 62d0a58199)
 + bundle-uri: validate that bundle entries have a uri

 Diagnose invalid bundle-URI that lack the URI entry, instead of
 crashing.
 source: <pull.2134.v2.git.git.1766160106521.gitgitgadget@gmail.com>

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

* bc/doc-stash-import-export (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-10 at 48f26103bc)
 + gitfaq: document using stash import/export to sync working tree

 Update a FAQ entry on synching two separate repositories using the
 "git stash export/import" recently introduced.

 Will merge to 'master'.
 source: <20260109014608.42773-1-sandals@crustytoothpaste.net>


* ds/builtin-doc-update (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-10 at a98a468cf0)
 + builtin.h: update documentation

 Update in-code comment doc to match the current API.

 Will merge to 'master'.
 source: <pull.2028.git.1767929941577.gitgitgadget@gmail.com>


* kh/doc-patch-id (2026-01-07) 6 commits
  (merged to 'next' on 2026-01-10 at 27a1d947d1)
 + doc: patch-id: --verbatim locks in --stable
 + doc: patch-id: spell out the git-diff-tree(1) form
 + doc: patch-id: use definite article for the result
 + patch-id: use “patch ID” throughout
 + doc: patch-id: capitalize Git version
 + doc: patch-id: don’t use semicolon between bullet points

 "git patch-id" documentation updates.

 Will merge to 'master'.
 source: <CV_doc_patch-id_3.1ab@msgid.xyz>


* kj/t7101-modernize (2026-01-08) 1 commit
  (merged to 'next' on 2026-01-10 at c33f8ae0bb)
 + t7101: modernize test path checks

 Test update.

 Will merge to 'master'.
 source: <20260109032027.68680-1-jayatheerthkulkarni2005@gmail.com>


* ar/run-command-hook (2026-01-09) 1 commit
  (merged to 'next' on 2026-01-10 at 236f60e30d)
 + hook: check for NULL pointer before deref

 Fix-up a topic that has recently graduated to 'master'.

 Will merge to 'master'.
 source: <20260109181912.689409-1-adrian.ratiu@collabora.com>


* ps/ref-consistency-checks (2026-01-12) 17 commits
 - builtin/fsck: drop `fsck_head_link()`
 - builtin/fsck: move generic HEAD check into `refs_fsck()`
 - builtin/fsck: move generic object ID checks into `refs_fsck()`
 - refs/reftable: introduce generic checks for refs
 - refs/reftable: fix consistency checks with worktrees
 - refs/reftable: extract function to retrieve backend for worktree
 - refs/reftable: adapt includes to become consistent
 - refs/files: introduce function to perform normal ref checks
 - refs/files: extract generic symref target checks
 - fsck: drop unused fields from `struct fsck_ref_report`
 - refs/files: perform consistency checks for root refs
 - refs/files: improve error handling when verifying symrefs
 - refs/files: extract function to check single ref
 - refs/files: remove useless indirection
 - refs/files: remove `refs_check_dir` parameter
 - refs/files: move fsck functions into global scope
 - refs/files: simplify iterating through root refs

 Update code paths that check data integrity around refs subsystem.

 Will merge to 'next".
 cf. <CAOLa=ZShPP3BPXa=YnC-vuX4zF=pUTFdUidZwOdna8bfVTNM9w@mail.gmail.com>
 source: <20260112-pks-refs-verify-fixes-v2-0-2e9e453bd6c3@pks.im>


* rs/tree-wo-the-repository (2026-01-09) 10 commits
 - cocci: convert parse_tree functions to repo_ variants
 - tree: stop using the_repository
 - tree: use repo_parse_tree()
 - path-walk: use repo_parse_tree_gently()
 - pack-bitmap-write: use repo_parse_tree()
 - delta-islands: use repo_parse_tree()
 - bloom: use repo_parse_tree()
 - add-interactive: use repo_parse_tree_indirect()
 - tree: add repo_parse_tree*()
 - environment: move access to core.maxTreeDepth into repo settings

 Remove implicit reliance on the_repository global in the APIs
 around tree objects and make it explicit which repository to work
 in.

 Comments?
 cf. <aWS9JLb3UyxOwg9Z@pks.im>
 source: <20260109213021.2546-1-l.s.r@web.de>


* cs/rebased-subtree-split (2026-01-09) 1 commit
 - contrib/subtree: detect rewritten subtree commits

 The split command in "git subtree" (in contrib/) has been taught to
 deal better with rebased history.

 Will merge to 'next'.
 source: <20260110011811.788219-1-ask+git@howdoi.land>


* sp/shallow-deepen-relative-fix (2026-01-09) 2 commits
 - shallow: handling fetch relative-deepen
 - shallow: free local object_array allocations

 "git fetch --deepen" that tries to go beyond merged branch used to
 get confused where the updated shallow points are, which has been
 corrected.

 Will merge to 'next'?
 source: <pull.2121.v2.git.git.1767997426.gitgitgadget@gmail.com>


* kt/http-backend-errors (2026-01-11) 1 commit
 - http-backend: write newlines to stderr when responding with errors

 Some error messages from the http transport layer lacked the
 terminating newline, which has been corrected.

 Will merge to 'next'.
 source: <20260112014508.17248-1-kj@kjtsanaktsidis.id.au>


* ps/t1410-cleanup (2026-01-11) 1 commit
 - t1410: use test helpers in reflog rewind test

 Test clean-up.

 Will merge to 'next'.
 source: <20260111191525.17087-1-pushkarkumarsingh1970@gmail.com>


* dd/t5403-modernise (2026-01-11) 2 commits
 - t5403: use test_cmp for post-checkout argument checks
 - t5403:introduce check_post_checkout helper function

 Test clean-up.

 Will merge to 'next'?
 source: <20260112065301.1290-3-deveshigurgaon@gmail.com>

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

* ml/doc-blame-markup (2026-01-08) 2 commits
  (merged to 'next' on 2026-01-10 at 1f87b77810)
 + doc: git-blame: convert to new doc format
 + doc: blame-options: convert to new doc format

 Doc mark-up update.

 Will merge to 'master'.
 cf. <2813520.mvXUDI8C0e@piment-oiseau>
 source: <20260108153039.658217-1-git@michael.lyo.nz>


* ac/t1420-use-more-direct-check (2026-01-06) 1 commit
  (merged to 'next' on 2026-01-10 at 6bccdd0e04)
 + t1420: modernize the lost-found test

 Test update.

 Will merge to 'master'.
 source: <20260106132658.798706-1-andchi@fastmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* jk/cat-file-avoid-bitmap-when-unneeded (2026-01-06) 1 commit
  (merged to 'next' on 2026-01-10 at 5e3f0240f7)
 + cat-file: only use bitmaps when filtering

 Fix for a performance regression in "git cat-file".

 Will merge to 'master'.
 cf. <aV4Xa9ceY4ahYj2m@pks.im>
 source: <20260106102558.GA68914@coredump.intra.peff.net>


* jk/t-perf-fixes (2026-01-06) 2 commits
  (merged to 'next' on 2026-01-10 at 9a633e87df)
 + t/perf/run: preserve GIT_PERF_* from environment
 + t/perf/perf-lib: fix assignment of TEST_OUTPUT_DIRECTORY

 Perf-test fixes.

 Will merge to 'master'.
 source: <20260106101043.GA3723319@coredump.intra.peff.net>


* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 - SQUASH??? cocci
 - xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 - xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 - xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 - xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 - xdiff: cleanup xdl_trim_ends()
 - xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 - xdiff: let patience and histogram benefit from xdl_trim_ends()
 - xdiff: don't waste time guessing the number of lines
 - xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 - ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Comments?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-10) 2 commits
 - status: show comparison with push remote tracking branch
 - refactor format_branch_comparison in preparation

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Will merge to 'next'?
 source: <pull.2138.v22.git.git.1768074976.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-01-02) 1 commit
 - environment: move "core.attributesFile" into repo-setting

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <aVfzMsN2ouY3UBFG@ubuntu>


* aa/add-p-previous-decisions (2026-01-08) 1 commit
 - add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Will merge to 'next'?
 source: <aV_IGCld5T_dBxTs@Adekunles-MacBook-Air.local>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* pt/t7800-difftool-test-racefix (2026-01-03) 1 commit
  (merged to 'next' on 2026-01-06 at 572d775bca)
 + t7800: fix racy "difftool --dir-diff syncs worktree" test

 Test fixup.

 Will merge to 'master'.
 source: <pull.2149.v3.git.git.1767472809897.gitgitgadget@gmail.com>


* en/fsck-snapshot-ref-state (2026-01-09) 1 commit
  (merged to 'next' on 2026-01-12 at d5dff1bba4)
 + fsck: snapshot default refs before object walk

 "git fsck" used inconsistent set of refs to show a confused
 warning, which has been corrected.

 Will merge to 'master'.
 source: <pull.2026.v3.git.1767980953134.gitgitgadget@gmail.com>


* kh/replay-invalid-onto-advance (2026-01-05) 6 commits
  (merged to 'next' on 2026-01-08 at 1024748f91)
 + t3650: add more regression tests for failure conditions
 + replay: die if we cannot parse object
 + replay: improve code comment and die message
 + replay: die descriptively when invalid commit-ish is given
 + replay: find *onto only after testing for ref name
 + replay: remove dead code and rearrange
 (this branch is used by ps/history and pw/replay-drop-empty.)

 Improve the error message when a bad argument is given to the
 `--onto` option of "git replay".  Test coverage of "git replay" has
 been improved.

 Will merge to 'master'.
 cf. <CABPp-BGFNyKkpcWWksqvNqyXspMqfywbYyyhuSUaL41YHNHoNg@mail.gmail.com>
 source: <V3_CV_replay_die_descr.1a4@msgid.xyz>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* js/symlink-windows (2026-01-09) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Will merge to 'next'?
 source: <pull.2018.v2.git.1767989115.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-07) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Comments?
 source: <pull.2011.v4.git.1767804355831.gitgitgadget@gmail.com>


* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 cf. <aS-D5lD2Kk6BHNIl@fruit.crustytoothpaste.net>
 source: <pull.1853.v2.git.1765981422.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2026-01-12) 8 commits
 - packfile: drop repository parameter from `packed_object_info()`
 - packfile: skip unpacking object header for disk size requests
 - packfile: disentangle return value of `packed_object_info()`
 - packfile: always populate pack-specific info when reading object info
 - packfile: extend `is_delta` field to allow for "unknown" state
 - packfile: always declare object info to be OI_PACKED
 - object-file: always set OI_LOOSE when reading object info
 - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements

 The object-info API has been cleaned up.

 Comments?
 source: <20260112-b4-pks-odb-read-object-info-improvements-v5-0-9a6124e95bf2@pks.im>


* tb/macos-iconv-workarounds (2026-01-11) 2 commits
 - utf8.c: enable workaround for iconv under macOS 14/15
 - utf8.c: prepare workaround for iconv under macOS 14/15

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 Will merge to 'next'.
 source: <20260111195151.716191-1-tboegi@web.de>


* js/prep-symlink-windows (2026-01-09) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed 2*PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Will merge to 'next'?
 source: <pull.2017.v2.git.1767989109.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 HTTP transport failed to authenticate in some code pahts, which has
 been corrected.

 Expecting a reroll?
 cf. <aWSvJbYBWpJc-Vcc@pks.im>
 source: <20251112223722.376330-1-aplattner@nvidia.com>


* ps/packfile-store-in-odb-source (2026-01-09) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Will merge to 'next'?
 source: <20260109-b4-pks-pack-store-via-source-v3-0-877fd7b7bf81@pks.im>


* lo/repo-info-keys (2026-01-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Expecting a (hopefully small and final) reroll?
 cf. <12814829.O9o76ZdvQC@piment-oiseau>
 source: <20251207190532.67107-1-lucasseikioshiro@gmail.com>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ps/odb-misc-fixes (2026-01-06) 3 commits
  (merged to 'next' on 2026-01-08 at 850d35a76d)
 + odb: properly close sources before freeing them
 + builtin/gc: fix condition for whether to write commit graphs
 + Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Will merge to 'master'.
 source: <20260106-odb-related-fixes-v3-0-7ac157207b20@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
  (merged to 'next' on 2026-01-08 at 9f9674ac20)
 + gitattributes: disable blank-at-eof errors for clar test expectations
 + t/unit-tests: demonstrate use of integer comparison assertions
 + t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Will merge to 'master'.
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses kh/replay-invalid-onto-advance and ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* je/doc-reset (2026-01-05) 4 commits
  (merged to 'next' on 2026-01-12 at 44b4f99803)
 + doc: git-reset: clarify `git reset <pathspec>`
 + doc: git-reset: clarify `git reset [mode]`
 + doc: git-reset: clarify intro
 + doc: git-reset: reorder the forms

 Documentation updates.

 Will merge to 'master'.
 source: <cover.1767649692.git.ben.knoble+github@gmail.com>


* ps/history (2026-01-12) 9 commits
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - wt-status: provide function to expose status for trees
 - replay: support updating detached HEAD
 - replay: support empty commit ranges
 - replay: small set of cleanups
 - builtin/replay: move core logic into "libgit.a"
 - builtin/replay: extract core logic to replay revisions
 - Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty; uses kh/replay-invalid-onto-advance.)

 "git history" history rewriting UI.
 source: <20260112-b4-pks-history-builtin-v10-0-e3c6aa5b4cec@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2026-01-07) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20260107230145.517562-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 21%]

* Re: What's cooking in git.git (Jan 2026, #03)
  @ 2026-01-09 14:01 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-09 14:01 UTC (permalink / raw)
  To: Kristoffer Haugsbakk; +Cc: git

"Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> writes:

>> * kh/replay-invalid-onto-advance (2026-01-05) 6 commits
>>   (merged to 'next' on 2026-01-08 at 1024748f91)
>>  + t3650: add more regression tests for failure conditions
>>  + replay: die if we cannot parse object
>>  + replay: improve code comment and die message
>>  + replay: die descriptively when invalid commit-ish is given
>>  + replay: find *onto only after testing for ref name
>>  + replay: remove dead code and rearrange
>>  (this branch is used by ps/history and pw/replay-drop-empty.)
>>
>>  Test coverage of "git replay" has been improved.
>
> I still disagree with this summary. ;)
>
> <460f1f96-4236-4d19-bdfa-6c86bad811c5@app.fastmail.com>

Thanks for reminding.  Yes, I too disagree with it.  I knew the main
change between the original two patches will need to be updated when
I first wrote it to queue the initial version, but it certainly is
not true with the main change (split across 5 patches now).



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Jan 2026, #03)
@ 2026-01-08 11:56 23% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2026-01-08 11:56 UTC (permalink / raw)
  To: git

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

* ar/run-command-hook (2025-12-26) 11 commits
  (merged to 'next' on 2025-12-28 at 048cdffe21)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + hooks: allow callers to capture output
 + run-command: allow capturing of collated output
 + hook: allow overriding the ungroup option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.
 source: <20251226122334.16687-1-adrian.ratiu@collabora.com>


* bc/checkout-error-message-fix (2025-12-24) 1 commit
  (merged to 'next' on 2025-12-28 at d807c22e01)
 + checkout: quote invalid treeish in error message

 Message fix.
 source: <20251224203253.881129-1-sandals@crustytoothpaste.net>


* dd/t5403-modernise (2025-12-29) 1 commit
  (merged to 'next' on 2026-01-01 at d1d712e288)
 + t5403: use test_path_is_file instead of test -f

 Test micro-clean-up.
 source: <20251229185737.2328-1-deveshigurgaon@gmail.com>


* ds/diff-lazy-fetch-with-name-only-fix (2025-12-29) 1 commit
  (merged to 'next' on 2026-01-01 at ccbd34d6c9)
 + diff: avoid segfault with freed entries

 Running "git diff" with "--name-only" and other options that allows
 us not to look at the blob contents, while objects that are lazily
 fetched from a promisor remote, caused use-after-free, which has
 been corrected.
 source: <pull.2027.git.1767044697712.gitgitgadget@gmail.com>


* en/ort-recursive-d-f-conflict-fix (2025-12-29) 1 commit
  (merged to 'next' on 2026-01-01 at 883dcfc63e)
 + merge-ort: fix corner case recursive submodule/directory conflict handling

 The ort merge machinery hit an assertion failure in a history with
 criss-cross merges renamed a directory and a non-directory, which
 has been corrected.
 source: <pull.2023.git.1767033783800.gitgitgadget@gmail.com>


* rs/macos-iconv-workaround (2025-12-24) 2 commits
  (merged to 'next' on 2025-12-28 at 94ed776719)
 + macOS: use iconv from Homebrew if needed and present
 + macOS: make Homebrew use configurable

 Workaround the "iconv" shipped as part of macOS, which is broken
 handling stateful ISO/IEC 2022 encoded strings.
 source: <ce030c90-f635-42b5-82e1-814cd4c29505@web.de>


* rs/parse-config-expiry-simplify (2025-12-27) 1 commit
  (merged to 'next' on 2025-12-30 at 138de1df67)
 + config: use git_parse_int() in git_config_get_expiry_in_days()

 Code clean-up.
 source: <1bd3c7f3-fcf6-4d8e-aa38-c15e3d51ce4c@web.de>


* rs/show-branch-prio-queue (2025-12-25) 1 commit
  (merged to 'next' on 2025-12-28 at 99d21acd7b)
 + show-branch: use prio_queue

 Code clean-up.
 source: <70ed751e-fc3c-4cb4-a4fd-26094a9f622e@web.de>


* rs/tag-wo-the-repository (2025-12-28) 4 commits
  (merged to 'next' on 2026-01-01 at 3b7c52229a)
 + tag: stop using the_repository
 + tag: support arbitrary repositories in parse_tag()
 + tag: support arbitrary repositories in gpg_verify_tag()
 + tag: use algo of repo parameter in parse_tag_buffer()

 Code clean-up.
 source: <20251228181051.68724-1-l.s.r@web.de>

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

* ml/doc-blame-markup (2026-01-05) 1 commit
 - doc: git-blame: convert blame to new doc format

 Doc mark-up update.

 Expecting a reroll.
 cf. <9123496.T7Z3S40VBb@debian-mbp>
 source: <20260105230220.519303-1-git@michael.lyo.nz>


* ac/t1420-use-more-direct-check (2026-01-06) 1 commit
 - t1420: modernize the lost-found test

 Test update.

 Will merge to 'next'?
 source: <20260106132658.798706-1-andchi@fastmail.com>


* ag/http-netrc-tests (2026-01-06) 1 commit
 - t5550: add netrc tests for http 401/403

 Additional tests were introduced to see the interaction with netrc
 auth with auth failure on the http transport.

 Comments?
 source: <20260106114029.763351-1-git@ashlesh.me>


* jk/cat-file-avoid-bitmap-when-unneeded (2026-01-06) 1 commit
 - cat-file: only use bitmaps when filtering

 Fix for a performance regression in "git cat-file".

 Will merge to 'next'?
 source: <20260106102558.GA68914@coredump.intra.peff.net>


* jk/t-perf-fixes (2026-01-06) 2 commits
 - t/perf/run: preserve GIT_PERF_* from environment
 - t/perf/perf-lib: fix assignment of TEST_OUTPUT_DIRECTORY

 Perf-test fixes.

 Will merge to 'next'?
 source: <20260106101043.GA3723319@coredump.intra.peff.net>

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

* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 - SQUASH??? cocci
 - xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 - xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 - xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 - xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 - xdiff: cleanup xdl_trim_ends()
 - xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 - xdiff: let patience and histogram benefit from xdl_trim_ends()
 - xdiff: don't waste time guessing the number of lines
 - xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 - ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Comments?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-04) 2 commits
 - status: show comparison with push remote tracking branch
 - refactor format_branch_comparison in preparation

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Comments?
 source: <pull.2138.v16.git.git.1767568882.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-01-02) 1 commit
 - environment: move "core.attributesFile" into repo-setting

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <aVfzMsN2ouY3UBFG@ubuntu>


* aa/add-p-previous-decisions (2026-01-06) 1 commit
 - add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Comments?
 source: <aVz5kf6eLsMZ6WQQ@Adekunles-MacBook-Air.local>


* ps/t1300-2021-use-test-path-is-helpers (2026-01-04) 1 commit
  (merged to 'next' on 2026-01-05 at c9366fe5a0)
 + t1300: use test helpers instead of `test` command

 Test updates.

 Will merge to 'master'.
 source: <20260104194812.15134-1-pushkarkumarsingh1970@gmail.com>


* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* pt/t7800-difftool-test-racefix (2026-01-03) 1 commit
  (merged to 'next' on 2026-01-06 at 572d775bca)
 + t7800: fix racy "difftool --dir-diff syncs worktree" test

 Test fixup.

 Will merge to 'master'.
 source: <pull.2149.v3.git.git.1767472809897.gitgitgadget@gmail.com>


* en/fsck-snapshot-ref-state (2026-01-06) 1 commit
 - fsck: snapshot default refs before object walk

 "git fsck" used inconsistent set of refs to show a confused
 warning, which has been corrected.

 Will merge to 'next'?
 source: <pull.2026.v2.git.1767749366719.gitgitgadget@gmail.com>


* kh/replay-invalid-onto-advance (2026-01-05) 6 commits
  (merged to 'next' on 2026-01-08 at 1024748f91)
 + t3650: add more regression tests for failure conditions
 + replay: die if we cannot parse object
 + replay: improve code comment and die message
 + replay: die descriptively when invalid commit-ish is given
 + replay: find *onto only after testing for ref name
 + replay: remove dead code and rearrange
 (this branch is used by ps/history and pw/replay-drop-empty.)

 Test coverage of "git replay" has been improved.

 Will merge to 'master'.
 cf. <CABPp-BGFNyKkpcWWksqvNqyXspMqfywbYyyhuSUaL41YHNHoNg@mail.gmail.com>
 source: <V3_CV_replay_die_descr.1a4@msgid.xyz>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* rs/commit-stack (2025-12-24) 14 commits
  (merged to 'next' on 2026-01-05 at 8b44eff694)
 + commit-reach: use commit_stack
 + commit-graph: use commit_stack
 + commit: add commit_stack_grow()
 + shallow: use commit_stack
 + pack-bitmap-write: use commit_stack
 + commit: add commit_stack_init()
 + test-reach: use commit_stack
 + remote: use commit_stack for src_commits
 + remote: use commit_stack for sent_tips
 + remote: use commit_stack for local_commits
 + name-rev: use commit_stack
 + midx: use commit_stack
 + log: use commit_stack
 + revision: export commit_stack

 Code clean-up, unifying various hand-rolled "list of commit
 objects" and use the commit_stack API.

 Will merge to 'master'.
 source: <20251224170327.68049-1-l.s.r@web.de>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/bundle-uri-without-uri (2025-12-19) 1 commit
  (merged to 'next' on 2026-01-05 at 62d0a58199)
 + bundle-uri: validate that bundle entries have a uri

 Diagnose invalid bundle-URI that lack the URI entry, instead of
 crashing.

 Will merge to 'master'.
 source: <pull.2134.v2.git.git.1766160106521.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-more (2025-12-20) 5 commits
  (merged to 'next' on 2026-01-05 at 20eb741139)
 + doc: convert git-remote to synopsis style
 + doc: convert git stage to use synopsis block
 + doc: convert git-status tables to AsciiDoc format
 + doc: convert git-status to synopsis style
 + doc: fix t0450-txt-doc-vs-help to select only first synopsis block

 More doc style updates.

 Will merge to 'master'.
 source: <pull.2020.git.1766258187.gitgitgadget@gmail.com>


* js/symlink-windows (2025-12-17) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Expecting review responses.
 cf. <19030791-dafa-4a63-985b-9cdf423bfd1b@kdbg.org>
 source: <pull.2018.git.1765980535.gitgitgadget@gmail.com>


* pc/lockfile-pid (2026-01-07) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.

 Comments?
 source: <pull.2011.v4.git.1767804355831.gitgitgadget@gmail.com>


* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 cf. <aS-D5lD2Kk6BHNIl@fruit.crustytoothpaste.net>
 source: <pull.1853.v2.git.1765981422.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2026-01-07) 8 commits
 - packfile: drop repository parameter from `packed_object_info()`
 - packfile: skip unpacking object header for disk size requests
 - packfile: disentangle return value of `packed_object_info()`
 - packfile: always populate pack-specific info when reading object info
 - packfile: extend `is_delta` field to allow for "unknown" state
 - packfile: always declare object info to be OI_PACKED
 - object-file: always set OI_LOOSE when reading object info
 - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements

 The object-info API has been cleaned up.

 Comments?
 source: <20260107-b4-pks-odb-read-object-info-improvements-v4-0-b5d55c47082a@pks.im>


* tb/macos-iconv-workarounds (2025-12-15) 6 commits
 . config.mak.uname: activate ICONV_RESTART_RESET if needed
 . Makefile: make all darwin into config.mak.uname
 . utf8.c: prepare workaround for iconv under macOS 14/15
 . Merge branch 'rs/macos-iconv-workaround' into tb/macos-iconv-workarounds
 . config.mak.uname: use iconv from Homebrew on macOS
 . Makefile: add NO_HOMEBREW

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 RFC.
 needs to be debased from older rs/macos-iconv-workaround topic.
 source: <20251215204524.1946518-1-tboegi@web.de>


* js/prep-symlink-windows (2025-12-16) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Expecting review responses.
 cf. <xmqqcy3wh8d1.fsf@gitster.g>
 source: <pull.2017.git.1765899229.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 source: <20251112223722.376330-1-aplattner@nvidia.com>


* ps/packfile-store-in-odb-source (2025-12-17) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Will merge to 'next'.
 cf. <87zf6po3r4.fsf@iotcl.com>
 source: <20251218-b4-pks-pack-store-via-source-v2-0-62849007ce21@pks.im>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ps/odb-misc-fixes (2026-01-06) 3 commits
  (merged to 'next' on 2026-01-08 at 850d35a76d)
 + odb: properly close sources before freeing them
 + builtin/gc: fix condition for whether to write commit graphs
 + Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Will merge to 'master'.
 source: <20260106-odb-related-fixes-v3-0-7ac157207b20@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
  (merged to 'next' on 2026-01-08 at 9f9674ac20)
 + gitattributes: disable blank-at-eof errors for clar test expectations
 + t/unit-tests: demonstrate use of integer comparison assertions
 + t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Will merge to 'master'.
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* pw/replay-drop-empty (2025-12-18) 1 commit
 - replay: drop commits that become empty
 (this branch uses kh/replay-invalid-onto-advance and ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* je/doc-reset (2026-01-05) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Will merge to 'next'?
 source: <cover.1767649692.git.ben.knoble+github@gmail.com>


* ps/history (2026-01-07) 8 commits
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - wt-status: provide function to expose status for trees
 - replay: yield the object ID of the final rewritten commit
 - replay: small set of cleanups
 - builtin/replay: move core logic into "libgit.a"
 - builtin/replay: extract core logic to replay revisions
 - Merge branch 'kh/replay-invalid-onto-advance' into ps/history
 (this branch is used by pw/replay-drop-empty; uses kh/replay-invalid-onto-advance.)

 "git history" history rewriting UI.

 Comments?
 source: <20260107-b4-pks-history-builtin-v8-0-18e9779e3a26@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2026-01-07) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20260107230145.517562-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 23%]

* What's cooking in git.git (Jan 2026, #02)
@ 2026-01-05 16:36 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-05 16:36 UTC (permalink / raw)
  To: git

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]

* en/xdiff-cleanup-3 (2026-01-03) 11 commits
 - SQUASH??? cocci
 - xdiff: move xdl_cleanup_records() from xprepare.c to xdiffi.c
 - xdiff: remove dependence on xdlclassifier from xdl_cleanup_records()
 - xdiff: replace xdfile_t.dend with xdfenv_t.delta_end
 - xdiff: replace xdfile_t.dstart with xdfenv_t.delta_start
 - xdiff: cleanup xdl_trim_ends()
 - xdiff: use xdfenv_t in xdl_trim_ends() and xdl_cleanup_records()
 - xdiff: let patience and histogram benefit from xdl_trim_ends()
 - xdiff: don't waste time guessing the number of lines
 - xdiff: make classic diff explicit by creating xdl_do_classic_diff()
 - ivec: introduce the C side of ivec

 Preparation of xdiff/ codebase to work with Rust

 Comments?
 source: <pull.2156.git.git.1767379944.gitgitgadget@gmail.com>


* hn/status-compare-with-push (2026-01-04) 2 commits
 - status: show comparison with push remote tracking branch
 - refactor format_branch_comparison in preparation

 "git status" learned to show comparison between the current branch
 and its push destination as well as its upstream, when the two are
 different (i.e., triangular workflow).

 Comments?
 source: <pull.2138.v16.git.git.1767568882.gitgitgadget@gmail.com>


* ob/core-attributesfile-in-repository (2026-01-02) 1 commit
 - environment: move "core.attributesFile" into repo-setting

 The core.attributesfile is intended to be set per repository, but
 were kept track of by a single global variable in-core, which has
 been corrected by moving it to per-repository data structure.

 Comments?
 source: <aVfzMsN2ouY3UBFG@ubuntu>


* aa/add-p-previous-decisions (2026-01-04) 1 commit
 - add -p: show user's hunk decision when selecting hunks

 "git add -p" and friends notes what the current status of the hunk
 being shown is.

 Comments?
 source: <aVpI36nPuZAEchuM@Adekunles-MacBook-Air.local>


* ps/t1300-2021-use-test-path-is-helpers (2026-01-04) 1 commit
  (merged to 'next' on 2026-01-05 at c9366fe5a0)
 + t1300: use test helpers instead of `test` command

 Test updates.

 Will merge to 'master'.
 source: <20260104194812.15134-1-pushkarkumarsingh1970@gmail.com>

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

* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Comments?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* pt/t7800-difftool-test-racefix (2026-01-03) 1 commit
 - t7800: fix racy "difftool --dir-diff syncs worktree" test

 Test fixup.

 Will merge to 'next'.
 source: <pull.2149.v3.git.git.1767472809897.gitgitgadget@gmail.com>


* dd/t5403-modernise (2025-12-29) 1 commit
  (merged to 'next' on 2026-01-01 at d1d712e288)
 + t5403: use test_path_is_file instead of test -f

 Test micro-clean-up.

 Will merge to 'master'.
 source: <20251229185737.2328-1-deveshigurgaon@gmail.com>


* ds/diff-lazy-fetch-with-name-only-fix (2025-12-29) 1 commit
  (merged to 'next' on 2026-01-01 at ccbd34d6c9)
 + diff: avoid segfault with freed entries

 Running "git diff" with "--name-only" and other options that allows
 us not to look at the blob contents, while objects that are lazily
 fetched from a promisor remote, caused use-after-free, which has
 been corrected.

 Will merge to 'master'.
 source: <pull.2027.git.1767044697712.gitgitgadget@gmail.com>


* en/fsck-snapshot-ref-state (2025-12-29) 1 commit
 - fsck: snapshot default refs before object walk

 "git fsck" used inconsistent set of refs to show a confused
 warning, which has been corrected.

 Waiting for review responses.
 cf. <20260102054922.GA2580212@coredump.intra.peff.net>
 source: <pull.2026.git.1767035549378.gitgitgadget@gmail.com>


* en/ort-recursive-d-f-conflict-fix (2025-12-29) 1 commit
  (merged to 'next' on 2026-01-01 at 883dcfc63e)
 + merge-ort: fix corner case recursive submodule/directory conflict handling

 The ort merge machinery was hit an assertion failure in a history
 with criss-cross merges renamed a directory and a non-directory,
 which has been corrected.

 Will merge to 'master'.
 source: <pull.2023.git.1767033783800.gitgitgadget@gmail.com>


* rs/tag-wo-the-repository (2025-12-28) 4 commits
  (merged to 'next' on 2026-01-01 at 3b7c52229a)
 + tag: stop using the_repository
 + tag: support arbitrary repositories in parse_tag()
 + tag: support arbitrary repositories in gpg_verify_tag()
 + tag: use algo of repo parameter in parse_tag_buffer()

 Code clean-up.

 Will merge to 'master'.
 source: <20251228181051.68724-1-l.s.r@web.de>


* kh/replay-invalid-onto-advance (2025-12-22) 2 commits
 - t3650: add more regression tests for failure conditions
 - replay: die descriptively when invalid commit-ish

 Test coverage of "git replay" has been improved.

 Expecting a rework on the bottom patch.
 source: <CV_replay_die_descr.13f@msgid.xyz>


* bc/checkout-error-message-fix (2025-12-24) 1 commit
  (merged to 'next' on 2025-12-28 at d807c22e01)
 + checkout: quote invalid treeish in error message

 Message fix.

 Will merge to 'master'.
 source: <20251224203253.881129-1-sandals@crustytoothpaste.net>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* rs/commit-stack (2025-12-24) 14 commits
  (merged to 'next' on 2026-01-05 at 8b44eff694)
 + commit-reach: use commit_stack
 + commit-graph: use commit_stack
 + commit: add commit_stack_grow()
 + shallow: use commit_stack
 + pack-bitmap-write: use commit_stack
 + commit: add commit_stack_init()
 + test-reach: use commit_stack
 + remote: use commit_stack for src_commits
 + remote: use commit_stack for sent_tips
 + remote: use commit_stack for local_commits
 + name-rev: use commit_stack
 + midx: use commit_stack
 + log: use commit_stack
 + revision: export commit_stack

 Code clean-up, unifying various hand-rolled "list of commit
 objects" and use the commit_stack API.

 Will merge to 'master'.
 source: <20251224170327.68049-1-l.s.r@web.de>


* rs/parse-config-expiry-simplify (2025-12-27) 1 commit
  (merged to 'next' on 2025-12-30 at 138de1df67)
 + config: use git_parse_int() in git_config_get_expiry_in_days()

 Code clean-up.

 Will merge to 'master'.
 source: <1bd3c7f3-fcf6-4d8e-aa38-c15e3d51ce4c@web.de>


* rs/show-branch-prio-queue (2025-12-25) 1 commit
  (merged to 'next' on 2025-12-28 at 99d21acd7b)
 + show-branch: use prio_queue

 Code clean-up.

 Will merge to 'master'.
 source: <70ed751e-fc3c-4cb4-a4fd-26094a9f622e@web.de>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/bundle-uri-without-uri (2025-12-19) 1 commit
  (merged to 'next' on 2026-01-05 at 62d0a58199)
 + bundle-uri: validate that bundle entries have a uri

 Diagnose invalid bundle-URI that lack the URI entry, instead of
 crashing.

 Will merge to 'master'.
 source: <pull.2134.v2.git.git.1766160106521.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-more (2025-12-20) 5 commits
  (merged to 'next' on 2026-01-05 at 20eb741139)
 + doc: convert git-remote to synopsis style
 + doc: convert git stage to use synopsis block
 + doc: convert git-status tables to AsciiDoc format
 + doc: convert git-status to synopsis style
 + doc: fix t0450-txt-doc-vs-help to select only first synopsis block

 More doc style updates.

 Will merge to 'master'.
 source: <pull.2020.git.1766258187.gitgitgadget@gmail.com>


* js/symlink-windows (2025-12-17) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Expecting review responses.
 cf. <19030791-dafa-4a63-985b-9cdf423bfd1b@kdbg.org>
 source: <pull.2018.git.1765980535.gitgitgadget@gmail.com>


* pc/lockfile-pid (2025-12-17) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.
 source: <pull.2011.v2.git.1765997966593.gitgitgadget@gmail.com>


* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 cf. <aS-D5lD2Kk6BHNIl@fruit.crustytoothpaste.net>
 source: <pull.1853.v2.git.1765981422.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2025-12-18) 8 commits
 - packfile: drop repository parameter from `packed_object_info()`
 - packfile: skip unpacking object header for disk size requests
 - packfile: disentangle return value of `packed_object_info()`
 - packfile: always populate pack-specific info when reading object info
 - packfile: extend `is_delta` field to allow for "unknown" state
 - packfile: always declare object info to be OI_PACKED
 - object-file: always set OI_LOOSE when reading object info
 - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements

 The object-info API has been cleaned up.

 Comments?
 source: <20251218-b4-pks-odb-read-object-info-improvements-v2-0-62e3e49072bc@pks.im>


* tb/macos-iconv-workarounds (2025-12-15) 6 commits
 . config.mak.uname: activate ICONV_RESTART_RESET if needed
 . Makefile: make all darwin into config.mak.uname
 . utf8.c: prepare workaround for iconv under macOS 14/15
 . Merge branch 'rs/macos-iconv-workaround' into tb/macos-iconv-workarounds
 . config.mak.uname: use iconv from Homebrew on macOS
 . Makefile: add NO_HOMEBREW

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 RFC.
 needs to be debased from older rs/macos-iconv-workaround topic.
 source: <20251215204524.1946518-1-tboegi@web.de>


* js/prep-symlink-windows (2025-12-16) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Expecting review responses.
 cf. <xmqqcy3wh8d1.fsf@gitster.g>
 source: <pull.2017.git.1765899229.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 source: <20251112223722.376330-1-aplattner@nvidia.com>


* ps/packfile-store-in-odb-source (2025-12-17) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Comments?
 source: <20251218-b4-pks-pack-store-via-source-v2-0-62849007ce21@pks.im>


* rs/macos-iconv-workaround (2025-12-24) 2 commits
  (merged to 'next' on 2025-12-28 at 94ed776719)
 + macOS: use iconv from Homebrew if needed and present
 + macOS: make Homebrew use configurable

 Workaround the "iconv" shipped as part of macOS, which is broken
 handling stateful ISO/IEC 2022 encoded strings.

 Will merge to 'master'.
 source: <ce030c90-f635-42b5-82e1-814cd4c29505@web.de>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251211-odb-related-fixes-v2-0-bdf875ce51fc@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-26) 11 commits
  (merged to 'next' on 2025-12-28 at 048cdffe21)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + hooks: allow callers to capture output
 + run-command: allow capturing of collated output
 + hook: allow overriding the ungroup option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'master'.
 source: <20251226122334.16687-1-adrian.ratiu@collabora.com>


* je/doc-reset (2026-01-01) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a (hopefully small and final) reroll.
 cf. <5953760.DvuYhMxLoT@piment-oiseau>
 cf. <1943073.tdWV9SEqCh@piment-oiseau>
 source: <cover.1767307382.git.ben.knoble+github@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's the status of this topic?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-12-20) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251220101528.1227487-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 23%]

* What's cooking in git.git (Jan 2026, #01)
@ 2026-01-01 17:47 25% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2026-01-01 17:47 UTC (permalink / raw)
  To: git

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]

* pt/fsmonitor-linux (2025-12-31) 1 commit
 - fsmonitor: implement filesystem change listener for Linux

 The fsmonitor daemon has been implemented for Linux.

 Comments?
 source: <pull.2147.v4.git.git.1767202894884.gitgitgadget@gmail.com>


* pt/t7527-flake-workaround (2025-12-31) 1 commit
 - t7527: fix flaky fsmonitor event tests with retry logic

 Test fixup.

 Will merge to 'next'?
 source: <pull.2150.v2.git.git.1767226763360.gitgitgadget@gmail.com>


* pt/t7800-difftool-test-racefix (2025-12-31) 1 commit
 - t7800: fix racy "difftool --dir-diff syncs worktree" test

 Test fixup.

 Will merge to 'next'.
 source: <pull.2149.git.git.1767219599334.gitgitgadget@gmail.com>

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

* dd/t5403-modernise (2025-12-29) 1 commit
  (merged to 'next' on 2026-01-01 at d1d712e288)
 + t5403: use test_path_is_file instead of test -f

 Test micro-clean-up.

 Will merge to 'master'.
 source: <20251229185737.2328-1-deveshigurgaon@gmail.com>


* ds/diff-lazy-fetch-with-name-only-fix (2025-12-29) 1 commit
  (merged to 'next' on 2026-01-01 at ccbd34d6c9)
 + diff: avoid segfault with freed entries

 Running "git diff" with "--name-only" and other options that allows
 us not to look at the blob contents, while objects that are lazily
 fetched from a promisor remote, caused use-after-free, which has
 been corrected.

 Will merge to 'master'.
 source: <pull.2027.git.1767044697712.gitgitgadget@gmail.com>


* en/fsck-snapshot-ref-state (2025-12-29) 1 commit
 - fsck: snapshot default refs before object walk

 "git fsck" used inconsistent set of refs to show a confused
 warning, which has been corrected.

 Will merge to 'next'?
 source: <pull.2026.git.1767035549378.gitgitgadget@gmail.com>


* en/ort-recursive-d-f-conflict-fix (2025-12-29) 1 commit
  (merged to 'next' on 2026-01-01 at 883dcfc63e)
 + merge-ort: fix corner case recursive submodule/directory conflict handling

 The ort merge machinery was hit an assertion failure in a history
 with criss-cross merges renamed a directory and a non-directory,
 which has been corrected.

 Will merge to 'master'.
 source: <pull.2023.git.1767033783800.gitgitgadget@gmail.com>


* rs/tag-wo-the-repository (2025-12-28) 4 commits
  (merged to 'next' on 2026-01-01 at 3b7c52229a)
 + tag: stop using the_repository
 + tag: support arbitrary repositories in parse_tag()
 + tag: support arbitrary repositories in gpg_verify_tag()
 + tag: use algo of repo parameter in parse_tag_buffer()

 Code clean-up.

 Will merge to 'master'.
 source: <20251228181051.68724-1-l.s.r@web.de>


* kh/replay-invalid-onto-advance (2025-12-22) 2 commits
 - t3650: add more regression tests for failure conditions
 - replay: die descriptively when invalid commit-ish

 Test coverage of "git replay" has been improved.

 Expecting a rework on the bottom patch.
 source: <CV_replay_die_descr.13f@msgid.xyz>


* bc/checkout-error-message-fix (2025-12-24) 1 commit
  (merged to 'next' on 2025-12-28 at d807c22e01)
 + checkout: quote invalid treeish in error message

 Message fix.

 Will merge to 'master'.
 source: <20251224203253.881129-1-sandals@crustytoothpaste.net>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* rs/commit-stack (2025-12-24) 14 commits
 - commit-reach: use commit_stack
 - commit-graph: use commit_stack
 - commit: add commit_stack_grow()
 - shallow: use commit_stack
 - pack-bitmap-write: use commit_stack
 - commit: add commit_stack_init()
 - test-reach: use commit_stack
 - remote: use commit_stack for src_commits
 - remote: use commit_stack for sent_tips
 - remote: use commit_stack for local_commits
 - name-rev: use commit_stack
 - midx: use commit_stack
 - log: use commit_stack
 - revision: export commit_stack

 Code clean-up, unifying various hand-rolled "list of commit
 objects" and use the commit_stack API.

 Will merge to 'next'?
 source: <20251224170327.68049-1-l.s.r@web.de>


* rs/parse-config-expiry-simplify (2025-12-27) 1 commit
  (merged to 'next' on 2025-12-30 at 138de1df67)
 + config: use git_parse_int() in git_config_get_expiry_in_days()

 Code clean-up.

 Will merge to 'master'.
 source: <1bd3c7f3-fcf6-4d8e-aa38-c15e3d51ce4c@web.de>


* rs/show-branch-prio-queue (2025-12-25) 1 commit
  (merged to 'next' on 2025-12-28 at 99d21acd7b)
 + show-branch: use prio_queue

 Code clean-up.

 Will merge to 'master'.
 source: <70ed751e-fc3c-4cb4-a4fd-26094a9f622e@web.de>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/bundle-uri-without-uri (2025-12-19) 1 commit
 - bundle-uri: validate that bundle entries have a uri

 Diagnose invalid bundle-URI that lack the URI entry, instead of
 crashing.

 Will merge to 'next'?
 source: <pull.2134.v2.git.git.1766160106521.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-more (2025-12-20) 5 commits
 - doc: convert git-remote to synopsis style
 - doc: convert git stage to use synopsis block
 - doc: convert git-status tables to AsciiDoc format
 - doc: convert git-status to synopsis style
 - doc: fix t0450-txt-doc-vs-help to select only first synopsis block

 More doc style updates.

 Will merge to 'next'?
 source: <pull.2020.git.1766258187.gitgitgadget@gmail.com>


* js/symlink-windows (2025-12-17) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Expecting review responses.
 cf. <19030791-dafa-4a63-985b-9cdf423bfd1b@kdbg.org>
 source: <pull.2018.git.1765980535.gitgitgadget@gmail.com>


* pc/lockfile-pid (2025-12-17) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.
 source: <pull.2011.v2.git.1765997966593.gitgitgadget@gmail.com>


* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 cf. <aS-D5lD2Kk6BHNIl@fruit.crustytoothpaste.net>
 source: <pull.1853.v2.git.1765981422.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2025-12-18) 8 commits
 - packfile: drop repository parameter from `packed_object_info()`
 - packfile: skip unpacking object header for disk size requests
 - packfile: disentangle return value of `packed_object_info()`
 - packfile: always populate pack-specific info when reading object info
 - packfile: extend `is_delta` field to allow for "unknown" state
 - packfile: always declare object info to be OI_PACKED
 - object-file: always set OI_LOOSE when reading object info
 - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements

 The object-info API has been cleaned up.

 Comments?
 source: <20251218-b4-pks-odb-read-object-info-improvements-v2-0-62e3e49072bc@pks.im>


* tb/macos-iconv-workarounds (2025-12-15) 6 commits
 . config.mak.uname: activate ICONV_RESTART_RESET if needed
 . Makefile: make all darwin into config.mak.uname
 . utf8.c: prepare workaround for iconv under macOS 14/15
 . Merge branch 'rs/macos-iconv-workaround' into tb/macos-iconv-workarounds
 . config.mak.uname: use iconv from Homebrew on macOS
 . Makefile: add NO_HOMEBREW

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 RFC.
 needs to be debased from older rs/macos-iconv-workaround topic.
 source: <20251215204524.1946518-1-tboegi@web.de>


* js/prep-symlink-windows (2025-12-16) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Expecting review responses.
 cf. <xmqqcy3wh8d1.fsf@gitster.g>
 source: <pull.2017.git.1765899229.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 source: <20251112223722.376330-1-aplattner@nvidia.com>


* ps/packfile-store-in-odb-source (2025-12-17) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Comments?
 source: <20251218-b4-pks-pack-store-via-source-v2-0-62849007ce21@pks.im>


* rs/macos-iconv-workaround (2025-12-24) 2 commits
  (merged to 'next' on 2025-12-28 at 94ed776719)
 + macOS: use iconv from Homebrew if needed and present
 + macOS: make Homebrew use configurable

 Workaround the "iconv" shipped as part of macOS, which is broken
 handling stateful ISO/IEC 2022 encoded strings.

 Will merge to 'master'.
 source: <ce030c90-f635-42b5-82e1-814cd4c29505@web.de>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251211-odb-related-fixes-v2-0-bdf875ce51fc@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-26) 11 commits
  (merged to 'next' on 2025-12-28 at 048cdffe21)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + hooks: allow callers to capture output
 + run-command: allow capturing of collated output
 + hook: allow overriding the ungroup option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'master'.
 source: <20251226122334.16687-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-12-18) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Will merge to 'next'?
 source: <cover.1766103827.git.ben.knoble+github@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's the status of this topic?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-12-20) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251220101528.1227487-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 25%]

* What's cooking in git.git (Dec 2025, #09)
@ 2025-12-30 13:47 22% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-30 13:47 UTC (permalink / raw)
  To: git

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

* dk/ci-rust-fix (2025-12-18) 2 commits
  (merged to 'next' on 2025-12-22 at 5f7e5b040b)
 + rust: build correctly without GNU sed
 + Merge branch 'ps/ci-rust' into dk/ci-rust-fix

 Build fix.
 source: <a33f4e5118938300bcd5b2991feeee855a1c8f86.1766100330.git.ben.knoble+github@gmail.com>


* gf/clear-path-cache-cleanup (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at 748d7c2c93)
 + repository: remove duplicate free of cache->squash_msg

 Code clean-up.
 source: <pull.2132.v2.git.git.1766072952115.gitgitgadget@gmail.com>


* gf/maintenance-is-needed-fix (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at a84d7e8a32)
 + refs: dereference the value of the required pointer

 Brown-paper-bag fix to a recently graduated
 'kn/maintenance-is-needed' topic.
 source: <pull.2130.git.git.1766074249443.gitgitgadget@gmail.com>


* jc/object-read-stream-fix (2025-12-17) 2 commits
  (merged to 'next' on 2025-12-23 at b26856ce64)
 + odb: do not use "blank" substitute for NULL
 + Merge branch 'ps/object-read-stream' into jc/object-read-stream-fix
 (this branch is used by ps/read-object-info-improvements.)

 Fix a performance regression in recently graduated topic.
 source: <xmqqpl8cxy0j.fsf@gitster.g>


* jk/test-curl-updates (2025-12-18) 2 commits
  (merged to 'next' on 2025-12-23 at ef92594ee8)
 + t5563: add missing end-of-line in HTTP header
 + t5551: handle trailing slashes in expected cookies output

 Update HTTP tests to adjust for changes in curl 8.18.0
 source: <20251218121120.GA3252258@coredump.intra.peff.net>


* js/test-func-comment-fix (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at 5eadd4ae77)
 + test_detect_ref_format: fix comment

 Comment fix.
 source: <pull.2019.git.1766071259531.gitgitgadget@gmail.com>


* js/test-symlink-windows (2025-12-17) 10 commits
  (merged to 'next' on 2025-12-22 at 3eaa789d0d)
 + t7800: work around the MSYS path conversion on Windows
 + t6423: introduce Windows-specific handling for symlinking to /dev/null
 + t1305: skip symlink tests that do not apply to Windows
 + t1006: accommodate for symlink support in MSYS2
 + t0600: fix incomplete prerequisite for a test case
 + t0301: another fix for Windows compatibility
 + t0001: handle `diff --no-index` gracefully
 + mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 + apply: symbolic links lack a "trustable executable bit"
 + t9700: accommodate for Windows paths
 (this branch is used by js/prep-symlink-windows and js/symlink-windows.)

 Prepare test suite for Git for Windows that supports symbolic
 links.
 source: <pull.2009.v4.git.1765981126.gitgitgadget@gmail.com>


* jt/doc-rev-list-filter-provided-objects (2025-12-15) 1 commit
  (merged to 'next' on 2025-12-22 at 31970a567d)
 + docs: clarify git-rev-list(1) --filter behavior

 Document "rev-list --filter-provided-objects" better.
 source: <20251215200512.2694155-1-jltobler@gmail.com>


* jt/repo-struct-more-objinfo (2025-12-17) 7 commits
  (merged to 'next' on 2025-12-22 at d04904c31c)
 + builtin/repo: add object disk size info to structure table
 + builtin/repo: add disk size info to keyvalue stucture output
 + builtin/repo: add inflated object info to structure table
 + builtin/repo: add inflated object info to keyvalue structure output
 + builtin/repo: humanise count values in structure output
 + strbuf: split out logic to humanise byte values
 + builtin/repo: group per-type object values into struct

 More object database related information are shown in "git repo
 structure" output.
 source: <20251217175404.37963-1-jltobler@gmail.com>


* mh/doc-core-attributesfile (2025-12-17) 1 commit
  (merged to 'next' on 2025-12-22 at 5d68c3ef97)
 + docs: note the type of core.attributesfile

 Doc update.
 source: <20251217195917.25710-1-matthewhughes934@gmail.com>


* ps/repack-avoid-noop-midx-rewrite (2025-12-10) 3 commits
  (merged to 'next' on 2025-12-22 at 0d3b9de55c)
 + midx-write: skip rewriting MIDX with `--stdin-packs` unless needed
 + midx-write: extract function to test whether MIDX needs updating
 + midx: fix `BUG()` when getting preferred pack without a reverse index

 Even when there is no changes in the packfile and no need to
 recompute bitmaps, "git repack" recomputed and updated the MIDX
 file, which has been corrected.
 source: <20251210-pks-skip-noop-rewrite-v2-0-f813a9e44f28@pks.im>

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

* dd/t5403-modernise (2025-12-29) 1 commit
 - t5403: use test_path_is_file instead of test -f

 Test micro-clean-up.

 Will merge to 'next'.
 source: <20251229185737.2328-1-deveshigurgaon@gmail.com>


* ds/diff-lazy-fetch-with-name-only-fix (2025-12-29) 1 commit
 - diff: avoid segfault with freed entries

 Running "git diff" with "--name-only" and other options that allows
 us not to look at the blob contents, while objects that are lazily
 fetched from a promisor remote, caused use-after-free, which has
 been corrected.

 Will merge to 'next'.
 source: <pull.2027.git.1767044697712.gitgitgadget@gmail.com>


* en/fsck-snapshot-ref-state (2025-12-29) 1 commit
 - fsck: snapshot default refs before object walk

 "git fsck" used inconsistent set of refs to show a confused
 warning, which has been corrected.

 Will merge to 'next'?
 source: <pull.2026.git.1767035549378.gitgitgadget@gmail.com>


* en/ort-recursive-d-f-conflict-fix (2025-12-29) 1 commit
 - merge-ort: fix corner case recursive submodule/directory conflict handling

 The ort merge machinery was hit an assertion failure in a history
 with criss-cross merges renamed a directory and a non-directory,
 which has been corrected.

 Will merge to 'next'.
 source: <pull.2023.git.1767033783800.gitgitgadget@gmail.com>


* rs/tag-wo-the-repository (2025-12-28) 4 commits
 - tag: stop using the_repository
 - tag: support arbitrary repositories in parse_tag()
 - tag: support arbitrary repositories in gpg_verify_tag()
 - tag: use algo of repo parameter in parse_tag_buffer()

 Code clean-up.

 Will merge to 'next'.
 source: <20251228181051.68724-1-l.s.r@web.de>

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

* kh/replay-invalid-onto-advance (2025-12-22) 2 commits
 - t3650: add more regression tests for failure conditions
 - replay: die descriptively when invalid commit-ish

 Test coverage of "git replay" has been improved.

 Expecting a rework on the bottom patch.
 source: <CV_replay_die_descr.13f@msgid.xyz>


* bc/checkout-error-message-fix (2025-12-24) 1 commit
  (merged to 'next' on 2025-12-28 at d807c22e01)
 + checkout: quote invalid treeish in error message

 Message fix.

 Will merge to 'master'.
 source: <20251224203253.881129-1-sandals@crustytoothpaste.net>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* rs/commit-stack (2025-12-24) 14 commits
 - commit-reach: use commit_stack
 - commit-graph: use commit_stack
 - commit: add commit_stack_grow()
 - shallow: use commit_stack
 - pack-bitmap-write: use commit_stack
 - commit: add commit_stack_init()
 - test-reach: use commit_stack
 - remote: use commit_stack for src_commits
 - remote: use commit_stack for sent_tips
 - remote: use commit_stack for local_commits
 - name-rev: use commit_stack
 - midx: use commit_stack
 - log: use commit_stack
 - revision: export commit_stack

 Code clean-up, unifying various hand-rolled "list of commit
 objects" and use the commit_stack API.

 Will merge to 'next'?
 source: <20251224170327.68049-1-l.s.r@web.de>


* rs/parse-config-expiry-simplify (2025-12-27) 1 commit
  (merged to 'next' on 2025-12-30 at 138de1df67)
 + config: use git_parse_int() in git_config_get_expiry_in_days()

 Code clean-up.

 Will merge to 'master'.
 source: <1bd3c7f3-fcf6-4d8e-aa38-c15e3d51ce4c@web.de>


* rs/show-branch-prio-queue (2025-12-25) 1 commit
  (merged to 'next' on 2025-12-28 at 99d21acd7b)
 + show-branch: use prio_queue

 Code clean-up.

 Will merge to 'master'.
 source: <70ed751e-fc3c-4cb4-a4fd-26094a9f622e@web.de>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>


* sb/bundle-uri-without-uri (2025-12-19) 1 commit
 - bundle-uri: validate that bundle entries have a uri

 Diagnose invalid bundle-URI that lack the URI entry, instead of
 crashing.

 Will merge to 'next'?
 source: <pull.2134.v2.git.git.1766160106521.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-more (2025-12-20) 5 commits
 - doc: convert git-remote to synopsis style
 - doc: convert git stage to use synopsis block
 - doc: convert git-status tables to AsciiDoc format
 - doc: convert git-status to synopsis style
 - doc: fix t0450-txt-doc-vs-help to select only first synopsis block

 More doc style updates.

 Will merge to 'next'?
 source: <pull.2020.git.1766258187.gitgitgadget@gmail.com>


* js/symlink-windows (2025-12-17) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Expecting review responses.
 cf. <19030791-dafa-4a63-985b-9cdf423bfd1b@kdbg.org>
 source: <pull.2018.git.1765980535.gitgitgadget@gmail.com>


* pc/lockfile-pid (2025-12-17) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.
 source: <pull.2011.v2.git.1765997966593.gitgitgadget@gmail.com>


* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 cf. <aS-D5lD2Kk6BHNIl@fruit.crustytoothpaste.net>
 source: <pull.1853.v2.git.1765981422.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2025-12-18) 8 commits
 - packfile: drop repository parameter from `packed_object_info()`
 - packfile: skip unpacking object header for disk size requests
 - packfile: disentangle return value of `packed_object_info()`
 - packfile: always populate pack-specific info when reading object info
 - packfile: extend `is_delta` field to allow for "unknown" state
 - packfile: always declare object info to be OI_PACKED
 - object-file: always set OI_LOOSE when reading object info
 - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements

 The object-info API has been cleaned up.

 Comments?
 source: <20251218-b4-pks-odb-read-object-info-improvements-v2-0-62e3e49072bc@pks.im>


* tb/macos-iconv-workarounds (2025-12-15) 6 commits
 . config.mak.uname: activate ICONV_RESTART_RESET if needed
 . Makefile: make all darwin into config.mak.uname
 . utf8.c: prepare workaround for iconv under macOS 14/15
 . Merge branch 'rs/macos-iconv-workaround' into tb/macos-iconv-workarounds
 . config.mak.uname: use iconv from Homebrew on macOS
 . Makefile: add NO_HOMEBREW

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 RFC.
 needs to be debased from older rs/macos-iconv-workaround topic.
 source: <20251215204524.1946518-1-tboegi@web.de>


* js/prep-symlink-windows (2025-12-16) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Expecting review responses.
 cf. <xmqqcy3wh8d1.fsf@gitster.g>
 source: <pull.2017.git.1765899229.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 source: <20251112223722.376330-1-aplattner@nvidia.com>


* ps/packfile-store-in-odb-source (2025-12-17) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Comments?
 source: <20251218-b4-pks-pack-store-via-source-v2-0-62849007ce21@pks.im>


* rs/macos-iconv-workaround (2025-12-24) 2 commits
  (merged to 'next' on 2025-12-28 at 94ed776719)
 + macOS: use iconv from Homebrew if needed and present
 + macOS: make Homebrew use configurable

 Workaround the "iconv" shipped as part of macOS, which is broken
 handling stateful ISO/IEC 2022 encoded strings.

 Will merge to 'master'.
 source: <ce030c90-f635-42b5-82e1-814cd4c29505@web.de>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251211-odb-related-fixes-v2-0-bdf875ce51fc@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-26) 11 commits
  (merged to 'next' on 2025-12-28 at 048cdffe21)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + hooks: allow callers to capture output
 + run-command: allow capturing of collated output
 + hook: allow overriding the ungroup option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'master'.
 source: <20251226122334.16687-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-12-18) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Will merge to 'next'?
 source: <cover.1766103827.git.ben.knoble+github@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's the status of this topic?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-12-20) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251220101528.1227487-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 22%]

* What's cooking in git.git (Dec 2025, #08)
@ 2025-12-29  8:37 21% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-29  8:37 UTC (permalink / raw)
  To: git

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

* ap/packfile-promisor-object-optim (2025-12-08) 2 commits
  (merged to 'next' on 2025-12-18 at ee94076814)
 + packfile: skip hash checks in add_promisor_object()
 + object: apply skip_hash and discard_tree optimizations to unknown blobs too

 The code path that enumerates promisor objects have been optimized
 to skip pointlessly parsing blob objects.
 cf. <xmqqecot3dm1.fsf@gitster.g>
 source: <20251209014900.402637-1-aplattner@nvidia.com>


* ds/doc-scalar-config (2025-12-12) 5 commits
  (merged to 'next' on 2025-12-16 at 221721824f)
 + scalar: document config settings
 + scalar: alphabetize and simplify config
 + scalar: remove stale config values
 + scalar: use index.skipHash=true for performance
 + scalar: annotate config file with "set by scalar"

 Documentation updates.
 source: <pull.2010.v3.git.1765552528.gitgitgadget@gmail.com>


* ja/doc-misc-fixes (2025-12-19) 2 commits
  (merged to 'next' on 2025-12-20 at 2dafdb9732)
 + doc: correct minor wording issues
 + doc: fix asciidoc markup issues in several files

 Various documentation fixes.
 source: <pull.2016.v2.git.1766170456.gitgitgadget@gmail.com>


* jc/c99-fam (2025-12-12) 1 commit
  (merged to 'next' on 2025-12-18 at c11ebcf075)
 + FLEX_ARRAY: require platforms to support the C99 syntax

 Require C99 style flexible array member support from all platforms.
 source: <xmqqqzszc13d.fsf@gitster.g>


* jc/completion-no-single-letter-options (2025-12-06) 1 commit
  (merged to 'next' on 2025-12-17 at d8ae4b5ac4)
 + completion: clarify support for short options and arguments

 In-code comment update to clarify that single-letter options are
 outside of the scope of command line completion script.
 source: <xmqqzf7vm7b7.fsf@gitster.g>


* jc/doc-commit-signoff-config (2025-12-19) 2 commits
  (merged to 'next' on 2025-12-19 at 0814c687bb)
 + signoff-option: linkify the reference to gitfaq
  (merged to 'next' on 2025-12-18 at 27c9ad156c)
 + commit: document that $command.signoff will not be added

 Documentation update.
 source: <xmqqv7i62r6w.fsf@gitster.g>


* jc/memzero-array (2025-12-12) 3 commits
  (merged to 'next' on 2025-12-17 at 0dd398f0b4)
 + cocci: use MEMZERO_ARRAY() a bit more
 + coccicheck: emit the contents of cocci patch
 + Merge branch 'tc/memzero-array' into jc/memzero-array
 (this branch uses tc/memzero-array.)

 Further application of MEMZERO_ARRAY() macro to the rest of the
 code base.
 source: <20251213014628.3380826-1-gitster@pobox.com>


* jc/submodule-add (2025-11-15) 1 commit
  (merged to 'next' on 2025-12-17 at 03e0b0b5d9)
 + submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
  (merged to 'next' on 2025-12-17 at 3955b0be68)
 + fetch: fix failed batched updates skipping operations
 + fetch: fix non-conflicting tags not being committed
 + fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* rs/diff-files-r-find-copies-fix (2025-12-14) 2 commits
  (merged to 'next' on 2025-12-17 at 2c9d72ec4b)
 + diff-files: fix copy detection
 + Merge branch 'rs/diff-index-find-copies-harder-optim' into rs/diff-files-r-find-copies-fix

 "git diff-files -R --find-copies-harder" has been taught to use
 the potential copy sources from the index correctly.
 source: <4b06a448-0935-4f2a-9061-238c7cc800c3@web.de>


* tc/memzero-array (2025-12-10) 3 commits
  (merged to 'next' on 2025-12-17 at 4d2f7755b5)
 + contrib/coccinelle: pass include paths to spatch(1)
 + git-compat-util: introduce MEMZERO_ARRAY() macro
 + Merge branch 'tc/last-modified-active-paths-optimization' into tc/memzero-array
 (this branch is used by jc/memzero-array.)

 MEMZERO_ARRAY() helper is introduced to avoid clearing only the
 first N bytes of an N-element array whose elements are larger than
 a byte.
 cf. <aTpieqFoMmZiSzWS@pks.im>
 source: <20251210-toon-cocci-memzero-v1-0-ae916a79065b@iotcl.com>

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

* kh/replay-invalid-onto-advance (2025-12-22) 2 commits
 - t3650: add more regression tests for failure conditions
 - replay: die descriptively when invalid commit-ish

 Test coverage of "git replay" has been improved.

 Expecting a rework on the bottom patch.
 source: <CV_replay_die_descr.13f@msgid.xyz>


* bc/checkout-error-message-fix (2025-12-24) 1 commit
  (merged to 'next' on 2025-12-28 at d807c22e01)
 + checkout: quote invalid treeish in error message

 Message fix.

 Will merge to 'master'.
 source: <20251224203253.881129-1-sandals@crustytoothpaste.net>


* cc/lop-filter-auto (2025-12-23) 9 commits
 - fetch-pack: wire up and enable auto filter logic
 - promisor-remote: keep advertised filter in memory
 - list-objects-filter-options: implement auto filter resolution
 - list-objects-filter-options: support 'auto' mode for --filter
 - doc: fetch: document `--filter=<filter-spec>` option
 - fetch: make filter_options local to cmd_fetch()
 - clone: make filter_options local to cmd_clone()
 - promisor-remote: allow a client to store fields
 - promisor-remote: refactor initialising field lists

 "auto filter" logic for large-object promisor remote.

 Comments?
 source: <20251223111113.47473-1-christian.couder@gmail.com>


* rs/commit-stack (2025-12-24) 14 commits
 - commit-reach: use commit_stack
 - commit-graph: use commit_stack
 - commit: add commit_stack_grow()
 - shallow: use commit_stack
 - pack-bitmap-write: use commit_stack
 - commit: add commit_stack_init()
 - test-reach: use commit_stack
 - remote: use commit_stack for src_commits
 - remote: use commit_stack for sent_tips
 - remote: use commit_stack for local_commits
 - name-rev: use commit_stack
 - midx: use commit_stack
 - log: use commit_stack
 - revision: export commit_stack

 Code clean-up, unifying various hand-rolled "list of commit
 objects" and use the commit_stack API.

 Will merge to 'next'?
 source: <20251224170327.68049-1-l.s.r@web.de>


* rs/parse-config-expiry-simplify (2025-12-27) 1 commit
 - config: use git_parse_int() in git_config_get_expiry_in_days()

 Code clean-up.

 Will merge to 'next'.
 source: <1bd3c7f3-fcf6-4d8e-aa38-c15e3d51ce4c@web.de>


* rs/show-branch-prio-queue (2025-12-25) 1 commit
  (merged to 'next' on 2025-12-28 at 99d21acd7b)
 + show-branch: use prio_queue

 Code clean-up.

 Will merge to 'master'.
 source: <70ed751e-fc3c-4cb4-a4fd-26094a9f622e@web.de>


* tt/receive-pack-oo-namespace-symref-fix (2025-12-27) 1 commit
 - receive-pack: fix crash on out-of-namespace symref

 "git receive-pack", when namespace is involved, segfaulted when a
 symbolic ref cross the namespace boundary.

 Comments?
 source: <pull.2144.git.git.1766850014289.gitgitgadget@gmail.com>

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

* sb/bundle-uri-without-uri (2025-12-19) 1 commit
 - bundle-uri: validate that bundle entries have a uri

 Diagnose invalid bundle-URI that lack the URI entry, instead of
 crashing.

 Will merge to 'next'?
 source: <pull.2134.v2.git.git.1766160106521.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-more (2025-12-20) 5 commits
 - doc: convert git-remote to synopsis style
 - doc: convert git stage to use synopsis block
 - doc: convert git-status tables to AsciiDoc format
 - doc: convert git-status to synopsis style
 - doc: fix t0450-txt-doc-vs-help to select only first synopsis block

 More doc style updates.

 Will merge to 'next'?
 source: <pull.2020.git.1766258187.gitgitgadget@gmail.com>


* js/symlink-windows (2025-12-17) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows and js/test-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Will merge to 'next'?
 source: <pull.2018.git.1765980535.gitgitgadget@gmail.com>


* mh/doc-core-attributesfile (2025-12-17) 1 commit
  (merged to 'next' on 2025-12-22 at 5d68c3ef97)
 + docs: note the type of core.attributesfile

 Doc update.

 Will merge to 'master'.
 source: <20251217195917.25710-1-matthewhughes934@gmail.com>


* pc/lockfile-pid (2025-12-17) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.
 source: <pull.2011.v2.git.1765997966593.gitgitgadget@gmail.com>


* jc/object-read-stream-fix (2025-12-17) 2 commits
  (merged to 'next' on 2025-12-23 at b26856ce64)
 + odb: do not use "blank" substitute for NULL
 + Merge branch 'ps/object-read-stream' into jc/object-read-stream-fix
 (this branch is used by ps/read-object-info-improvements.)

 Fix a performance regression in recently graduated topic.

 Will merge to 'master'.
 source: <xmqqpl8cxy0j.fsf@gitster.g>


* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 cf. <aS-D5lD2Kk6BHNIl@fruit.crustytoothpaste.net>
 source: <pull.1853.v2.git.1765981422.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2025-12-18) 8 commits
 - packfile: drop repository parameter from `packed_object_info()`
 - packfile: skip unpacking object header for disk size requests
 - packfile: disentangle return value of `packed_object_info()`
 - packfile: always populate pack-specific info when reading object info
 - packfile: extend `is_delta` field to allow for "unknown" state
 - packfile: always declare object info to be OI_PACKED
 - object-file: always set OI_LOOSE when reading object info
 - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements
 (this branch uses jc/object-read-stream-fix.)

 The object-info API has been cleaned up.

 Comments?
 source: <20251218-b4-pks-odb-read-object-info-improvements-v2-0-62e3e49072bc@pks.im>


* jk/test-curl-updates (2025-12-18) 2 commits
  (merged to 'next' on 2025-12-23 at ef92594ee8)
 + t5563: add missing end-of-line in HTTP header
 + t5551: handle trailing slashes in expected cookies output

 Update HTTP tests to adjust for changes in curl 8.18.0

 Will merge to 'master'.
 source: <20251218121120.GA3252258@coredump.intra.peff.net>


* dk/ci-rust-fix (2025-12-18) 2 commits
  (merged to 'next' on 2025-12-22 at 5f7e5b040b)
 + rust: build correctly without GNU sed
 + Merge branch 'ps/ci-rust' into dk/ci-rust-fix

 Build fix.

 Will merge to 'master'.
 source: <a33f4e5118938300bcd5b2991feeee855a1c8f86.1766100330.git.ben.knoble+github@gmail.com>


* gf/clear-path-cache-cleanup (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at 748d7c2c93)
 + repository: remove duplicate free of cache->squash_msg

 Code clean-up.

 Will merge to 'master'.
 source: <pull.2132.v2.git.git.1766072952115.gitgitgadget@gmail.com>


* gf/maintenance-is-needed-fix (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at a84d7e8a32)
 + refs: dereference the value of the required pointer

 Brown-paper-bag fix to a recently graduated
 'kn/maintenance-is-needed' topic.

 Will merge to 'master'.
 source: <pull.2130.git.git.1766074249443.gitgitgadget@gmail.com>


* js/test-func-comment-fix (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at 5eadd4ae77)
 + test_detect_ref_format: fix comment

 Comment fix.

 Will merge to 'master'.
 source: <pull.2019.git.1766071259531.gitgitgadget@gmail.com>


* jt/doc-rev-list-filter-provided-objects (2025-12-15) 1 commit
  (merged to 'next' on 2025-12-22 at 31970a567d)
 + docs: clarify git-rev-list(1) --filter behavior

 Document "rev-list --filter-provided-objects" better.

 Will merge to 'master'.
 source: <20251215200512.2694155-1-jltobler@gmail.com>


* tb/macos-iconv-workarounds (2025-12-15) 6 commits
 . config.mak.uname: activate ICONV_RESTART_RESET if needed
 . Makefile: make all darwin into config.mak.uname
 . utf8.c: prepare workaround for iconv under macOS 14/15
 . Merge branch 'rs/macos-iconv-workaround' into tb/macos-iconv-workarounds
 . config.mak.uname: use iconv from Homebrew on macOS
 . Makefile: add NO_HOMEBREW

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 RFC.
 needs to be debased from older rs/macos-iconv-workaround topic.
 source: <20251215204524.1946518-1-tboegi@web.de>


* js/prep-symlink-windows (2025-12-16) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows; uses js/test-symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Will merge to 'next'?
 source: <pull.2017.git.1765899229.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 source: <20251112223722.376330-1-aplattner@nvidia.com>


* ps/packfile-store-in-odb-source (2025-12-17) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Comments?
 source: <20251218-b4-pks-pack-store-via-source-v2-0-62849007ce21@pks.im>


* jt/repo-struct-more-objinfo (2025-12-17) 7 commits
  (merged to 'next' on 2025-12-22 at d04904c31c)
 + builtin/repo: add object disk size info to structure table
 + builtin/repo: add disk size info to keyvalue stucture output
 + builtin/repo: add inflated object info to structure table
 + builtin/repo: add inflated object info to keyvalue structure output
 + builtin/repo: humanise count values in structure output
 + strbuf: split out logic to humanise byte values
 + builtin/repo: group per-type object values into struct

 More object database related information are shown in "git repo
 structure" output.

 Will merge to 'master'.
 source: <20251217175404.37963-1-jltobler@gmail.com>


* rs/macos-iconv-workaround (2025-12-24) 2 commits
  (merged to 'next' on 2025-12-28 at 94ed776719)
 + macOS: use iconv from Homebrew if needed and present
 + macOS: make Homebrew use configurable

 Workaround the "iconv" shipped as part of macOS, which is broken
 handling stateful ISO/IEC 2022 encoded strings.

 Will merge to 'master'.
 source: <ce030c90-f635-42b5-82e1-814cd4c29505@web.de>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* ps/repack-avoid-noop-midx-rewrite (2025-12-10) 3 commits
  (merged to 'next' on 2025-12-22 at 0d3b9de55c)
 + midx-write: skip rewriting MIDX with `--stdin-packs` unless needed
 + midx-write: extract function to test whether MIDX needs updating
 + midx: fix `BUG()` when getting preferred pack without a reverse index

 Even when there is no changes in the packfile and no need to
 recompute bitmaps, "git repack" recomputed and updated the MIDX
 file, which has been corrected.

 Will merge to 'master'.
 cf.
 source: <20251210-pks-skip-noop-rewrite-v2-0-f813a9e44f28@pks.im>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251211-odb-related-fixes-v2-0-bdf875ce51fc@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* js/test-symlink-windows (2025-12-17) 10 commits
  (merged to 'next' on 2025-12-22 at 3eaa789d0d)
 + t7800: work around the MSYS path conversion on Windows
 + t6423: introduce Windows-specific handling for symlinking to /dev/null
 + t1305: skip symlink tests that do not apply to Windows
 + t1006: accommodate for symlink support in MSYS2
 + t0600: fix incomplete prerequisite for a test case
 + t0301: another fix for Windows compatibility
 + t0001: handle `diff --no-index` gracefully
 + mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 + apply: symbolic links lack a "trustable executable bit"
 + t9700: accommodate for Windows paths
 (this branch is used by js/prep-symlink-windows and js/symlink-windows.)

 Prepare test suite for Git for Windows that supports symbolic
 links.

 Will merge to 'master'.
 source: <pull.2009.v4.git.1765981126.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-26) 11 commits
  (merged to 'next' on 2025-12-28 at 048cdffe21)
 + receive-pack: convert receive hooks to hook API
 + receive-pack: convert update hooks to new API
 + hooks: allow callers to capture output
 + run-command: allow capturing of collated output
 + hook: allow overriding the ungroup option
 + reference-transaction: use hook API instead of run-command
 + transport: convert pre-push to hook API
 + hook: convert 'post-rewrite' hook in sequencer.c to hook API
 + hook: provide stdin via callback
 + run-command: add stdin callback for parallelization
 + run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'master'.
 source: <20251226122334.16687-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-12-18) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Will merge to 'next'?
 source: <cover.1766103827.git.ben.knoble+github@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's the status of this topic?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-12-20) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251220101528.1227487-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 21%]

* What's cooking in git.git (Dec 2025, #07)
@ 2025-12-22 18:17 21% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-22 18:17 UTC (permalink / raw)
  To: git

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

* jc/macports-darwinports (2025-12-10) 1 commit
  (merged to 'next' on 2025-12-14 at 5c608e07fe)
 + Makefile: help macOS novices by mentioning MacPorts

 Makefile in-comment doc update.
 source: <xmqq7buthgq4.fsf@gitster.g>


* kh/doc-replay-updates (2025-12-13) 3 commits
  (merged to 'next' on 2025-12-14 at 71a8f83876)
 + doc: replay: link section using markup
 + replay: improve --contained and add to doc
 + doc: replay: mention no output on conflicts

 "git replay" documentation updates.
 source: <V2_CV_replay_conflict.12f@msgid.xyz>


* kj/pull-options-decl-cleanup (2025-12-11) 1 commit
  (merged to 'next' on 2025-12-14 at f59cad1d37)
 + pull: move options[] array into function scope

 Code clean-up.
 source: <20251212074433.38027-1-jayatheerthkulkarni2005@gmail.com>


* ps/odb-alternates-object-sources (2025-12-11) 8 commits
  (merged to 'next' on 2025-12-12 at 1dd061c0dc)
 + odb: write alternates via sources
 + odb: read alternates via sources
 + odb: drop forward declaration of `read_info_alternates()`
 + odb: remove mutual recursion when parsing alternates
 + odb: stop splitting alternate in `odb_add_to_alternates_file()`
 + odb: move computation of normalized objdir into `alt_odb_usable()`
 + odb: resolve relative alternative paths when parsing
 + odb: refactor parsing of alternates to be self-contained

 Code refactoring around alternate object store.
 source: <20251211-b4-pks-odb-alternates-via-source-v3-0-00e3f54d07ba@pks.im>


* rs/replay-wrong-onto-fix (2025-12-11) 2 commits
  (merged to 'next' on 2025-12-14 at d34966465f)
 + replay: move onto NULL check before first use
 + Merge branch 'sa/replay-atomic-ref-updates' into rs/replay-wrong-onto-fix

 "git replay --onto=<commit> ...", when <commit> is mistyped,
 started to segfault with recent change, which has been corrected.
 source: <9db2b913-b5d6-4617-b079-b4612eaa2b97@web.de>


* rs/t4014-git-version-string-fix (2025-12-13) 1 commit
  (merged to 'next' on 2025-12-14 at eef802176c)
 + t4014: support Git version strings with spaces

 Test fix.
 source: <b79cba1d-f32b-4034-979e-fb9528d05f18@web.de>

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

* sb/bundle-uri-without-uri (2025-12-19) 1 commit
 - bundle-uri: validate that bundle entries have a uri

 Diagnose invalid bundle-URI that lack the URI entry, instead of
 crashing.

 Will merge to 'next'?
 source: <pull.2134.v2.git.git.1766160106521.gitgitgadget@gmail.com>


* sb/doc-worktree-prune-expire-improvement (2025-12-19) 2 commits
 - worktree: use 'prune' instead of 'expire' in help text
 - worktree: clarify --expire applies to missing worktrees

 The help text and the documentation for the "--expire" option of
 "git worktree [list|prune]" have been improved.

 Expecting a reroll.
 source: <pull.2135.v2.git.git.1766168169.gitgitgadget@gmail.com>


* ja/doc-synopsis-style-more (2025-12-20) 5 commits
 - doc: convert git-remote to synopsis style
 - doc: convert git stage to use synopsis block
 - doc: convert git-status tables to AsciiDoc format
 - doc: convert git-status to synopsis style
 - doc: fix t0450-txt-doc-vs-help to select only first synopsis block

 More doc style updates.

 Will merge to 'next'?
 source: <pull.2020.git.1766258187.gitgitgadget@gmail.com>

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

* js/symlink-windows (2025-12-17) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows and js/test-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Will merge to 'next'?
 source: <pull.2018.git.1765980535.gitgitgadget@gmail.com>


* mh/doc-core-attributesfile (2025-12-17) 1 commit
  (merged to 'next' on 2025-12-22 at 5d68c3ef97)
 + docs: note the type of core.attributesfile

 Doc update.

 Will merge to 'master'.
 source: <20251217195917.25710-1-matthewhughes934@gmail.com>


* pc/lockfile-pid (2025-12-17) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.
 source: <pull.2011.v2.git.1765997966593.gitgitgadget@gmail.com>


* jc/object-read-stream-fix (2025-12-17) 2 commits
 - odb: do not use "blank" substitute for NULL
 - Merge branch 'ps/object-read-stream' into jc/object-read-stream-fix
 (this branch is used by ps/read-object-info-improvements.)

 Fix a performance regression in recently graduated topic.

 Will merge to 'next'.
 source: <xmqqpl8cxy0j.fsf@gitster.g>


* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 cf. <aS-D5lD2Kk6BHNIl@fruit.crustytoothpaste.net>
 source: <pull.1853.v2.git.1765981422.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2025-12-18) 8 commits
 - packfile: drop repository parameter from `packed_object_info()`
 - packfile: skip unpacking object header for disk size requests
 - packfile: disentangle return value of `packed_object_info()`
 - packfile: always populate pack-specific info when reading object info
 - packfile: extend `is_delta` field to allow for "unknown" state
 - packfile: always declare object info to be OI_PACKED
 - object-file: always set OI_LOOSE when reading object info
 - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements
 (this branch uses jc/object-read-stream-fix.)

 The object-info API has been cleaned up.

 Comments?
 source: <20251218-b4-pks-odb-read-object-info-improvements-v2-0-62e3e49072bc@pks.im>


* jk/test-curl-updates (2025-12-18) 2 commits
 - t5563: add missing end-of-line in HTTP header
 - t5551: handle trailing slashes in expected cookies output

 Update HTTP tests to adjust for changes in curl 8.18.0

 Will merge to 'next'.
 source: <20251218121120.GA3252258@coredump.intra.peff.net>


* dk/ci-rust-fix (2025-12-18) 2 commits
  (merged to 'next' on 2025-12-22 at 5f7e5b040b)
 + rust: build correctly without GNU sed
 + Merge branch 'ps/ci-rust' into dk/ci-rust-fix

 Build fix.

 Will merge to 'master'.
 source: <a33f4e5118938300bcd5b2991feeee855a1c8f86.1766100330.git.ben.knoble+github@gmail.com>


* gf/clear-path-cache-cleanup (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at 748d7c2c93)
 + repository: remove duplicate free of cache->squash_msg

 Code clean-up.

 Will merge to 'master'.
 source: <pull.2132.v2.git.git.1766072952115.gitgitgadget@gmail.com>


* gf/maintenance-is-needed-fix (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at a84d7e8a32)
 + refs: dereference the value of the required pointer

 Brown-paper-bag fix to a recently graduated
 'kn/maintenance-is-needed' topic.

 Will merge to 'master'.
 source: <pull.2130.git.git.1766074249443.gitgitgadget@gmail.com>


* js/test-func-comment-fix (2025-12-18) 1 commit
  (merged to 'next' on 2025-12-22 at 5eadd4ae77)
 + test_detect_ref_format: fix comment

 Comment fix.

 Will merge to 'master'.
 source: <pull.2019.git.1766071259531.gitgitgadget@gmail.com>


* ja/doc-misc-fixes (2025-12-19) 2 commits
  (merged to 'next' on 2025-12-20 at 2dafdb9732)
 + doc: correct minor wording issues
 + doc: fix asciidoc markup issues in several files

 Various documentation fixes.

 Will merge to 'master'.
 source: <pull.2016.v2.git.1766170456.gitgitgadget@gmail.com>


* jt/doc-rev-list-filter-provided-objects (2025-12-15) 1 commit
  (merged to 'next' on 2025-12-22 at 31970a567d)
 + docs: clarify git-rev-list(1) --filter behavior

 Document "rev-list --filter-provided-objects" better.

 Will merge to 'master'.
 source: <20251215200512.2694155-1-jltobler@gmail.com>


* tb/macos-iconv-workarounds (2025-12-15) 6 commits
 . config.mak.uname: activate ICONV_RESTART_RESET if needed
 . Makefile: make all darwin into config.mak.uname
 . utf8.c: prepare workaround for iconv under macOS 14/15
 . Merge branch 'rs/macos-iconv-workaround' into tb/macos-iconv-workarounds
 . config.mak.uname: use iconv from Homebrew on macOS
 . Makefile: add NO_HOMEBREW

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 RFC.
 needs to be debased from older rs/macos-iconv-workaround topic.
 source: <20251215204524.1946518-1-tboegi@web.de>


* js/prep-symlink-windows (2025-12-16) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows; uses js/test-symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Will merge to 'next'?
 source: <pull.2017.git.1765899229.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 source: <20251112223722.376330-1-aplattner@nvidia.com>


* jc/memzero-array (2025-12-12) 3 commits
  (merged to 'next' on 2025-12-17 at 0dd398f0b4)
 + cocci: use MEMZERO_ARRAY() a bit more
 + coccicheck: emit the contents of cocci patch
 + Merge branch 'tc/memzero-array' into jc/memzero-array
 (this branch uses tc/memzero-array.)

 Further application of MEMZERO_ARRAY() macro to the rest of the
 code base.

 Will merge to 'master' together with the base topic.
 source: <20251213014628.3380826-1-gitster@pobox.com>


* jc/doc-commit-signoff-config (2025-12-19) 2 commits
  (merged to 'next' on 2025-12-19 at 0814c687bb)
 + signoff-option: linkify the reference to gitfaq
  (merged to 'next' on 2025-12-18 at 27c9ad156c)
 + commit: document that $command.signoff will not be added

 Documentation update.

 Will merge to 'master'.
 source: <xmqqv7i62r6w.fsf@gitster.g>


* ps/packfile-store-in-odb-source (2025-12-17) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Comments?
 source: <20251218-b4-pks-pack-store-via-source-v2-0-62849007ce21@pks.im>


* rs/diff-files-r-find-copies-fix (2025-12-14) 2 commits
  (merged to 'next' on 2025-12-17 at 2c9d72ec4b)
 + diff-files: fix copy detection
 + Merge branch 'rs/diff-index-find-copies-harder-optim' into rs/diff-files-r-find-copies-fix

 "git diff-files -R --find-copies-harder" has been taught to use
 the potential copy sources from the index correctly.

 Will merge to 'master'.
 source: <4b06a448-0935-4f2a-9061-238c7cc800c3@web.de>


* jt/repo-struct-more-objinfo (2025-12-17) 7 commits
  (merged to 'next' on 2025-12-22 at d04904c31c)
 + builtin/repo: add object disk size info to structure table
 + builtin/repo: add disk size info to keyvalue stucture output
 + builtin/repo: add inflated object info to structure table
 + builtin/repo: add inflated object info to keyvalue structure output
 + builtin/repo: humanise count values in structure output
 + strbuf: split out logic to humanise byte values
 + builtin/repo: group per-type object values into struct

 More object database related information are shown in "git repo
 structure" output.

 Will merge to 'master'.
 source: <20251217175404.37963-1-jltobler@gmail.com>


* jc/c99-fam (2025-12-12) 1 commit
  (merged to 'next' on 2025-12-18 at c11ebcf075)
 + FLEX_ARRAY: require platforms to support the C99 syntax

 Require C99 style flexible array member support from all platforms.

 Will merge to 'master'.
 source: <xmqqqzszc13d.fsf@gitster.g>


* rs/macos-iconv-workaround (2025-12-16) 2 commits
 - macOS: use iconv from Homebrew if present
 - macOS: make Homebrew use configurable

 Workaround the "iconv" shipped as part of macOS, which is broken
 handling stateful ISO/IEC 2022 encoded strings.

 Comments?
 source: <53690064-1c98-40e9-8b9a-7ba6bee63703@web.de>


* tc/memzero-array (2025-12-10) 3 commits
  (merged to 'next' on 2025-12-17 at 4d2f7755b5)
 + contrib/coccinelle: pass include paths to spatch(1)
 + git-compat-util: introduce MEMZERO_ARRAY() macro
 + Merge branch 'tc/last-modified-active-paths-optimization' into tc/memzero-array
 (this branch is used by jc/memzero-array.)

 MEMZERO_ARRAY() helper is introduced to avoid clearing only the
 first N bytes of an N-element array whose elements are larger than
 a byte.

 Will merge to 'master'.
 cf. <aTpieqFoMmZiSzWS@pks.im>
 source: <20251210-toon-cocci-memzero-v1-0-ae916a79065b@iotcl.com>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* ps/repack-avoid-noop-midx-rewrite (2025-12-10) 3 commits
  (merged to 'next' on 2025-12-22 at 0d3b9de55c)
 + midx-write: skip rewriting MIDX with `--stdin-packs` unless needed
 + midx-write: extract function to test whether MIDX needs updating
 + midx: fix `BUG()` when getting preferred pack without a reverse index

 Even when there is no changes in the packfile and no need to
 recompute bitmaps, "git repack" recomputed and updated the MIDX
 file, which has been corrected.

 Will merge to 'master'.
 cf.
 source: <20251210-pks-skip-noop-rewrite-v2-0-f813a9e44f28@pks.im>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ap/packfile-promisor-object-optim (2025-12-08) 2 commits
  (merged to 'next' on 2025-12-18 at ee94076814)
 + packfile: skip hash checks in add_promisor_object()
 + object: apply skip_hash and discard_tree optimizations to unknown blobs too

 The code path that enumerates promisor objects have been optimized
 to skip pointlessly parsing blob objects.

 Will merge to 'master'.
 cf. <xmqqecot3dm1.fsf@gitster.g>
 source: <20251209014900.402637-1-aplattner@nvidia.com>


* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251211-odb-related-fixes-v2-0-bdf875ce51fc@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jc/completion-no-single-letter-options (2025-12-06) 1 commit
  (merged to 'next' on 2025-12-17 at d8ae4b5ac4)
 + completion: clarify support for short options and arguments

 In-code comment update to clarify that single-letter options are
 outside of the scope of command line completion script.

 Will merge to 'master'.
 source: <xmqqzf7vm7b7.fsf@gitster.g>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* js/test-symlink-windows (2025-12-17) 10 commits
  (merged to 'next' on 2025-12-22 at 3eaa789d0d)
 + t7800: work around the MSYS path conversion on Windows
 + t6423: introduce Windows-specific handling for symlinking to /dev/null
 + t1305: skip symlink tests that do not apply to Windows
 + t1006: accommodate for symlink support in MSYS2
 + t0600: fix incomplete prerequisite for a test case
 + t0301: another fix for Windows compatibility
 + t0001: handle `diff --no-index` gracefully
 + mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 + apply: symbolic links lack a "trustable executable bit"
 + t9700: accommodate for Windows paths
 (this branch is used by js/prep-symlink-windows and js/symlink-windows.)

 Prepare test suite for Git for Windows that supports symbolic
 links.

 Will merge to 'master'.
 source: <pull.2009.v4.git.1765981126.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* ds/doc-scalar-config (2025-12-12) 5 commits
  (merged to 'next' on 2025-12-16 at 221721824f)
 + scalar: document config settings
 + scalar: alphabetize and simplify config
 + scalar: remove stale config values
 + scalar: use index.skipHash=true for performance
 + scalar: annotate config file with "set by scalar"

 Documentation updates.

 Will merge to 'master'.
 source: <pull.2010.v3.git.1765552528.gitgitgadget@gmail.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* jc/submodule-add (2025-11-15) 1 commit
  (merged to 'next' on 2025-12-17 at 03e0b0b5d9)
 + submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Will merge to 'master'.
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
  (merged to 'next' on 2025-12-17 at 3955b0be68)
 + fetch: fix failed batched updates skipping operations
 + fetch: fix non-conflicting tags not being committed
 + fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'master'.
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-18) 11 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 cf. <aUVHVMNTFWWn2xjZ@pks.im>
 source: <20251218171126.588066-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-12-18) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Will merge to 'next'?
 source: <cover.1766103827.git.ben.knoble+github@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's the status of this topic?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-12-20) 11 commits
 - submodule: detect conflicts with existing gitdir configs
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251220101528.1227487-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 21%]

* What's cooking in git.git (Dec 2025, #06)
@ 2025-12-19 16:47 22% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-19 16:47 UTC (permalink / raw)
  To: git

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/symlink-windows (2025-12-17) 19 commits
 - mingw: special-case index entries for symlinks with buggy size
 - mingw: emulate `stat()` a little more faithfully
 - mingw: try to create symlinks without elevated permissions
 - mingw: add support for symlinks to directories
 - mingw: implement basic `symlink()` functionality (file symlinks only)
 - mingw: implement `readlink()`
 - mingw: allow `mingw_chdir()` to change to symlink-resolved directories
 - mingw: support renaming symlinks
 - mingw: handle symlinks to directories in `mingw_unlink()`
 - mingw: add symlink-specific error codes
 - mingw: change default of `core.symlinks` to false
 - mingw: factor out the retry logic
 - mingw: compute the correct size for symlinks in `mingw_lstat()`
 - mingw: teach dirent about symlinks
 - mingw: let `mingw_lstat()` error early upon problems with reparse points
 - mingw: drop the separate `do_lstat()` function
 - mingw: implement `stat()` with symlink support
 - mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
 - Merge branch 'js/prep-symlink-windows' into js/symlink-windows
 (this branch uses js/prep-symlink-windows and js/test-symlink-windows.)

 Upstream symbolic link support on Windows from Git-for-Windows.

 Will merge to 'next'?
 source: <pull.2018.git.1765980535.gitgitgadget@gmail.com>


* mh/doc-core-attributesfile (2025-12-17) 1 commit
 - docs: note the type of core.attributesfile

 Doc update.

 Will merge to 'next'.
 source: <20251217195917.25710-1-matthewhughes934@gmail.com>


* pc/lockfile-pid (2025-12-17) 1 commit
 - lockfile: add PID file for debugging stale locks

 Allow recording process ID of the process that holds the lock next
 to a lockfile for diagnosis.
 source: <pull.2011.v2.git.1765997966593.gitgitgadget@gmail.com>


* jc/object-read-stream-fix (2025-12-17) 2 commits
 - odb: do not use "blank" substitute for NULL
 - Merge branch 'ps/object-read-stream' into jc/object-read-stream-fix
 (this branch is used by ps/read-object-info-improvements.)

 Fix a performance regression in recently graduated topic.

 Will merge to 'next'.
 source: <xmqqpl8cxy0j.fsf@gitster.g>


* js/neuter-sideband (2025-12-17) 4 commits
 - sideband: add options to allow more control sequences to be passed through
 - sideband: do allow ANSI color sequences by default
 - sideband: introduce an "escape hatch" to allow control characters
 - sideband: mask control characters

 Invalidate control characters in sideband messages, to avoid
 terminal state getting messed up.

 Comments?
 cf. <aS-D5lD2Kk6BHNIl@fruit.crustytoothpaste.net>
 source: <pull.1853.v2.git.1765981422.gitgitgadget@gmail.com>


* ps/read-object-info-improvements (2025-12-18) 8 commits
 - packfile: drop repository parameter from `packed_object_info()`
 - packfile: skip unpacking object header for disk size requests
 - packfile: disentangle return value of `packed_object_info()`
 - packfile: always populate pack-specific info when reading object info
 - packfile: extend `is_delta` field to allow for "unknown" state
 - packfile: always declare object info to be OI_PACKED
 - object-file: always set OI_LOOSE when reading object info
 - Merge branch 'jc/object-read-stream-fix' into ps/read-object-info-improvements
 (this branch uses jc/object-read-stream-fix.)

 The object-info API has been cleaned up.

 Comments?
 source: <20251218-b4-pks-odb-read-object-info-improvements-v2-0-62e3e49072bc@pks.im>


* jk/test-curl-updates (2025-12-18) 3 commits
 - t5563: relax whitespace assumptions for unfolded headers
 - t5563: add missing end-of-line in HTTP header
 - t5551: handle trailing slashes in expected cookies output

 Update HTTP tests to adjust for changes in curl 8.18.0

 Will merge to 'next'?
 cf. <613s97no-7021-pp15-79s4-302o39p7n5r8@unkk.fr>
 source: <20251218121120.GA3252258@coredump.intra.peff.net>


* dk/ci-rust-fix (2025-12-18) 2 commits
 - rust: build correctly without GNU sed
 - Merge branch 'ps/ci-rust' into dk/ci-rust-fix

 Build fix.

 Will merge to 'next'.
 source: <a33f4e5118938300bcd5b2991feeee855a1c8f86.1766100330.git.ben.knoble+github@gmail.com>


* gf/clear-path-cache-cleanup (2025-12-18) 1 commit
 - repository: remove duplicate free of cache->squash_msg

 Code clean-up.

 Will merge to 'next'.
 source: <pull.2132.v2.git.git.1766072952115.gitgitgadget@gmail.com>


* gf/maintenance-is-needed-fix (2025-12-18) 1 commit
 - refs: dereference the value of the required pointer

 Brown-paper-bag fix to a recently graduated
 'kn/maintenance-is-needed' topic.

 Will merge to 'next'.
 source: <pull.2130.git.git.1766074249443.gitgitgadget@gmail.com>


* js/test-func-comment-fix (2025-12-18) 1 commit
 - test_detect_ref_format: fix comment

 Comment fix.

 Will merge to 'next'.
 source: <pull.2019.git.1766071259531.gitgitgadget@gmail.com>

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

* ja/doc-misc-fixes (2025-12-15) 1 commit
  (merged to 'next' on 2025-12-18 at d30d8cac71)
 + doc: flock of small fixes to various documentation files

 Various documentation fixes.

 Will merge to 'master'.
 source: <pull.2016.git.1765830229824.gitgitgadget@gmail.com>


* jt/doc-rev-list-filter-provided-objects (2025-12-15) 1 commit
 - docs: clarify git-rev-list(1) --filter behavior

 Document "rev-list --filter-provided-objects" better.

 Will merge to 'next'.
 source: <20251215200512.2694155-1-jltobler@gmail.com>


* tb/macos-iconv-workarounds (2025-12-15) 6 commits
 . config.mak.uname: activate ICONV_RESTART_RESET if needed
 . Makefile: make all darwin into config.mak.uname
 . utf8.c: prepare workaround for iconv under macOS 14/15
 . Merge branch 'rs/macos-iconv-workaround' into tb/macos-iconv-workarounds
 . config.mak.uname: use iconv from Homebrew on macOS
 . Makefile: add NO_HOMEBREW

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 RFC.
 needs to be debased from older rs/macos-iconv-workaround topic.
 source: <20251215204524.1946518-1-tboegi@web.de>


* js/prep-symlink-windows (2025-12-16) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch is used by js/symlink-windows; uses js/test-symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Will merge to 'next'?
 source: <pull.2017.git.1765899229.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 source: <20251112223722.376330-1-aplattner@nvidia.com>


* kj/pull-options-decl-cleanup (2025-12-11) 1 commit
  (merged to 'next' on 2025-12-14 at f59cad1d37)
 + pull: move options[] array into function scope

 Code clean-up.

 Will merge to 'master'.
 source: <20251212074433.38027-1-jayatheerthkulkarni2005@gmail.com>


* jc/memzero-array (2025-12-12) 3 commits
  (merged to 'next' on 2025-12-17 at 0dd398f0b4)
 + cocci: use MEMZERO_ARRAY() a bit more
 + coccicheck: emit the contents of cocci patch
 + Merge branch 'tc/memzero-array' into jc/memzero-array
 (this branch uses tc/memzero-array.)

 Further application of MEMZERO_ARRAY() macro to the rest of the
 code base.

 Will merge to 'next' together with the base topic.
 source: <20251213014628.3380826-1-gitster@pobox.com>


* rs/t4014-git-version-string-fix (2025-12-13) 1 commit
  (merged to 'next' on 2025-12-14 at eef802176c)
 + t4014: support Git version strings with spaces

 Test fix.

 Will merge to 'master'.
 source: <b79cba1d-f32b-4034-979e-fb9528d05f18@web.de>


* jc/doc-commit-signoff-config (2025-12-19) 2 commits
  (merged to 'next' on 2025-12-19 at 0814c687bb)
 + signoff-option: linkify the reference to gitfaq
  (merged to 'next' on 2025-12-18 at 27c9ad156c)
 + commit: document that $command.signoff will not be added

 Documentation update.

 Will merge to 'master'.
 source: <xmqqv7i62r6w.fsf@gitster.g>


* ps/packfile-store-in-odb-source (2025-12-17) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Comments?
 source: <20251218-b4-pks-pack-store-via-source-v2-0-62849007ce21@pks.im>


* rs/diff-files-r-find-copies-fix (2025-12-14) 2 commits
  (merged to 'next' on 2025-12-17 at 2c9d72ec4b)
 + diff-files: fix copy detection
 + Merge branch 'rs/diff-index-find-copies-harder-optim' into rs/diff-files-r-find-copies-fix

 "git diff-files -R --find-copies-harder" has been taught to use
 the potential copy sources from the index correctly.

 Will merge to 'master'.
 source: <4b06a448-0935-4f2a-9061-238c7cc800c3@web.de>


* jt/repo-struct-more-objinfo (2025-12-17) 7 commits
 - builtin/repo: add object disk size info to structure table
 - builtin/repo: add disk size info to keyvalue stucture output
 - builtin/repo: add inflated object info to structure table
 - builtin/repo: add inflated object info to keyvalue structure output
 - builtin/repo: humanise count values in structure output
 - strbuf: split out logic to humanise byte values
 - builtin/repo: group per-type object values into struct

 More object database related information are shown in "git repo
 structure" output.

 Will merge to 'next'.
 source: <20251217175404.37963-1-jltobler@gmail.com>


* jc/c99-fam (2025-12-12) 1 commit
  (merged to 'next' on 2025-12-18 at c11ebcf075)
 + FLEX_ARRAY: require platforms to support the C99 syntax

 Require C99 style flexible array member support from all platforms.

 Will merge to 'master'.
 source: <xmqqqzszc13d.fsf@gitster.g>


* jc/macports-darwinports (2025-12-10) 1 commit
  (merged to 'next' on 2025-12-14 at 5c608e07fe)
 + Makefile: help macOS novices by mentioning MacPorts

 Makefile in-comment doc update.

 Will merge to 'master'.
 source: <xmqq7buthgq4.fsf@gitster.g>


* rs/macos-iconv-workaround (2025-12-16) 2 commits
 - macOS: use iconv from Homebrew if present
 - macOS: make Homebrew use configurable

 Workaround the "iconv" shipped as part of macOS, which is broken
 handling stateful ISO/IEC 2022 encoded strings.

 Comments?
 source: <53690064-1c98-40e9-8b9a-7ba6bee63703@web.de>


* rs/replay-wrong-onto-fix (2025-12-11) 2 commits
  (merged to 'next' on 2025-12-14 at d34966465f)
 + replay: move onto NULL check before first use
 + Merge branch 'sa/replay-atomic-ref-updates' into rs/replay-wrong-onto-fix

 "git replay --onto=<commit> ...", when <commit> is mistyped,
 started to segfault with recent change, which has been corrected.

 Will merge to 'master'.
 source: <9db2b913-b5d6-4617-b079-b4612eaa2b97@web.de>


* tc/memzero-array (2025-12-10) 3 commits
  (merged to 'next' on 2025-12-17 at 4d2f7755b5)
 + contrib/coccinelle: pass include paths to spatch(1)
 + git-compat-util: introduce MEMZERO_ARRAY() macro
 + Merge branch 'tc/last-modified-active-paths-optimization' into tc/memzero-array
 (this branch is used by jc/memzero-array.)

 MEMZERO_ARRAY() helper is introduced to avoid clearing only the
 first N bytes of an N-element array whose elements are larger than
 a byte.

 Will merge to 'master'.
 cf. <aTpieqFoMmZiSzWS@pks.im>
 source: <20251210-toon-cocci-memzero-v1-0-ae916a79065b@iotcl.com>


* kh/doc-replay-updates (2025-12-13) 3 commits
  (merged to 'next' on 2025-12-14 at 71a8f83876)
 + doc: replay: link section using markup
 + replay: improve --contained and add to doc
 + doc: replay: mention no output on conflicts

 "git replay" documentation updates.

 Will merge to 'master'.
 source: <V2_CV_replay_conflict.12f@msgid.xyz>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* ps/odb-alternates-object-sources (2025-12-11) 8 commits
  (merged to 'next' on 2025-12-12 at 1dd061c0dc)
 + odb: write alternates via sources
 + odb: read alternates via sources
 + odb: drop forward declaration of `read_info_alternates()`
 + odb: remove mutual recursion when parsing alternates
 + odb: stop splitting alternate in `odb_add_to_alternates_file()`
 + odb: move computation of normalized objdir into `alt_odb_usable()`
 + odb: resolve relative alternative paths when parsing
 + odb: refactor parsing of alternates to be self-contained

 Code refactoring around alternate object store.

 Will merge to 'master'.
 source: <20251211-b4-pks-odb-alternates-via-source-v3-0-00e3f54d07ba@pks.im>


* ps/repack-avoid-noop-midx-rewrite (2025-12-10) 3 commits
 - midx-write: skip rewriting MIDX with `--stdin-packs` unless needed
 - midx-write: extract function to test whether MIDX needs updating
 - midx: fix `BUG()` when getting preferred pack without a reverse index

 Even when there is no changes in the packfile and no need to
 recompute bitmaps, "git repack" recomputed and updated the MIDX
 file, which has been corrected.

 Will merge to 'next'.
 cf.
 source: <20251210-pks-skip-noop-rewrite-v2-0-f813a9e44f28@pks.im>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ap/packfile-promisor-object-optim (2025-12-08) 2 commits
  (merged to 'next' on 2025-12-18 at ee94076814)
 + packfile: skip hash checks in add_promisor_object()
 + object: apply skip_hash and discard_tree optimizations to unknown blobs too

 The code path that enumerates promisor objects have been optimized
 to skip pointlessly parsing blob objects.

 Will merge to 'master'.
 cf. <xmqqecot3dm1.fsf@gitster.g>
 source: <20251209014900.402637-1-aplattner@nvidia.com>


* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251211-odb-related-fixes-v2-0-bdf875ce51fc@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jc/completion-no-single-letter-options (2025-12-06) 1 commit
  (merged to 'next' on 2025-12-17 at d8ae4b5ac4)
 + completion: clarify support for short options and arguments

 In-code comment update to clarify that single-letter options are
 outside of the scope of command line completion script.

 Will merge to 'master'.
 source: <xmqqzf7vm7b7.fsf@gitster.g>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* js/test-symlink-windows (2025-12-17) 10 commits
 - t7800: work around the MSYS path conversion on Windows
 - t6423: introduce Windows-specific handling for symlinking to /dev/null
 - t1305: skip symlink tests that do not apply to Windows
 - t1006: accommodate for symlink support in MSYS2
 - t0600: fix incomplete prerequisite for a test case
 - t0301: another fix for Windows compatibility
 - t0001: handle `diff --no-index` gracefully
 - mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 - apply: symbolic links lack a "trustable executable bit"
 - t9700: accommodate for Windows paths
 (this branch is used by js/prep-symlink-windows and js/symlink-windows.)

 Prepare test suite for Git for Windows that supports symbolic
 links.

 Will merge to 'next'.
 source: <pull.2009.v4.git.1765981126.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* ds/doc-scalar-config (2025-12-12) 5 commits
  (merged to 'next' on 2025-12-16 at 221721824f)
 + scalar: document config settings
 + scalar: alphabetize and simplify config
 + scalar: remove stale config values
 + scalar: use index.skipHash=true for performance
 + scalar: annotate config file with "set by scalar"

 Documentation updates.

 Will merge to 'master'.
 source: <pull.2010.v3.git.1765552528.gitgitgadget@gmail.com>


* pw/replay-drop-empty (2025-12-18) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <375adc4e941f3bb22a2b12ee26a083951ed724dd.1766076625.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* jc/submodule-add (2025-11-15) 1 commit
  (merged to 'next' on 2025-12-17 at 03e0b0b5d9)
 + submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Will merge to 'master'.
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
  (merged to 'next' on 2025-12-17 at 3955b0be68)
 + fetch: fix failed batched updates skipping operations
 + fetch: fix non-conflicting tags not being committed
 + fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'master'.
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-18) 11 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 cf. <aUVHVMNTFWWn2xjZ@pks.im>
 source: <20251218171126.588066-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-12-18) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Will merge to 'next'?
 source: <cover.1766103827.git.ben.knoble+github@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's the status of this topic?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-12-13) 10 commits
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251213080817.347922-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 22%]

* Re: What's cooking in git.git (Dec 2025, #03)
  @ 2025-12-18  2:57 80%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-18  2:57 UTC (permalink / raw)
  To: Aaron Plattner; +Cc: git, Patrick Steinhardt

Aaron Plattner <aplattner@nvidia.com> writes:

> I'm pretty sure the problem is when do_oid_object_info_extended() 
> substitutes the blank oi here:
>
> 	if (!oi)
> 		oi = &blank_oi;
>
> and then packfile_store_read_object_info() compares it to its own local 
> blank oi:
>
> 	static struct object_info blank_oi = OBJECT_INFO_INIT;

Ahh, that's an unusual mistake.

The following was done on top of 'seen', but would it help?  We
shouldn't have to use the stand-in "blank" thing to begin with.

Besides, explicitly handling the NULL case would reduce the
potential chance of errors that somebody accidentally writes into
blank_oi, making its contents dirty.




 object-file.c |  8 ++++----
 odb.c         | 29 +++++++++++++----------------
 packfile.c    |  3 +--
 3 files changed, 18 insertions(+), 22 deletions(-)

diff --git c/object-file.c w/object-file.c
index af1c3f972d..6280e42f34 100644
--- c/object-file.c
+++ w/object-file.c
@@ -426,7 +426,7 @@ int odb_source_loose_read_object_info(struct odb_source *source,
 	unsigned long size_scratch;
 	enum object_type type_scratch;
 
-	if (oi->delta_base_oid)
+	if (oi && oi->delta_base_oid)
 		oidclr(oi->delta_base_oid, source->odb->repo->hash_algo);
 
 	/*
@@ -437,13 +437,13 @@ int odb_source_loose_read_object_info(struct odb_source *source,
 	 * return value implicitly indicates whether the
 	 * object even exists.
 	 */
-	if (!oi->typep && !oi->sizep && !oi->contentp) {
+	if (!oi || (!oi->typep && !oi->sizep && !oi->contentp)) {
 		struct stat st;
-		if (!oi->disk_sizep && (flags & OBJECT_INFO_QUICK))
+		if ((!oi || !oi->disk_sizep) && (flags & OBJECT_INFO_QUICK))
 			return quick_has_loose(source->loose, oid) ? 0 : -1;
 		if (stat_loose_object(source->loose, oid, &st, &path) < 0)
 			return -1;
-		if (oi->disk_sizep)
+		if (oi && oi->disk_sizep)
 			*oi->disk_sizep = st.st_size;
 		return 0;
 	}
diff --git c/odb.c w/odb.c
index 01a9d2e70f..8278ef39a0 100644
--- c/odb.c
+++ w/odb.c
@@ -680,34 +680,31 @@ static int do_oid_object_info_extended(struct object_database *odb,
 				       const struct object_id *oid,
 				       struct object_info *oi, unsigned flags)
 {
-	static struct object_info blank_oi = OBJECT_INFO_INIT;
 	const struct cached_object *co;
 	const struct object_id *real = oid;
 	int already_retried = 0;
 
-
 	if (flags & OBJECT_INFO_LOOKUP_REPLACE)
 		real = lookup_replace_object(odb->repo, oid);
 
 	if (is_null_oid(real))
 		return -1;
 
-	if (!oi)
-		oi = &blank_oi;
-
 	co = find_cached_object(odb, real);
 	if (co) {
-		if (oi->typep)
-			*(oi->typep) = co->type;
-		if (oi->sizep)
-			*(oi->sizep) = co->size;
-		if (oi->disk_sizep)
-			*(oi->disk_sizep) = 0;
-		if (oi->delta_base_oid)
-			oidclr(oi->delta_base_oid, odb->repo->hash_algo);
-		if (oi->contentp)
-			*oi->contentp = xmemdupz(co->buf, co->size);
-		oi->whence = OI_CACHED;
+		if (oi) {
+			if (oi->typep)
+				*(oi->typep) = co->type;
+			if (oi->sizep)
+				*(oi->sizep) = co->size;
+			if (oi->disk_sizep)
+				*(oi->disk_sizep) = 0;
+			if (oi->delta_base_oid)
+				oidclr(oi->delta_base_oid, odb->repo->hash_algo);
+			if (oi->contentp)
+				*oi->contentp = xmemdupz(co->buf, co->size);
+			oi->whence = OI_CACHED;
+		}
 		return 0;
 	}
 
diff --git c/packfile.c w/packfile.c
index ce6716fbea..3ffd6c7240 100644
--- c/packfile.c
+++ w/packfile.c
@@ -2132,7 +2132,6 @@ int packfile_store_read_object_info(struct packfile_store *store,
 				    struct object_info *oi,
 				    unsigned flags UNUSED)
 {
-	static struct object_info blank_oi = OBJECT_INFO_INIT;
 	struct pack_entry e;
 	int rtype;
 
@@ -2143,7 +2142,7 @@ int packfile_store_read_object_info(struct packfile_store *store,
 	 * We know that the caller doesn't actually need the
 	 * information below, so return early.
 	 */
-	if (oi == &blank_oi)
+	if (!oi)
 		return 0;
 
 	rtype = packed_object_info(store->source->odb->repo, e.p, e.offset, oi);




^ permalink raw reply related	[relevance 80%]

* Re: What's cooking in git.git (Dec 2025, #03)
  @ 2025-12-17 13:46 99%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-17 13:46 UTC (permalink / raw)
  To: Aaron Plattner; +Cc: git, Jeff King

Aaron Plattner <aplattner@nvidia.com> writes:

>> Let's mark the topic for 'next', then.  Thanks.
>
> Thank you, I appreciate it!

;-)


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Dec 2025, #05)
@ 2025-12-17  9:46 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-17  9:46 UTC (permalink / raw)
  To: git

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

* gf/win32-pthread-cond-init (2025-11-20) 1 commit
  (merged to 'next' on 2025-12-09 at 202516d20c)
 + win32: pthread_cond_init should return a value

 Emulation code clean-up.
 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>


* jc/capability-leak (2025-12-06) 1 commit
  (merged to 'next' on 2025-12-10 at cfe8ce92b1)
 + connect: plug protocol capability leak

 Leakfix.
 
 source: <xmqqfr9mnbu9.fsf@gitster.g>


* kh/doc-pre-commit-fix (2025-12-07) 1 commit
  (merged to 'next' on 2025-12-10 at f21f000140)
 + doc: join default pre-commit paragraphs

 Docfix.
 
 source: <pre-commit_when_enabled.10a@msgid.xyz>


* kh/doc-send-email-paragraph-fix (2025-12-08) 1 commit
  (merged to 'next' on 2025-12-10 at 674ac2bdf7)
 + doc: send-email: fix broken list continuation

 Docfix.
 
 source: <send-email_list_contin.112@msgid.xyz>


* mh/doc-config-gui-gcwarning (2025-12-08) 1 commit
  (merged to 'next' on 2025-12-10 at 15d6df9a04)
 + config: document 'gui.GCWarning'

 Docfix.
 
 source: <20251208190400.64920-1-matthewhughes934@gmail.com>


* ps/object-read-stream (2025-11-23) 20 commits
  (merged to 'next' on 2025-12-09 at c8d645f8ea)
 + streaming: drop redundant type and size pointers
 + streaming: move into object database subsystem
 + streaming: refactor interface to be object-database-centric
 + streaming: move logic to read packed objects streams into backend
 + streaming: move logic to read loose objects streams into backend
 + streaming: make the `odb_read_stream` definition public
 + streaming: get rid of `the_repository`
 + streaming: rely on object sources to create object stream
 + packfile: introduce function to read object info from a store
 + streaming: move zlib stream into backends
 + streaming: create structure for filtered object streams
 + streaming: create structure for packed object streams
 + streaming: create structure for loose object streams
 + streaming: create structure for in-core object streams
 + streaming: allocate stream inside the backend-specific logic
 + streaming: explicitly pass packfile info when streaming a packed object
 + streaming: propagate final object type via the stream
 + streaming: drop the `open()` callback function
 + streaming: rename `git_istream` into `odb_read_stream`
 + Merge branch 'ps/object-source-loose' into ps/object-read-stream
 (this branch is used by ps/packfile-store-in-odb-source.)

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.
 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>


* rs/ban-mktemp (2025-12-06) 5 commits
  (merged to 'next' on 2025-12-09 at d459e9d8dd)
 + compat: remove gitmkdtemp()
 + banned.h: ban mktemp(3)
 + compat: remove mingw_mktemp()
 + compat: use git_mkdtemp()
 + wrapper: add git_mkdtemp()

 Rewrite the only use of "mktemp()" that is subject to TOCTOU race
 and Stop using the insecure "mktemp()" function.
 source: <64e62623-b911-4ddd-a481-05191853c0a6@web.de>

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

* ja/doc-misc-fixes (2025-12-15) 1 commit
 - doc: flock of small fixes to various documentation files

 Various documentation fixes.

 Will merge to 'next'.
 source: <pull.2016.git.1765830229824.gitgitgadget@gmail.com>


* jt/doc-rev-list-filter-provided-objects (2025-12-15) 1 commit
 - docs: clarify git-rev-list(1) --filter behavior

 Document "rev-list --filter-provided-objects" better.

 Will merge to 'next'?
 source: <20251215200512.2694155-1-jltobler@gmail.com>


* tb/macos-iconv-workarounds (2025-12-15) 6 commits
 . config.mak.uname: activate ICONV_RESTART_RESET if needed
 . Makefile: make all darwin into config.mak.uname
 . utf8.c: prepare workaround for iconv under macOS 14/15
 . Merge branch 'rs/macos-iconv-workaround' into tb/macos-iconv-workarounds
 . config.mak.uname: use iconv from Homebrew on macOS
 . Makefile: add NO_HOMEBREW

 The iconv library on macOS fails to correctly handle stateful
 ISO/IEC 2022 encoded strings.  Work it around instead of replacing
 it wholesale from homebrew.

 RFC.
 needs to be debased from older rs/macos-iconv-workaround topic.
 source: <20251215204524.1946518-1-tboegi@web.de>


* js/prep-symlink-windows (2025-12-16) 6 commits
 - trim_last_path_component(): avoid hard-coding the directory separator
 - strbuf_readlink(): support link targets that exceed PATH_MAX
 - strbuf_readlink(): avoid calling `readlink()` twice in corner-cases
 - init: do parse _all_ core.* settings early
 - mingw: do resolve symlinks in `getcwd()`
 - Merge branch 'js/test-symlink-windows' into js/prep-symlink-windows
 (this branch uses js/test-symlink-windows.)

 Further preparation to upstream symbolic link support on Windows.

 Comments?
 source: <pull.2017.git.1765899229.gitgitgadget@gmail.com>


* ap/http-probe-rpc-use-auth (2025-11-12) 1 commit
 - remote-curl: Use auth for probe_rpc() requests too

 source: <20251112223722.376330-1-aplattner@nvidia.com>

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

* kj/pull-options-decl-cleanup (2025-12-11) 1 commit
  (merged to 'next' on 2025-12-14 at f59cad1d37)
 + pull: move options[] array into function scope

 Code clean-up.

 Will merge to 'master'.
 source: <20251212074433.38027-1-jayatheerthkulkarni2005@gmail.com>


* jc/memzero-array (2025-12-12) 3 commits
  (merged to 'next' on 2025-12-17 at 0dd398f0b4)
 + cocci: use MEMZERO_ARRAY() a bit more
 + coccicheck: emit the contents of cocci patch
 + Merge branch 'tc/memzero-array' into jc/memzero-array
 (this branch uses tc/memzero-array.)

 Further application of MEMZERO_ARRAY() macro to the rest of the
 code base.

 Will merge to 'next' together with the base topic.
 source: <20251213014628.3380826-1-gitster@pobox.com>


* rs/t4014-git-version-string-fix (2025-12-13) 1 commit
  (merged to 'next' on 2025-12-14 at eef802176c)
 + t4014: support Git version strings with spaces

 Test fix.

 Will merge to 'master'.
 source: <b79cba1d-f32b-4034-979e-fb9528d05f18@web.de>


* jc/doc-commit-signoff-config (2025-12-16) 1 commit
 - commit: document that $command.signoff will not be added

 Documentation update.

 Will merge to 'next'.
 source: <xmqqv7i62r6w.fsf@gitster.g>


* ps/packfile-store-in-odb-source (2025-12-14) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Comments?
 source: <20251215-b4-pks-pack-store-via-source-v1-0-433aac465295@pks.im>


* rs/diff-files-r-find-copies-fix (2025-12-14) 2 commits
  (merged to 'next' on 2025-12-17 at 2c9d72ec4b)
 + diff-files: fix copy detection
 + Merge branch 'rs/diff-index-find-copies-harder-optim' into rs/diff-files-r-find-copies-fix

 "git diff-files -R --find-copies-harder" has been taught to use
 the potential copy sources from the index correctly.

 Will merge to 'master'.
 source: <4b06a448-0935-4f2a-9061-238c7cc800c3@web.de>


* jt/repo-struct-more-objinfo (2025-12-16) 7 commits
 - builtin/repo: add object disk size info to structure table
 - builtin/repo: add disk size info to keyvalue stucture output
 - builtin/repo: add inflated object info to structure table
 - builtin/repo: add inflated object info to keyvalue structure output
 - builtin/repo: humanise count values in structure output
 - strbuf: split out logic to humanise byte values
 - builtin/repo: group per-type object values into struct

 More object database related information are shown in "git repo
 structure" output.

 Will merge to 'next'?
 cf. <xmqqqzsu2qxy.fsf@gitster.g>
 source: <20251216173842.3357832-1-jltobler@gmail.com>


* jc/c99-fam (2025-12-12) 1 commit
 - FLEX_ARRAY: require platforms to support the C99 syntax

 Require C99 style flexible array member support from all platforms.

 Will merge to 'next'.
 source: <xmqqqzszc13d.fsf@gitster.g>


* jc/macports-darwinports (2025-12-10) 1 commit
  (merged to 'next' on 2025-12-14 at 5c608e07fe)
 + Makefile: help macOS novices by mentioning MacPorts

 Makefile in-comment doc update.

 Will merge to 'master'.
 source: <xmqq7buthgq4.fsf@gitster.g>


* rs/macos-iconv-workaround (2025-12-16) 2 commits
 - macOS: use iconv from Homebrew if present
 - macOS: make Homebrew use configurable

 Workaround the "iconv" shipped as part of macOS, which is broken
 handling stateful ISO/IEC 2022 encoded strings.

 Comments?
 source: <53690064-1c98-40e9-8b9a-7ba6bee63703@web.de>


* rs/replay-wrong-onto-fix (2025-12-11) 2 commits
  (merged to 'next' on 2025-12-14 at d34966465f)
 + replay: move onto NULL check before first use
 + Merge branch 'sa/replay-atomic-ref-updates' into rs/replay-wrong-onto-fix

 "git replay --onto=<commit> ...", when <commit> is mistyped,
 started to segfault with recent change, which has been corrected.

 Will merge to 'master'.
 source: <9db2b913-b5d6-4617-b079-b4612eaa2b97@web.de>


* tc/memzero-array (2025-12-10) 3 commits
  (merged to 'next' on 2025-12-17 at 4d2f7755b5)
 + contrib/coccinelle: pass include paths to spatch(1)
 + git-compat-util: introduce MEMZERO_ARRAY() macro
 + Merge branch 'tc/last-modified-active-paths-optimization' into tc/memzero-array
 (this branch is used by jc/memzero-array.)

 MEMZERO_ARRAY() helper is introduced to avoid clearing only the
 first N bytes of an N-element array whose elements are larger than
 a byte.

 Will merge to 'master'.
 cf. <aTpieqFoMmZiSzWS@pks.im>
 source: <20251210-toon-cocci-memzero-v1-0-ae916a79065b@iotcl.com>


* kh/doc-replay-updates (2025-12-13) 3 commits
  (merged to 'next' on 2025-12-14 at 71a8f83876)
 + doc: replay: link section using markup
 + replay: improve --contained and add to doc
 + doc: replay: mention no output on conflicts

 "git replay" documentation updates.

 Will merge to 'master'.
 source: <V2_CV_replay_conflict.12f@msgid.xyz>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* ps/odb-alternates-object-sources (2025-12-11) 8 commits
  (merged to 'next' on 2025-12-12 at 1dd061c0dc)
 + odb: write alternates via sources
 + odb: read alternates via sources
 + odb: drop forward declaration of `read_info_alternates()`
 + odb: remove mutual recursion when parsing alternates
 + odb: stop splitting alternate in `odb_add_to_alternates_file()`
 + odb: move computation of normalized objdir into `alt_odb_usable()`
 + odb: resolve relative alternative paths when parsing
 + odb: refactor parsing of alternates to be self-contained

 Code refactoring around alternate object store.

 Will merge to 'master'.
 source: <20251211-b4-pks-odb-alternates-via-source-v3-0-00e3f54d07ba@pks.im>


* ps/repack-avoid-noop-midx-rewrite (2025-12-10) 3 commits
 - midx-write: skip rewriting MIDX with `--stdin-packs` unless needed
 - midx-write: extract function to test whether MIDX needs updating
 - midx: fix `BUG()` when getting preferred pack without a reverse index

 Even when there is no changes in the packfile and no need to
 recompute bitmaps, "git repack" recomputed and updated the MIDX
 file, which has been corrected.

 Comments?
 source: <20251210-pks-skip-noop-rewrite-v2-0-f813a9e44f28@pks.im>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ap/packfile-promisor-object-optim (2025-12-08) 2 commits
 - packfile: skip hash checks in add_promisor_object()
 - object: apply skip_hash and discard_tree optimizations to unknown blobs too

 The code path that enumerates promisor objects have been optimized
 to skip pointlessly parsing blob objects.

 Will merge to 'next'.
 cf. <xmqqecot3dm1.fsf@gitster.g>
 source: <20251209014900.402637-1-aplattner@nvidia.com>


* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251211-odb-related-fixes-v2-0-bdf875ce51fc@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jc/completion-no-single-letter-options (2025-12-06) 1 commit
  (merged to 'next' on 2025-12-17 at d8ae4b5ac4)
 + completion: clarify support for short options and arguments

 In-code comment update to clarify that single-letter options are
 outside of the scope of command line completion script.

 Will merge to 'master'.
 source: <xmqqzf7vm7b7.fsf@gitster.g>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* js/test-symlink-windows (2025-12-16) 10 commits
 - t7800: work around the MSYS path conversion on Windows
 - t6423: introduce Windows-specific handling for symlinking to /dev/null
 - t1305: skip symlink tests that do not apply to Windows
 - t1006: accommodate for symlink support in MSYS2
 - t0600: fix incomplete prerequisite for a test case
 - t0301: another fix for Windows compatibility
 - t0001: handle `diff --no-index` gracefully
 - mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 - apply: symbolic links lack a "trustable executable bit"
 - t9700: accommodate for Windows paths
 (this branch is used by js/prep-symlink-windows.)

 Prepare test suite for Git for Windows that supports symbolic
 links.

 Will merge to 'next'?
 cf. <xmqq345a46b1.fsf@gitster.g>
 source: <pull.2009.v3.git.1765885577.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* ds/doc-scalar-config (2025-12-12) 5 commits
  (merged to 'next' on 2025-12-16 at 221721824f)
 + scalar: document config settings
 + scalar: alphabetize and simplify config
 + scalar: remove stale config values
 + scalar: use index.skipHash=true for performance
 + scalar: annotate config file with "set by scalar"

 Documentation updates.

 Will merge to 'master'.
 source: <pull.2010.v3.git.1765552528.gitgitgadget@gmail.com>


* pw/replay-drop-empty (2025-12-16) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic gains consensus and stabilizes.
 source: <73ba74b8a2e7aaa625e6f0689a9f900ceebaaa03.1765894781.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* jc/submodule-add (2025-11-15) 1 commit
  (merged to 'next' on 2025-12-17 at 03e0b0b5d9)
 + submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Will merge to 'master'.
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
  (merged to 'next' on 2025-12-17 at 3955b0be68)
 + fetch: fix failed batched updates skipping operations
 + fetch: fix non-conflicting tags not being committed
 + fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'master'.
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-04) 11 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 source: <20251204141535.1986263-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 What's the status of this topic?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-12-13) 10 commits
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251213080817.347922-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 23%]

* Re: What's cooking in git.git (Dec 2025, #03)
  @ 2025-12-17  5:04 99%           ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-17  5:04 UTC (permalink / raw)
  To: Emily Shaffer
  Cc: Adrian Ratiu, Patrick Steinhardt, git, Rodrigo Damazio Bovendorp,
	Josh Steadmon, Ben Knoble, Phillip Wood, Kristoffer Haugsbakk

Emily Shaffer <nasamuffin@google.com> writes:

> FWIW, I also expect Josh Steadmon to find time to take a look at this
> series soon, but he has been busy with personal side of things for the
> last few days. It's not that there's disinterest from our side, more
> that there is a lot going on :)

Thanks, and thanks Josh for further inputs.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Dec 2025, #03)
  @ 2025-12-17  5:02 93%   ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-12-17  5:02 UTC (permalink / raw)
  To: Aaron Plattner; +Cc: git, Jeff King

Aaron Plattner <aplattner@nvidia.com> writes:

> On 12/12/25 2:26 AM, Junio C Hamano wrote:
>> * ap/packfile-promisor-object-optim (2025-12-08) 2 commits
>>   - packfile: skip hash checks in add_promisor_object()
>>   - object: apply skip_hash and discard_tree optimizations to unknown blobs too
>> 
>>   The code path that enumerates promisor objects have been optimized
>>   to skip pointlessly parsing blob objects.
>> 
>>   Comments?
>>   source: <20251209014900.402637-1-aplattner@nvidia.com>
> Jeff King said v2 of the patch looked good to him but recommended 
> splitting it into two changes. I don't know if he wanted to review v3 or 
> if he was okay with it based on his comments on v2. The only differences 
> in v3 are the commit count and descriptions.

v3 did not have links back to previous iterations, and

https://lore.kernel.org/git/?q=s%3A%22improve+--exclude-promisor-objects+performance%22

does not even show v1 or v2 (understandable if the topic was
retitled, which is not a bad thing, but makes it harder to find the
previous discussions in a case like this).  So as far as whoever
wrote the entry in the "What's cooking" report you quoted was
concerned, what [*] showed

 * https://lore.kernel.org/git/20251209014900.402637-1-aplattner@nvidia.com/

was everything known about the topic, which unfortunately had no
supporting comments.

Is this

  https://lore.kernel.org/git/20251206002014.2066644-1-aplattner@nvidia.com/

which I found in

  https://lore.kernel.org/git/?q=f%3Aaplattner%40nvidia.com

the v2 discussion?  We are lucky that you are not as prolific as
some contributors, for whom an author-name search would have found
way too many messages ;-)

I can see that the end result of applying the v3 patches match what
was in v2, and v3 separates along the lines Peff suggested in his

  https://lore.kernel.org/git/20251208202812.GC216526@coredump.intra.peff.net/

so that's an endorsement enough, I guess ;-).

Let's mark the topic for 'next', then.  Thanks.



^ permalink raw reply	[relevance 93%]

* Re: What's cooking in git.git (Dec 2025, #03)
  @ 2025-12-16  1:59 96%   ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-12-16  1:59 UTC (permalink / raw)
  To: Adrian Ratiu
  Cc: git, Emily Shaffer, Rodrigo Damazio Bovendorp, Junio C Hamano,
	Patrick Steinhardt, Josh Steadmon, Ben Knoble, Phillip Wood,
	Kristoffer Haugsbakk, Adrian Ratiu

Adrian Ratiu <adrian.ratiu@collabora.com> writes:

> On Fri, 12 Dec 2025, Junio C Hamano <gitster@pobox.com> wrote:
>> * ar/run-command-hook (2025-12-04) 11 commits
>> ...
>>  Use hook API to replace ad-hoc invocation of hook scripts with the
>>  run_command() API.
>>
>>  Will merge to 'next'?
>>  source: <20251204141535.1986263-1-adrian.ratiu@collabora.com>
>
> I think this can be merged to next, since the latest iteration has been
> sitting for a few weeks with no more feedback and all tests are green.

"tests being green" tells us that with the current coverage we
didn't see any regression but not more than that.  Especially, it
does not say anything about the quality of new code (and test) and
if it is in good shape to build on top.  

It also is very hard to tell from "no more feedback" if there is no
room for further improvements, or people are simply disinterested in
the topic and are not tempted to spend their brain cycles to help
improve the topic.

If there is no more comments, I'll try to see if I can block some
time to read the topic over myself with a pair of fresh eyes before
deciding.

Thanks for pinging.




^ permalink raw reply	[relevance 96%]

* What's cooking in git.git (Dec 2025, #04)
@ 2025-12-15 11:16 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-15 11:16 UTC (permalink / raw)
  To: git

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

* je/doc-data-model (2025-12-02) 1 commit
  (merged to 'next' on 2025-12-06 at 3f4935d65f)
 + doc: remove stray text in Git data model

 Docfix.
 source: <pull.2014.git.1764699084703.gitgitgadget@gmail.com>


* je/doc-pull (2025-12-03) 1 commit
  (merged to 'next' on 2025-12-05 at 601711e5f2)
 + doc: git-pull: fix 'git --rebase abort' typo

 Doc fixup.
 source: <pull.2015.git.1764776095597.gitgitgadget@gmail.com>


* js/last-modified-with-sparse-checkouts (2025-11-29) 1 commit
  (merged to 'next' on 2025-12-05 at f1d5abdd14)
 + last-modified: support sparse checkouts

 "git last-modified" used to mishandle "--" to mark the beginning of
 pathspec, which has been corrected.
 source: <pull.2013.git.1764423826908.gitgitgadget@gmail.com>


* kh/advise-w-git-help-in-branch (2025-12-02) 1 commit
  (merged to 'next' on 2025-12-05 at 3b7b03150e)
 + branch: advice using git-help(1) instead of man(1)

 A help message from "git branch" now mentions "git help" instead of
 "man" when suggesting to read some documentation.
 source: <V2_advice_git-help.53@msgid.xyz>


* lo/repo-struct-z (2025-12-04) 3 commits
  (merged to 'next' on 2025-12-06 at 4f602e14d8)
 + repo: add -z as an alias for --format=nul to git-repo-structure
 + repo: use [--format=... | -z] instead of [-z] in git-repo-info synopsis
 + repo: remove blank line from Documentation/git-repo.adoc
 (this branch is used by lo/repo-info-keys.)

 "git repo struct" learned to take "-z" as a synonym to "--format=nul".
 cf. <aTK9X6ptrqs_9agD@pks.im>
 source: <20251204210843.79411-1-lucasseikioshiro@gmail.com>


* rs/diff-index-find-copies-harder-optim (2025-11-30) 1 commit
  (merged to 'next' on 2025-12-05 at 539b086bfc)
 + diff-index: don't queue unchanged filepairs with diff_change()

 Halve the memory consumed by artificial filepairs created during
 "git diff --find-copioes-harder", also making the operation run
 faster.
 source: <aa28974b-ec73-4562-bfc8-4745ad58b55a@web.de>


* tc/last-modified-active-paths-optimization (2025-11-28) 1 commit
  (merged to 'next' on 2025-12-05 at 42c18b607f)
 + last-modified: fix use of uninitialized memory
 (this branch is used by jc/memzero-array and tc/memzero-array.)

 Recent optimization to "last-modified" command introduced use of
 uninitialized block of memory, which has been corrected.
 source: <20251128-toon-big-endian-ci-v1-1-80da0f629c1e@iotcl.com>


* tc/meson-cross-compile-fix (2025-12-03) 3 commits
  (merged to 'next' on 2025-12-05 at c45b57ca74)
 + meson: use is_cross_build() where possible
 + meson: only detect ICONV_OMITS_BOM if possible
 + meson: ignore subprojects/.wraplock

 Build fix.
 source: <20251202-toon-cross-compile-v1-0-cabc8bce529f@iotcl.com>

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

* kj/pull-options-decl-cleanup (2025-12-11) 1 commit
  (merged to 'next' on 2025-12-14 at f59cad1d37)
 + pull: move options[] array into function scope

 Code clean-up.

 Will merge to 'master'.
 source: <20251212074433.38027-1-jayatheerthkulkarni2005@gmail.com>


* jc/memzero-array (2025-12-12) 3 commits
 - cocci: use MEMZERO_ARRAY() a bit more
 - coccicheck: emit the contents of cocci patch
 - Merge branch 'tc/memzero-array' into jc/memzero-array
 (this branch uses tc/memzero-array.)

 Further application of MEMZERO_ARRAY() macro to the rest of the
 code base.

 Will merge to 'next' together with the base topic?
 source: <20251213014628.3380826-1-gitster@pobox.com>


* rs/t4014-git-version-string-fix (2025-12-13) 1 commit
  (merged to 'next' on 2025-12-14 at eef802176c)
 + t4014: support Git version strings with spaces

 Test fix.

 Will merge to 'master'.
 source: <b79cba1d-f32b-4034-979e-fb9528d05f18@web.de>


* jc/doc-commit-signoff-config (2025-12-14) 1 commit
 - commit: document that $command.signoff will not be added

 Documentation update.

 Will merge to 'next'?
 source: <xmqqldj48pyl.fsf@gitster.g>


* ps/packfile-store-in-odb-source (2025-12-14) 12 commits
 - packfile: move MIDX into packfile store
 - packfile: refactor `find_pack_entry()` to work on the packfile store
 - packfile: inline `find_kept_pack_entry()`
 - packfile: only prepare owning store in `packfile_store_prepare()`
 - packfile: only prepare owning store in `packfile_store_get_packs()`
 - packfile: move packfile store into object source
 - packfile: refactor misleading code when unusing pack windows
 - packfile: refactor kept-pack cache to work with packfile stores
 - packfile: pass source to `prepare_pack()`
 - packfile: create store via its owning source
 - Merge branch 'ps/odb-misc-fixes' into ps/packfile-store-in-odb-source
 - Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
 (this branch uses ps/object-read-stream and ps/odb-misc-fixes.)

 The packfile_store data structure is moved from object store to odb
 source.

 Comments?
 source: <20251215-b4-pks-pack-store-via-source-v1-0-433aac465295@pks.im>


* rs/diff-files-r-find-copies-fix (2025-12-14) 1 commit
 - diff-files: fix copy detection

 "git diff-files -R --find-copies-harder" has been taught to use
 the potential copy sources from the index correctly.

 Will merge to 'next'?
 source: <4b06a448-0935-4f2a-9061-238c7cc800c3@web.de>

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

* jt/repo-struct-more-objinfo (2025-12-12) 7 commits
 - builtin/repo: add object disk size info to structure table
 - builtin/repo: add disk size info to keyvalue stucture output
 - builtin/repo: add inflated object info to structure table
 - builtin/repo: add inflated object info to keyvalue structure output
 - builtin/repo: humanise count values in structure output
 - strbuf: split out logic to humanise byte values
 - builtin/repo: group per-type object values into struct

 More object database related information are shown in "git repo
 structure" output.

 Comments?
 source: <20251212223644.3090879-1-jltobler@gmail.com>


* jc/c99-fam (2025-12-12) 1 commit
 - FLEX_ARRAY: require platforms to support the C99 syntax

 Require C99 style flexible array member support from all platforms.

 Will merge to 'next'?
 source: <xmqqqzszc13d.fsf@gitster.g>


* jc/macports-darwinports (2025-12-10) 1 commit
  (merged to 'next' on 2025-12-14 at 5c608e07fe)
 + Makefile: help macOS novices by mentioning MacPorts

 Makefile in-comment doc update.

 Will merge to 'master'.
 source: <xmqq7buthgq4.fsf@gitster.g>


* rs/macos-iconv-workaround (2025-12-13) 2 commits
 - config.mak.uname: use iconv from Homebrew on macOS
 - Makefile: add NO_HOMEBREW

 Workaround that "iconv" shipped as part of macOS, which is broken
 handling stateful ISO-2022 encoded strings.

 Comments?
 cf. <435e4190-6c46-4404-b769-234f704f608a@web.de>
 source: <53690064-1c98-40e9-8b9a-7ba6bee63703@web.de>


* rs/replay-wrong-onto-fix (2025-12-11) 2 commits
  (merged to 'next' on 2025-12-14 at d34966465f)
 + replay: move onto NULL check before first use
 + Merge branch 'sa/replay-atomic-ref-updates' into rs/replay-wrong-onto-fix

 "git replay --onto=<commit> ...", when <commit> is mistyped,
 started to segfault with recent change, which has been corrected.

 Will merge to 'master'.
 source: <9db2b913-b5d6-4617-b079-b4612eaa2b97@web.de>


* tc/memzero-array (2025-12-10) 3 commits
 - contrib/coccinelle: pass include paths to spatch(1)
 - git-compat-util: introduce MEMZERO_ARRAY() macro
 - Merge branch 'tc/last-modified-active-paths-optimization' into tc/memzero-array
 (this branch is used by jc/memzero-array.)

 MEMZERO_ARRAY() helper is introduced to avoid clearing only the
 first N bytes of an N-element array whose elements are larger than
 a byte.

 Will merge to 'next'?
 cf. <aTpieqFoMmZiSzWS@pks.im>
 source: <20251210-toon-cocci-memzero-v1-0-ae916a79065b@iotcl.com>


* jc/capability-leak (2025-12-06) 1 commit
  (merged to 'next' on 2025-12-10 at cfe8ce92b1)
 + connect: plug protocol capability leak

 Leakfix.

 Will merge to 'master'.
 source: <xmqqfr9mnbu9.fsf@gitster.g>


* kh/doc-replay-updates (2025-12-13) 3 commits
  (merged to 'next' on 2025-12-14 at 71a8f83876)
 + doc: replay: link section using markup
 + replay: improve --contained and add to doc
 + doc: replay: mention no output on conflicts

 "git replay" documentation updates.

 Will merge to 'master'.
 source: <V2_CV_replay_conflict.12f@msgid.xyz>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* kh/doc-pre-commit-fix (2025-12-07) 1 commit
  (merged to 'next' on 2025-12-10 at f21f000140)
 + doc: join default pre-commit paragraphs

 Docfix.

 Will merge to 'master'.
 source: <pre-commit_when_enabled.10a@msgid.xyz>


* kh/doc-send-email-paragraph-fix (2025-12-08) 1 commit
  (merged to 'next' on 2025-12-10 at 674ac2bdf7)
 + doc: send-email: fix broken list continuation

 Docfix.

 Will merge to 'master'.
 source: <send-email_list_contin.112@msgid.xyz>


* mh/doc-config-gui-gcwarning (2025-12-08) 1 commit
  (merged to 'next' on 2025-12-10 at 15d6df9a04)
 + config: document 'gui.GCWarning'

 Docfix.

 Will merge to 'master'.
 source: <20251208190400.64920-1-matthewhughes934@gmail.com>


* ps/odb-alternates-object-sources (2025-12-11) 8 commits
  (merged to 'next' on 2025-12-12 at 1dd061c0dc)
 + odb: write alternates via sources
 + odb: read alternates via sources
 + odb: drop forward declaration of `read_info_alternates()`
 + odb: remove mutual recursion when parsing alternates
 + odb: stop splitting alternate in `odb_add_to_alternates_file()`
 + odb: move computation of normalized objdir into `alt_odb_usable()`
 + odb: resolve relative alternative paths when parsing
 + odb: refactor parsing of alternates to be self-contained

 Code refactoring around alternate object store.

 Will merge to 'master'.
 source: <20251211-b4-pks-odb-alternates-via-source-v3-0-00e3f54d07ba@pks.im>


* ps/repack-avoid-noop-midx-rewrite (2025-12-10) 3 commits
 - midx-write: skip rewriting MIDX with `--stdin-packs` unless needed
 - midx-write: extract function to test whether MIDX needs updating
 - midx: fix `BUG()` when getting preferred pack without a reverse index

 Even when there is no changes in the packfile and no need to
 recompute bitmaps, "git repack" recomputed and updated the MIDX
 file, which has been corrected.

 Comments?
 source: <20251210-pks-skip-noop-rewrite-v2-0-f813a9e44f28@pks.im>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ap/packfile-promisor-object-optim (2025-12-08) 2 commits
 - packfile: skip hash checks in add_promisor_object()
 - object: apply skip_hash and discard_tree optimizations to unknown blobs too

 The code path that enumerates promisor objects have been optimized
 to skip pointlessly parsing blob objects.

 Comments?
 source: <20251209014900.402637-1-aplattner@nvidia.com>


* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes
 (this branch is used by ps/packfile-store-in-odb-source.)

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251211-odb-related-fixes-v2-0-bdf875ce51fc@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* rs/ban-mktemp (2025-12-06) 5 commits
  (merged to 'next' on 2025-12-09 at d459e9d8dd)
 + compat: remove gitmkdtemp()
 + banned.h: ban mktemp(3)
 + compat: remove mingw_mktemp()
 + compat: use git_mkdtemp()
 + wrapper: add git_mkdtemp()

 Rewrite the only use of "mktemp()" that is subject to TOCTOU race
 and Stop using the insecure "mktemp()" function.

 Will merge to 'master'.
 source: <64e62623-b911-4ddd-a481-05191853c0a6@web.de>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jc/completion-no-single-letter-options (2025-12-06) 1 commit
 - completion: clarify support for short options and arguments

 In-code comment update to clarify that single-letter options are
 outside of the scope of command line completion script.

 Will merge to 'next'?
 source: <xmqqzf7vm7b7.fsf@gitster.g>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* js/test-symlink-windows (2025-12-05) 10 commits
 - t7800: work around the MSYS path conversion on Windows
 - t6423: introduce Windows-specific handling for symlinking to /dev/null
 - t1305: skip symlink tests that do not apply to Windows
 - t1006: accommodate for symlink support in MSYS2
 - t0600: fix incomplete prerequisite for a test case
 - t0301: another fix for Windows compatibility
 - t0001: handle `diff --no-index` gracefully
 - mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 - apply: symbolic links lack a "trustable executable bit"
 - t9700: accommodate for Windows paths

 Prepare test suite for Git for Windows that supports symbolic
 links.

 Comments?
 cf. <xmqqms44cb7p.fsf@gitster.g>
 cf. <xmqqecpgc8wd.fsf@gitster.g>
 source: <pull.2009.v2.git.1764946945.gitgitgadget@gmail.com>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* ds/doc-scalar-config (2025-12-12) 5 commits
  (merged to 'next' on 2025-12-14 at 2a7406f512)
 + scalar: document config settings
 + scalar: alphabetize and simplify config
 + scalar: remove stale config values
 + scalar: use index.skipHash=true for performance
 + scalar: annotate config file with "set by scalar"

 Documentation updates.

 Will merge to 'master'.
 source: <pull.2010.v3.git.1765552528.gitgitgadget@gmail.com>


* pw/replay-drop-empty (2025-11-27) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic stabilizes.
 source: <8a2a1215306452147cc7b803530ab2429bf57f15.1764260150.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* gf/win32-pthread-cond-init (2025-11-20) 1 commit
  (merged to 'next' on 2025-12-09 at 202516d20c)
 + win32: pthread_cond_init should return a value

 Emulation code clean-up.

 Will merge to 'master'.
 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ps/object-read-stream (2025-11-23) 20 commits
  (merged to 'next' on 2025-12-09 at c8d645f8ea)
 + streaming: drop redundant type and size pointers
 + streaming: move into object database subsystem
 + streaming: refactor interface to be object-database-centric
 + streaming: move logic to read packed objects streams into backend
 + streaming: move logic to read loose objects streams into backend
 + streaming: make the `odb_read_stream` definition public
 + streaming: get rid of `the_repository`
 + streaming: rely on object sources to create object stream
 + packfile: introduce function to read object info from a store
 + streaming: move zlib stream into backends
 + streaming: create structure for filtered object streams
 + streaming: create structure for packed object streams
 + streaming: create structure for loose object streams
 + streaming: create structure for in-core object streams
 + streaming: allocate stream inside the backend-specific logic
 + streaming: explicitly pass packfile info when streaming a packed object
 + streaming: propagate final object type via the stream
 + streaming: drop the `open()` callback function
 + streaming: rename `git_istream` into `odb_read_stream`
 + Merge branch 'ps/object-source-loose' into ps/object-read-stream
 (this branch is used by ps/packfile-store-in-odb-source.)

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.

 Will merge to 'master'.
 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>


* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Will merge to 'next'?
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
 - fetch: fix failed batched updates skipping operations
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Expecting a (hopefully small and final) reroll.
 cf. <CAOLa=ZQ-O7V9qHbgeuQ78R1bHGDmGEM6fP5Kr9aC0AfvSF8MZA@mail.gmail.com>
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-04) 11 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 source: <20251204141535.1986263-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Ready?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-12-13) 10 commits
 - submodule: hash the submodule name for the gitdir path
 - submodule: fix case-folding gitdir filesystem collisions
 - submodule--helper: fix filesystem collisions by encoding gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: add gitdir migration command
 - submodule: allow runtime enabling extensions.submodulePathConfig
 - submodule: introduce extensions.submodulePathConfig
 - builtin/submodule--helper: add gitdir command
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251213080817.347922-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 23%]

* What's cooking in git.git (Dec 2025, #03)
@ 2025-12-12 10:26 25% Junio C Hamano
                     ` (2 more replies)
  0 siblings, 3 replies; 200+ results
From: Junio C Hamano @ 2025-12-12 10:26 UTC (permalink / raw)
  To: git

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]

* jt/repo-struct-more-objinfo (2025-12-09) 6 commits
 - builtin/repo: add object disk size info to structure table
 - builtin/repo: add disk size info to keyvalue stucture output
 - builtin/repo: add inflated object info to structure table
 - builtin/repo: add inflated object info to keyvalue structure output
 - builtin/repo: humanise count values in structure output
 - builtin/repo: group per-type object values into struct

 More object database related information are shown in "git repo
 structure" output.

 Comments?
 source: <20251209225820.2861276-1-jltobler@gmail.com>


* jc/c99-fam (2025-12-11) 1 commit
 - 3.0: require C99 flexible-array member syntax

 Require C99 style flexible array member support after Git 3.0
 boundary.

 Comments?
 source: <xmqqbjk5e32q.fsf@gitster.g>


* jc/macports-darwinports (2025-12-10) 1 commit
 - Makefile: help macOS novices by mentioning MacPorts

 Makefile in-comment doc update.

 Will merge to 'next'.
 source: <xmqq7buthgq4.fsf@gitster.g>


* rs/macos-iconv-workaround (2025-12-09) 1 commit
 - config.mak.uname: use iconv from Homebrew on macOS

 Workaround that "iconv" shipped as part of macOS, which is broken
 handling ISO-2022 encoded strings.

 Will merge to 'next'?
 source: <16efc726-34be-44f5-aa92-4e82b663ab3d@web.de>


* rs/replay-wrong-onto-fix (2025-12-11) 2 commits
 - replay: move onto NULL check before first use
 - Merge branch 'sa/replay-atomic-ref-updates' into rs/replay-wrong-onto-fix

 "git replay --onto=<commit> ...", when <commit> is mistyped,
 started to segfault with recent change, which has been corrected.

 Will merge to 'next'.
 source: <9db2b913-b5d6-4617-b079-b4612eaa2b97@web.de>


* tc/memzero-array (2025-12-10) 3 commits
 - contrib/coccinelle: pass include paths to spatch(1)
 - git-compat-util: introduce MEMZERO_ARRAY() macro
 - Merge branch 'tc/last-modified-active-paths-optimization' into tc/memzero-array
 (this branch uses tc/last-modified-active-paths-optimization.)

 MEMZERO_ARRAY() helper is introduced to avoid clearing only the
 first N bytes of an N-element array whose elements are larger than
 a byte.

 Will merge to 'next'?
 cf. <aTpieqFoMmZiSzWS@pks.im>
 source: <20251210-toon-cocci-memzero-v1-0-ae916a79065b@iotcl.com>

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

* jc/capability-leak (2025-12-06) 1 commit
  (merged to 'next' on 2025-12-10 at cfe8ce92b1)
 + connect: plug protocol capability leak

 Leakfix.

 Will merge to 'master'.
 source: <xmqqfr9mnbu9.fsf@gitster.g>


* kh/doc-replay-updates (2025-12-07) 3 commits
 - doc: replay: link section using markup
 - doc: replay: document --contained
 - doc: replay: mention no output on conflicts

 "git replay" documentation updates.

 Expecting a (hopefully small and final) reroll.
 cf. <39b57721-ab9e-489d-a382-16d9fe94c300@app.fastmail.com>
 source: <CV_replay_conflict.101@msgid.xyz>


* lo/repo-info-keys (2025-12-09) 3 commits
 - repo: add new flag --keys to git-repo-info
 - repo: add a default output format to enum output_format
 - Merge branch 'lo/repo-struct-z' into lo/repo-info-keys
 (this branch uses lo/repo-struct-z.)

 "git repo info" learns "--keys" action to list known keys.

 Comments?
 source: <20251209194616.61620-1-lucasseikioshiro@gmail.com>


* kh/doc-pre-commit-fix (2025-12-07) 1 commit
  (merged to 'next' on 2025-12-10 at f21f000140)
 + doc: join default pre-commit paragraphs

 Docfix.

 Will merge to 'master'.
 source: <pre-commit_when_enabled.10a@msgid.xyz>


* kh/doc-send-email-paragraph-fix (2025-12-08) 1 commit
  (merged to 'next' on 2025-12-10 at 674ac2bdf7)
 + doc: send-email: fix broken list continuation

 Docfix.

 Will merge to 'master'.
 source: <send-email_list_contin.112@msgid.xyz>


* mh/doc-config-gui-gcwarning (2025-12-08) 1 commit
  (merged to 'next' on 2025-12-10 at 15d6df9a04)
 + config: document 'gui.GCWarning'

 Docfix.

 Will merge to 'master'.
 source: <20251208190400.64920-1-matthewhughes934@gmail.com>


* ps/odb-alternates-object-sources (2025-12-11) 8 commits
  (merged to 'next' on 2025-12-12 at 1dd061c0dc)
 + odb: write alternates via sources
 + odb: read alternates via sources
 + odb: drop forward declaration of `read_info_alternates()`
 + odb: remove mutual recursion when parsing alternates
 + odb: stop splitting alternate in `odb_add_to_alternates_file()`
 + odb: move computation of normalized objdir into `alt_odb_usable()`
 + odb: resolve relative alternative paths when parsing
 + odb: refactor parsing of alternates to be self-contained

 Code refactoring around alternate object store.

 Will merge to 'master'.
 source: <20251211-b4-pks-odb-alternates-via-source-v3-0-00e3f54d07ba@pks.im>


* ps/repack-avoid-noop-midx-rewrite (2025-12-10) 3 commits
 - midx-write: skip rewriting MIDX with `--stdin-packs` unless needed
 - midx-write: extract function to test whether MIDX needs updating
 - midx: fix `BUG()` when getting preferred pack without a reverse index

 Even when there is no changes in the packfile and no need to
 recompute bitmaps, "git repack" recomputed and updated the MIDX
 file, which has been corrected.

 Comments?
 source: <20251210-pks-skip-noop-rewrite-v2-0-f813a9e44f28@pks.im>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>


* ap/packfile-promisor-object-optim (2025-12-08) 2 commits
 - packfile: skip hash checks in add_promisor_object()
 - object: apply skip_hash and discard_tree optimizations to unknown blobs too

 The code path that enumerates promisor objects have been optimized
 to skip pointlessly parsing blob objects.

 Comments?
 source: <20251209014900.402637-1-aplattner@nvidia.com>


* je/doc-pull (2025-12-03) 1 commit
  (merged to 'next' on 2025-12-05 at 601711e5f2)
 + doc: git-pull: fix 'git --rebase abort' typo

 Doc fixup.

 Will merge to 'master'.
 source: <pull.2015.git.1764776095597.gitgitgadget@gmail.com>


* js/last-modified-with-sparse-checkouts (2025-11-29) 1 commit
  (merged to 'next' on 2025-12-05 at f1d5abdd14)
 + last-modified: support sparse checkouts

 "git last-modified" used to mishandle "--" to mark the beginning of
 pathspec, which has been corrected.

 Will merge to 'master'.
 source: <pull.2013.git.1764423826908.gitgitgadget@gmail.com>


* kh/advise-w-git-help-in-branch (2025-12-02) 1 commit
  (merged to 'next' on 2025-12-05 at 3b7b03150e)
 + branch: advice using git-help(1) instead of man(1)

 A help message from "git branch" now mentions "git help" instead of
 "man" when suggesting to read some documentation.

 Will merge to 'master'.
 source: <V2_advice_git-help.53@msgid.xyz>


* lo/repo-struct-z (2025-12-04) 3 commits
  (merged to 'next' on 2025-12-06 at 4f602e14d8)
 + repo: add -z as an alias for --format=nul to git-repo-structure
 + repo: use [--format=... | -z] instead of [-z] in git-repo-info synopsis
 + repo: remove blank line from Documentation/git-repo.adoc
 (this branch is used by lo/repo-info-keys.)

 "git repo struct" learned to take "-z" as a synonym to "--format=nul".

 Will merge to 'master'.
 cf. <aTK9X6ptrqs_9agD@pks.im>
 source: <20251204210843.79411-1-lucasseikioshiro@gmail.com>


* tc/meson-cross-compile-fix (2025-12-03) 3 commits
  (merged to 'next' on 2025-12-05 at c45b57ca74)
 + meson: use is_cross_build() where possible
 + meson: only detect ICONV_OMITS_BOM if possible
 + meson: ignore subprojects/.wraplock

 Build fix.

 Will merge to 'master'.
 source: <20251202-toon-cross-compile-v1-0-cabc8bce529f@iotcl.com>


* je/doc-data-model (2025-12-02) 1 commit
  (merged to 'next' on 2025-12-06 at 3f4935d65f)
 + doc: remove stray text in Git data model

 Docfix.

 Will merge to 'master'.
 source: <pull.2014.git.1764699084703.gitgitgadget@gmail.com>


* ps/odb-misc-fixes (2025-12-10) 3 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251211-odb-related-fixes-v2-0-bdf875ce51fc@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* rs/ban-mktemp (2025-12-06) 5 commits
  (merged to 'next' on 2025-12-09 at d459e9d8dd)
 + compat: remove gitmkdtemp()
 + banned.h: ban mktemp(3)
 + compat: remove mingw_mktemp()
 + compat: use git_mkdtemp()
 + wrapper: add git_mkdtemp()

 Rewrite the only use of "mktemp()" that is subject to TOCTOU race
 and Stop using the insecure "mktemp()" function.

 Will merge to 'master'.
 source: <64e62623-b911-4ddd-a481-05191853c0a6@web.de>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jc/completion-no-single-letter-options (2025-12-06) 1 commit
 - completion: clarify support for short options and arguments

 In-code comment update to clarify that single-letter options are
 outside of the scope of command line completion script.

 Comments?
 source: <xmqqzf7vm7b7.fsf@gitster.g>


* tc/last-modified-active-paths-optimization (2025-11-28) 1 commit
  (merged to 'next' on 2025-12-05 at 42c18b607f)
 + last-modified: fix use of uninitialized memory
 (this branch is used by tc/memzero-array.)

 Recent optimization to "last-modified" command introduced use of
 uninitialized block of memory, which has been corrected.

 Will merge to 'master'.
 source: <20251128-toon-big-endian-ci-v1-1-80da0f629c1e@iotcl.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* js/test-symlink-windows (2025-12-05) 10 commits
 - t7800: work around the MSYS path conversion on Windows
 - t6423: introduce Windows-specific handling for symlinking to /dev/null
 - t1305: skip symlink tests that do not apply to Windows
 - t1006: accommodate for symlink support in MSYS2
 - t0600: fix incomplete prerequisite for a test case
 - t0301: another fix for Windows compatibility
 - t0001: handle `diff --no-index` gracefully
 - mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 - apply: symbolic links lack a "trustable executable bit"
 - t9700: accommodate for Windows paths

 Prepare test suite for Git for Windows that supports symbolic
 links.

 Comments?
 cf. <xmqqms44cb7p.fsf@gitster.g>
 cf. <xmqqecpgc8wd.fsf@gitster.g>
 source: <pull.2009.v2.git.1764946945.gitgitgadget@gmail.com>


* rs/diff-index-find-copies-harder-optim (2025-11-30) 1 commit
  (merged to 'next' on 2025-12-05 at 539b086bfc)
 + diff-index: don't queue unchanged filepairs with diff_change()

 Halve the memory consumed by artificial filepairs created during
 "git diff --find-copioes-harder", also making the operation run
 faster.

 Will merge to 'master'.
 source: <aa28974b-ec73-4562-bfc8-4745ad58b55a@web.de>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* ds/doc-scalar-config (2025-12-01) 5 commits
 - scalar: document config settings
 - scalar: alphabetize and simplify config
 - scalar: remove stale config values
 - scalar: use index.skipHash=true for performance
 - scalar: annotate config file with "set by scalar"

 Documentation updates.

 Expecting a reroll.
 cf. <aS88bnmZXMZCV5oS@pks.im>
 source: <pull.2010.v2.git.1764607847.gitgitgadget@gmail.com>


* pw/replay-drop-empty (2025-11-27) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic stabilizes.
 source: <8a2a1215306452147cc7b803530ab2429bf57f15.1764260150.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* gf/win32-pthread-cond-init (2025-11-20) 1 commit
  (merged to 'next' on 2025-12-09 at 202516d20c)
 + win32: pthread_cond_init should return a value

 Emulation code clean-up.

 Will merge to 'master'.
 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ps/object-read-stream (2025-11-23) 20 commits
  (merged to 'next' on 2025-12-09 at c8d645f8ea)
 + streaming: drop redundant type and size pointers
 + streaming: move into object database subsystem
 + streaming: refactor interface to be object-database-centric
 + streaming: move logic to read packed objects streams into backend
 + streaming: move logic to read loose objects streams into backend
 + streaming: make the `odb_read_stream` definition public
 + streaming: get rid of `the_repository`
 + streaming: rely on object sources to create object stream
 + packfile: introduce function to read object info from a store
 + streaming: move zlib stream into backends
 + streaming: create structure for filtered object streams
 + streaming: create structure for packed object streams
 + streaming: create structure for loose object streams
 + streaming: create structure for in-core object streams
 + streaming: allocate stream inside the backend-specific logic
 + streaming: explicitly pass packfile info when streaming a packed object
 + streaming: propagate final object type via the stream
 + streaming: drop the `open()` callback function
 + streaming: rename `git_istream` into `odb_read_stream`
 + Merge branch 'ps/object-source-loose' into ps/object-read-stream

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.

 Will merge to 'master'.
 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>


* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
 - fetch: fix failed batched updates skipping operations
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Expecting a (hopefully small and final) reroll.
 cf. <CAOLa=ZQ-O7V9qHbgeuQ78R1bHGDmGEM6fP5Kr9aC0AfvSF8MZA@mail.gmail.com>
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-04) 11 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 source: <20251204141535.1986263-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Ready?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-11-19) 7 commits
 - meson/Makefile: allow setting submodule encoding at build time
 - submodule: use hashed name for gitdir
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting a reroll.
 source: <20251119211030.2008441-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 25%]

* Re: What's cooking in git.git (Dec 2025, #02)
  @ 2025-12-10 12:00 99%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-10 12:00 UTC (permalink / raw)
  To: Karthik Nayak; +Cc: git

Karthik Nayak <karthik.188@gmail.com> writes:

>>>>  Expecting a (hopefully small and final) reroll.
>>>>  cf. <CAOLa=ZQ-O7V9qHbgeuQ78R1bHGDmGEM6fP5Kr9aC0AfvSF8MZA@mail.gmail.com>
>>>>  source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>
>>>
>>> The only change needed from the last review was a typo. I think we should be
>>> good as is.
>>
>> Meaning that we prefer to leave the typo in, or just we won't die
>> with a known typo?
>
> The typo was in a comment in the tests, so I thought it wasn't worth
> re-rolling, but happy to do so.

I went back to the discussion to find that single typo and tweaked
it myself in my tree, so no need to resend.

Thanks.


diff --git c/t/t5510-fetch.sh w/t/t5510-fetch.sh
index a1ca4e1ac7..ce1c23684e 100755
--- c/t/t5510-fetch.sh
+++ w/t/t5510-fetch.sh
@@ -1628,7 +1628,7 @@ test_expect_success "backfill tags when providing a refspec" '
 	    test_commit fetch-me
 	) &&
 
-	# The "history" tag is backfilled eventhough we requested
+	# The "history" tag is backfilled even though we requested
 	# to only fetch HEAD
 	git -C target fetch origin HEAD:branch &&
 	git -C target tag -l >actual &&


^ permalink raw reply related	[relevance 99%]

* Re: What's cooking in git.git (Dec 2025, #02)
  @ 2025-12-10  9:20 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-10  9:20 UTC (permalink / raw)
  To: Kristoffer Haugsbakk; +Cc: git, Phillip Wood

"Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> writes:

> On Tue, Dec 9, 2025, at 22:08, Junio C Hamano wrote:
>> * kh/doc-replay-updates (2025-12-07) 3 commits
>>  - doc: replay: link section using markup
>>  - doc: replay: document --contained
>>  - doc: replay: mention no output on conflicts
>>
>>  "git replay" documentation updates.
>>
>>  Will merge to 'next'.
>>  source: <CV_replay_conflict.101@msgid.xyz>
>
> This needs a new version to at the least incorporate the “Requires
> --onto” on `--contained` suggestion from Phillip.

Ah, very true.  Thanks for correcting me.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Dec 2025, #02)
  @ 2025-12-09 23:10 99%   ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-12-09 23:10 UTC (permalink / raw)
  To: Karthik Nayak; +Cc: git

Karthik Nayak <karthik.188@gmail.com> writes:

>> * kn/ref-location (2025-12-01) 2 commits
>>  - refs: add GIT_REF_URI to specify reference backend and directory
>>  - refs: support obtaining ref_store for given dir
>>
>>  A mechanism to specify what reference backend to use and store
>>  references in which directory is introduced, which would likely to
>>  be useful during ref migration.
>>
>>  Comments?
>>  source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>
>
> I'm currently on leave. While I do plan to work on this, my next version
> which is based on Patricks recent review will be a bit delayed.

Understood.  Thanks for a note.

>> * kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
>>  - fetch: fix failed batched updates skipping operations
>>  - fetch: fix non-conflicting tags not being committed
>>  - fetch: extract out reference committing logic
>>
>>  "git fetch" that involves fetching tags, when a tag being fetched
>>  needs to overwrite existing one, failed to fetch other tags, which
>>  has been corrected.
>>
>>  Expecting a (hopefully small and final) reroll.
>>  cf. <CAOLa=ZQ-O7V9qHbgeuQ78R1bHGDmGEM6fP5Kr9aC0AfvSF8MZA@mail.gmail.com>
>>  source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>
>
> The only change needed from the last review was a typo. I think we should be
> good as is.

Meaning that we prefer to leave the typo in, or just we won't die
with a known typo?


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Dec 2025, #02)
@ 2025-12-09 21:08 26% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2025-12-09 21:08 UTC (permalink / raw)
  To: git

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

The maintainer will only be online for a few days during the first
week of December, so please expect things to be slower in my tree.

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

* bc/zsh-testsuite (2025-11-27) 2 commits
  (merged to 'next' on 2025-11-30 at b4a3081f6f)
 + t5564: fix test hang under zsh's sh mode
 + t0614: use numerical comparison with test_line_count

 A few tests have been updated to work under the shell compatible
 mode of zsh.
 source: <20251128012107.101431-1-sandals@crustytoothpaste.net>


* en/replay-doc-revision-range (2025-11-28) 1 commit
  (merged to 'next' on 2025-11-30 at 37ba09bea2)
 + Documentation/git-replay.adoc: fix errors around revision range

 The use of "revision" (a connected set of commits) has been
 clarified in the "git replay" documentation.
 source: <pull.2012.git.1764391464952.gitgitgadget@gmail.com>


* pw/replay-exclude-gpgsig-fix (2025-11-26) 1 commit
  (merged to 'next' on 2025-11-30 at 3dda1242db)
 + replay: do not copy "gpgsign-sha256" header
 (this branch is used by ps/history and pw/replay-drop-empty.)

 "git replay" forgot to omit the "gpgsig-sha256" extended header
 from the resulting commit the same way it omits "gpgsig", which has
 been corrected.
 source: <4f04af5790353b074cf122c450c1cd3f8d1cecf3.1764167611.git.phillip.wood@dunelm.org.uk>


* yc/xdiff-patience-optim (2025-11-26) 1 commit
  (merged to 'next' on 2025-11-30 at db62d67599)
 + xdiff: optimize patience diff's LCS search

 The way patience diff finds LCS has been optimized.
 source: <pull.2109.v2.git.git.1764209766305.gitgitgadget@gmail.com>

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

* jc/capability-leak (2025-12-06) 1 commit
 - connect: plug protocol capability leak

 Leakfix.

 Will merge to 'next'.
 source: <xmqqfr9mnbu9.fsf@gitster.g>


* kh/doc-replay-updates (2025-12-07) 3 commits
 - doc: replay: link section using markup
 - doc: replay: document --contained
 - doc: replay: mention no output on conflicts

 "git replay" documentation updates.

 Will merge to 'next'.
 source: <CV_replay_conflict.101@msgid.xyz>


* lo/repo-info-keys (2025-12-07) 1 commit
 - repo: add new flag --keys to git-repo-info
 (this branch uses lo/repo-struct-z.)

 "git repo info" learns "--keys" action to list known keys.

 Expecting a reroll.
 source: <20251204210843.79411-1-lucasseikioshiro@gmail.com>


* kh/doc-pre-commit-fix (2025-12-07) 1 commit
 - doc: join default pre-commit paragraphs

 Docfix.

 Will merge to 'next'.
 source: <pre-commit_when_enabled.10a@msgid.xyz>


* kh/doc-send-email-paragraph-fix (2025-12-08) 1 commit
 - doc: send-email: fix broken list continuation

 Docfix.

 Will merge to 'next'.
 source: <send-email_list_contin.112@msgid.xyz>


* mh/doc-config-gui-gcwarning (2025-12-08) 1 commit
 - config: document 'gui.GCWarning'

 Docfix.

 Will merge to 'next'.
 source: <20251208190400.64920-1-matthewhughes934@gmail.com>


* ps/odb-alternates-object-sources (2025-12-08) 8 commits
 - odb: write alternates via sources
 - odb: read alternates via sources
 - odb: drop forward declaration of `read_info_alternates()`
 - odb: remove mutual recursion when parsing alternates
 - odb: adapt `odb_add_to_alternates_file()` to call `odb_add_source()`
 - odb: move computation of normalized objdir into `alt_odb_usable()`
 - odb: resolve relative alternative paths when parsing
 - odb: refactor parsing of alternates to be self-contained

 Code refactoring around alternate object store.

 Comments?
 source: <20251208-b4-pks-odb-alternates-via-source-v1-0-e7ebb8b18c03@pks.im>


* ps/repack-avoid-noop-midx-rewrite (2025-12-08) 2 commits
 - builtin/repack: don't regenerate MIDX unless needed
 - midx: fix `BUG()` when getting preferred pack without a reverse index

 Even when there is no changes in the packfile and no need to
 recompute bitmaps, "git repack" recomputed and updated the MIDX
 file, which has been corrected.

 Comments?
 source: <20251208-pks-skip-noop-rewrite-v1-0-430d52dba9f0@pks.im>


* sb/doc-update-ref-markup-fix (2025-12-08) 1 commit
 - doc: fix `update-ref` `symref-create` formatting

 Doc mark-up fix.

 Will merget to 'next'.
 source: <pull.2123.git.git.1765261419802.gitgitgadget@gmail.com>

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

* ap/packfile-promisor-object-optim (2025-12-08) 2 commits
 - packfile: skip hash checks in add_promisor_object()
 - object: apply skip_hash and discard_tree optimizations to unknown blobs too

 The code path that enumerates promisor objects have been optimized
 to skip pointlessly parsing blob objects.

 Comments?
 source: <20251209014900.402637-1-aplattner@nvidia.com>


* je/doc-pull (2025-12-03) 1 commit
  (merged to 'next' on 2025-12-05 at 601711e5f2)
 + doc: git-pull: fix 'git --rebase abort' typo

 Doc fixup.

 Will merge to 'master'.
 source: <pull.2015.git.1764776095597.gitgitgadget@gmail.com>


* js/last-modified-with-sparse-checkouts (2025-11-29) 1 commit
  (merged to 'next' on 2025-12-05 at f1d5abdd14)
 + last-modified: support sparse checkouts

 "git last-modified" used to mishandle "--" to mark the beginning of
 pathspec, which has been corrected.

 Will merge to 'master'.
 source: <pull.2013.git.1764423826908.gitgitgadget@gmail.com>


* kh/advise-w-git-help-in-branch (2025-12-02) 1 commit
  (merged to 'next' on 2025-12-05 at 3b7b03150e)
 + branch: advice using git-help(1) instead of man(1)

 A help message from "git branch" now mentions "git help" instead of
 "man" when suggesting to read some documentation.

 Will merge to 'master'.
 source: <V2_advice_git-help.53@msgid.xyz>


* lo/repo-struct-z (2025-12-04) 3 commits
  (merged to 'next' on 2025-12-06 at 4f602e14d8)
 + repo: add -z as an alias for --format=nul to git-repo-structure
 + repo: use [--format=... | -z] instead of [-z] in git-repo-info synopsis
 + repo: remove blank line from Documentation/git-repo.adoc
 (this branch is used by lo/repo-info-keys.)

 "git repo struct" learned to take "-z" as a synonym to "--format=nul".

 Will merge to 'master'.
 cf. <aTK9X6ptrqs_9agD@pks.im>
 source: <20251204210843.79411-1-lucasseikioshiro@gmail.com>


* tc/meson-cross-compile-fix (2025-12-03) 3 commits
  (merged to 'next' on 2025-12-05 at c45b57ca74)
 + meson: use is_cross_build() where possible
 + meson: only detect ICONV_OMITS_BOM if possible
 + meson: ignore subprojects/.wraplock

 Build fix.

 Will merge to 'master'.
 source: <20251202-toon-cross-compile-v1-0-cabc8bce529f@iotcl.com>


* je/doc-data-model (2025-12-02) 1 commit
  (merged to 'next' on 2025-12-06 at 3f4935d65f)
 + doc: remove stray text in Git data model

 Docfix.

 Will merge to 'master'.
 source: <pull.2014.git.1764699084703.gitgitgadget@gmail.com>


* ps/odb-misc-fixes (2025-12-05) 4 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - builtin/repack: fix geometric repacks with promisor remotes
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251205-odb-related-fixes-v1-0-ef4250abb584@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* rs/ban-mktemp (2025-12-06) 5 commits
  (merged to 'next' on 2025-12-09 at d459e9d8dd)
 + compat: remove gitmkdtemp()
 + banned.h: ban mktemp(3)
 + compat: remove mingw_mktemp()
 + compat: use git_mkdtemp()
 + wrapper: add git_mkdtemp()

 Rewrite the only use of "mktemp()" that is subject to TOCTOU race
 and Stop using the insecure "mktemp()" function.

 Will merge to 'master'.
 source: <64e62623-b911-4ddd-a481-05191853c0a6@web.de>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Expecting a reroll.
 cf. <aTd+fxpflcLuJXDn@nand.local>
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jc/completion-no-single-letter-options (2025-12-06) 1 commit
 - completion: clarify support for short options and arguments

 In-code comment update to clarify that single-letter options are
 outside of the scope of command line completion script.

 Comments?
 source: <xmqqzf7vm7b7.fsf@gitster.g>


* tc/last-modified-active-paths-optimization (2025-11-28) 1 commit
  (merged to 'next' on 2025-12-05 at 42c18b607f)
 + last-modified: fix use of uninitialized memory

 Recent optimization to "last-modified" command introduced use of
 uninitialized block of memory, which has been corrected.

 Will merge to 'master'.
 source: <20251128-toon-big-endian-ci-v1-1-80da0f629c1e@iotcl.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* js/test-symlink-windows (2025-12-05) 10 commits
 - t7800: work around the MSYS path conversion on Windows
 - t6423: introduce Windows-specific handling for symlinking to /dev/null
 - t1305: skip symlink tests that do not apply to Windows
 - t1006: accommodate for symlink support in MSYS2
 - t0600: fix incomplete prerequisite for a test case
 - t0301: another fix for Windows compatibility
 - t0001: handle `diff --no-index` gracefully
 - mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 - apply: symbolic links lack a "trustable executable bit"
 - t9700: accommodate for Windows paths

 Prepare test suite for Git for Windows that supports symbolic
 links.

 Comments?
 cf. <xmqqms44cb7p.fsf@gitster.g>
 cf. <xmqqecpgc8wd.fsf@gitster.g>
 source: <pull.2009.v2.git.1764946945.gitgitgadget@gmail.com>


* rs/diff-index-find-copies-harder-optim (2025-11-30) 1 commit
  (merged to 'next' on 2025-12-05 at 539b086bfc)
 + diff-index: don't queue unchanged filepairs with diff_change()

 Halve the memory consumed by artificial filepairs created during
 "git diff --find-copioes-harder", also making the operation run
 faster.

 Will merge to 'master'.
 source: <aa28974b-ec73-4562-bfc8-4745ad58b55a@web.de>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* ds/doc-scalar-config (2025-12-01) 5 commits
 - scalar: document config settings
 - scalar: alphabetize and simplify config
 - scalar: remove stale config values
 - scalar: use index.skipHash=true for performance
 - scalar: annotate config file with "set by scalar"

 Documentation updates.

 Expecting a reroll.
 cf. <aS88bnmZXMZCV5oS@pks.im>
 source: <pull.2010.v2.git.1764607847.gitgitgadget@gmail.com>


* pw/replay-drop-empty (2025-11-27) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic stabilizes.
 source: <8a2a1215306452147cc7b803530ab2429bf57f15.1764260150.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* gf/win32-pthread-cond-init (2025-11-20) 1 commit
  (merged to 'next' on 2025-12-09 at 202516d20c)
 + win32: pthread_cond_init should return a value

 Emulation code clean-up.

 Will merge to 'master'.
 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ps/object-read-stream (2025-11-23) 20 commits
  (merged to 'next' on 2025-12-09 at c8d645f8ea)
 + streaming: drop redundant type and size pointers
 + streaming: move into object database subsystem
 + streaming: refactor interface to be object-database-centric
 + streaming: move logic to read packed objects streams into backend
 + streaming: move logic to read loose objects streams into backend
 + streaming: make the `odb_read_stream` definition public
 + streaming: get rid of `the_repository`
 + streaming: rely on object sources to create object stream
 + packfile: introduce function to read object info from a store
 + streaming: move zlib stream into backends
 + streaming: create structure for filtered object streams
 + streaming: create structure for packed object streams
 + streaming: create structure for loose object streams
 + streaming: create structure for in-core object streams
 + streaming: allocate stream inside the backend-specific logic
 + streaming: explicitly pass packfile info when streaming a packed object
 + streaming: propagate final object type via the stream
 + streaming: drop the `open()` callback function
 + streaming: rename `git_istream` into `odb_read_stream`
 + Merge branch 'ps/object-source-loose' into ps/object-read-stream

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.

 Will merge to 'master'.
 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>


* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
 - fetch: fix failed batched updates skipping operations
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Expecting a (hopefully small and final) reroll.
 cf. <CAOLa=ZQ-O7V9qHbgeuQ78R1bHGDmGEM6fP5Kr9aC0AfvSF8MZA@mail.gmail.com>
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-04) 11 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 source: <20251204141535.1986263-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Ready?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-11-19) 7 commits
 - meson/Makefile: allow setting submodule encoding at build time
 - submodule: use hashed name for gitdir
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting a reroll.
 source: <20251119211030.2008441-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 26%]

* What's cooking in git.git (Dec 2025, #01)
@ 2025-12-07  7:38 24% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-07  7:38 UTC (permalink / raw)
  To: git

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

The maintainer will only be online for a few days during the first
week of December, so please expect things to be slower in my tree.

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

* cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
  (merged to 'next' on 2025-11-26 at 7235cd0d18)
 + fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 + commit: refactor verify_commit_buffer()
 + fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.
 source: <20251117043450.322644-1-christian.couder@gmail.com>


* en/xdiff-cleanup-2 (2025-11-18) 10 commits
  (merged to 'next' on 2025-11-25 at 452b7107da)
 + xdiff: rename rindex -> reference_index
 + xdiff: change rindex from long to size_t in xdfile_t
 + xdiff: make xdfile_t.nreff a size_t instead of long
 + xdiff: make xdfile_t.nrec a size_t instead of long
 + xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 + xdiff: use unambiguous types in xdl_hash_record()
 + xdiff: use size_t for xrecord_t.size
 + xdiff: make xrecord_t.ptr a uint8_t instead of char
 + xdiff: use ptrdiff_t for dstart/dend
 + doc: define unambiguous type mappings across C and Rust

 Code clean-up.
 source: <pull.2070.v5.git.git.1763505262.gitgitgadget@gmail.com>


* jc/optional-path (2025-11-20) 3 commits
  (merged to 'next' on 2025-11-25 at 5e75404281)
 + config: really treat missing optional path as not configured
 + config: really pretend missing :(optional) value is not there
 + config: mark otherwise unused function as file-scope static

 "git config get --path" segfaulted on an ":(optional)path" that
 does not exist, which has been corrected.
 source: <xmqqikf47ajk.fsf@gitster.g>


* js/ci-show-breakage-in-dockerized-jobs (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-26 at 3c4a8c430f)
 + ci(dockerized): do show the result of failing tests again

 Dockerised jobs at the GitHub Actions CI have been taught to show
 more details of failed tests.
 cf. <xmqqpl9gike6.fsf@gitster.g>
 cf. <CABPp-BErdhTjbqDem4Xvc-XbhgLUEpy9-eiaaR1F_diMca--6A@mail.gmail.com>
 source: <pull.2003.git.1763399064983.gitgitgadget@gmail.com>


* js/strip-scalar-too (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-25 at 9f2607acfb)
 + make strip: include `scalar`

 "make strip" has been taught to strip "scalar" as well as "git".
 cf. <xmqq7bvoiadg.fsf@gitster.g>
 source: <pull.2004.git.1763409086322.gitgitgadget@gmail.com>


* kh/doc-committer-date-is-author-date (2025-11-20) 1 commit
  (merged to 'next' on 2025-11-25 at 9f829587af)
 + doc: warn against --committer-date-is-author-date

 The "--committer-date-is-author-date" option of "git am/rebase" is
 a misguided one.  The documentation is updated to discourage its
 use.
 source: <V2_committer-date-is-author-date.1@msgid.xyz>


* ps/object-source-management (2025-11-18) 14 commits
  (merged to 'next' on 2025-11-26 at 6f98745b4a)
 + odb: handle recreation of quarantine directories
 + odb: handle changing a repository's commondir
 + chdir-notify: add function to unregister listeners
 + odb: handle initialization of sources in `odb_new()`
 + http-push: stop setting up `the_repository` for each reference
 + t/helper: stop setting up `the_repository` repeatedly
 + builtin/index-pack: fix deferred fsck outside repos
 + oidset: introduce `oidset_equal()`
 + odb: move logic to disable ref updates into repo
 + odb: refactor `odb_clear()` to `odb_free()`
 + odb: adopt logic to close object databases
 + setup: convert `set_git_dir()` to have file scope
 + path: move `enter_repo()` into "setup.c"
 + Merge branch 'ps/object-source-loose' into ps/object-source-management

 Code refactoring around object database sources.
 cf. <aSAZSyUzIMvn-IvR@pks.im>
 source: <20251119-b4-pks-odb-creation-v1-0-2b2ed2612cb6@pks.im>


* rs/config-set-multi-error-message-fix (2025-11-24) 1 commit
  (merged to 'next' on 2025-11-26 at 639a1e26d2)
 + config: fix suggestion for failed set of multi-valued option

 The error message given by "git config set", when the variable
 being updated has more than one values defined, used old style "git
 config" syntax with an incorrect option in its hint, both of which
 have been corrected.
 source: <c09945fe-fee2-47f6-8193-ac60d7245209@web.de>


* rs/config-unset-opthelp-fix (2025-11-24) 1 commit
  (merged to 'next' on 2025-11-26 at 31e282f4ae)
 + config: fix short help of unset flags

 The option help text given by "git config unset -h" described
 the "--all" option to "replace", not "unset", multiple variables,
 which has been corrected.
 source: <06997dce-e4d5-4889-8e70-5f44da3dc800@web.de>

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

* ap/packfile-promisor-object-optim (2025-12-05) 1 commit
 - packfile: skip decompressing and hashing blobs in add_promisor_object()

 The code path that enumerates promisor objects have been optimized
 to skip pointlessly parsing blob objects.

 Comments?
 source: <20251206002014.2066644-1-aplattner@nvidia.com>


* je/doc-pull (2025-12-03) 1 commit
  (merged to 'next' on 2025-12-05 at 601711e5f2)
 + doc: git-pull: fix 'git --rebase abort' typo

 Doc fixup.

 Will merge to 'master'.
 source: <pull.2015.git.1764776095597.gitgitgadget@gmail.com>


* js/last-modified-with-sparse-checkouts (2025-11-29) 1 commit
  (merged to 'next' on 2025-12-05 at f1d5abdd14)
 + last-modified: support sparse checkouts

 "git last-modified" used to mishandle "--" to mark the beginning of
 pathspec, which has been corrected.

 Will merge to 'master'.
 source: <pull.2013.git.1764423826908.gitgitgadget@gmail.com>


* kh/advise-w-git-help-in-branch (2025-12-02) 1 commit
  (merged to 'next' on 2025-12-05 at 3b7b03150e)
 + branch: advice using git-help(1) instead of man(1)

 A help message from "git branch" now mentions "git help" instead of
 "man" when suggesting to read some documentation.

 Will merge to 'master'.
 source: <V2_advice_git-help.53@msgid.xyz>


* lo/repo-struct-z (2025-12-04) 3 commits
  (merged to 'next' on 2025-12-06 at 4f602e14d8)
 + repo: add -z as an alias for --format=nul to git-repo-structure
 + repo: use [--format=... | -z] instead of [-z] in git-repo-info synopsis
 + repo: remove blank line from Documentation/git-repo.adoc

 "git repo struct" learned to take "-z" as a synonym to "--format=nul".

 Will merge to 'master'.
 cf. <aTK9X6ptrqs_9agD@pks.im>
 source: <20251204210843.79411-1-lucasseikioshiro@gmail.com>


* tc/meson-cross-compile-fix (2025-12-03) 3 commits
  (merged to 'next' on 2025-12-05 at c45b57ca74)
 + meson: use is_cross_build() where possible
 + meson: only detect ICONV_OMITS_BOM if possible
 + meson: ignore subprojects/.wraplock

 Build fix.

 Will merge to 'master'.
 source: <20251202-toon-cross-compile-v1-0-cabc8bce529f@iotcl.com>


* je/doc-data-model (2025-12-02) 1 commit
  (merged to 'next' on 2025-12-06 at 3f4935d65f)
 + doc: remove stray text in Git data model

 Docfix.

 Will merge to 'master'.
 source: <pull.2014.git.1764699084703.gitgitgadget@gmail.com>


* ps/odb-misc-fixes (2025-12-05) 4 commits
 - odb: properly close sources before freeing them
 - builtin/gc: fix condition for whether to write commit graphs
 - builtin/repack: fix geometric repacks with promisor remotes
 - Merge branch 'ps/object-source-management' into ps/odb-misc-fixes

 Miscellaneous fixes on object database layer.

 Comments?
 source: <20251205-odb-related-fixes-v1-0-ef4250abb584@pks.im>


* ps/clar-integers (2025-12-06) 3 commits
 - gitattributes: disable blank-at-eof errors for clar test expectations
 - t/unit-tests: demonstrate use of integer comparison assertions
 - t/unit-tests: update clar to 39f11fe

 Import newer version of "clar", unit testing framework.

 Comments?
 source: <20251206-b4-pks-clar-update-v2-0-9a14b10c1a36@pks.im>


* rs/ban-mktemp (2025-12-06) 5 commits
 - compat: remove gitmkdtemp()
 - banned.h: ban mktemp(3)
 - compat: remove mingw_mktemp()
 - compat: use git_mkdtemp()
 - wrapper: add git_mkdtemp()

 Rewrite the only use of "mktemp()" that is subject to TOCTOU race
 and Stop using the insecure "mktemp()" function.

 Will merge to 'next'.
 source: <64e62623-b911-4ddd-a481-05191853c0a6@web.de>


* tb/incremental-midx-part-3.2 (2025-12-06) 17 commits
 - midx: enable reachability bitmaps during MIDX compaction
 - midx: implement MIDX compaction
 - t/helper/test-read-midx.c: plug memory leak when selecting layer
 - midx-write.c: factor fanout layering from `compute_sorted_entries()`
 - midx-write.c: enumerate `pack_int_id` values directly
 - midx-write.c: extract `fill_pack_from_midx()`
 - midx-write.c: introduce `midx_pack_perm()` helper
 - git-compat-util.h: introduce `u32_add()`
 - midx: do not require packs to be sorted in lexicographic order
 - midx-write.c: introduce `struct write_midx_opts`
 - midx-write.c: don't use `pack_perm` when assigning `bitmap_pos`
 - t/t5319-multi-pack-index.sh: fix copy-and-paste error in t5319.39
 - git-multi-pack-index(1): align SYNOPSIS with 'git multi-pack-index -h'
 - git-multi-pack-index(1): remove non-existent incompatibility
 - builtin/multi-pack-index.c: make '--progress' a common option
 - midx: split `get_midx_checksum()` by adding `get_midx_hash()`
 - midx: mark `get_midx_checksum()` arguments as const

 Further work on incremental repacking using MIDX/bitmap

 Comments?
 source: <cover.1765053054.git.me@ttaylorr.com>


* yc/histogram-hunk-shift-fix (2025-12-06) 1 commit
 - xdiff: re-diff shifted change groups when using histogram algorithm

 The final clean-up phase of the diff output could turn the result of
 histogram diff algorithm suboptimal, which has been corrected.

 Comments?
 source: <pull.2120.git.git.1765054287938.gitgitgadget@gmail.com>


* jc/completion-no-single-letter-options (2025-12-06) 1 commit
 - completion: clarify support for short options and arguments

 In-code comment update to clarify that single-letter options are
 outside of the scope of command line completion script.

 Comments?
 source: <xmqqzf7vm7b7.fsf@gitster.g>

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

* tc/last-modified-active-paths-optimization (2025-11-28) 1 commit
  (merged to 'next' on 2025-12-05 at 42c18b607f)
 + last-modified: fix use of uninitialized memory

 Recent optimization to "last-modified" command introduced use of
 uninitialized block of memory, which has been corrected.

 Will merge to 'master'.
 source: <20251128-toon-big-endian-ci-v1-1-80da0f629c1e@iotcl.com>


* en/replay-doc-revision-range (2025-11-28) 1 commit
  (merged to 'next' on 2025-11-30 at 37ba09bea2)
 + Documentation/git-replay.adoc: fix errors around revision range

 The use of "revision" (a connected set of commits) has been
 clarified in the "git replay" documentation.

 Will merge to 'master'.
 source: <pull.2012.git.1764391464952.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Expecting a reroll.
 cf. <aTFvKOHlm4zfT9dU@pks.im>
 cf. <4d83375b-76e2-4420-80dd-6a04d3201532@gmail.com>
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* js/test-symlink-windows (2025-12-05) 10 commits
 - t7800: work around the MSYS path conversion on Windows
 - t6423: introduce Windows-specific handling for symlinking to /dev/null
 - t1305: skip symlink tests that do not apply to Windows
 - t1006: accommodate for symlink support in MSYS2
 - t0600: fix incomplete prerequisite for a test case
 - t0301: another fix for Windows compatibility
 - t0001: handle `diff --no-index` gracefully
 - mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 - apply: symbolic links lack a "trustable executable bit"
 - t9700: accommodate for Windows paths

 Prepare test suite for Git for Windows that supports symbolic
 links.

 Comments?
 cf. <xmqqms44cb7p.fsf@gitster.g>
 cf. <xmqqecpgc8wd.fsf@gitster.g>
 source: <pull.2009.v2.git.1764946945.gitgitgadget@gmail.com>


* rs/diff-index-find-copies-harder-optim (2025-11-30) 1 commit
  (merged to 'next' on 2025-12-05 at 539b086bfc)
 + diff-index: don't queue unchanged filepairs with diff_change()

 Halve the memory consumed by artificial filepairs created during
 "git diff --find-copioes-harder", also making the operation run
 faster.

 Will merge to 'master'.
 source: <aa28974b-ec73-4562-bfc8-4745ad58b55a@web.de>


* pw/replay-exclude-gpgsig-fix (2025-11-26) 1 commit
  (merged to 'next' on 2025-11-30 at 3dda1242db)
 + replay: do not copy "gpgsign-sha256" header
 (this branch is used by ps/history and pw/replay-drop-empty.)

 "git replay" forgot to omit the "gpgsig-sha256" extended header
 from the resulting commit the same way it omits "gpgsig", which has
 been corrected.

 Will merge to 'master'.
 source: <4f04af5790353b074cf122c450c1cd3f8d1cecf3.1764167611.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* yc/xdiff-patience-optim (2025-11-26) 1 commit
  (merged to 'next' on 2025-11-30 at db62d67599)
 + xdiff: optimize patience diff's LCS search

 The way patience diff finds LCS has been optimized.

 Will merge to 'master'.
 source: <pull.2109.v2.git.git.1764209766305.gitgitgadget@gmail.com>


* bc/zsh-testsuite (2025-11-27) 2 commits
  (merged to 'next' on 2025-11-30 at b4a3081f6f)
 + t5564: fix test hang under zsh's sh mode
 + t0614: use numerical comparison with test_line_count

 A few tests have been updated to work under the shell compatible
 mode of zsh.

 Will merge to 'master'.
 source: <20251128012107.101431-1-sandals@crustytoothpaste.net>


* ds/doc-scalar-config (2025-12-01) 5 commits
 - scalar: document config settings
 - scalar: alphabetize and simplify config
 - scalar: remove stale config values
 - scalar: use index.skipHash=true for performance
 - scalar: annotate config file with "set by scalar"

 Documentation updates.

 Expecting a reroll.
 cf. <aS88bnmZXMZCV5oS@pks.im>
 source: <pull.2010.v2.git.1764607847.gitgitgadget@gmail.com>


* pw/replay-drop-empty (2025-11-27) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history and pw/replay-exclude-gpgsig-fix.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic stabilizes.
 source: <8a2a1215306452147cc7b803530ab2429bf57f15.1764260150.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* gf/win32-pthread-cond-init (2025-11-20) 1 commit
 - win32: pthread_cond_init should return a value

 Emulation code clean-up.

 Will merge to 'next'.
 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>


* kn/ref-location (2025-12-01) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251201-kn-alternate-ref-dir-v3-0-c11b946bc2fa@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ps/object-read-stream (2025-11-23) 20 commits
 - streaming: drop redundant type and size pointers
 - streaming: move into object database subsystem
 - streaming: refactor interface to be object-database-centric
 - streaming: move logic to read packed objects streams into backend
 - streaming: move logic to read loose objects streams into backend
 - streaming: make the `odb_read_stream` definition public
 - streaming: get rid of `the_repository`
 - streaming: rely on object sources to create object stream
 - packfile: introduce function to read object info from a store
 - streaming: move zlib stream into backends
 - streaming: create structure for filtered object streams
 - streaming: create structure for packed object streams
 - streaming: create structure for loose object streams
 - streaming: create structure for in-core object streams
 - streaming: allocate stream inside the backend-specific logic
 - streaming: explicitly pass packfile info when streaming a packed object
 - streaming: propagate final object type via the stream
 - streaming: drop the `open()` callback function
 - streaming: rename `git_istream` into `odb_read_stream`
 - Merge branch 'ps/object-source-loose' into ps/object-read-stream

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.

 Will merge to 'next'.
 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>


* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
 - fetch: fix failed batched updates skipping operations
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Expecting a (hopefully small and final) reroll.
 cf. <CAOLa=ZQ-O7V9qHbgeuQ78R1bHGDmGEM6fP5Kr9aC0AfvSF8MZA@mail.gmail.com>
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ar/run-command-hook (2025-12-04) 11 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization
 - run-command: add first helper for pp child states

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 source: <20251204141535.1986263-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/history (2025-12-03) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: allow disabling editing of hunks
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'pw/replay-exclude-gpgsig-fix' into ps/history
 (this branch is used by pw/replay-drop-empty; uses pw/replay-exclude-gpgsig-fix.)

 "git history" history rewriting UI.

 Ready?
 source: <20251203-b4-pks-history-builtin-v7-0-9e9f849bfd0e@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-11-19) 7 commits
 - meson/Makefile: allow setting submodule encoding at build time
 - submodule: use hashed name for gitdir
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting a reroll.
 source: <20251119211030.2008441-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will discard.  We do not complete single-letter options themselves.
 cf. <xmqqo6onjfwl.fsf@gitster.g>
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 24%]

* Re: What's cooking in git.git (Nov 2025, #10; Sun, 30)
  @ 2025-12-07  0:43 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-12-07  0:43 UTC (permalink / raw)
  To: Karthik Nayak; +Cc: git

Karthik Nayak <karthik.188@gmail.com> writes:

>> * kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
>>  - fetch: fix failed batched updates skipping operations
>>  - fetch: fix non-conflicting tags not being committed
>>  - fetch: extract out reference committing logic
>>
>>  "git fetch" that involves fetching tags, when a tag being fetched
>>  needs to overwrite existing one, failed to fetch other tags, which
>>  has been corrected.
>>
>>  Will merge to 'next'?
>>  source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>
>>
>>
>
> This should be ready for merge, it has been reviewed over multiple
> versions.

Other than the "eventhough" typo mentioned in

https://lore.kernel.org/git/CAOLa=ZQ-O7V9qHbgeuQ78R1bHGDmGEM6fP5Kr9aC0AfvSF8MZA@mail.gmail.com/

this topic should be ready, I tend to agree.



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Nov 2025, #10; Sun, 30)
@ 2025-12-01  5:05 27% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-12-01  5:05 UTC (permalink / raw)
  To: git

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

The maintainer will only be online for a few days during the first
week of December, so please expect things to be slower in my tree.

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

* ja/doc-synopsis-style (2025-11-24) 4 commits
  (merged to 'next' on 2025-11-24 at 10610d9a57)
 + doc: pull-fetch-param typofix
  (merged to 'next' on 2025-11-21 at eb9c1703c0)
 + doc: convert git push to synopsis style
 + doc: convert git pull to synopsis style
 + doc: convert git fetch to synopsis style

 Doc mark-up updates.
 
 source: <pull.2002.git.1763588404.gitgitgadget@gmail.com>


* jc/whitespace-incomplete-line (2025-11-12) 12 commits
  (merged to 'next' on 2025-11-24 at 9682c7f652)
 + attr: enable incomplete-line whitespace error for this project
 + diff: highlight and error out on incomplete lines
 + apply: check and fix incomplete lines
 + whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 + apply: revamp the parsing of incomplete lines
 + diff: update the way rewrite diff handles incomplete lines
 + diff: call emit_callback ecbdata everywhere
 + diff: refactor output of incomplete line
 + diff: keep track of the type of the last line seen
 + diff: correct suppress_blank_empty hack
 + diff: emit_line_ws_markup() if/else style fix
 + whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".
 
 source: <20251112220258.1009253-1-gitster@pobox.com>


* je/doc-data-model (2025-11-12) 1 commit
  (merged to 'next' on 2025-11-24 at 50e59df383)
 + doc: add an explanation of Git's data model

 Add a new manual that describes the data model.
 
 source: <pull.1981.v7.git.1762977200244.gitgitgadget@gmail.com>


* jk/asan-bonanza (2025-11-18) 9 commits
  (merged to 'next' on 2025-11-24 at 066fc38a19)
 + t: enable ASan's strict_string_checks option
 + fsck: avoid parse_timestamp() on buffer that isn't NUL-terminated
 + fsck: remove redundant date timestamp check
 + fsck: avoid strcspn() in fsck_ident()
 + fsck: assert newline presence in fsck_ident()
 + cache-tree: avoid strtol() on non-string buffer
 + Makefile: turn on NO_MMAP when building with ASan
 + pack-bitmap: handle name-hash lookups in incremental bitmaps
 + compat/mmap: mark unused argument in git_munmap()

 Various issues detected by Asan have been corrected.
 
 source: <20251118091127.GA4175601@coredump.intra.peff.net>


* lo/repo-info-all (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-21 at bb6bddcfc7)
 + repo: add --all to git-repo-info
 + repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.
 
 source: <20251118204929.43597-1-lucasseikioshiro@gmail.com>

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

* tc/last-modified-active-paths-optimization (2025-11-28) 1 commit
 - last-modified: fix use of uninitialized memory

 Recent optimization to "last-modified" command introduced use of
 uninitialized block of memory, which has been corrected.

 Will merge to 'next'.
 source: <20251128-toon-big-endian-ci-v1-1-80da0f629c1e@iotcl.com>


* en/replay-doc-revision-range (2025-11-28) 1 commit
  (merged to 'next' on 2025-11-30 at 37ba09bea2)
 + Documentation/git-replay.adoc: fix errors around revision range

 The use of "revision" (a connected set of commits) has been
 clarified in the "git replay" documentation.

 Will merge to 'master'.
 source: <pull.2012.git.1764391464952.gitgitgadget@gmail.com>


* jk/parse-int (2025-11-30) 5 commits
 - fsck: use parse_unsigned_from_buf() for parsing timestamp
 - cache-tree: use parse_int_from_buf()
 - parse: add functions for parsing from non-string buffers
 - parse: prefer bool to int for boolean returns
 - Merge branch 'jk/asan-bonanza' into jk/parse-int

 Introduce a more robust way to parse a decimal integer stored in a
 piece of memory that is not necessarily terminated with NUL (which
 Asan strict-string-check complains even when use of strtol() is
 safe due to varified existence of whitespace after the digits).

 Will merge to 'next'?
 source: <20251130131351.GA198697@coredump.intra.peff.net>


* js/test-symlink-windows (2025-11-29) 10 commits
 - t7800: work around the MSYS path conversion on Windows
 - t6423: introduce Windows-specific handling for symlinking to /dev/null
 - t1305: skip symlink tests that do not apply to Windows
 - t1006: accommodate for symlink support in MSYS2
 - t0600: fix incomplete prerequisite for a test case
 - t0301: another fix for Windows compatibility
 - t0001: handle `diff --no-index` gracefully
 - mingw: special-case `open(symlink, O_CREAT | O_EXCL)`
 - apply: symbolic links lack a "trustable executable bit"
 - t9700: accommodate for Windows paths

 Prepare test suite 

 Comments?
 cf. <xmqqms44cb7p.fsf@gitster.g>
 cf. <xmqqecpgc8wd.fsf@gitster.g>
 source: <pull.2009.git.1764440906.gitgitgadget@gmail.com>


* rs/diff-index-find-copies-harder-optim (2025-11-30) 1 commit
 - diff-index: don't queue unchanged filepairs with diff_change()

 Halve the memory consumed by artificial filepairs created during
 "git diff --find-copioes-harder", also making the operation run
 faster.

 Will merge to 'next'.
 source: <aa28974b-ec73-4562-bfc8-4745ad58b55a@web.de>

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

* pw/replay-exclude-gpgsig-fix (2025-11-26) 1 commit
  (merged to 'next' on 2025-11-30 at 3dda1242db)
 + replay: do not copy "gpgsign-sha256" header

 "git replay" forgot to omit the "gpgsig-sha256" extended header
 from the resulting commit the same way it omits "gpgsig", which has
 been corrected.

 Will merge to 'master'.
 source: <4f04af5790353b074cf122c450c1cd3f8d1cecf3.1764167611.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* yc/xdiff-patience-optim (2025-11-26) 1 commit
  (merged to 'next' on 2025-11-30 at db62d67599)
 + xdiff: optimize patience diff's LCS search

 The way patience diff finds LCS has been optimized.

 Will merge to 'master'.
 source: <pull.2109.v2.git.git.1764209766305.gitgitgadget@gmail.com>


* bc/zsh-testsuite (2025-11-27) 2 commits
  (merged to 'next' on 2025-11-30 at b4a3081f6f)
 + t5564: fix test hang under zsh's sh mode
 + t0614: use numerical comparison with test_line_count

 A few tests have been updated to work under the shell compatible
 mode of zsh.

 Will merge to 'master'.
 source: <20251128012107.101431-1-sandals@crustytoothpaste.net>


* ds/doc-scalar-config (2025-11-26) 5 commits
 - scalar: document config settings
 - scalar: alphabetize and simplify config
 - scalar: remove stale config values
 - scalar: use index.skipHash=true for performance
 - scalar: annotate config file with "set by scalar"

 Documentation updates.

 Expecting a reroll.
 cf. <089c3225-82cb-4039-83df-f97ea9fd49b2@gmail.com>
 source: <pull.2010.git.1764195516.gitgitgadget@gmail.com>


* pw/replay-drop-empty (2025-11-27) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic stabilizes.
 source: <8a2a1215306452147cc7b803530ab2429bf57f15.1764260150.git.phillip.wood@dunelm.org.uk>


* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* rs/config-set-multi-error-message-fix (2025-11-24) 1 commit
  (merged to 'next' on 2025-11-26 at 639a1e26d2)
 + config: fix suggestion for failed set of multi-valued option

 The error message given by "git config set", when the variable
 being updated has more than one values defined, used old style "git
 config" syntax with an incorrect option in its hint, both of which
 have been corrected.

 Will merge to 'master'.
 source: <c09945fe-fee2-47f6-8193-ac60d7245209@web.de>


* rs/config-unset-opthelp-fix (2025-11-24) 1 commit
  (merged to 'next' on 2025-11-26 at 31e282f4ae)
 + config: fix short help of unset flags

 The option help text given by "git config unset -h" described
 the "--all" option to "replace", not "unset", multiple variables,
 which has been corrected.

 Will merge to 'master'.
 source: <06997dce-e4d5-4889-8e70-5f44da3dc800@web.de>


* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will merge to 'next'?
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


* jc/optional-path (2025-11-20) 3 commits
  (merged to 'next' on 2025-11-25 at 5e75404281)
 + config: really treat missing optional path as not configured
 + config: really pretend missing :(optional) value is not there
 + config: mark otherwise unused function as file-scope static

 "git config get --path" segfaulted on an ":(optional)path" that
 does not exist, which has been corrected.

 Will merge to 'master'.
 source: <xmqqikf47ajk.fsf@gitster.g>


* kh/doc-committer-date-is-author-date (2025-11-20) 1 commit
  (merged to 'next' on 2025-11-25 at 9f829587af)
 + doc: warn against --committer-date-is-author-date

 The "--committer-date-is-author-date" option of "git am/rebase" is
 a misguided one.  The documentation is updated to discourage its
 use.

 Will merge to 'master'.
 source: <V2_committer-date-is-author-date.1@msgid.xyz>


* gf/win32-pthread-cond-init (2025-11-20) 1 commit
 - win32: pthread_cond_init should return a value

 Emulation code clean-up.

 Will merge to 'next'?
 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>


* kn/ref-location (2025-11-26) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251126-kn-alternate-ref-dir-v2-0-8b9f6f18f635@gmail.com>


* js/ci-show-breakage-in-dockerized-jobs (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-26 at 3c4a8c430f)
 + ci(dockerized): do show the result of failing tests again

 Dockerised jobs at the GitHub Actions CI have been taught to show
 more details of failed tests.

 Will merge to 'master'.
 cf. <xmqqpl9gike6.fsf@gitster.g>
 cf. <CABPp-BErdhTjbqDem4Xvc-XbhgLUEpy9-eiaaR1F_diMca--6A@mail.gmail.com>
 source: <pull.2003.git.1763399064983.gitgitgadget@gmail.com>


* js/strip-scalar-too (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-25 at 9f2607acfb)
 + make strip: include `scalar`

 "make strip" has been taught to strip "scalar" as well as "git".

 Will merge to 'master'.
 cf. <xmqq7bvoiadg.fsf@gitster.g>
 source: <pull.2004.git.1763409086322.gitgitgadget@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ps/object-read-stream (2025-11-23) 20 commits
 - streaming: drop redundant type and size pointers
 - streaming: move into object database subsystem
 - streaming: refactor interface to be object-database-centric
 - streaming: move logic to read packed objects streams into backend
 - streaming: move logic to read loose objects streams into backend
 - streaming: make the `odb_read_stream` definition public
 - streaming: get rid of `the_repository`
 - streaming: rely on object sources to create object stream
 - packfile: introduce function to read object info from a store
 - streaming: move zlib stream into backends
 - streaming: create structure for filtered object streams
 - streaming: create structure for packed object streams
 - streaming: create structure for loose object streams
 - streaming: create structure for in-core object streams
 - streaming: allocate stream inside the backend-specific logic
 - streaming: explicitly pass packfile info when streaming a packed object
 - streaming: propagate final object type via the stream
 - streaming: drop the `open()` callback function
 - streaming: rename `git_istream` into `odb_read_stream`
 - Merge branch 'ps/object-source-loose' into ps/object-read-stream

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.

 Will merge to 'next'?
 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>


* ps/object-source-management (2025-11-18) 14 commits
  (merged to 'next' on 2025-11-26 at 6f98745b4a)
 + odb: handle recreation of quarantine directories
 + odb: handle changing a repository's commondir
 + chdir-notify: add function to unregister listeners
 + odb: handle initialization of sources in `odb_new()`
 + http-push: stop setting up `the_repository` for each reference
 + t/helper: stop setting up `the_repository` repeatedly
 + builtin/index-pack: fix deferred fsck outside repos
 + oidset: introduce `oidset_equal()`
 + odb: move logic to disable ref updates into repo
 + odb: refactor `odb_clear()` to `odb_free()`
 + odb: adopt logic to close object databases
 + setup: convert `set_git_dir()` to have file scope
 + path: move `enter_repo()` into "setup.c"
 + Merge branch 'ps/object-source-loose' into ps/object-source-management

 Code refactoring around object database sources.

 Will merge to 'master'.
 cf. <aSAZSyUzIMvn-IvR@pks.im>
 source: <20251119-b4-pks-odb-creation-v1-0-2b2ed2612cb6@pks.im>


* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
 - fetch: fix failed batched updates skipping operations
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'next'?
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
  (merged to 'next' on 2025-11-26 at 7235cd0d18)
 + fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 + commit: refactor verify_commit_buffer()
 + fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Will merge to 'master'.
 source: <20251117043450.322644-1-christian.couder@gmail.com>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* en/xdiff-cleanup-2 (2025-11-18) 10 commits
  (merged to 'next' on 2025-11-25 at 452b7107da)
 + xdiff: rename rindex -> reference_index
 + xdiff: change rindex from long to size_t in xdfile_t
 + xdiff: make xdfile_t.nreff a size_t instead of long
 + xdiff: make xdfile_t.nrec a size_t instead of long
 + xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 + xdiff: use unambiguous types in xdl_hash_record()
 + xdiff: use size_t for xrecord_t.size
 + xdiff: make xrecord_t.ptr a uint8_t instead of char
 + xdiff: use ptrdiff_t for dstart/dend
 + doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Will merge to 'master'.
 source: <pull.2070.v5.git.git.1763505262.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-11-24) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 source: <20251124172043.1650014-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Expecting a reroll.
 cf. <aRxDYkeAi8T-HH8M@pks.im>
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-11-19) 7 commits
 - meson/Makefile: allow setting submodule encoding at build time
 - submodule: use hashed name for gitdir
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will merge to 'next'?
 source: <20251119211030.2008441-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 27%]

* What's cooking in git.git (Nov 2025, #09; Fri, 28)
@ 2025-11-29  4:09 26% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-29  4:09 UTC (permalink / raw)
  To: git

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

* ad/blame-diff-algorithm (2025-11-17) 2 commits
  (merged to 'next' on 2025-11-19 at e1e456469f)
 + blame: make diff algorithm configurable
 + xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.
 cf. <fd03f2a5-bf9e-453f-97d1-d5a66bc87470@gmail.com>
 source: <pull.2075.v6.git.git.1763366672.gitgitgadget@gmail.com>


* en/ort-rename-another-fix (2025-11-03) 3 commits
  (merged to 'next' on 2025-11-19 at 53d94af6b4)
 + merge-ort: fix failing merges in special corner case
 + merge-ort: remove debugging crud
 + t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* gf/win32-pthread-cond-wait-err (2025-11-18) 1 commit
  (merged to 'next' on 2025-11-21 at 89d9e04f91)
 + win32: return error if SleepConditionVariableCS fails

 Emulation code clean-up.
 source: <pull.2104.v2.git.git.1763480514065.gitgitgadget@gmail.com>


* jk/ci-windows-meson-test-fix (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-20 at a0afd4fd5b)
 + ci(windows-meson-test): handle options and output like other test jobs
 + unit-test: ignore --no-chain-lint

 "Windows+meson" job at the GitHub Actions CI was hard to debug, as
 it did not show and save failed test artifacts, which has been
 corrected.
 source: <20251118093221.GA530337@coredump.intra.peff.net>


* jk/test-mktemp-leakfix (2025-11-18) 1 commit
  (merged to 'next' on 2025-11-19 at 1da34f8b26)
 + test-mktemp: plug memory and descriptor leaks

 Test leakfix.
 source: <20251118122124.GA1117960@coredump.intra.peff.net>


* js/ci-github-setup-go-update (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 9922384c2b)
 + ci: bump actions/setup-go from 5 to 6

 Update a version of action used at the GitHub Actrions CI.
 source: <ebc68ec5b2abbc4702b94f833b9b3bf1adb79f1a.1763450087.git.zhiyou.jx@alibaba-inc.com>


* js/cmake-libgit-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 1593640ab0)
 + cmake: stop trying to build the reftable and xdiff libraries

 Makefile based build have recently been updated to build a
 libgit.a that also has reftable and xdiff objects; CMake based
 build procedure has been updated to match.
 source: <pull.2006.git.1763412008722.gitgitgadget@gmail.com>


* js/mingw-assign-comma-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at d1a5807e11)
 + mingw: avoid the comma operator

 The "return errno = EFOO, -1" construct, which is heavily used in
 compat/mingw.c and triggers warnings under "-Wcomma", has been
 rewritten to avoid the warnings.
 source: <pull.2007.git.1763412374866.gitgitgadget@gmail.com>


* js/wincred-get-credential-alloc-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 4c43c53c49)
 + wincred: avoid memory corruption

 Under-allocation fix.
 source: <pull.2005.git.1763411984773.gitgitgadget@gmail.com>


* pw/worktree-list-display-width-fix (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-20 at 3a341524cb)
 + worktree list: quote paths
 + worktree list: fix column spacing

 "git worktree list" attempts to show paths to worktrees while
 aligning them, but miscounted display columns for the paths when
 non-ASCII characters were involved, which has been corrected.
 source: <cover.1763482051.git.phillip.wood@dunelm.org.uk>


* rs/xmkstemp-simplify (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 228e9f54ab)
 + wrapper: simplify xmkstemp()

 Code simplification.
 source: <058c5722-30f5-4bc5-90f5-24e4c6f3ff8f@web.de>

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

* pw/replay-exclude-gpgsig-fix (2025-11-26) 1 commit
 - replay: do not copy "gpgsign-sha256" header

 "git replay" forgot to omit the "gpgsig-sha256" extended header
 from the resulting commit the same way it omits "gpgsig", which has
 been corrected.

 Will merge to 'next'.
 source: <4f04af5790353b074cf122c450c1cd3f8d1cecf3.1764167611.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-options-cleanup (2025-11-26) 4 commits
 - fixup! last-modified: document option --max-depth
 - last-modified: document how depth is handled better
 - last-modified: document option --max-depth
 - last-modified: handle and document NUL termination

 The "-z" and "--max-depth" documentation (and implementation of
 "-z") in the "git last-modified" command have been updated.

 Expecting a reroll.
 source: <20251126-toon-last-modified-zzzz-v1-0-608350df0caa@iotcl.com>


* yc/xdiff-patience-optim (2025-11-26) 1 commit
 - xdiff: optimize patience diff's LCS search

 The way patience diff finds LCS has been optimized.

 Will merge to 'next'.
 source: <pull.2109.git.git.1764152756908.gitgitgadget@gmail.com>


* bc/zsh-testsuite (2025-11-27) 2 commits
 - t5564: fix test hang under zsh's sh mode
 - t0614: use numerical comparison with test_line_count

 A few tests have been updated to work under the shell compatible
 mode of zsh.

 Will merge to 'next'.
 source: <20251128012107.101431-1-sandals@crustytoothpaste.net>


* ds/doc-scalar-config (2025-11-26) 5 commits
 - scalar: document config settings
 - scalar: alphabetize and simplify config
 - scalar: remove stale config values
 - scalar: use index.skipHash=true for performance
 - scalar: annotate config file with "set by scalar"

 Documentation updates.

 Comments?
 source: <pull.2010.git.1764195516.gitgitgadget@gmail.com>


* pw/replay-drop-empty (2025-11-27) 2 commits
 - replay: drop commits that become empty
 - Merge branch 'ps/history' into pw/replay-drop-empty
 (this branch uses ps/history.)

 "git replay" is taught to drop commits that become empty (not the
 ones that are empty in the original).

 On hold, until the base topic stabilizes.
 source: <8a2a1215306452147cc7b803530ab2429bf57f15.1764260150.git.phillip.wood@dunelm.org.uk>

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

* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* rs/config-set-multi-error-message-fix (2025-11-24) 1 commit
  (merged to 'next' on 2025-11-26 at 639a1e26d2)
 + config: fix suggestion for failed set of multi-valued option

 The error message given by "git config set", when the variable
 being updated has more than one values defined, used old style "git
 config" syntax with an incorrect option in its hint, both of which
 have been corrected.

 Will merge to 'master'.
 source: <c09945fe-fee2-47f6-8193-ac60d7245209@web.de>


* rs/config-unset-opthelp-fix (2025-11-24) 1 commit
  (merged to 'next' on 2025-11-26 at 31e282f4ae)
 + config: fix short help of unset flags

 The option help text given by "git config unset -h" described
 the "--all" option to "replace", not "unset", multiple variables,
 which has been corrected.

 Will merge to 'master'.
 source: <06997dce-e4d5-4889-8e70-5f44da3dc800@web.de>


* wm/complete-git-short-opts (2025-11-26) 1 commit
 - completion: complete "git -<TAB>" with short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Will merge to 'next'?
 source: <pull.2100.v2.git.git.1764174391776.gitgitgadget@gmail.com>


* ja/doc-synopsis-style (2025-11-24) 4 commits
  (merged to 'next' on 2025-11-24 at 10610d9a57)
 + doc: pull-fetch-param typofix
  (merged to 'next' on 2025-11-21 at eb9c1703c0)
 + doc: convert git push to synopsis style
 + doc: convert git pull to synopsis style
 + doc: convert git fetch to synopsis style

 Doc mark-up updates.

 Will merge to 'master'.
 source: <pull.2002.git.1763588404.gitgitgadget@gmail.com>


* jc/optional-path (2025-11-20) 3 commits
  (merged to 'next' on 2025-11-25 at 5e75404281)
 + config: really treat missing optional path as not configured
 + config: really pretend missing :(optional) value is not there
 + config: mark otherwise unused function as file-scope static

 "git config get --path" segfaulted on an ":(optional)path" that
 does not exist, which has been corrected.

 Will merge to 'master'.
 source: <xmqqikf47ajk.fsf@gitster.g>


* kh/doc-committer-date-is-author-date (2025-11-20) 1 commit
  (merged to 'next' on 2025-11-25 at 9f829587af)
 + doc: warn against --committer-date-is-author-date

 The "--committer-date-is-author-date" option of "git am/rebase" is
 a misguided one.  The documentation is updated to discourage its
 use.

 Will merge to 'master'.
 source: <V2_committer-date-is-author-date.1@msgid.xyz>


* gf/win32-pthread-cond-init (2025-11-20) 1 commit
 - win32: pthread_cond_init should return a value

 Emulation code clean-up.

 Will merge to 'next'?
 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>


* kn/ref-location (2025-11-26) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.

 Comments?
 source: <20251126-kn-alternate-ref-dir-v2-0-8b9f6f18f635@gmail.com>


* js/ci-show-breakage-in-dockerized-jobs (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-26 at 3c4a8c430f)
 + ci(dockerized): do show the result of failing tests again

 Dockerised jobs at the GitHub Actions CI have been taught to show
 more details of failed tests.

 Will merge to 'master'.
 cf. <xmqqpl9gike6.fsf@gitster.g>
 cf. <CABPp-BErdhTjbqDem4Xvc-XbhgLUEpy9-eiaaR1F_diMca--6A@mail.gmail.com>
 source: <pull.2003.git.1763399064983.gitgitgadget@gmail.com>


* js/strip-scalar-too (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-25 at 9f2607acfb)
 + make strip: include `scalar`

 "make strip" has been taught to strip "scalar" as well as "git".

 Will merge to 'master'.
 cf. <xmqq7bvoiadg.fsf@gitster.g>
 source: <pull.2004.git.1763409086322.gitgitgadget@gmail.com>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ps/object-read-stream (2025-11-23) 20 commits
 - streaming: drop redundant type and size pointers
 - streaming: move into object database subsystem
 - streaming: refactor interface to be object-database-centric
 - streaming: move logic to read packed objects streams into backend
 - streaming: move logic to read loose objects streams into backend
 - streaming: make the `odb_read_stream` definition public
 - streaming: get rid of `the_repository`
 - streaming: rely on object sources to create object stream
 - packfile: introduce function to read object info from a store
 - streaming: move zlib stream into backends
 - streaming: create structure for filtered object streams
 - streaming: create structure for packed object streams
 - streaming: create structure for loose object streams
 - streaming: create structure for in-core object streams
 - streaming: allocate stream inside the backend-specific logic
 - streaming: explicitly pass packfile info when streaming a packed object
 - streaming: propagate final object type via the stream
 - streaming: drop the `open()` callback function
 - streaming: rename `git_istream` into `odb_read_stream`
 - Merge branch 'ps/object-source-loose' into ps/object-read-stream

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.

 Will merge to 'next'?
 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>


* ps/object-source-management (2025-11-18) 14 commits
  (merged to 'next' on 2025-11-26 at 6f98745b4a)
 + odb: handle recreation of quarantine directories
 + odb: handle changing a repository's commondir
 + chdir-notify: add function to unregister listeners
 + odb: handle initialization of sources in `odb_new()`
 + http-push: stop setting up `the_repository` for each reference
 + t/helper: stop setting up `the_repository` repeatedly
 + builtin/index-pack: fix deferred fsck outside repos
 + oidset: introduce `oidset_equal()`
 + odb: move logic to disable ref updates into repo
 + odb: refactor `odb_clear()` to `odb_free()`
 + odb: adopt logic to close object databases
 + setup: convert `set_git_dir()` to have file scope
 + path: move `enter_repo()` into "setup.c"
 + Merge branch 'ps/object-source-loose' into ps/object-source-management

 Code refactoring around object database sources.

 Will merge to 'master'.
 cf. <aSAZSyUzIMvn-IvR@pks.im>
 source: <20251119-b4-pks-odb-creation-v1-0-2b2ed2612cb6@pks.im>


* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
 - fetch: fix failed batched updates skipping operations
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'next'?
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* jk/asan-bonanza (2025-11-18) 9 commits
  (merged to 'next' on 2025-11-24 at 066fc38a19)
 + t: enable ASan's strict_string_checks option
 + fsck: avoid parse_timestamp() on buffer that isn't NUL-terminated
 + fsck: remove redundant date timestamp check
 + fsck: avoid strcspn() in fsck_ident()
 + fsck: assert newline presence in fsck_ident()
 + cache-tree: avoid strtol() on non-string buffer
 + Makefile: turn on NO_MMAP when building with ASan
 + pack-bitmap: handle name-hash lookups in incremental bitmaps
 + compat/mmap: mark unused argument in git_munmap()

 Various issues detected by Asan have been corrected.

 Will merge to 'master'.
 source: <20251118091127.GA4175601@coredump.intra.peff.net>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
  (merged to 'next' on 2025-11-26 at 7235cd0d18)
 + fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 + commit: refactor verify_commit_buffer()
 + fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Will merge to 'master'.
 source: <20251117043450.322644-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-12) 12 commits
  (merged to 'next' on 2025-11-24 at 9682c7f652)
 + attr: enable incomplete-line whitespace error for this project
 + diff: highlight and error out on incomplete lines
 + apply: check and fix incomplete lines
 + whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 + apply: revamp the parsing of incomplete lines
 + diff: update the way rewrite diff handles incomplete lines
 + diff: call emit_callback ecbdata everywhere
 + diff: refactor output of incomplete line
 + diff: keep track of the type of the last line seen
 + diff: correct suppress_blank_empty hack
 + diff: emit_line_ws_markup() if/else style fix
 + whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".

 Will merge to 'master'.
 source: <20251112220258.1009253-1-gitster@pobox.com>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* lo/repo-info-all (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-21 at bb6bddcfc7)
 + repo: add --all to git-repo-info
 + repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Will merge to 'master'.
 source: <20251118204929.43597-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-11-18) 10 commits
  (merged to 'next' on 2025-11-25 at 452b7107da)
 + xdiff: rename rindex -> reference_index
 + xdiff: change rindex from long to size_t in xdfile_t
 + xdiff: make xdfile_t.nreff a size_t instead of long
 + xdiff: make xdfile_t.nrec a size_t instead of long
 + xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 + xdiff: use unambiguous types in xdl_hash_record()
 + xdiff: use size_t for xrecord_t.size
 + xdiff: make xrecord_t.ptr a uint8_t instead of char
 + xdiff: use ptrdiff_t for dstart/dend
 + doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Will merge to 'master'.
 source: <pull.2070.v5.git.git.1763505262.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-11-24) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 source: <20251124172043.1650014-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* je/doc-data-model (2025-11-12) 1 commit
  (merged to 'next' on 2025-11-24 at 50e59df383)
 + doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Will merge to 'master'.
 source: <pull.1981.v7.git.1762977200244.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch is used by pw/replay-drop-empty.)

 "git history" history rewriting UI.

 Expecting a reroll.
 cf. <aRxDYkeAi8T-HH8M@pks.im>
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-11-19) 7 commits
 - meson/Makefile: allow setting submodule encoding at build time
 - submodule: use hashed name for gitdir
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will merge to 'next'?
 source: <20251119211030.2008441-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 26%]

* Re: What's cooking in git.git (Nov 2025, #08; Tue, 25)
  2025-11-26 14:36 99%   ` Junio C Hamano
@ 2025-11-26 17:04 99%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-26 17:04 UTC (permalink / raw)
  To: Christian Couder; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> Christian Couder <christian.couder@gmail.com> writes:
>
>> Not sure why but you seem to be the author of the "fast-import: add
>> 'strip-if-invalid' mode to --signed-commits=<mode>" commit now:
>
> Most likely "commit --fixup amend:$THAT" followed by
> "rebase --autosquash $THAT~1", which is the only major thing I
> started using recently, that went bad.  
>
> Thanks for noticing.

Corrected.  I do not think this was "--fixup amend:$THAT"; rather
the application of the patch heavily conflicted and I had to
recreate a clean patch myself to apply, and at that point I probably
forgot to double check the author identity of the resulting commit.



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Nov 2025, #08; Tue, 25)
  @ 2025-11-26 14:36 99%   ` Junio C Hamano
  2025-11-26 17:04 99%     ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-11-26 14:36 UTC (permalink / raw)
  To: Christian Couder; +Cc: git

Christian Couder <christian.couder@gmail.com> writes:

> Not sure why but you seem to be the author of the "fast-import: add
> 'strip-if-invalid' mode to --signed-commits=<mode>" commit now:

Most likely "commit --fixup amend:$THAT" followed by
"rebase --autosquash $THAT~1", which is the only major thing I
started using recently, that went bad.  

Thanks for noticing.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Nov 2025, #08; Tue, 25)
@ 2025-11-26  0:39 24% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-11-26  0:39 UTC (permalink / raw)
  To: git

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

* bc/submodule-force-same-hash (2025-11-14) 2 commits
  (merged to 'next' on 2025-11-19 at eec9dca32c)
 + read-cache: drop submodule check from add_to_cache()
 + object-file: disallow adding submodules of different hash algo

 Originally merged to 'next' on 2025-11-16

 Adding a repository that uses a different hash function is a no-no,
 but "git submodule add" didn't prevent it, which has been corrected.
 source: <20251112235434.1499699-1-sandals@crustytoothpaste.net>


* jk/attr-macroexpand-wo-recursion (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-19 at 5d5f74f4f0)
 + attr: avoid recursion when expanding attribute macros

 Originally merged to 'next' on 2025-11-16

 The code to expand attribute macros has been rewritten without
 recursion to avoid running out of stack space in an uncontrolled
 way.
 source: <20251111223647.GA4055973@coredump.intra.peff.net>


* jx/repo-struct-utf8width-fix (2025-11-15) 2 commits
  (merged to 'next' on 2025-11-19 at 35bff72b75)
 + builtin/repo: fix table alignment for UTF-8 characters
 + t/unit-tests: add UTF-8 width tests for CJK chars

 Originally merged to 'next' on 2025-11-18

 The "git repo structure" subcommand tried to align its output but
 mixed up byte count and display column width, which has been
 corrected.
 source: <cover.1763213290.git.worldhello.net@gmail.com>


* kh/doc-commit-extra-references (2025-11-14) 1 commit
  (merged to 'next' on 2025-11-19 at 9c89891116)
 + doc: commit: link to git-status(1) on all format options

 Originally merged to 'next' on 2025-11-18

 Doc update.
 source: <c4349a03724.1763129061.git.code@khaugsbakk.name>


* kn/osxkeychain-idempotent-store-fix (2025-11-13) 1 commit
  (merged to 'next' on 2025-11-19 at 335d6bb2ea)
 + osxkeychain: avoid incorrectly skipping store operation

 Originally merged to 'next' on 2025-11-18

 An earlier check added to osx keychain credential helper to avoid
 storing the credential itself supplied was overeager and rejected
 credential material supplied by other helper backends that it would
 have wanted to store, which has been corrected.
 source: <pull.1999.v2.git.1763100270949.gitgitgadget@gmail.com>


* ps/object-source-loose (2025-11-02) 13 commits
  (merged to 'next' on 2025-11-19 at 8bb0269243)
 + object-file: refactor writing objects via a stream
 + object-file: rename `write_object_file()`
 + object-file: refactor freshening of objects
 + object-file: rename `has_loose_object()`
 + object-file: read objects via the loose object source
 + object-file: move loose object map into loose source
 + object-file: hide internals when we need to reprepare loose sources
 + object-file: move loose object cache into loose source
 + object-file: introduce `struct odb_source_loose`
 + object-file: move `fetch_if_missing`
 + odb: adjust naming to free object sources
 + odb: introduce `odb_source_new()`
 + odb: fix subtle logic to check whether an alternate is usable
 (this branch is used by ps/object-read-stream and ps/object-source-management.)

 Originally merged to 'next' on 2025-11-18

 A part of the code path that deals with loose objects has been cleaned
 up.
 source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>


* qj/doc-http-bad-want-response (2025-11-05) 1 commit
  (merged to 'next' on 2025-11-19 at a602cd96eb)
 + doc: clarify server behavior for invalid 'want' lines in HTTP protocol

 Originally merged to 'next' on 2025-11-18

 Doc update.
 source: <20251105143849.1192-1-qjessa662@gmail.com>


* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
  (merged to 'next' on 2025-11-19 at ae19b06a22)
 + replay: add replay.refAction config option
 + replay: make atomic ref updates the default behavior
 + replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 Originally merged to 'next' on 2025-11-18

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.
 cf. <00a5a8f3-f761-46e8-84cc-4bd95db68b49@gmail.com>
 source: <20251105191650.89975-1-siddharthasthana31@gmail.com>

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

* sp/shallow-time-boundary (2025-11-23) 1 commit
 - shallow: set borders which are all reachable after clone shallow since

 The set of shallow boundary "git clone --shallow-since" leaves
 contained commits that are not on the boundary, which has been
 corrected.

 Comments?
 source: <pull.2107.v2.git.git.1763926552033.gitgitgadget@gmail.com>


* rs/config-set-multi-error-message-fix (2025-11-24) 1 commit
 - config: fix suggestion for failed set of multi-valued option

 The error message given by "git config set", when the variable
 being updated has more than one values defined, used old style "git
 config" syntax with an incorrect option in its hint, both of which
 have been corrected.

 Will merge to 'next'.
 source: <c09945fe-fee2-47f6-8193-ac60d7245209@web.de>


* rs/config-unset-opthelp-fix (2025-11-24) 1 commit
 - config: fix short help of unset flags

 The option help text given by "git config unset -h" described
 the "--all" option to "replace", not "unset", multiple variables,
 which has been corrected.

 Will merge to 'next'.
 source: <06997dce-e4d5-4889-8e70-5f44da3dc800@web.de>


* wm/complete-git-short-opts (2025-11-24) 1 commit
 - Add completion for short options

 The command line completion script (in contrib/) learned to
 complete "git -<TAB>" to give single-letter options like "-C".

 Expecting a reroll.
 cf. <xmqq5xayt66k.fsf@gitster.g>
 source: <pull.2100.git.git.1764052739534.gitgitgadget@gmail.com>

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

* ja/doc-synopsis-style (2025-11-24) 4 commits
  (merged to 'next' on 2025-11-24 at 10610d9a57)
 + doc: pull-fetch-param typofix
  (merged to 'next' on 2025-11-21 at eb9c1703c0)
 + doc: convert git push to synopsis style
 + doc: convert git pull to synopsis style
 + doc: convert git fetch to synopsis style

 Doc mark-up updates.

 Will merge to 'master'.
 source: <pull.2002.git.1763588404.gitgitgadget@gmail.com>


* jc/optional-path (2025-11-20) 3 commits
  (merged to 'next' on 2025-11-25 at 5e75404281)
 + config: really treat missing optional path as not configured
 + config: really pretend missing :(optional) value is not there
 + config: mark otherwise unused function as file-scope static

 "git config get --path" segfaulted on an ":(optional)path" that
 does not exist, which has been corrected.

 Will merge to 'master'.
 source: <xmqqikf47ajk.fsf@gitster.g>


* kh/doc-committer-date-is-author-date (2025-11-20) 1 commit
  (merged to 'next' on 2025-11-25 at 9f829587af)
 + doc: warn against --committer-date-is-author-date

 The "--committer-date-is-author-date" option of "git am/rebase" is
 a misguided one.  The documentation is updated to discourage its
 use.

 Will merge to 'master'.
 source: <V2_committer-date-is-author-date.1@msgid.xyz>


* gf/win32-pthread-cond-init (2025-11-20) 1 commit
 - win32: pthread_cond_init should return a value

 Emulation code clean-up.

 Will merge to 'next'?
 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>


* gf/win32-pthread-cond-wait-err (2025-11-18) 1 commit
  (merged to 'next' on 2025-11-21 at 89d9e04f91)
 + win32: return error if SleepConditionVariableCS fails

 Emulation code clean-up.

 Will merge to 'master'.
 source: <pull.2104.v2.git.git.1763480514065.gitgitgadget@gmail.com>


* kn/ref-location (2025-11-19) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.
 source: <20251119-kn-alternate-ref-dir-v1-0-4cf4a94c8bed@gmail.com>


* jk/ci-windows-meson-test-fix (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-20 at a0afd4fd5b)
 + ci(windows-meson-test): handle options and output like other test jobs
 + unit-test: ignore --no-chain-lint

 "Windows+meson" job at the GitHub Actions CI was hard to debug, as
 it did not show and save failed test artifacts, which has been
 corrected.

 Will merge to 'master'.
 source: <20251118093221.GA530337@coredump.intra.peff.net>


* jk/test-mktemp-leakfix (2025-11-18) 1 commit
  (merged to 'next' on 2025-11-19 at 1da34f8b26)
 + test-mktemp: plug memory and descriptor leaks

 Test leakfix.

 Will merge to 'master'.
 source: <20251118122124.GA1117960@coredump.intra.peff.net>


* js/ci-github-setup-go-update (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 9922384c2b)
 + ci: bump actions/setup-go from 5 to 6

 Update a version of action used at the GitHub Actrions CI.

 Will merge to 'master'.
 source: <ebc68ec5b2abbc4702b94f833b9b3bf1adb79f1a.1763450087.git.zhiyou.jx@alibaba-inc.com>


* js/ci-show-breakage-in-dockerized-jobs (2025-11-25) 2 commits
 - amend! ci(dockerized): do show the result of failing tests again
 - ci(dockerized): do show the result of failing tests again

 Dockerised jobs at the GitHub Actions CI have been taught to show
 more details of failed tests.

 Will merge to 'next' after amending?
 cf. <xmqqpl9gike6.fsf@gitster.g>
 cf. <CABPp-BErdhTjbqDem4Xvc-XbhgLUEpy9-eiaaR1F_diMca--6A@mail.gmail.com>
 source: <pull.2003.git.1763399064983.gitgitgadget@gmail.com>


* js/cmake-libgit-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 1593640ab0)
 + cmake: stop trying to build the reftable and xdiff libraries

 Makefile based build have recently been updated to build a
 libgit.a that also has reftable and xdiff objects; CMake based
 build procedure has been updated to match.

 Will merge to 'master'.
 source: <pull.2006.git.1763412008722.gitgitgadget@gmail.com>


* js/mingw-assign-comma-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at d1a5807e11)
 + mingw: avoid the comma operator

 The "return errno = EFOO, -1" construct, which is heavily used in
 compat/mingw.c and triggers warnings under "-Wcomma", has been
 rewritten to avoid the warnings.

 Will merge to 'master'.
 source: <pull.2007.git.1763412374866.gitgitgadget@gmail.com>


* js/strip-scalar-too (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-25 at 9f2607acfb)
 + make strip: include `scalar`

 "make strip" has been taught to strip "scalar" as well as "git".

 Will merge to 'master'.
 cf. <xmqq7bvoiadg.fsf@gitster.g>
 source: <pull.2004.git.1763409086322.gitgitgadget@gmail.com>


* js/wincred-get-credential-alloc-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 4c43c53c49)
 + wincred: avoid memory corruption

 Under-allocation fix.

 Will merge to 'master'.
 source: <pull.2005.git.1763411984773.gitgitgadget@gmail.com>


* pw/worktree-list-display-width-fix (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-20 at 3a341524cb)
 + worktree list: quote paths
 + worktree list: fix column spacing

 "git worktree list" attempts to show paths to worktrees while
 aligning them, but miscounted display columns for the paths when
 non-ASCII characters were involved, which has been corrected.

 Will merge to 'master'.
 source: <cover.1763482051.git.phillip.wood@dunelm.org.uk>


* rs/xmkstemp-simplify (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 228e9f54ab)
 + wrapper: simplify xmkstemp()

 Code simplification.

 Will merge to 'master'.
 source: <058c5722-30f5-4bc5-90f5-24e4c6f3ff8f@web.de>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Expecting a reroll.
 cf. <20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net>
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ps/object-read-stream (2025-11-23) 20 commits
 - streaming: drop redundant type and size pointers
 - streaming: move into object database subsystem
 - streaming: refactor interface to be object-database-centric
 - streaming: move logic to read packed objects streams into backend
 - streaming: move logic to read loose objects streams into backend
 - streaming: make the `odb_read_stream` definition public
 - streaming: get rid of `the_repository`
 - streaming: rely on object sources to create object stream
 - packfile: introduce function to read object info from a store
 - streaming: move zlib stream into backends
 - streaming: create structure for filtered object streams
 - streaming: create structure for packed object streams
 - streaming: create structure for loose object streams
 - streaming: create structure for in-core object streams
 - streaming: allocate stream inside the backend-specific logic
 - streaming: explicitly pass packfile info when streaming a packed object
 - streaming: propagate final object type via the stream
 - streaming: drop the `open()` callback function
 - streaming: rename `git_istream` into `odb_read_stream`
 - Merge branch 'ps/object-source-loose' into ps/object-read-stream

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.

 Will merge to 'next'?
 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>


* ps/object-source-management (2025-11-18) 14 commits
 - odb: handle recreation of quarantine directories
 - odb: handle changing a repository's commondir
 - chdir-notify: add function to unregister listeners
 - odb: handle initialization of sources in `odb_new()`
 - http-push: stop setting up `the_repository` for each reference
 - t/helper: stop setting up `the_repository` repeatedly
 - builtin/index-pack: fix deferred fsck outside repos
 - oidset: introduce `oidset_equal()`
 - odb: move logic to disable ref updates into repo
 - odb: refactor `odb_clear()` to `odb_free()`
 - odb: adopt logic to close object databases
 - setup: convert `set_git_dir()` to have file scope
 - path: move `enter_repo()` into "setup.c"
 - Merge branch 'ps/object-source-loose' into ps/object-source-management

 Code refactoring around object database sources.

 Will merge to 'next' after amending a typo?
 cf. <aSAZSyUzIMvn-IvR@pks.im>
 source: <20251119-b4-pks-odb-creation-v1-0-2b2ed2612cb6@pks.im>


* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
 - fetch: fix failed batched updates skipping operations
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'next'?
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* jk/asan-bonanza (2025-11-18) 9 commits
  (merged to 'next' on 2025-11-24 at 066fc38a19)
 + t: enable ASan's strict_string_checks option
 + fsck: avoid parse_timestamp() on buffer that isn't NUL-terminated
 + fsck: remove redundant date timestamp check
 + fsck: avoid strcspn() in fsck_ident()
 + fsck: assert newline presence in fsck_ident()
 + cache-tree: avoid strtol() on non-string buffer
 + Makefile: turn on NO_MMAP when building with ASan
 + pack-bitmap: handle name-hash lookups in incremental bitmaps
 + compat/mmap: mark unused argument in git_munmap()

 Various issues detected by Asan have been corrected.

 Will merge to 'master'.
 source: <20251118091127.GA4175601@coredump.intra.peff.net>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* en/ort-rename-another-fix (2025-11-03) 3 commits
  (merged to 'next' on 2025-11-19 at 53d94af6b4)
 + merge-ort: fix failing merges in special corner case
 + merge-ort: remove debugging crud
 + t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.

 Will merge to 'master'.
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
 - fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 - commit: refactor verify_commit_buffer()
 - fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Will merge to 'next'.
 source: <20251117043450.322644-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-12) 12 commits
  (merged to 'next' on 2025-11-24 at 9682c7f652)
 + attr: enable incomplete-line whitespace error for this project
 + diff: highlight and error out on incomplete lines
 + apply: check and fix incomplete lines
 + whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 + apply: revamp the parsing of incomplete lines
 + diff: update the way rewrite diff handles incomplete lines
 + diff: call emit_callback ecbdata everywhere
 + diff: refactor output of incomplete line
 + diff: keep track of the type of the last line seen
 + diff: correct suppress_blank_empty hack
 + diff: emit_line_ws_markup() if/else style fix
 + whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".

 Will merge to 'master'.
 source: <20251112220258.1009253-1-gitster@pobox.com>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ad/blame-diff-algorithm (2025-11-17) 2 commits
  (merged to 'next' on 2025-11-19 at e1e456469f)
 + blame: make diff algorithm configurable
 + xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.

 Will merge to 'master'.
 cf. <fd03f2a5-bf9e-453f-97d1-d5a66bc87470@gmail.com>
 source: <pull.2075.v6.git.git.1763366672.gitgitgadget@gmail.com>


* lo/repo-info-all (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-21 at bb6bddcfc7)
 + repo: add --all to git-repo-info
 + repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Will merge to 'master'.
 source: <20251118204929.43597-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-11-18) 10 commits
  (merged to 'next' on 2025-11-25 at 452b7107da)
 + xdiff: rename rindex -> reference_index
 + xdiff: change rindex from long to size_t in xdfile_t
 + xdiff: make xdfile_t.nreff a size_t instead of long
 + xdiff: make xdfile_t.nrec a size_t instead of long
 + xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 + xdiff: use unambiguous types in xdl_hash_record()
 + xdiff: use size_t for xrecord_t.size
 + xdiff: make xrecord_t.ptr a uint8_t instead of char
 + xdiff: use ptrdiff_t for dstart/dend
 + doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Will merge to 'master'.
 source: <pull.2070.v5.git.git.1763505262.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-11-24) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - hook: allow overriding the ungroup option
 - reference-transaction: use hook API instead of run-command
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Will merge to 'next'?
 source: <20251124172043.1650014-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* je/doc-data-model (2025-11-12) 1 commit
  (merged to 'next' on 2025-11-24 at 50e59df383)
 + doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Will merge to 'master'.
 source: <pull.1981.v7.git.1762977200244.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history

 "git history" history rewriting UI.

 Expecting a reroll.
 cf. <aRxDYkeAi8T-HH8M@pks.im>
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* ar/submodule-gitdir-tweak (2025-11-19) 7 commits
 - meson/Makefile: allow setting submodule encoding at build time
 - submodule: use hashed name for gitdir
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Will merge to 'next'?
 source: <20251119211030.2008441-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 24%]

* Re: What's cooking in git.git (Nov 2025, #07; Sun, 23)
  @ 2025-11-25 17:19 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-25 17:19 UTC (permalink / raw)
  To: Toon Claes; +Cc: git

Toon Claes <toon@iotcl.com> writes:

> Junio C Hamano <gitster@pobox.com> writes:
>
>> * ps/object-source-management (2025-11-18) 14 commits
>>  - odb: handle recreation of quarantine directories
>>  - odb: handle changing a repository's commondir
>>  - chdir-notify: add function to unregister listeners
>>  - odb: handle initialization of sources in `odb_new()`
>>  - http-push: stop setting up `the_repository` for each reference
>>  - t/helper: stop setting up `the_repository` repeatedly
>>  - builtin/index-pack: fix deferred fsck outside repos
>>  - oidset: introduce `oidset_equal()`
>>  - odb: move logic to disable ref updates into repo
>>  - odb: refactor `odb_clear()` to `odb_free()`
>>  - odb: adopt logic to close object databases
>>  - setup: convert `set_git_dir()` to have file scope
>>  - path: move `enter_repo()` into "setup.c"
>>  - Merge branch 'ps/object-source-loose' into ps/object-source-management
>>  (this branch uses ps/object-source-loose.)
>>
>>  Code refactoring around object database sources.
>>
>>  Comments?
>>  source: <20251119-b4-pks-odb-creation-v1-0-2b2ed2612cb6@pks.im>
>
> I've read through the patches, and I've got no comments to add.

Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Nov 2025, #07; Sun, 23)
  @ 2025-11-25 17:18 98%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-25 17:18 UTC (permalink / raw)
  To: Elijah Newren; +Cc: git

Elijah Newren <newren@gmail.com> writes:

> I tried to take a look at some of the series whose status you were
> asking for feedback on (and just threw an extra comment on one that
> you didn't ask about).  Comments below...
>
> On Sun, Nov 23, 2025 at 8:59 PM Junio C Hamano <gitster@pobox.com> wrote:
>>
>> * jc/optional-path (2025-11-20) 3 commits
>> ...
>>  Will merge to 'next'?
>>  source: <xmqqikf47ajk.fsf@gitster.g>
>
> This topic seems to be missing a squashed-in fix from
> xmqqy0o05nuy.fsf@gitster.g; should that be squashed in and then merge
> down to next?

Thanks for carefully checking.  The second patch with yesterday's
committer timestamp has the squash, so it seems that our mails
crossed ;-)

>> * js/ci-show-breakage-in-dockerized-jobs (2025-11-17) 1 commit
>> ...
>>  Will merge to 'next' after amending?
>>  cf. <xmqqpl9gike6.fsf@gitster.g>
>>  source: <pull.2003.git.1763399064983.gitgitgadget@gmail.com>
>
> I had a slight tweak for the wording of the first paragraph, which I
> just left as a comment on the patch.  Not sure that needs to hold it
> up, but maybe worth considering to include in your amending if
> Johannes is fine with it?

FWIW, I found the updated explanation you gave easier to read than
the original.  I still do not think of a reason why we want a more
conservative o+w when making things world-writable, other than the
case where there is a user in the same group as the owner of the
file that we specifically want to forbid touching it, but then I do
not have any idea who that special user in the same group would be.

>> * js/strip-scalar-too (2025-11-17) 1 commit
>>  - make strip: include `scalar`
>>
>>  "make strip" has been taught to strip "scalar" as well as "git".
>>
>>  Will merge to 'next'?
>>  cf. <xmqq7bvoiadg.fsf@gitster.g>
>>  source: <pull.2004.git.1763409086322.gitgitgadget@gmail.com>
>
> I'd kind of like to see a response to your suggested alternative.

I am OK if we applied the patch posted as-is, and left such a
clean-up as #leftoverbits.

>> * dw/config-global-list (2025-10-09) 4 commits
>> ...
>>  Comments?
>>  source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>
>
> Perhaps mark this topic as expecting a re-roll?  (c.f.
> 20251122020047.GB3947@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net)

Great.  That's an awfully long message-id, by the way ;-)

>> * jc/submodule-add (2025-11-15) 1 commit
>>  - submodule add: sanity check existing .gitmodules
>>
>>  "git submodule add" to add a submodule under <name> segfaulted,
>>  when a submodule.<name>.something is already in .gitmodules file
>>  without defining where its submodule.<name>.path is, which has been
>>  corrected.
>>
>>  Comments?
>>  source: <xmqqv7jacvdq.fsf@gitster.g>
>
> Left a couple minor wording suggestions.

Thanks; amended.

>> * en/ort-rename-another-fix (2025-11-03) 3 commits
>>   (merged to 'next' on 2025-11-19 at 53d94af6b4)
>>  + merge-ort: fix failing merges in special corner case
>>  + merge-ort: remove debugging crud
>>  + t6429: update comment to mention correct tool
>>
>>  Yet another corner case fix around renames in the "ort" merge
>>  strategy.
>>
>>  Will merge to 'master'.
>>  source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>
>
> A sidenote that probably doesn't matter since you've already marked it
> for merging down: this topic has been deployed at GitHub for just over
> a month without incident (whereas there were some problems prior to
> deploying these fixes, and those problems cleared up the minute that
> these changes were deployed).

Great to hear.

>> * cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
>>  - fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
>>  - commit: refactor verify_commit_buffer()
>>  - fast-import: refactor finalize_commit_buffer()
>>
>>  "git fast-import" learns "--strip-if-invalid" option to drop
>>  invalid cryptographic signature from objects.
>>
>>  Comments?
>>  source: <20251117043450.322644-1-christian.couder@gmail.com>
>
> I think this one is ready to merge down.
>
>> * en/xdiff-cleanup-2 (2025-11-18) 10 commits
>>  - xdiff: rename rindex -> reference_index
>>  - xdiff: change rindex from long to size_t in xdfile_t
>>  - xdiff: make xdfile_t.nreff a size_t instead of long
>>  - xdiff: make xdfile_t.nrec a size_t instead of long
>>  - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
>>  - xdiff: use unambiguous types in xdl_hash_record()
>>  - xdiff: use size_t for xrecord_t.size
>>  - xdiff: make xrecord_t.ptr a uint8_t instead of char
>>  - xdiff: use ptrdiff_t for dstart/dend
>>  - doc: define unambiguous type mappings across C and Rust
>>
>>  Code clean-up.
>>
>>  Will merge to 'next'?
>>  source: <pull.2070.v5.git.git.1763505262.gitgitgadget@gmail.com>
>
> I think so.  There are certainly additional cleanups needed, as this
> series makes clear, but that's clearly a bigger problem and the author
> has stated he plans to work on those but just needed to limit the
> series to some initial cleanup that wasn't too big to send to the
> list.  The series has gotten reviews from lots of folks, and I just
> looked over v5 and couldn't spot anything to call out.

Great, and thanks.


^ permalink raw reply	[relevance 98%]

* Re: What's cooking in git.git (Nov 2025, #07; Sun, 23)
  @ 2025-11-24 18:26 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-24 18:26 UTC (permalink / raw)
  To: D. Ben Knoble; +Cc: git

"D. Ben Knoble" <ben.knoble@gmail.com> writes:

> On Sun, Nov 23, 2025 at 11:59 PM Junio C Hamano <gitster@pobox.com> wrote:
>
>> --------------------------------------------------
>> [New Topics]
>>
>> * jc/optional-path (2025-11-20) 3 commits
>>  - config: really treat missing optional path as not configured
>>  - config: really pretend missing :(optional) value is not there
>>  - config: mark otherwise unused function as file-scope static
>>
>>  "git config get --path" segfaulted on an ":(optional)path" that
>>  does not exist, which has been corrected.
>>
>>  Will merge to 'next'?
>>  source: <xmqqikf47ajk.fsf@gitster.g>
>
> Any interest in also marking this for 2.52.1? It's unlikely to be used
> much yet, but since the segfault affects several invocations (git
> blame, etc.) it will be irritating to folks who try the recently
> released version.

Yes, this is a clear regression-fix material.  The branch you are
commenting on is designed to be merge-able anywhere the original
topic that had the segfault can be (or has been) merged, by building
directly on top of ccfcaf39 (parseopt: values of pathname type can
be prefixed with :(optional), 2025-09-28), which was the tip of the
original topic.




^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Nov 2025, #07; Sun, 23)
@ 2025-11-24  4:59 24% Junio C Hamano
                     ` (2 more replies)
  0 siblings, 3 replies; 200+ results
From: Junio C Hamano @ 2025-11-24  4:59 UTC (permalink / raw)
  To: git

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

* jc/gitattributes-whitespace-no-indent-fix (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-19 at cd849a23a1)
 + .gitattributes: remove misspelled no-op whitespace attribute

 Originally merged to 'next' on 2025-11-14

 Ever since we added whitespace rules for this project, we misspelt
 an entry, which has been corrected.
 source: <xmqqv7jgwgxb.fsf@gitster.g>


* kn/maintenance-is-needed (2025-11-08) 7 commits
  (merged to 'next' on 2025-11-19 at faaa24f412)
 + maintenance: add 'is-needed' subcommand
 + maintenance: add checking logic in `pack_refs_condition()`
 + refs: add a `optimize_required` field to `struct ref_storage_be`
 + reftable/stack: add function to check if optimization is required
 + reftable/stack: return stack segments directly
 + Merge branch 'kn/refs-optim-cleanup' into kn/maintenance-is-needed
 + Merge branch 'ps/ref-peeled-tags' into kn/maintenance-is-needed

 Originally merged to 'next' on 2025-11-14

 "git maintenance" command learned "is-needed" subcommand to tell if
 it is necessary to perform various maintenance tasks.
 source: <20251108-562-add-sub-command-to-check-if-maintenance-is-needed-v4-0-a90f229b6023@gmail.com>


* rs/diff-quiet-no-rename (2025-11-09) 1 commit
  (merged to 'next' on 2025-11-19 at dc0b078446)
 + diff: disable rename detection with --quiet

 Originally merged to 'next' on 2025-11-14

 As "git diff --quiet" only cares about the existence of any
 changes, disable rename/copy detection to skip more expensive
 processing whose result will be discarded anyway.
 source: <8796cd59-2335-4674-823d-d682ce7b7f8e@web.de>

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

* ja/doc-synopsis-style (2025-11-19) 3 commits
  (merged to 'next' on 2025-11-21 at eb9c1703c0)
 + doc: convert git push to synopsis style
 + doc: convert git pull to synopsis style
 + doc: convert git fetch to synopsis style

 Doc mark-up updates.

 Will merge to 'master'.
 source: <pull.2002.git.1763588404.gitgitgadget@gmail.com>


* jc/optional-path (2025-11-20) 3 commits
 - config: really treat missing optional path as not configured
 - config: really pretend missing :(optional) value is not there
 - config: mark otherwise unused function as file-scope static

 "git config get --path" segfaulted on an ":(optional)path" that
 does not exist, which has been corrected.

 Will merge to 'next'?
 source: <xmqqikf47ajk.fsf@gitster.g>


* kh/doc-committer-date-is-author-date (2025-11-20) 1 commit
 - doc: warn against --committer-date-is-author-date

 The "--committer-date-is-author-date" option of "git am/rebase" is
 a misguided one.  The documentation is updated to discourage its
 use.

 Will merge to 'next'?
 source: <V2_committer-date-is-author-date.1@msgid.xyz>


* gf/win32-pthread-cond-init (2025-11-20) 1 commit
 - win32: pthread_cond_init should return a value

 Emulation code clean-up.

 Will merge to 'next'?
 source: <pull.2103.v3.git.git.1763675016637.gitgitgadget@gmail.com>


* gf/win32-pthread-cond-wait-err (2025-11-18) 1 commit
  (merged to 'next' on 2025-11-21 at 89d9e04f91)
 + win32: return error if SleepConditionVariableCS fails

 Emulation code clean-up.

 Will merge to 'master'.
 source: <pull.2104.v2.git.git.1763480514065.gitgitgadget@gmail.com>


* kn/ref-location (2025-11-19) 2 commits
 - refs: add GIT_REF_URI to specify reference backend and directory
 - refs: support obtaining ref_store for given dir

 A mechanism to specify what reference backend to use and store
 references in which directory is introduced, which would likely to
 be useful during ref migration.
 source: <20251119-kn-alternate-ref-dir-v1-0-4cf4a94c8bed@gmail.com>

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

* jk/ci-windows-meson-test-fix (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-20 at a0afd4fd5b)
 + ci(windows-meson-test): handle options and output like other test jobs
 + unit-test: ignore --no-chain-lint

 "Windows+meson" job at the GitHub Actions CI was hard to debug, as
 it did not show and save failed test artifacts, which has been
 corrected.

 Will merge to 'master'.
 source: <20251118093221.GA530337@coredump.intra.peff.net>


* jk/test-mktemp-leakfix (2025-11-18) 1 commit
  (merged to 'next' on 2025-11-19 at 1da34f8b26)
 + test-mktemp: plug memory and descriptor leaks

 Test leakfix.

 Will merge to 'master'.
 source: <20251118122124.GA1117960@coredump.intra.peff.net>


* js/ci-github-setup-go-update (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 9922384c2b)
 + ci: bump actions/setup-go from 5 to 6

 Update a version of action used at the GitHub Actrions CI.

 Will merge to 'master'.
 source: <ebc68ec5b2abbc4702b94f833b9b3bf1adb79f1a.1763450087.git.zhiyou.jx@alibaba-inc.com>


* js/ci-show-breakage-in-dockerized-jobs (2025-11-17) 1 commit
 - ci(dockerized): do show the result of failing tests again

 Dockerised jobs at the GitHub Actions CI have been taught to show
 more details of failed tests.

 Will merge to 'next' after amending?
 cf. <xmqqpl9gike6.fsf@gitster.g>
 source: <pull.2003.git.1763399064983.gitgitgadget@gmail.com>


* js/cmake-libgit-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 1593640ab0)
 + cmake: stop trying to build the reftable and xdiff libraries

 Makefile based build have recently been updated to build a
 libgit.a that also has reftable and xdiff objects; CMake based
 build procedure has been updated to match.

 Will merge to 'master'.
 source: <pull.2006.git.1763412008722.gitgitgadget@gmail.com>


* js/mingw-assign-comma-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at d1a5807e11)
 + mingw: avoid the comma operator

 The "return errno = EFOO, -1" construct, which is heavily used in
 compat/mingw.c and triggers warnings under "-Wcomma", has been
 rewritten to avoid the warnings.

 Will merge to 'master'.
 source: <pull.2007.git.1763412374866.gitgitgadget@gmail.com>


* js/strip-scalar-too (2025-11-17) 1 commit
 - make strip: include `scalar`

 "make strip" has been taught to strip "scalar" as well as "git".

 Will merge to 'next'?
 cf. <xmqq7bvoiadg.fsf@gitster.g>
 source: <pull.2004.git.1763409086322.gitgitgadget@gmail.com>


* js/wincred-get-credential-alloc-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 4c43c53c49)
 + wincred: avoid memory corruption

 Under-allocation fix.

 Will merge to 'master'.
 source: <pull.2005.git.1763411984773.gitgitgadget@gmail.com>


* pw/worktree-list-display-width-fix (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-20 at 3a341524cb)
 + worktree list: quote paths
 + worktree list: fix column spacing

 "git worktree list" attempts to show paths to worktrees while
 aligning them, but miscounted display columns for the paths when
 non-ASCII characters were involved, which has been corrected.

 Will merge to 'master'.
 source: <cover.1763482051.git.phillip.wood@dunelm.org.uk>


* rs/xmkstemp-simplify (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 228e9f54ab)
 + wrapper: simplify xmkstemp()

 Code simplification.

 Will merge to 'master'.
 source: <058c5722-30f5-4bc5-90f5-24e4c6f3ff8f@web.de>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Comments?
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ps/object-read-stream (2025-11-23) 20 commits
 - streaming: drop redundant type and size pointers
 - streaming: move into object database subsystem
 - streaming: refactor interface to be object-database-centric
 - streaming: move logic to read packed objects streams into backend
 - streaming: move logic to read loose objects streams into backend
 - streaming: make the `odb_read_stream` definition public
 - streaming: get rid of `the_repository`
 - streaming: rely on object sources to create object stream
 - packfile: introduce function to read object info from a store
 - streaming: move zlib stream into backends
 - streaming: create structure for filtered object streams
 - streaming: create structure for packed object streams
 - streaming: create structure for loose object streams
 - streaming: create structure for in-core object streams
 - streaming: allocate stream inside the backend-specific logic
 - streaming: explicitly pass packfile info when streaming a packed object
 - streaming: propagate final object type via the stream
 - streaming: drop the `open()` callback function
 - streaming: rename `git_istream` into `odb_read_stream`
 - Merge branch 'ps/object-source-loose' into ps/object-read-stream
 (this branch uses ps/object-source-loose.)

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.

 Will merge to 'next'?
 source: <20251123-b4-pks-odb-read-stream-v3-0-1a129182822b@pks.im>


* ps/object-source-management (2025-11-18) 14 commits
 - odb: handle recreation of quarantine directories
 - odb: handle changing a repository's commondir
 - chdir-notify: add function to unregister listeners
 - odb: handle initialization of sources in `odb_new()`
 - http-push: stop setting up `the_repository` for each reference
 - t/helper: stop setting up `the_repository` repeatedly
 - builtin/index-pack: fix deferred fsck outside repos
 - oidset: introduce `oidset_equal()`
 - odb: move logic to disable ref updates into repo
 - odb: refactor `odb_clear()` to `odb_free()`
 - odb: adopt logic to close object databases
 - setup: convert `set_git_dir()` to have file scope
 - path: move `enter_repo()` into "setup.c"
 - Merge branch 'ps/object-source-loose' into ps/object-source-management
 (this branch uses ps/object-source-loose.)

 Code refactoring around object database sources.

 Comments?
 source: <20251119-b4-pks-odb-creation-v1-0-2b2ed2612cb6@pks.im>


* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-21) 3 commits
 - fetch: fix failed batched updates skipping operations
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'next'?
 source: <20251121-fix-tags-not-fetching-v8-0-23b53a8a8334@gmail.com>


* jk/asan-bonanza (2025-11-18) 9 commits
 - t: enable ASan's strict_string_checks option
 - fsck: avoid parse_timestamp() on buffer that isn't NUL-terminated
 - fsck: remove redundant date timestamp check
 - fsck: avoid strcspn() in fsck_ident()
 - fsck: assert newline presence in fsck_ident()
 - cache-tree: avoid strtol() on non-string buffer
 - Makefile: turn on NO_MMAP when building with ASan
 - pack-bitmap: handle name-hash lookups in incremental bitmaps
 - compat/mmap: mark unused argument in git_munmap()

 Various issues detected by Asan have been corrected.

 Will merge to 'next'.
 source: <20251118091127.GA4175601@coredump.intra.peff.net>


* jk/attr-macroexpand-wo-recursion (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-19 at 5d5f74f4f0)
 + attr: avoid recursion when expanding attribute macros

 Originally merged to 'next' on 2025-11-16

 The code to expand attribute macros has been rewritten to avoid
 recursion to avoid running out of stack space in an uncontrolled
 way.

 Will merge to 'master'.
 source: <20251111223647.GA4055973@coredump.intra.peff.net>


* bc/submodule-force-same-hash (2025-11-14) 2 commits
  (merged to 'next' on 2025-11-19 at eec9dca32c)
 + read-cache: drop submodule check from add_to_cache()
 + object-file: disallow adding submodules of different hash algo

 Originally merged to 'next' on 2025-11-16

 Adding a repository that uses a different hash function is a no-no,
 but "git submodule add" did nt prevent it, which has been corrected.

 Will merge to 'master'.
 source: <20251112235434.1499699-1-sandals@crustytoothpaste.net>


* jx/repo-struct-utf8width-fix (2025-11-15) 2 commits
  (merged to 'next' on 2025-11-19 at 35bff72b75)
 + builtin/repo: fix table alignment for UTF-8 characters
 + t/unit-tests: add UTF-8 width tests for CJK chars

 Originally merged to 'next' on 2025-11-18

 The "git repo structure" subcommand tried to align its output but
 mixed up byte count and display column width, which has been
 corrected.

 Will merge to 'master'.
 source: <cover.1763213290.git.worldhello.net@gmail.com>


* kh/doc-commit-extra-references (2025-11-14) 1 commit
  (merged to 'next' on 2025-11-19 at 9c89891116)
 + doc: commit: link to git-status(1) on all format options

 Originally merged to 'next' on 2025-11-18

 Doc update.

 Will merge to 'master'.
 source: <c4349a03724.1763129061.git.code@khaugsbakk.name>


* kn/osxkeychain-idempotent-store-fix (2025-11-13) 1 commit
  (merged to 'next' on 2025-11-19 at 335d6bb2ea)
 + osxkeychain: avoid incorrectly skipping store operation

 Originally merged to 'next' on 2025-11-18

 An earlier check added to osx keychain credential helper to avoid
 storing the credential itself supplied was overeager and rejected
 credential material supplied by other helper backends that it would
 have wanted to store, which has been corrected.

 Will merge to 'master'.
 source: <pull.1999.v2.git.1763100270949.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* en/ort-rename-another-fix (2025-11-03) 3 commits
  (merged to 'next' on 2025-11-19 at 53d94af6b4)
 + merge-ort: fix failing merges in special corner case
 + merge-ort: remove debugging crud
 + t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.

 Will merge to 'master'.
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* qj/doc-http-bad-want-response (2025-11-05) 1 commit
  (merged to 'next' on 2025-11-19 at a602cd96eb)
 + doc: clarify server behavior for invalid 'want' lines in HTTP protocol

 Originally merged to 'next' on 2025-11-18

 Doc update.

 Will merge to 'master'.
 source: <20251105143849.1192-1-qjessa662@gmail.com>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
 - fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 - commit: refactor verify_commit_buffer()
 - fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Comments?
 source: <20251117043450.322644-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-12) 12 commits
 - attr: enable incomplete-line whitespace error for this project
 - diff: highlight and error out on incomplete lines
 - apply: check and fix incomplete lines
 - whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 - apply: revamp the parsing of incomplete lines
 - diff: update the way rewrite diff handles incomplete lines
 - diff: call emit_callback ecbdata everywhere
 - diff: refactor output of incomplete line
 - diff: keep track of the type of the last line seen
 - diff: correct suppress_blank_empty hack
 - diff: emit_line_ws_markup() if/else style fix
 - whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".

 Will merge to 'next'.
 source: <20251112220258.1009253-1-gitster@pobox.com>


* ps/object-source-loose (2025-11-02) 13 commits
  (merged to 'next' on 2025-11-19 at 8bb0269243)
 + object-file: refactor writing objects via a stream
 + object-file: rename `write_object_file()`
 + object-file: refactor freshening of objects
 + object-file: rename `has_loose_object()`
 + object-file: read objects via the loose object source
 + object-file: move loose object map into loose source
 + object-file: hide internals when we need to reprepare loose sources
 + object-file: move loose object cache into loose source
 + object-file: introduce `struct odb_source_loose`
 + object-file: move `fetch_if_missing`
 + odb: adjust naming to free object sources
 + odb: introduce `odb_source_new()`
 + odb: fix subtle logic to check whether an alternate is usable
 (this branch is used by ps/object-read-stream and ps/object-source-management.)

 Originally merged to 'next' on 2025-11-18

 A part of code paths that deals with loose objects has been cleaned
 up.

 Will merge to 'master'.
 source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ad/blame-diff-algorithm (2025-11-17) 2 commits
  (merged to 'next' on 2025-11-19 at e1e456469f)
 + blame: make diff algorithm configurable
 + xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.

 Will merge to 'master'.
 cf. <fd03f2a5-bf9e-453f-97d1-d5a66bc87470@gmail.com>
 source: <pull.2075.v6.git.git.1763366672.gitgitgadget@gmail.com>


* lo/repo-info-all (2025-11-18) 2 commits
  (merged to 'next' on 2025-11-21 at bb6bddcfc7)
 + repo: add --all to git-repo-info
 + repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Will merge to 'master'.
 source: <20251118204929.43597-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-11-18) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ptrdiff_t for dstart/dend
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Will merge to 'next'?
 source: <pull.2070.v5.git.git.1763505262.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Seems to leak and break CI
 cf. <xmqq346ff56h.fsf@gitster.g>
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* je/doc-data-model (2025-11-12) 1 commit
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Will merge to 'next'.
 source: <pull.1981.v7.git.1762977200244.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Expecting a reroll.
 cf. <aRxDYkeAi8T-HH8M@pks.im>
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
  (merged to 'next' on 2025-11-19 at ae19b06a22)
 + replay: add replay.refAction config option
 + replay: make atomic ref updates the default behavior
 + replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 Originally merged to 'next' on 2025-11-18

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'master'.
 cf. <00a5a8f3-f761-46e8-84cc-4bd95db68b49@gmail.com>
 source: <20251105191650.89975-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-11-19) 7 commits
 - meson/Makefile: allow setting submodule encoding at build time
 - submodule: use hashed name for gitdir
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.
 source: <20251119211030.2008441-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 24%]

* What's cooking in git.git (Nov 2025, #06; Wed, 19)
@ 2025-11-20  0:55 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-20  0:55 UTC (permalink / raw)
  To: git

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

The 'master' branch now has the first batch of topics for the new
cycle.  The tip of 'next' branch has been rewound.

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

* kn/refs-optim-cleanup (2025-10-20) 4 commits
  (merged to 'next' on 2025-11-04 at dbab18969a)
 + t/pack-refs-tests: move the 'test_done' to callees
 + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 + refs: move to using the '.optimize' functions
 + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch is used by kn/maintenance-is-needed; uses ps/ref-peeled-tags.)

 Code clean-up.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* ps/packed-git-in-object-store (2025-10-30) 9 commits
  (merged to 'next' on 2025-11-03 at 1eb3440abd)
 + packfile: track packs via the MRU list exclusively
 + packfile: always add packfiles to MRU when adding a pack
 + packfile: move list of packs into the packfile store
 + builtin/pack-objects: simplify logic to find kept or nonlocal objects
 + packfile: fix approximation of object counts
 + http: refactor subsystem to use `packfile_list`s
 + packfile: move the MRU list into the packfile store
 + packfile: use a `strmap` to store packs by name
 + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store

 The list of packfiles used in a running Git process is moved from
 the packed_git structure into the packfile store.
 source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>


* ps/ref-peeled-tags (2025-11-04) 18 commits
  (merged to 'next' on 2025-11-04 at 3818774c94)
 + t7004: do not chdir around in the main process
 + ref-filter: fix stale parsed objects
 + ref-filter: parse objects on demand
 + ref-filter: detect broken tags when dereferencing them
 + refs: don't store peeled object IDs for invalid tags
 + object: add flag to `peel_object()` to verify object type
 + refs: drop infrastructure to peel via iterators
 + refs: drop `current_ref_iter` hack
 + builtin/show-ref: convert to use `reference_get_peeled_oid()`
 + ref-filter: propagate peeled object ID
 + upload-pack: convert to use `reference_get_peeled_oid()`
 + refs: expose peeled object ID via the iterator
 + refs: refactor reference status flags
 + refs: fully reset `struct ref_iterator::ref` on iteration
 + refs: introduce `.ref` field for the base iterator
 + refs: introduce wrapper struct for `each_ref_fn`
 + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/maintenance-is-needed, kn/refs-optim-cleanup and ps/ref-peeled-tags-fixes.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* ps/ref-peeled-tags-fixes (2025-11-06) 2 commits
  (merged to 'next' on 2025-11-11 at 3549877a16)
 + object: fix performance regression when peeling tags
 + Merge branch 'ps/ref-peeled-tags' into ps/ref-peeled-tags-fixes
 (this branch uses ps/ref-peeled-tags.)

 Another fix-up to "peeled-tags" topic.
 source: <20251106-b4-pks-peel-object-performance-regression-v1-1-a386147750b0@pks.im>

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

* jk/ci-windows-meson-test-fix (2025-11-18) 2 commits
 - ci(windows-meson-test): handle options and output like other test jobs
 - unit-test: ignore --no-chain-lint

 "Windows+meson" job at the GitHub Actions CI was hard to debug, as
 it did not show and save failed test artifacts, which has been
 corrected.

 Will merge to 'next'.
 source: <20251118093221.GA530337@coredump.intra.peff.net>


* jk/test-mktemp-leakfix (2025-11-18) 1 commit
  (merged to 'next' on 2025-11-19 at 1da34f8b26)
 + test-mktemp: plug memory and descriptor leaks

 Test leakfix.

 Will merge to 'master'.
 source: <20251118122124.GA1117960@coredump.intra.peff.net>


* js/ci-github-setup-go-update (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 9922384c2b)
 + ci: bump actions/setup-go from 5 to 6

 Update a version of action used at the GitHub Actrions CI.

 Will merge to 'master'.
 source: <ebc68ec5b2abbc4702b94f833b9b3bf1adb79f1a.1763450087.git.zhiyou.jx@alibaba-inc.com>


* js/ci-show-breakage-in-dockerized-jobs (2025-11-17) 1 commit
 - ci(dockerized): do show the result of failing tests again

 Dockerised jobs at the GitHub Actions CI have been taught to show
 more details of failed tests.

 Will merge to 'next'?
 cf. <xmqqpl9gike6.fsf@gitster.g>
 source: <pull.2003.git.1763399064983.gitgitgadget@gmail.com>


* js/cmake-libgit-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 1593640ab0)
 + cmake: stop trying to build the reftable and xdiff libraries

 Makefile based build have recently been updated to build a
 libgit.a that also has reftable and xdiff objects; CMake based
 build procedure has been updated to match.

 Will merge to 'master'.
 source: <pull.2006.git.1763412008722.gitgitgadget@gmail.com>


* js/mingw-assign-comma-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at d1a5807e11)
 + mingw: avoid the comma operator

 The "return errno = EFOO, -1" construct, which is heavily used in
 compat/mingw.c and triggers warnings under "-Wcomma", has been
 rewritten to avoid the warnings.

 Will merge to 'master'.
 source: <pull.2007.git.1763412374866.gitgitgadget@gmail.com>


* js/strip-scalar-too (2025-11-17) 1 commit
 - make strip: include `scalar`

 "make strip" has been taught to strip "scalar" as well as "git".

 Will merge to 'next'?
 cf. <xmqq7bvoiadg.fsf@gitster.g>
 source: <pull.2004.git.1763409086322.gitgitgadget@gmail.com>


* js/wincred-get-credential-alloc-fix (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 4c43c53c49)
 + wincred: avoid memory corruption

 Under-allocation fix.

 Will merge to 'master'.
 source: <pull.2005.git.1763411984773.gitgitgadget@gmail.com>


* pw/worktree-list-display-width-fix (2025-11-18) 2 commits
 - worktree list: quote paths
 - worktree list: fix column spacing

 "git worktree list" attempts to show paths to worktrees while
 aligning them, but miscounted display columns for the paths when
 non-ASCII characters were involved, which has been corrected.

 Will merge to 'next'.
 source: <cover.1763482051.git.phillip.wood@dunelm.org.uk>


* rs/xmkstemp-simplify (2025-11-17) 1 commit
  (merged to 'next' on 2025-11-19 at 228e9f54ab)
 + wrapper: simplify xmkstemp()

 Code simplification.

 Will merge to 'master'.
 source: <058c5722-30f5-4bc5-90f5-24e4c6f3ff8f@web.de>


* dw/config-global-list (2025-10-09) 4 commits
 - config: keep bailing on unreadable global files
 - config: read global scope via config_sequence
 - config: test home and xdg files in `list --global`
 - cleanup_path: force forward slashes on Windows

 "git config --list --global", unlike "git config --list", did not
 consult both of the two possible per-user sources of the
 configuration files, i.e. $HOME/.gitconfig and the XDG one, which
 has been corrected.

 Comments?
 source: <pull.1938.git.1760058849.gitgitgadget@gmail.com>


* ps/object-read-stream (2025-11-18) 19 commits
 - streaming: move into object database subsystem
 - streaming: refactor interface to be object-database-centric
 - streaming: move logic to read packed objects streams into backend
 - streaming: move logic to read loose objects streams into backend
 - streaming: make the `odb_read_stream` definition public
 - streaming: get rid of `the_repository`
 - streaming: rely on object sources to create object stream
 - packfile: introduce function to read object info from a store
 - streaming: move zlib stream into backends
 - streaming: create structure for filtered object streams
 - streaming: create structure for packed object streams
 - streaming: create structure for loose object streams
 - streaming: create structure for in-core object streams
 - streaming: allocate stream inside the backend-specific logic
 - streaming: explicitly pass packfile info when streaming a packed object
 - streaming: propagate final object type via the stream
 - streaming: drop the `open()` callback function
 - streaming: rename `git_istream` into `odb_read_stream`
 - Merge branch 'ps/object-source-loose' into HEAD
 (this branch uses ps/object-source-loose.)

 The "git_istream" abstraction has been revamped to make it easier
 to interface with pluggable object database design.

 Comments?
 source: <20251119-b4-pks-odb-read-stream-v1-0-adacf03c2ccf@pks.im>


* ps/object-source-management (2025-11-18) 14 commits
 - odb: handle recreation of quarantine directories
 - odb: handle changing a repository's commondir
 - chdir-notify: add function to unregister listeners
 - odb: handle initialization of sources in `odb_new()`
 - http-push: stop setting up `the_repository` for each reference
 - t/helper: stop setting up `the_repository` repeatedly
 - builtin/index-pack: fix deferred fsck outside repos
 - oidset: introduce `oidset_equal()`
 - odb: move logic to disable ref updates into repo
 - odb: refactor `odb_clear()` to `odb_free()`
 - odb: adopt logic to close object databases
 - setup: convert `set_git_dir()` to have file scope
 - path: move `enter_repo()` into "setup.c"
 - Merge branch 'ps/object-source-loose' into HEAD
 (this branch uses ps/object-source-loose.)

 Code refactoring around object database sources.

 Comments?
 source: <20251119-b4-pks-odb-creation-v1-0-2b2ed2612cb6@pks.im>

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

* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>


* rs/diff-quiet-no-rename (2025-11-09) 1 commit
  (merged to 'next' on 2025-11-19 at dc0b078446)
 + diff: disable rename detection with --quiet

 Originally merged to 'next' on 2025-11-14

 As "git diff --quiet" only cares about the existence of any
 changes, disable rename/copy detection to skip more expensive
 processing whose result will be discarded anyway.

 Will merge to 'master'.
 source: <8796cd59-2335-4674-823d-d682ce7b7f8e@web.de>


* jc/gitattributes-whitespace-no-indent-fix (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-19 at cd849a23a1)
 + .gitattributes: remove misspelled no-op whitespace attribute

 Originally merged to 'next' on 2025-11-14

 Ever since we added whitespace rules for this project, we misspelt
 an entry, which has been corrected.

 Will merge to 'master'.
 source: <xmqqv7jgwgxb.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-18) 3 commits
 - fetch: fix failed batched updates skipping operations
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'next'?
 source: <20251118-fix-tags-not-fetching-v6-0-2a2f15fc137e@gmail.com>


* jk/asan-bonanza (2025-11-18) 9 commits
 - t: enable ASan's strict_string_checks option
 - fsck: avoid parse_timestamp() on buffer that isn't NUL-terminated
 - fsck: remove redundant date timestamp check
 - fsck: avoid strcspn() in fsck_ident()
 - fsck: assert newline presence in fsck_ident()
 - cache-tree: avoid strtol() on non-string buffer
 - Makefile: turn on NO_MMAP when building with ASan
 - pack-bitmap: handle name-hash lookups in incremental bitmaps
 - compat/mmap: mark unused argument in git_munmap()

 Various issues detected by Asan have been corrected.

 Will merge to 'next'?
 source: <20251118091127.GA4175601@coredump.intra.peff.net>


* jk/attr-macroexpand-wo-recursion (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-19 at 5d5f74f4f0)
 + attr: avoid recursion when expanding attribute macros

 Originally merged to 'next' on 2025-11-16

 The code to expand attribute macros has been rewritten to avoid
 recursion to avoid running out of stack space in an uncontrolled
 way.

 Will merge to 'master'.
 source: <20251111223647.GA4055973@coredump.intra.peff.net>


* bc/submodule-force-same-hash (2025-11-14) 2 commits
  (merged to 'next' on 2025-11-19 at eec9dca32c)
 + read-cache: drop submodule check from add_to_cache()
 + object-file: disallow adding submodules of different hash algo

 Originally merged to 'next' on 2025-11-16

 Adding a repository that uses a different hash function is a no-no,
 but "git submodule add" did nt prevent it, which has been corrected.

 Will merge to 'master'.
 source: <20251112235434.1499699-1-sandals@crustytoothpaste.net>


* jx/repo-struct-utf8width-fix (2025-11-15) 2 commits
  (merged to 'next' on 2025-11-19 at 35bff72b75)
 + builtin/repo: fix table alignment for UTF-8 characters
 + t/unit-tests: add UTF-8 width tests for CJK chars

 Originally merged to 'next' on 2025-11-18

 The "git repo structure" subcommand tried to align its output but
 mixed up byte count and display column width, which has been
 corrected.

 Will merge to 'master'.
 source: <cover.1763213290.git.worldhello.net@gmail.com>


* kh/doc-commit-extra-references (2025-11-14) 1 commit
  (merged to 'next' on 2025-11-19 at 9c89891116)
 + doc: commit: link to git-status(1) on all format options

 Originally merged to 'next' on 2025-11-18

 Doc update.

 Will merge to 'master'.
 source: <c4349a03724.1763129061.git.code@khaugsbakk.name>


* kn/osxkeychain-idempotent-store-fix (2025-11-13) 1 commit
  (merged to 'next' on 2025-11-19 at 335d6bb2ea)
 + osxkeychain: avoid incorrectly skipping store operation

 Originally merged to 'next' on 2025-11-18

 An earlier check added to osx keychain credential helper to avoid
 storing the credential itself supplied was overeager and rejected
 credential material supplied by other helper backends that it would
 have wanted to store, which has been corrected.

 Will merge to 'master'.
 source: <pull.1999.v2.git.1763100270949.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* en/ort-rename-another-fix (2025-11-03) 3 commits
  (merged to 'next' on 2025-11-19 at 53d94af6b4)
 + merge-ort: fix failing merges in special corner case
 + merge-ort: remove debugging crud
 + t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.

 Will merge to 'master'.
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* kn/maintenance-is-needed (2025-11-08) 7 commits
  (merged to 'next' on 2025-11-19 at faaa24f412)
 + maintenance: add 'is-needed' subcommand
 + maintenance: add checking logic in `pack_refs_condition()`
 + refs: add a `optimize_required` field to `struct ref_storage_be`
 + reftable/stack: add function to check if optimization is required
 + reftable/stack: return stack segments directly
 + Merge branch 'kn/refs-optim-cleanup' into kn/maintenance-is-needed
 + Merge branch 'ps/ref-peeled-tags' into kn/maintenance-is-needed

 Originally merged to 'next' on 2025-11-14

 "git maintenance" command learned "is-needed" subcommand to tell if
 it is necessary to perform various maintenance tasks.

 Will merge to 'master'.
 source: <20251108-562-add-sub-command-to-check-if-maintenance-is-needed-v4-0-a90f229b6023@gmail.com>


* qj/doc-http-bad-want-response (2025-11-05) 1 commit
  (merged to 'next' on 2025-11-19 at a602cd96eb)
 + doc: clarify server behavior for invalid 'want' lines in HTTP protocol

 Originally merged to 'next' on 2025-11-18

 Doc update.

 Will merge to 'master'.
 source: <20251105143849.1192-1-qjessa662@gmail.com>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
 - fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 - commit: refactor verify_commit_buffer()
 - fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Comments?
 source: <20251117043450.322644-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-12) 12 commits
 - attr: enable incomplete-line whitespace error for this project
 - diff: highlight and error out on incomplete lines
 - apply: check and fix incomplete lines
 - whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 - apply: revamp the parsing of incomplete lines
 - diff: update the way rewrite diff handles incomplete lines
 - diff: call emit_callback ecbdata everywhere
 - diff: refactor output of incomplete line
 - diff: keep track of the type of the last line seen
 - diff: correct suppress_blank_empty hack
 - diff: emit_line_ws_markup() if/else style fix
 - whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".

 Will merge to 'next'?
 source: <20251112220258.1009253-1-gitster@pobox.com>


* ps/object-source-loose (2025-11-02) 13 commits
  (merged to 'next' on 2025-11-19 at 8bb0269243)
 + object-file: refactor writing objects via a stream
 + object-file: rename `write_object_file()`
 + object-file: refactor freshening of objects
 + object-file: rename `has_loose_object()`
 + object-file: read objects via the loose object source
 + object-file: move loose object map into loose source
 + object-file: hide internals when we need to reprepare loose sources
 + object-file: move loose object cache into loose source
 + object-file: introduce `struct odb_source_loose`
 + object-file: move `fetch_if_missing`
 + odb: adjust naming to free object sources
 + odb: introduce `odb_source_new()`
 + odb: fix subtle logic to check whether an alternate is usable
 (this branch is used by ps/object-read-stream and ps/object-source-management.)

 Originally merged to 'next' on 2025-11-18

 A part of code paths that deals with loose objects has been cleaned
 up.

 Will merge to 'master'.
 source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>


* bc/sha1-256-interop-02 (2025-11-17) 15 commits
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the object map
 - csum-file: define hashwrite's count as a uint32_t
 - rust: add additional helpers for ObjectID
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.
 source: <20251117221621.2863243-1-sandals@crustytoothpaste.net>


* ad/blame-diff-algorithm (2025-11-17) 2 commits
  (merged to 'next' on 2025-11-19 at e1e456469f)
 + blame: make diff algorithm configurable
 + xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.

 Will merge to 'master'.
 cf. <fd03f2a5-bf9e-453f-97d1-d5a66bc87470@gmail.com>
 source: <pull.2075.v6.git.git.1763366672.gitgitgadget@gmail.com>


* lo/repo-info-all (2025-11-18) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Will merge to 'next'.
 source: <20251118204929.43597-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-11-18) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ptrdiff_t for dstart/dend
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Will merge to 'next'?
 source: <pull.2070.v5.git.git.1763505262.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Seems to leak and break CI
 cf. <xmqq346ff56h.fsf@gitster.g>
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* je/doc-data-model (2025-11-12) 1 commit
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Will merge to 'next'?
 source: <pull.1981.v7.git.1762977200244.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Expecting a reroll.
 cf. <aRxDYkeAi8T-HH8M@pks.im>
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
  (merged to 'next' on 2025-11-19 at ae19b06a22)
 + replay: add replay.refAction config option
 + replay: make atomic ref updates the default behavior
 + replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 Originally merged to 'next' on 2025-11-18

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'master'.
 cf. <00a5a8f3-f761-46e8-84cc-4bd95db68b49@gmail.com>
 source: <20251105191650.89975-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-11-19) 7 commits
 - meson/Makefile: allow setting submodule encoding at build time
 - submodule: use hashed name for gitdir
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - submodule: always validate gitdirs inside submodule_name_to_gitdir
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.
 source: <20251119211030.2008441-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* ps/rust-cbindgen (2025-10-24) 6 commits
 . rust: generate bindings via cbindgen
 . meson: rename Rust library target
 . ci: use Debian instead of deprecated i386/ubuntu
 . gitlab-ci: backfill missing Linux jobs
 . gitlab-ci: reorder Linux job matrix to match GitHub's order
 . Merge branch 'ps/ci-rust' into ps/rust-cbindgen

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Retracted.
 cf. <aQ3XOTX0AT_eFc5P@pks.im>
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* jc/ci-drop-p4-macosx (2025-11-14) 1 commit
 . CI: drop Perforce tests from macOSX jobs

 Drop P4 tests on macOSX platform on GitHub Actions CI.

 Retracted.  Superseded by jc/ci-use-arm64-p4-on-macos topic.
 source: <xmqqqzu0gxq2.fsf_-_@gitster.g>


^ permalink raw reply	[relevance 23%]

* Re: What's cooking in git.git (Nov 2025, #04; Fri, 14)
  @ 2025-11-17 22:48 99%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-17 22:48 UTC (permalink / raw)
  To: Phillip Wood; +Cc: D. Ben Knoble, git

Phillip Wood <phillip.wood123@gmail.com> writes:

> On 15/11/2025 16:51, D. Ben Knoble wrote:
>> On Fri, Nov 14, 2025 at 5:27 PM Junio C Hamano <gitster@pobox.com> wrote:
>>>
>>> * ps/history (2025-10-27) 12 commits
>>>   - builtin/history: implement "split" subcommand
>>>   - cache-tree: allow writing in-memory index as tree
>>>   - add-patch: add support for in-memory index patching
>>>   - add-patch: remove dependency on "add-interactive" subsystem
>>>   - add-patch: split out `struct interactive_options`
>>>   - add-patch: split out header from "add-interactive.h"
>>>   - builtin/history: implement "reword" subcommand
>>>   - builtin: add new "history" command
>>>   - replay: stop using `the_repository`
>>>   - replay: extract logic to pick commits
>>>   - wt-status: provide function to expose status for trees
>>>   - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
>>>   (this branch uses sa/replay-atomic-ref-updates.)
>>>
>>>   "git history" history rewriting UI.
>>>
>>>   Comments?
>>>   source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>
>> 
>> But otherwise I generally am in favor of the idea and find it useful.
>
> I agree with this and I'm pleased it is reusing some of the internals of 
> "git replay" now. I've just reviewed the first half, I'll try and do the 
> rest sometime this week.

Thanks!


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Nov 2025, #05; Mon, 17)
@ 2025-11-17 17:18 28% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-17 17:18 UTC (permalink / raw)
  To: git

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

Git 2.52 (final) has been tagged.  We'll see if there is a need for
a quick brown paper bag fix necessary for some days and then reopen
the tree for the 2.53 cycle, to start merging topics that have been
cooking in "next" down to "master".

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

* jc/ci-use-arm64-p4-on-macos (2025-11-16) 1 commit
  (merged to 'next' on 2025-11-16 at c784b1ea9f)
 + Use Perforce arm64 binary on macOS CI jobs

 We replaced deprecated macos-13 with macos-14 image in GitHub
 Actions CI, but we forgot that the image is for arm64.  We have
 been seeing a lot of test failures ever since.  Switch to arm64
 binary for Perforce tests.
 source: <xmqqy0o5bml7.fsf@gitster.g>

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

* jc/submodule-add (2025-11-15) 1 commit
 - submodule add: sanity check existing .gitmodules

 "git submodule add" to add a submodule under <name> segfaulted,
 when a submodule.<name>.something is already in .gitmodules file
 without defining where its submodule.<name>.path is, which has been
 corrected.

 Comments?
 source: <xmqqv7jacvdq.fsf@gitster.g>

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

* rs/diff-quiet-no-rename (2025-11-09) 1 commit
  (merged to 'next' on 2025-11-14 at 2d94808185)
 + diff: disable rename detection with --quiet

 As "git diff --quiet" only cares about the existence of any
 changes, disable rename/copy detection to skip more expensive
 processing whose result will be discarded anyway.

 Will cook in 'next'.
 source: <8796cd59-2335-4674-823d-d682ce7b7f8e@web.de>


* jc/gitattributes-whitespace-no-indent-fix (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-14 at 230fcf2819)
 + .gitattributes: remove misspelled no-op whitespace attribute

 Ever since we added whitespace rules for this project, we misspelt
 an entry, which has been corrected.

 Will cook in 'next'.
 source: <xmqqv7jgwgxb.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-13) 2 commits
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'next'?
 cf. <xmqqtsytbk5w.fsf@gitster.g>
 source: <20251113-fix-tags-not-fetching-v5-0-371ea7ec638d@gmail.com>


* jk/asan-bonanza (2025-11-12) 10 commits
 - amend! Makefile: turn on NO_MMAP when building with ASan
 - t: enable ASan's strict_string_checks option
 - fsck: avoid parse_timestamp() on buffer that isn't NUL-terminated
 - fsck: remove redundant date timestamp check
 - fsck: avoid strcspn() in fsck_ident()
 - fsck: assert newline presence in fsck_ident()
 - cache-tree: avoid strtol() on non-string buffer
 - Makefile: turn on NO_MMAP when building with ASan
 - pack-bitmap: handle name-hash lookups in incremental bitmaps
 - compat/mmap: mark unused argument in git_munmap()

 Various issues detected by Asan have been corrected.

 Expecting a reroll?
 cf. <aRbToFLhzewwBaSv@pks.im>
 source: <20251112075522.GA978866@coredump.intra.peff.net>


* jk/attr-macroexpand-wo-recursion (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-16 at c4e4a7348e)
 + attr: avoid recursion when expanding attribute macros

 The code to expand attribute macros has been rewritten to avoid
 recursion to avoid running out of stack space in an uncontrolled
 way.

 Will cook in 'next'.
 source: <20251111223647.GA4055973@coredump.intra.peff.net>


* bc/submodule-force-same-hash (2025-11-14) 2 commits
  (merged to 'next' on 2025-11-16 at aa765fefd0)
 + read-cache: drop submodule check from add_to_cache()
 + object-file: disallow adding submodules of different hash algo

 Adding a repository that uses a different hash function is a no-no,
 but "git submodule add" did nt prevent it, which has been corrected.

 Will cook in 'next'.
 source: <20251112235434.1499699-1-sandals@crustytoothpaste.net>


* jx/repo-struct-utf8width-fix (2025-11-15) 2 commits
 - builtin/repo: fix table alignment for UTF-8 characters
 - t/unit-tests: add UTF-8 width tests for CJK chars

 The "git repo structure" subcommand tried to align its output but
 mixed up byte count and display column width, which has been
 corrected.

 Will merge to 'next'.
 source: <cover.1763213290.git.worldhello.net@gmail.com>


* kh/doc-commit-extra-references (2025-11-14) 1 commit
 - doc: commit: link to git-status(1) on all format options

 Doc update.

 Will merge to 'next'.
 source: <c4349a03724.1763129061.git.code@khaugsbakk.name>


* kn/osxkeychain-idempotent-store-fix (2025-11-13) 1 commit
 - osxkeychain: avoid incorrectly skipping store operation

 An earlier check added to osx keychain credential helper to avoid
 storing the credential itself supplied was overeager and rejected
 credential material supplied by other helper backends that it would
 have wanted to store, which has been corrected.

 Will merge to 'next'.
 source: <pull.1999.v2.git.1763100270949.gitgitgadget@gmail.com>


* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Expecting a reroll.
 cf. <19a8fe42354.3909481a3912041.7970296104893780556@linux.beauty>
 source: <20251105142944.73061-1-me@linux.beauty>


* ps/ref-peeled-tags-fixes (2025-11-06) 2 commits
  (merged to 'next' on 2025-11-11 at 3549877a16)
 + object: fix performance regression when peeling tags
 + Merge branch 'ps/ref-peeled-tags' into ps/ref-peeled-tags-fixes
 (this branch uses ps/ref-peeled-tags.)

 Another fix-up to "peeled-tags" topic.

 Will cook in 'next'.
 source: <20251106-b4-pks-peel-object-performance-regression-v1-1-a386147750b0@pks.im>


* en/ort-rename-another-fix (2025-11-03) 3 commits
 - merge-ort: fix failing merges in special corner case
 - merge-ort: remove debugging crud
 - t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.

 Will merge to 'next' after locally amending?
 cf. <xmqqfradbhgi.fsf@gitster.g>
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* kn/maintenance-is-needed (2025-11-08) 7 commits
  (merged to 'next' on 2025-11-14 at ed70525e16)
 + maintenance: add 'is-needed' subcommand
 + maintenance: add checking logic in `pack_refs_condition()`
 + refs: add a `optimize_required` field to `struct ref_storage_be`
 + reftable/stack: add function to check if optimization is required
 + reftable/stack: return stack segments directly
 + Merge branch 'kn/refs-optim-cleanup' into kn/maintenance-is-needed
 + Merge branch 'ps/ref-peeled-tags' into kn/maintenance-is-needed
 (this branch uses kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git maintenance" command learned "is-needed" subcommand to tell if
 it is necessary to perform various maintenance tasks.

 Will cook in 'next'.
 source: <20251108-562-add-sub-command-to-check-if-maintenance-is-needed-v4-0-a90f229b6023@gmail.com>


* qj/doc-http-bad-want-response (2025-11-05) 1 commit
 - doc: clarify server behavior for invalid 'want' lines in HTTP protocol

 Doc update.

 Will merge to 'next'.
 source: <20251105143849.1192-1-qjessa662@gmail.com>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-16) 3 commits
 - fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 - commit: refactor verify_commit_buffer()
 - fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Comments?
 source: <20251117043450.322644-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-12) 12 commits
 - attr: enable incomplete-line whitespace error for this project
 - diff: highlight and error out on incomplete lines
 - apply: check and fix incomplete lines
 - whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 - apply: revamp the parsing of incomplete lines
 - diff: update the way rewrite diff handles incomplete lines
 - diff: call emit_callback ecbdata everywhere
 - diff: refactor output of incomplete line
 - diff: keep track of the type of the last line seen
 - diff: correct suppress_blank_empty hack
 - diff: emit_line_ws_markup() if/else style fix
 - whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".

 Will merge to 'next'?
 source: <20251112220258.1009253-1-gitster@pobox.com>


* ps/object-source-loose (2025-11-02) 13 commits
 - object-file: refactor writing objects via a stream
 - object-file: rename `write_object_file()`
 - object-file: refactor freshening of objects
 - object-file: rename `has_loose_object()`
 - object-file: read objects via the loose object source
 - object-file: move loose object map into loose source
 - object-file: hide internals when we need to reprepare loose sources
 - object-file: move loose object cache into loose source
 - object-file: introduce `struct odb_source_loose`
 - object-file: move `fetch_if_missing`
 - odb: adjust naming to free object sources
 - odb: introduce `odb_source_new()`
 - odb: fix subtle logic to check whether an alternate is usable

 A part of code paths that deals with loose objects has been cleaned
 up.

 Will merge to 'next'.
 source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>


* bc/sha1-256-interop-02 (2025-11-14) 16 commits
 - SQUASH??? cargo clippy
 - SQUASH??? downgrade build.rs syntax
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary loose object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the loose object map
 - csum-file: define hashwrite's count as a uint32_t
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Expecting a reroll.
 source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>


* ad/blame-diff-algorithm (2025-11-06) 2 commits
 - blame: make diff algorithm configurable
 - xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.

 Will merge to 'next'?
 cf. <xmqq5xb9bgx2.fsf@gitster.g>
 source: <pull.2075.v5.git.git.1762468914.gitgitgadget@gmail.com>


* ps/packed-git-in-object-store (2025-10-30) 9 commits
  (merged to 'next' on 2025-11-03 at 1eb3440abd)
 + packfile: track packs via the MRU list exclusively
 + packfile: always add packfiles to MRU when adding a pack
 + packfile: move list of packs into the packfile store
 + builtin/pack-objects: simplify logic to find kept or nonlocal objects
 + packfile: fix approximation of object counts
 + http: refactor subsystem to use `packfile_list`s
 + packfile: move the MRU list into the packfile store
 + packfile: use a `strmap` to store packs by name
 + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store

 The list of packfiles used in a running Git process is moved from
 the packed_git structure into the packfile store.

 Will cook in 'next'.
 source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
  (merged to 'next' on 2025-11-04 at dbab18969a)
 + t/pack-refs-tests: move the 'test_done' to callees
 + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 + refs: move to using the '.optimize' functions
 + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch is used by kn/maintenance-is-needed; uses ps/ref-peeled-tags.)

 Code clean-up.

 Will cook in 'next'.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqpla43wcp.fsf@gitster.g> <aQRaRuBtt_r7SamL@pks.im>
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-11-14) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ptrdiff_t for dstart/dend
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqy0o7g0rk.fsf@gitster.g>
 cf. <xmqqzf8la20o.fsf@gitster.g>
 source: <pull.2070.v4.git.git.1763159816.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/ref-peeled-tags (2025-11-04) 18 commits
  (merged to 'next' on 2025-11-04 at 3818774c94)
 + t7004: do not chdir around in the main process
 + ref-filter: fix stale parsed objects
 + ref-filter: parse objects on demand
 + ref-filter: detect broken tags when dereferencing them
 + refs: don't store peeled object IDs for invalid tags
 + object: add flag to `peel_object()` to verify object type
 + refs: drop infrastructure to peel via iterators
 + refs: drop `current_ref_iter` hack
 + builtin/show-ref: convert to use `reference_get_peeled_oid()`
 + ref-filter: propagate peeled object ID
 + upload-pack: convert to use `reference_get_peeled_oid()`
 + refs: expose peeled object ID via the iterator
 + refs: refactor reference status flags
 + refs: fully reset `struct ref_iterator::ref` on iteration
 + refs: introduce `.ref` field for the base iterator
 + refs: introduce wrapper struct for `each_ref_fn`
 + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/maintenance-is-needed, kn/refs-optim-cleanup and ps/ref-peeled-tags-fixes.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will cook in 'next'.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* je/doc-data-model (2025-11-12) 1 commit
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Will merge to 'next'?
 source: <pull.1981.v7.git.1762977200244.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Will merge to 'next' after the base topic.
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'next'.
 cf. <00a5a8f3-f761-46e8-84cc-4bd95db68b49@gmail.com>
 source: <20251105191650.89975-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-11-07) 4 commits
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Seems to leak and break CI
 cf. <xmqq346ff56h.fsf@gitster.g>
 source: <20251107150547.3272180-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* ps/rust-cbindgen (2025-10-24) 6 commits
 . rust: generate bindings via cbindgen
 . meson: rename Rust library target
 . ci: use Debian instead of deprecated i386/ubuntu
 . gitlab-ci: backfill missing Linux jobs
 . gitlab-ci: reorder Linux job matrix to match GitHub's order
 . Merge branch 'ps/ci-rust' into ps/rust-cbindgen

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Retracted.
 cf. <aQ3XOTX0AT_eFc5P@pks.im>
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* jc/ci-drop-p4-macosx (2025-11-14) 1 commit
 . CI: drop Perforce tests from macOSX jobs

 Drop P4 tests on macOSX platform on GitHub Actions CI.

 Retracted.  Superseded by jc/ci-use-arm64-p4-on-macos topic.
 source: <xmqqqzu0gxq2.fsf_-_@gitster.g>


^ permalink raw reply	[relevance 28%]

* What's cooking in git.git (Nov 2025, #04; Fri, 14)
@ 2025-11-14 22:26 28% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-11-14 22:26 UTC (permalink / raw)
  To: git

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

* dk/make-git-contacts-executable (2025-11-04) 1 commit
  (merged to 'next' on 2025-11-07 at 30608eb744)
 + perl: also mark git-contacts executable

 Building "git contacts" script (in contrib/) left the resulting
 file unexecutable, which has been corrected.
 source: <7fbb341e8f05fcde3a1543e3bb4e5a3ec1101692.1762280097.git.ben.knoble+github@gmail.com>


* dk/meson-html-dir (2025-11-04) 1 commit
  (merged to 'next' on 2025-11-07 at b30cf1f060)
 + meson: make GIT_HTML_PATH configurable

 The build procedure based on meson learned to allow builders to
 specify the directory to install HTML documents.
 source: <385992f6020703558f0ba75a1be6c4f9dae08b83.1762264709.git.ben.knoble+github@gmail.com>


* tc/last-modified-active-paths-optimization (2025-10-23) 1 commit
  (merged to 'next' on 2025-11-03 at 9ab444edfb)
 + last-modified: implement faster algorithm

 "git last-modified" was optimized by narrowing the set of paths to
 follow as it dug deeper in the history.
 source: <20251023-b4-toon-last-modified-faster-v3-1-40a4ddbbadec@iotcl.com>


* tu/credential-wincred-makefile-update (2025-11-05) 1 commit
  (merged to 'next' on 2025-11-07 at ed74befe91)
 + wincred: align Makefile with other Makefiles in contrib

 Build procedure for Wincred credential helper has been updated.
 source: <3869ec21-e20d-cf9b-5913-6389c372a5f0@mailbox.tu-dresden.de>

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

* rs/diff-quiet-no-rename (2025-11-09) 1 commit
  (merged to 'next' on 2025-11-14 at 2d94808185)
 + diff: disable rename detection with --quiet

 As "git diff --quiet" only cares about the existence of any
 changes, disable rename/copy detection to skip more expensive
 processing whose result will be discarded anyway.

 Will cook in 'next'.
 source: <8796cd59-2335-4674-823d-d682ce7b7f8e@web.de>


* jc/gitattributes-whitespace-no-indent-fix (2025-11-11) 1 commit
  (merged to 'next' on 2025-11-14 at 230fcf2819)
 + .gitattributes: remove misspelled no-op whitespace attribute

 Ever since we added whitespace rules for this project, we misspelt
 an entry, which has been corrected.

 Will cook in 'next'.
 source: <xmqqv7jgwgxb.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-13) 2 commits
 - fetch: fix non-conflicting tags not being committed
 - fetch: extract out reference committing logic

 "git fetch" that involves fetching tags, when a tag being fetched
 needs to overwrite existing one, failed to fetch other tags, which
 has been corrected.

 Will merge to 'next'?
 source: <20251113-fix-tags-not-fetching-v5-0-371ea7ec638d@gmail.com>


* jk/asan-bonanza (2025-11-12) 10 commits
 - amend! Makefile: turn on NO_MMAP when building with ASan
 - t: enable ASan's strict_string_checks option
 - fsck: avoid parse_timestamp() on buffer that isn't NUL-terminated
 - fsck: remove redundant date timestamp check
 - fsck: avoid strcspn() in fsck_ident()
 - fsck: assert newline presence in fsck_ident()
 - cache-tree: avoid strtol() on non-string buffer
 - Makefile: turn on NO_MMAP when building with ASan
 - pack-bitmap: handle name-hash lookups in incremental bitmaps
 - compat/mmap: mark unused argument in git_munmap()

 Various issues detected by Asan have been corrected.

 Expecting a reroll?
 cf. <aRbToFLhzewwBaSv@pks.im>
 source: <20251112075522.GA978866@coredump.intra.peff.net>


* jk/attr-macroexpand-wo-recursion (2025-11-11) 1 commit
 - attr: avoid recursion when expanding attribute macros

 The code to expand attribute macros has been rewritten to avoid
 recursion to avoid running out of stack space in an uncontrolled
 way.

 Will merge to 'next'?
 source: <20251111223647.GA4055973@coredump.intra.peff.net>


* bc/submodule-force-same-hash (2025-11-12) 1 commit
 - object-file: disallow adding submodules of different hash algo

 Adding a repository that uses a different hash function is a no-no,
 but "git submodule add" did nt prevent it, which has been corrected.

 Will merge to 'next'?
 source: <20251112235434.1499699-1-sandals@crustytoothpaste.net>


* jc/ci-drop-p4-macosx (2025-11-14) 1 commit
 - CI: drop Perforce tests from macOSX jobs

 Drop P4 tests on macOSX platform on GitHub Actions CI.

 Comments?
 source: <xmqqqzu0gxq2.fsf_-_@gitster.g>


* jx/repo-struct-utf8width-fix (2025-11-13) 2 commits
 - builtin/repo: fix table alignment for UTF-8 characters
 - t/unit-tests: add UTF-8 width tests for CJK chars

 The "git repo structure" subcommand tried to align its output but
 mixed up byte count and display column width, which has been
 corrected.

 Comments?
 source: <cover.1763098804.git.worldhello.net@gmail.com>


* kh/doc-commit-extra-references (2025-11-14) 1 commit
 - doc: commit: link to git-status(1) on all format options

 Doc update.

 Will merge to 'next'?
 source: <c4349a03724.1763129061.git.code@khaugsbakk.name>


* kn/osxkeychain-idempotent-store-fix (2025-11-13) 1 commit
 - osxkeychain: avoid incorrectly skipping store operation

 An earlier check added to osx keychain credential helper to avoid
 storing the credential itself supplied was overeager and rejected
 credential material supplied by other helper backends that it would
 have wanted to store, which has been corrected.

 Will merge to 'next'?
 source: <pull.1999.v2.git.1763100270949.gitgitgadget@gmail.com>

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

* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Comments?
 source: <20251105142944.73061-1-me@linux.beauty>


* ps/ref-peeled-tags-fixes (2025-11-06) 2 commits
  (merged to 'next' on 2025-11-11 at 3549877a16)
 + object: fix performance regression when peeling tags
 + Merge branch 'ps/ref-peeled-tags' into ps/ref-peeled-tags-fixes
 (this branch uses ps/ref-peeled-tags.)

 Another fix-up to "peeled-tags" topic.

 Will cook in 'next'.
 source: <20251106-b4-pks-peel-object-performance-regression-v1-1-a386147750b0@pks.im>


* en/ort-rename-another-fix (2025-11-03) 3 commits
 - merge-ort: fix failing merges in special corner case
 - merge-ort: remove debugging crud
 - t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.

 Will merge to 'next'?
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* kn/maintenance-is-needed (2025-11-08) 7 commits
  (merged to 'next' on 2025-11-14 at ed70525e16)
 + maintenance: add 'is-needed' subcommand
 + maintenance: add checking logic in `pack_refs_condition()`
 + refs: add a `optimize_required` field to `struct ref_storage_be`
 + reftable/stack: add function to check if optimization is required
 + reftable/stack: return stack segments directly
 + Merge branch 'kn/refs-optim-cleanup' into kn/maintenance-is-needed
 + Merge branch 'ps/ref-peeled-tags' into kn/maintenance-is-needed
 (this branch uses kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git maintenance" command learned "is-needed" subcommand to tell if
 it is necessary to perform various maintenance tasks.

 Will cook in 'next'.
 source: <20251108-562-add-sub-command-to-check-if-maintenance-is-needed-v4-0-a90f229b6023@gmail.com>


* qj/doc-http-bad-want-response (2025-11-05) 1 commit
 - doc: clarify server behavior for invalid 'want' lines in HTTP protocol

 Doc update.

 Will merge to 'next'?
 source: <20251105143849.1192-1-qjessa662@gmail.com>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-04) 3 commits
 . fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 . commit: refactor verify_commit_buffer()
 . fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Expecting a reroll.  Its test does not work well with existing tests
 cf. <xmqqjz00e5ns.fsf@gitster.g>
 source: <20251105061918.3688870-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-12) 12 commits
 - attr: enable incomplete-line whitespace error for this project
 - diff: highlight and error out on incomplete lines
 - apply: check and fix incomplete lines
 - whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 - apply: revamp the parsing of incomplete lines
 - diff: update the way rewrite diff handles incomplete lines
 - diff: call emit_callback ecbdata everywhere
 - diff: refactor output of incomplete line
 - diff: keep track of the type of the last line seen
 - diff: correct suppress_blank_empty hack
 - diff: emit_line_ws_markup() if/else style fix
 - whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".

 Comments?
 source: <20251112220258.1009253-1-gitster@pobox.com>


* ps/object-source-loose (2025-11-02) 13 commits
 - object-file: refactor writing objects via a stream
 - object-file: rename `write_object_file()`
 - object-file: refactor freshening of objects
 - object-file: rename `has_loose_object()`
 - object-file: read objects via the loose object source
 - object-file: move loose object map into loose source
 - object-file: hide internals when we need to reprepare loose sources
 - object-file: move loose object cache into loose source
 - object-file: introduce `struct odb_source_loose`
 - object-file: move `fetch_if_missing`
 - odb: adjust naming to free object sources
 - odb: introduce `odb_source_new()`
 - odb: fix subtle logic to check whether an alternate is usable

 A part of code paths that deals with loose objects has been cleaned
 up.

 Will merge to 'next'?
 source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>


* bc/sha1-256-interop-02 (2025-11-14) 16 commits
 - SQUASH??? cargo clippy
 - SQUASH??? downgrade build.rs syntax
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary loose object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the loose object map
 - csum-file: define hashwrite's count as a uint32_t
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Expecting a reroll.
 source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>


* ad/blame-diff-algorithm (2025-11-06) 2 commits
 - blame: make diff algorithm configurable
 - xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.

 Will merge to 'next'?
 source: <pull.2075.v5.git.git.1762468914.gitgitgadget@gmail.com>


* ps/packed-git-in-object-store (2025-10-30) 9 commits
  (merged to 'next' on 2025-11-03 at 1eb3440abd)
 + packfile: track packs via the MRU list exclusively
 + packfile: always add packfiles to MRU when adding a pack
 + packfile: move list of packs into the packfile store
 + builtin/pack-objects: simplify logic to find kept or nonlocal objects
 + packfile: fix approximation of object counts
 + http: refactor subsystem to use `packfile_list`s
 + packfile: move the MRU list into the packfile store
 + packfile: use a `strmap` to store packs by name
 + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store

 The list of packfiles used in a running Git process is moved from
 the packed_git structure into the packfile store.

 Will cook in 'next'.
 source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
  (merged to 'next' on 2025-11-04 at dbab18969a)
 + t/pack-refs-tests: move the 'test_done' to callees
 + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 + refs: move to using the '.optimize' functions
 + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch is used by kn/maintenance-is-needed; uses ps/ref-peeled-tags.)

 Code clean-up.

 Will cook in 'next'.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqpla43wcp.fsf@gitster.g> <aQRaRuBtt_r7SamL@pks.im>
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-11-11) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ptrdiff_t for dstart/dend
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Comments?
 source: <pull.2070.v3.git.git.1762890152.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/ref-peeled-tags (2025-11-04) 18 commits
  (merged to 'next' on 2025-11-04 at 3818774c94)
 + t7004: do not chdir around in the main process
 + ref-filter: fix stale parsed objects
 + ref-filter: parse objects on demand
 + ref-filter: detect broken tags when dereferencing them
 + refs: don't store peeled object IDs for invalid tags
 + object: add flag to `peel_object()` to verify object type
 + refs: drop infrastructure to peel via iterators
 + refs: drop `current_ref_iter` hack
 + builtin/show-ref: convert to use `reference_get_peeled_oid()`
 + ref-filter: propagate peeled object ID
 + upload-pack: convert to use `reference_get_peeled_oid()`
 + refs: expose peeled object ID via the iterator
 + refs: refactor reference status flags
 + refs: fully reset `struct ref_iterator::ref` on iteration
 + refs: introduce `.ref` field for the base iterator
 + refs: introduce wrapper struct for `each_ref_fn`
 + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/maintenance-is-needed, kn/refs-optim-cleanup and ps/ref-peeled-tags-fixes.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will cook in 'next'.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* je/doc-data-model (2025-11-12) 1 commit
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Will merge to 'next'?
 source: <pull.1981.v7.git.1762977200244.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Comments?
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'next'?
 source: <20251105191650.89975-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-11-07) 4 commits
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251107150547.3272180-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* ps/rust-cbindgen (2025-10-24) 6 commits
 . rust: generate bindings via cbindgen
 . meson: rename Rust library target
 . ci: use Debian instead of deprecated i386/ubuntu
 . gitlab-ci: backfill missing Linux jobs
 . gitlab-ci: reorder Linux job matrix to match GitHub's order
 . Merge branch 'ps/ci-rust' into ps/rust-cbindgen

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Retracted.
 cf. <aQ3XOTX0AT_eFc5P@pks.im>
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


^ permalink raw reply	[relevance 28%]

* What's cooking in git.git (Nov 2025, #04; Wed, 12)
@ 2025-11-12 17:16 31% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-12 17:16 UTC (permalink / raw)
  To: git

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

Git 2.52-rc2 has been tagged.  Hopefully we can have a reasonably
solid Git 2.52 soon.  Until then let's concentrate on finding and
fixing regressions introduced during this cycle, if any.

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

* dk/make-git-contacts-executable (2025-11-04) 1 commit
  (merged to 'next' on 2025-11-07 at 30608eb744)
 + perl: also mark git-contacts executable

 Building "git contacts" script (in contrib/) left the resulting
 file unexecutable, which has been corrected.

 Will cook in 'next'.
 source: <7fbb341e8f05fcde3a1543e3bb4e5a3ec1101692.1762280097.git.ben.knoble+github@gmail.com>


* dk/meson-html-dir (2025-11-04) 1 commit
  (merged to 'next' on 2025-11-07 at b30cf1f060)
 + meson: make GIT_HTML_PATH configurable

 The build procedure based on meson learned to allow builders to
 specify the directory to install HTML documents.

 Will cook in 'next'.
 source: <385992f6020703558f0ba75a1be6c4f9dae08b83.1762264709.git.ben.knoble+github@gmail.com>


* tu/credential-wincred-makefile-update (2025-11-05) 1 commit
  (merged to 'next' on 2025-11-07 at ed74befe91)
 + wincred: align Makefile with other Makefiles in contrib

 Build procedure for Wincred credential helper has been updated.

 Will cook in 'next'.
 source: <3869ec21-e20d-cf9b-5913-6389c372a5f0@mailbox.tu-dresden.de>

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

* rs/diff-quiet-no-rename (2025-11-09) 1 commit
 - diff: disable rename detection with --quiet

 As "git diff --quiet" only cares about the existence of any
 changes, disable rename/copy detection to skip more expensive
 processing whose result will be discarded anyway.

 Will merge to 'next'.
 source: <8796cd59-2335-4674-823d-d682ce7b7f8e@web.de>


* jc/gitattributes-whitespace-no-indent-fix (2025-11-11) 1 commit
 - .gitattributes: remove misspelled no-op whitespace attribute

 Ever since we added whitespace rules for this project, we misspelt
 an entry, which has been corrected.

 Will merge to 'next'.
 source: <xmqqv7jgwgxb.fsf@gitster.g>


* kn/fix-fetch-backfill-tag-with-batched-ref-updates (2025-11-11) 2 commits
 . fetch: fix non-conflicting tags not being committed
 . fetch: extract out reference committing logic

 Expecting a reroll.
 cf. <CAOLa=ZQAQ1dtstD+uqh=vzV+w5q2uWsnZkzqucHuj_W_VL931A@mail.gmail.com>
 source: <20251111-fix-tags-not-fetching-v4-0-185d836ec62a@gmail.com>

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

* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Comments?
 source: <20251105142944.73061-1-me@linux.beauty>


* ps/ref-peeled-tags-fixes (2025-11-06) 2 commits
  (merged to 'next' on 2025-11-11 at 3549877a16)
 + object: fix performance regression when peeling tags
 + Merge branch 'ps/ref-peeled-tags' into ps/ref-peeled-tags-fixes
 (this branch uses ps/ref-peeled-tags.)

 Another fix-up to "peeled-tags" topic.

 Will cook in 'next'.
 source: <20251106-b4-pks-peel-object-performance-regression-v1-1-a386147750b0@pks.im>


* en/ort-rename-another-fix (2025-11-03) 3 commits
 - merge-ort: fix failing merges in special corner case
 - merge-ort: remove debugging crud
 - t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.

 Will merge to 'next'?
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* kn/maintenance-is-needed (2025-11-08) 7 commits
 - maintenance: add 'is-needed' subcommand
 - maintenance: add checking logic in `pack_refs_condition()`
 - refs: add a `optimize_required` field to `struct ref_storage_be`
 - reftable/stack: add function to check if optimization is required
 - reftable/stack: return stack segments directly
 - Merge branch 'kn/refs-optim-cleanup' into kn/maintenance-is-needed
 - Merge branch 'ps/ref-peeled-tags' into kn/maintenance-is-needed
 (this branch uses kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git maintenance" command learned "is-needed" subcommand to tell if
 it is necessary to perform various maintenance tasks.

 Will merge to 'next'.
 source: <20251108-562-add-sub-command-to-check-if-maintenance-is-needed-v4-0-a90f229b6023@gmail.com>


* qj/doc-http-bad-want-response (2025-11-05) 1 commit
 - doc: clarify server behavior for invalid 'want' lines in HTTP protocol

 Doc update.

 Will merge to 'next'?
 source: <20251105143849.1192-1-qjessa662@gmail.com>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-04) 3 commits
 . fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 . commit: refactor verify_commit_buffer()
 . fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Expecting a reroll.  Its test does not work well with existing tests
 cf. <xmqqjz00e5ns.fsf@gitster.g>
 source: <20251105061918.3688870-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-10) 12 commits
 - attr: enable incomplete-line whitespace error for this project
 - diff: highlight and error out on incomplete lines
 - apply: check and fix incomplete lines
 - whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 - apply: revamp the parsing of incomplete lines
 - diff: update the way rewrite diff handles incomplete lines
 - diff: call emit_callback ecbdata everywhere
 - diff: refactor output of incomplete line
 - diff: keep track of the type of the last line seen
 - diff: correct suppress_blank_empty hack
 - diff: emit_line_ws_markup() if/else style fix
 - whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".

 Comments?
 source: <20251111000451.2243195-1-gitster@pobox.com>


* tc/last-modified-active-paths-optimization (2025-10-23) 1 commit
  (merged to 'next' on 2025-11-03 at 9ab444edfb)
 + last-modified: implement faster algorithm

 "git last-modified" was optimized by narrowing the set of paths to
 follow as it dug deeper in the history.

 Will cook in 'next'.
 source: <20251023-b4-toon-last-modified-faster-v3-1-40a4ddbbadec@iotcl.com>


* ps/object-source-loose (2025-11-02) 13 commits
 - object-file: refactor writing objects via a stream
 - object-file: rename `write_object_file()`
 - object-file: refactor freshening of objects
 - object-file: rename `has_loose_object()`
 - object-file: read objects via the loose object source
 - object-file: move loose object map into loose source
 - object-file: hide internals when we need to reprepare loose sources
 - object-file: move loose object cache into loose source
 - object-file: introduce `struct odb_source_loose`
 - object-file: move `fetch_if_missing`
 - odb: adjust naming to free object sources
 - odb: introduce `odb_source_new()`
 - odb: fix subtle logic to check whether an alternate is usable

 A part of code paths that deals with loose objects has been cleaned
 up.

 Will merge to 'next'?
 source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>


* bc/sha1-256-interop-02 (2025-10-29) 15 commits
 - SQUASH??? downgrade build.rs syntax
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary loose object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the loose object map
 - csum-file: define hashwrite's count as a uint32_t
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Expecting a reroll.
 source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>


* ad/blame-diff-algorithm (2025-11-06) 2 commits
 - blame: make diff algorithm configurable
 - xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.

 Will merge to 'next'?
 source: <pull.2075.v5.git.git.1762468914.gitgitgadget@gmail.com>


* ps/packed-git-in-object-store (2025-10-30) 9 commits
  (merged to 'next' on 2025-11-03 at 1eb3440abd)
 + packfile: track packs via the MRU list exclusively
 + packfile: always add packfiles to MRU when adding a pack
 + packfile: move list of packs into the packfile store
 + builtin/pack-objects: simplify logic to find kept or nonlocal objects
 + packfile: fix approximation of object counts
 + http: refactor subsystem to use `packfile_list`s
 + packfile: move the MRU list into the packfile store
 + packfile: use a `strmap` to store packs by name
 + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store

 The list of packfiles used in a running Git process is moved from
 the packed_git structure into the packfile store.

 Will cook in 'next'.
 source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
  (merged to 'next' on 2025-11-04 at dbab18969a)
 + t/pack-refs-tests: move the 'test_done' to callees
 + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 + refs: move to using the '.optimize' functions
 + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch is used by kn/maintenance-is-needed; uses ps/ref-peeled-tags.)

 Code clean-up.

 Will cook in 'next'.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqpla43wcp.fsf@gitster.g> <aQRaRuBtt_r7SamL@pks.im>
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-11-11) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ptrdiff_t for dstart/dend
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Comments?
 source: <pull.2070.v3.git.git.1762890152.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/ref-peeled-tags (2025-11-04) 18 commits
  (merged to 'next' on 2025-11-04 at 3818774c94)
 + t7004: do not chdir around in the main process
 + ref-filter: fix stale parsed objects
 + ref-filter: parse objects on demand
 + ref-filter: detect broken tags when dereferencing them
 + refs: don't store peeled object IDs for invalid tags
 + object: add flag to `peel_object()` to verify object type
 + refs: drop infrastructure to peel via iterators
 + refs: drop `current_ref_iter` hack
 + builtin/show-ref: convert to use `reference_get_peeled_oid()`
 + ref-filter: propagate peeled object ID
 + upload-pack: convert to use `reference_get_peeled_oid()`
 + refs: expose peeled object ID via the iterator
 + refs: refactor reference status flags
 + refs: fully reset `struct ref_iterator::ref` on iteration
 + refs: introduce `.ref` field for the base iterator
 + refs: introduce wrapper struct for `each_ref_fn`
 + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/maintenance-is-needed, kn/refs-optim-cleanup and ps/ref-peeled-tags-fixes.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will cook in 'next'.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* je/doc-data-model (2025-11-07) 1 commit
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqh5v448fr.fsf@gitster.g>
 source: <pull.1981.v6.git.1762545177204.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Comments?
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'next'?
 source: <20251105191650.89975-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-11-07) 4 commits
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251107150547.3272180-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* ps/rust-cbindgen (2025-10-24) 6 commits
 . rust: generate bindings via cbindgen
 . meson: rename Rust library target
 . ci: use Debian instead of deprecated i386/ubuntu
 . gitlab-ci: backfill missing Linux jobs
 . gitlab-ci: reorder Linux job matrix to match GitHub's order
 . Merge branch 'ps/ci-rust' into ps/rust-cbindgen

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Retracted.
 cf. <aQ3XOTX0AT_eFc5P@pks.im>
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


^ permalink raw reply	[relevance 31%]

* Re: What's cooking in git.git (Nov 2025, #03; Fri, 7)
  @ 2025-11-12 16:13 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-12 16:13 UTC (permalink / raw)
  To: Toon Claes; +Cc: git, Taylor Blau

Toon Claes <toon@iotcl.com> writes:

> Junio C Hamano <gitster@pobox.com> writes:
>
>> * tc/last-modified-active-paths-optimization (2025-10-23) 1 commit
>>   (merged to 'next' on 2025-11-03 at 9ab444edfb)
>>  + last-modified: implement faster algorithm
>>
>>  "git last-modified" was optimized by narrowing the set of paths to
>>  follow as it dug deeper in the history.
>>
>>  Will cook in 'next'.
>>  source: <20251023-b4-toon-last-modified-faster-v3-1-40a4ddbbadec@iotcl.com>
>
> Do you plan to include these changes in the upcoming v2.52 release? I
> would like to argue to include them.

I plan to exclude, especially if it was not merged to 'next' before
2025-10-30, which is one calendar week before -rc1, to give the
topic the usual cooking period.

> Maybe it wasn't very clear how I phrased it in the v4 cover letter[1],
> but without this patch, some results are wrong:

Indeed it was unclear.  With respect to the output, the only thing I
recalled was (I just went back to the thread)

    One thing to note though, the results might be outputted in a different
    order than before. This is not considerd to be an issue because nowhere
    is documented the order is guaranteed.

and the patch came with a single test that gives a much later than
before in check_last_modified output, which does not clearly
demonstrate how the old results were wrong and the new results
correct them.

>> As an added benefit, results are more consistent now. For example
>> implementation in 'master' gives:
>> 
>>     $ git log --max-count=1 --format=%H -- pkt-line.h
>>     15df15fe07ef66b51302bb77e393f3c5502629de
>> 
>>     $ git last-modified -- pkt-line.h
>>     15df15fe07ef66b51302bb77e393f3c5502629de	pkt-line.h
>> 
>>     $ git last-modified | grep pkt-line.h
>>     5b49c1af03e600c286f63d9d9c9fb01403230b9f	pkt-line.h
>> 
>> With the changes in this patch the results of git-last-modified(1)
>> always match those of `git log --max-count=1`.
>
> So this patch speeds up git-last-modified(1), but it also fixes some
> buggy results. That's why I consider this a bug fix and worthy to make
> it into the upcoming release. (which is by the way also the first
> release that includes this subcommand)
>
> [1]: https://lore.kernel.org/git/20251103154726.26592-1-toon@iotcl.com/


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Nov 2025, #03; Fri, 7)
@ 2025-11-07 18:56 31% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-11-07 18:56 UTC (permalink / raw)
  To: git

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

Git 2.52-rc1 has been tagged.  Hopefully we can have a reasonably
solid Git 2.52 in the middle of this month.  Until then let's
concentrate on finding and fixing regressions introduced during this
cycle, if any.

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

* cc/fast-import-export-i18n-cleanup (2025-10-30) 5 commits
  (merged to 'next' on 2025-11-03 at 41a35c3e52)
 + gpg-interface: mark a string for translation
 + fast-import: mark strings for translation
 + fast-export: mark strings for translation
 + gpg-interface: use left shift to define GPG_VERIFY_*
 + gpg-interface: simplify ssh fingerprint parsing

 Messages from fast-import/export are now marked for i18n.
 source: <20251030123332.3337684-1-christian.couder@gmail.com>


* dk/parseopt-optional-filename-fixes (2025-11-04) 6 commits
  (merged to 'next' on 2025-11-04 at 1cb7573414)
 + parseopt: remove unreachable code
 + parseopt: restore const qualifier to parsed filename
 + config: use boolean type for a simple flag
 + parseopt: use boolean type for a simple flag
 + doc: clarify command equivalence comment
 + parseopt: fix :(optional) at command line to only ignore missing files

 A recently added configuration variable and command line option
 syntax ":(optional)" for values that are of filename type
 inconsistently behaved on an empty file (configuration took it
 happily, while the command line option pretended as if it did not
 exist), which has been corrected.
 source: <cover.1762100242.git.ben.knoble+github@gmail.com>
 source: <xmqq1pmdr9qu.fsf@gitster.g>


* js/ci-github-actions-update (2025-11-06) 1 commit
  (merged to 'next' on 2025-11-06 at 68957de207)
 + ci: update {download,upload}-artifact Action versions

 CI updates.
 source: <pull.1996.git.1762437576488.gitgitgadget@gmail.com>


* pk/reflog-migrate-message-fix (2025-11-05) 1 commit
  (merged to 'next' on 2025-11-06 at c9c574a496)
 + refs: add missing space in messages

 Message fix.
 source: <a8220721-3260-15cb-6960-ca8b6433d7b5@softwolves.pp.se>

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

* lc/rebase-trailer (2025-11-05) 4 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`
 - trailer: move process_trailers to trailer.h
 - interpret-trailers: factor out buffer-based processing to process_trailers()

 Refactor code paths to run "interpret-trailers" from "git
 commit/tag" and use it in "git rebase".

 Comments?
 source: <20251105142944.73061-1-me@linux.beauty>


* ps/ref-peeled-tags-fixes (2025-11-06) 2 commits
 - object: fix performance regression when peeling tags
 - Merge branch 'ps/ref-peeled-tags' into ps/ref-peeled-tags-fixes
 (this branch uses ps/ref-peeled-tags.)

 Another fix-up to "peeled-tags" topic.

 Will merge to 'next'.
 source: <20251106-b4-pks-peel-object-performance-regression-v1-1-a386147750b0@pks.im>


* tu/credential-wincred-makefile-update (2025-11-05) 1 commit
  (merged to 'next' on 2025-11-07 at ed74befe91)
 + wincred: align Makefile with other Makefiles in contrib

 Build procedure for Wincred credential helper has been updated.

 Will cook in 'next'.
 source: <3869ec21-e20d-cf9b-5913-6389c372a5f0@mailbox.tu-dresden.de>

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

* en/ort-rename-another-fix (2025-11-03) 3 commits
 - merge-ort: fix failing merges in special corner case
 - merge-ort: remove debugging crud
 - t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.

 Will merge to 'next'?
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* dk/make-git-contacts-executable (2025-11-04) 1 commit
  (merged to 'next' on 2025-11-07 at 30608eb744)
 + perl: also mark git-contacts executable

 Building "git contacts" script (in contrib/) leaves the resulting
 file unexecutable, which has been corrected.

 Will cook in 'next'.
 source: <7fbb341e8f05fcde3a1543e3bb4e5a3ec1101692.1762280097.git.ben.knoble+github@gmail.com>


* dk/meson-html-dir (2025-11-04) 1 commit
  (merged to 'next' on 2025-11-07 at b30cf1f060)
 + meson: make GIT_HTML_PATH configurable

 The build procedure based on meson learned to allow builders to
 specify the directory to install HTML documents.

 Will cook in 'next'.
 source: <385992f6020703558f0ba75a1be6c4f9dae08b83.1762264709.git.ben.knoble+github@gmail.com>


* kn/maintenance-is-needed (2025-11-06) 7 commits
 - maintenance: add 'is-needed' subcommand
 - maintenance: add checking logic in `pack_refs_condition()`
 - refs: add a `optimize_required` field to `struct ref_storage_be`
 - reftable/stack: add function to check if optimization is required
 - reftable/stack: return stack segments directly
 - Merge branch 'kn/refs-optim-cleanup' into kn/maintenance-is-needed
 - Merge branch 'ps/ref-peeled-tags' into kn/maintenance-is-needed
 (this branch uses kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git maintenance" command learned "is-needed" subcommand to tell if
 it is necessary to perform various maintenance tasks.

 Will merge to 'next'?
 source: <20251106-562-add-sub-command-to-check-if-maintenance-is-needed-v3-0-d611a2a95cf5@gmail.com>


* qj/doc-http-bad-want-response (2025-11-05) 1 commit
 - doc: clarify server behavior for invalid 'want' lines in HTTP protocol

 Doc update.

 Will merge to 'next'?
 source: <20251105143849.1192-1-qjessa662@gmail.com>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-04) 3 commits
 - fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 - commit: refactor verify_commit_buffer()
 - fast-import: refactor finalize_commit_buffer()

 "git fast-import" learns "--strip-if-invalid" option to drop
 invalid cryptographic signature from objects.

 Comments?
 source: <20251105061918.3688870-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-05) 12 commits
 - attr: enable incomplete-line whitespace error for this project
 - diff: highlight and error out on incomplete lines
 - apply: check and fix incomplete lines
 - whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 - apply: revamp the parsing of incomplete lines
 - diff: update the way rewrite diff handles incomplete lines
 - diff: call emit_callback ecbdata everywhere
 - diff: refactor output of incomplete line
 - diff: fix incorrect counting of line numbers
 - diff: correct suppress_blank_empty hack
 - diff: emit_line_ws_markup() if/else style fix
 - whitespace: correct bit assignment comments

 Both "git apply" and "git diff" learn a new whitespace error class,
 "incomplete-line".

 Comments?
 source: <20251105213052.1499224-1-gitster@pobox.com>


* tc/last-modified-active-paths-optimization (2025-10-23) 1 commit
  (merged to 'next' on 2025-11-03 at 9ab444edfb)
 + last-modified: implement faster algorithm

 "git last-modified" was optimized by narrowing the set of paths to
 follow as it dug deeper in the history.

 Will cook in 'next'.
 source: <20251023-b4-toon-last-modified-faster-v3-1-40a4ddbbadec@iotcl.com>


* ps/object-source-loose (2025-11-02) 13 commits
 - object-file: refactor writing objects via a stream
 - object-file: rename `write_object_file()`
 - object-file: refactor freshening of objects
 - object-file: rename `has_loose_object()`
 - object-file: read objects via the loose object source
 - object-file: move loose object map into loose source
 - object-file: hide internals when we need to reprepare loose sources
 - object-file: move loose object cache into loose source
 - object-file: introduce `struct odb_source_loose`
 - object-file: move `fetch_if_missing`
 - odb: adjust naming to free object sources
 - odb: introduce `odb_source_new()`
 - odb: fix subtle logic to check whether an alternate is usable

 A part of code paths that deals with loose objects has been cleaned
 up.

 Will merge to 'next'?
 source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>


* bc/sha1-256-interop-02 (2025-10-29) 15 commits
 - SQUASH??? downgrade build.rs syntax
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary loose object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the loose object map
 - csum-file: define hashwrite's count as a uint32_t
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Expecting a reroll.
 source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>


* ad/blame-diff-algorithm (2025-11-06) 2 commits
 - blame: make diff algorithm configurable
 - xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.

 Will merge to 'next'?
 source: <pull.2075.v5.git.git.1762468914.gitgitgadget@gmail.com>


* ps/packed-git-in-object-store (2025-10-30) 9 commits
  (merged to 'next' on 2025-11-03 at 1eb3440abd)
 + packfile: track packs via the MRU list exclusively
 + packfile: always add packfiles to MRU when adding a pack
 + packfile: move list of packs into the packfile store
 + builtin/pack-objects: simplify logic to find kept or nonlocal objects
 + packfile: fix approximation of object counts
 + http: refactor subsystem to use `packfile_list`s
 + packfile: move the MRU list into the packfile store
 + packfile: use a `strmap` to store packs by name
 + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store

 The list of packfiles used in a running Git process is moved from
 the packed_git structure into the packfile store.

 Will cook in 'next'.
 source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
  (merged to 'next' on 2025-11-04 at dbab18969a)
 + t/pack-refs-tests: move the 'test_done' to callees
 + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 + refs: move to using the '.optimize' functions
 + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch is used by kn/maintenance-is-needed; uses ps/ref-peeled-tags.)

 Code clean-up.

 Will cook in 'next'.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqpla43wcp.fsf@gitster.g> <aQRaRuBtt_r7SamL@pks.im>
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-10-29) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Comments?
 source: <pull.2070.v2.git.git.1761776388.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/ref-peeled-tags (2025-11-04) 18 commits
  (merged to 'next' on 2025-11-04 at 3818774c94)
 + t7004: do not chdir around in the main process
 + ref-filter: fix stale parsed objects
 + ref-filter: parse objects on demand
 + ref-filter: detect broken tags when dereferencing them
 + refs: don't store peeled object IDs for invalid tags
 + object: add flag to `peel_object()` to verify object type
 + refs: drop infrastructure to peel via iterators
 + refs: drop `current_ref_iter` hack
 + builtin/show-ref: convert to use `reference_get_peeled_oid()`
 + ref-filter: propagate peeled object ID
 + upload-pack: convert to use `reference_get_peeled_oid()`
 + refs: expose peeled object ID via the iterator
 + refs: refactor reference status flags
 + refs: fully reset `struct ref_iterator::ref` on iteration
 + refs: introduce `.ref` field for the base iterator
 + refs: introduce wrapper struct for `each_ref_fn`
 + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/maintenance-is-needed, kn/refs-optim-cleanup and ps/ref-peeled-tags-fixes.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will cook in 'next'.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* je/doc-data-model (2025-10-31) 2 commits
 - SQUASH??? fix xml that does not validate
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Expecting a (hopefully small and final) reroll?
 cf. <aQhcZwv0PdwNc6RW@pks.im>
 source: <pull.1981.v5.git.1761856336360.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Comments?
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'next'?
 source: <20251105191650.89975-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-11-07) 4 commits
 - submodule: fix case-folding gitdir filesystem colisions
 - submodule: add extension to encode gitdir paths
 - builtin/credential-store: move is_rfc3986_unreserved to url.[ch]
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251107150547.3272180-1-adrian.ratiu@collabora.com>

--------------------------------------------------
[Discarded]

* ps/rust-cbindgen (2025-10-24) 6 commits
 . rust: generate bindings via cbindgen
 . meson: rename Rust library target
 . ci: use Debian instead of deprecated i386/ubuntu
 . gitlab-ci: backfill missing Linux jobs
 . gitlab-ci: reorder Linux job matrix to match GitHub's order
 . Merge branch 'ps/ci-rust' into ps/rust-cbindgen

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Retracted.
 cf. <aQ3XOTX0AT_eFc5P@pks.im>
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


^ permalink raw reply	[relevance 31%]

* What's cooking in git.git (Nov 2025, #02; Thu, 6)
@ 2025-11-06 17:34 28% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-06 17:34 UTC (permalink / raw)
  To: git

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

Git 2.52-rc1 has been tagged.  Hopefully we can have a reasonably
solid Git 2.52 in the middle of this month.  Until then let's
concentrate on finding and fixing regressions introduced during this
cycle, if any.

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

* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
  (merged to 'next' on 2025-10-28 at 9b5e0701fa)
 + SubmittingPatches: add section about AI

 AI guidelines.
 cf. <xmqqv7ki1xf1.fsf@gitster.g>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* eb/t1016-hash-transition-fix (2025-10-28) 1 commit
  (merged to 'next' on 2025-10-30 at b743410ab6)
 + t1016-compatObjectFormat: really freeze time for reproduciblity

 Test fix.
 source: <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>


* jc/ci-use-macos-14 (2025-11-04) 1 commit
  (merged to 'next' on 2025-11-05 at 5fe2c4be6a)
 + GitHub CI: macos-13 images are no more

 The version of macos image used in GitHub CI has been updated to
 macos-14, as the macos-13 that we have been using got deprecated.
 source: <xmqqh5v9o0hb.fsf@gitster.g>


* jk/doc-backslash-in-exclude (2025-10-29) 1 commit
  (merged to 'next' on 2025-10-30 at 29790121d5)
 + doc: document backslash in gitignore patterns

 The patterns used in the .gitignore files use backslash in the way
 documented for fnmatch(3); document as such to reduce confusion.
 source: <20251029153237.GA1133542@coredump.intra.peff.net>


* jk/test-delete-gpgsig-leakfix (2025-10-29) 1 commit
  (merged to 'next' on 2025-10-30 at 097810cb65)
 + test-tool: fix leak in delete-gpgsig command

 Leakfix.
 source: <20251029191031.GA1257596@coredump.intra.peff.net>


* jt/repo-structure (2025-10-21) 7 commits
  (merged to 'next' on 2025-10-28 at c4d81a2da9)
 + builtin/repo: add progress meter for structure stats
 + builtin/repo: add keyvalue and nul format for structure stats
 + builtin/repo: add object counts in structure output
 + builtin/repo: introduce structure subcommand
 + ref-filter: export ref_kind_from_refname()
 + ref-filter: allow NULL filter pattern
 + builtin/repo: rename repo_info() to cmd_repo_info()
 (this branch is used by kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git repo structure", a new command.
 cf. <eesy5qhqzi56qrzv7wlpenxag23l2zykakvpmr6p5rnak6cril@ap3rugp44bcz>
 cf. <aPsLS6lbzG27W-C8@pks.im>
 source: <20251021182601.2687284-1-jltobler@gmail.com>


* kh/doc-checkout-markup-fix (2025-10-28) 1 commit
  (merged to 'next' on 2025-10-29 at f106c77f74)
 + doc: git-checkout: fix placeholder markup

 Doc mark-up fix.
 source: <v2-cb38c701537.1761675472.git.code@khaugsbakk.name>


* qj/doc-my1stcontrib-email-verify (2025-10-27) 1 commit
  (merged to 'next' on 2025-10-29 at 33f961f37a)
 + MyFirstContribution: add note on confirming patches

 The "MyFirstContribution" tutorial tells the reader how to send out
 their patches; the section gained a hint to verify the message
 reached the mailing list.
 source: <20251027111600.1481-1-qjessa662@gmail.com>


* rz/t0450-bisect-doc-update (2025-10-28) 1 commit
  (merged to 'next' on 2025-10-31 at f563b543eb)
 + bisect: update usage and docs to match each other

 The help text and manual page of "git bisect" command have been
 made consistent with each other.
 source: <pull.2084.git.git.1761690461697.gitgitgadget@gmail.com>


* tu/credential-install (2025-10-25) 1 commit
  (merged to 'next' on 2025-10-28 at 43589c4832)
 + contrib/credential: add install target

 Contributed credential helpers (obviously in contrib/) now have "cd
 $there && make install" target.
 source: <f67b3cbd-a117-a863-37ba-fbba7a2ca17a@mailbox.tu-dresden.de>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
  (merged to 'next' on 2025-10-28 at f612107bf9)
 + t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 + t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 flaky tests are exposed in t1016, which needs to be addressed
 before this topic can move forward.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 cf. <xmqqbjlump3m.fsf@gitster.g>
 cf. <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>
 source: <20240703153738.916469-1-tmz@pobox.com>


* xr/ref-debug-remove-on-disk (2025-10-24) 1 commit
  (merged to 'next' on 2025-10-29 at 316e4afdbf)
 + refs: add missing remove_on_disk implementation for debug backend

 The "debug" ref-backend was missing a method implementation, which
 has been corrected.
 source: <pull.2082.git.git.1761295094982.gitgitgadget@gmail.com>

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

* en/ort-rename-another-fix (2025-11-03) 3 commits
 - merge-ort: fix failing merges in special corner case
 - merge-ort: remove debugging crud
 - t6429: update comment to mention correct tool

 Yet another corner case fix around renames in the "ort" merge
 strategy.

 Will merge to 'next'?
 source: <pull.1992.git.1762192908.gitgitgadget@gmail.com>


* dk/parseopt-optional-filename-fixes (2025-11-04) 6 commits
  (merged to 'next' on 2025-11-04 at 1cb7573414)
 + parseopt: remove unreachable code
 + parseopt: restore const qualifier to parsed filename
 + config: use boolean type for a simple flag
 + parseopt: use boolean type for a simple flag
 + doc: clarify command equivalence comment
 + parseopt: fix :(optional) at command line to only ignore missing files

 A recently added configuration variable and command line option
 syntax ":(optional)" for values that are of filename type
 inconsistently behaved on an empty file (configuration took it
 happily, while the command line option pretended as if it did not
 exist), which has been corrected.

 Will merge to 'master'.
 source: <cover.1762100242.git.ben.knoble+github@gmail.com>
 source: <xmqq1pmdr9qu.fsf@gitster.g>


* dk/make-git-contacts-executable (2025-11-04) 1 commit
 - perl: also mark git-contacts executable

 Building "git contacts" script (in contrib/) leaves the resulting
 file unexecutable, which has been corrected.

 Will merge to 'next'?
 source: <7fbb341e8f05fcde3a1543e3bb4e5a3ec1101692.1762280097.git.ben.knoble+github@gmail.com>


* dk/meson-html-dir (2025-11-04) 1 commit
 - meson: make GIT_HTML_PATH configurable

 The build procedure based on meson learned to allow builders to
 specify the directory to install HTML documents.

 Will merge to 'next'?
 source: <385992f6020703558f0ba75a1be6c4f9dae08b83.1762264709.git.ben.knoble+github@gmail.com>


* kn/maintenance-is-needed (2025-11-04) 7 commits
 - maintenance: add 'is-needed' subcommand
 - maintenance: add checking logic in `pack_refs_condition()`
 - refs: add a `optimize_required` field to `struct ref_storage_be`
 - reftable/stack: add function to check if optimization is required
 - reftable/stack: return stack segments directly
 - Merge branch 'kn/refs-optim-cleanup' into kn/maintenance-is-needed
 - Merge branch 'ps/ref-peeled-tags' into kn/maintenance-is-needed
 (this branch uses kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git maintenance" command learned "is-needed" subcommand to tell if
 it is necessary to perform various maintenance tasks.

 Comments?
 source: <20251104-562-add-sub-command-to-check-if-maintenance-is-needed-v2-0-303462a9e4ed@gmail.com>


* qj/doc-http-bad-want-response (2025-11-04) 1 commit
 - doc: clarify server behavior for invalid 'want' lines in HTTP protocol

 Doc update.

 Comments?
 source: <20251104100653.2152-1-qjessa662@gmail.com>


* jc/exclude-with-gitignore (2025-11-04) 1 commit
 - dir.c: do not be fooled by :(exclude) pathspec elements

 "git add ':(exclude)foo.o'" is clearly a request not to add 'foo.o',
 but the command complained about listing an ignored path foo.o on
 the command line, which has been corrected.

 Comments?
 source: <xmqqtsz9o3cn.fsf@gitster.g>


* cc/fast-import-strip-if-invalid (2025-11-04) 3 commits
 - fast-import: add 'strip-if-invalid' mode to --signed-commits=<mode>
 - commit: refactor verify_commit_buffer()
 - fast-import: refactor finalize_commit_buffer()

 source: <20251105061918.3688870-1-christian.couder@gmail.com>


* jc/whitespace-incomplete-line (2025-11-05) 12 commits
 - attr: enable incomplete-line whitespace error for this project
 - diff: highlight and error out on incomplete lines
 - apply: check and fix incomplete lines
 - whitespace: allocate a few more bits and define WS_INCOMPLETE_LINE
 - apply: revamp the parsing of incomplete lines
 - diff: update the way rewrite diff handles incomplete lines
 - diff: call emit_callback ecbdata everywhere
 - diff: refactor output of incomplete line
 - diff: fix incorrect counting of line numbers
 - diff: correct suppress_blank_empty hack
 - diff: emit_line_ws_markup() if/else style fix
 - whitespace: correct bit assignment comments

 source: <20251105213052.1499224-1-gitster@pobox.com>

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

* tc/last-modified-active-paths-optimization (2025-10-23) 1 commit
  (merged to 'next' on 2025-11-03 at 9ab444edfb)
 + last-modified: implement faster algorithm

 "git last-modified" was optimized by narrowing the set of paths to
 follow as it dug deeper in the history.

 Will cook in 'next'.
 source: <20251023-b4-toon-last-modified-faster-v3-1-40a4ddbbadec@iotcl.com>


* ps/object-source-loose (2025-11-02) 13 commits
 - object-file: refactor writing objects via a stream
 - object-file: rename `write_object_file()`
 - object-file: refactor freshening of objects
 - object-file: rename `has_loose_object()`
 - object-file: read objects via the loose object source
 - object-file: move loose object map into loose source
 - object-file: hide internals when we need to reprepare loose sources
 - object-file: move loose object cache into loose source
 - object-file: introduce `struct odb_source_loose`
 - object-file: move `fetch_if_missing`
 - odb: adjust naming to free object sources
 - odb: introduce `odb_source_new()`
 - odb: fix subtle logic to check whether an alternate is usable

 A part of code paths that deals with loose objects has been cleaned
 up.

 Will merge to 'next'?
 source: <20251103-b4-pks-odb-loose-backend-v3-0-6a61ea977393@pks.im>


* bc/sha1-256-interop-02 (2025-10-29) 15 commits
 - SQUASH??? downgrade build.rs syntax
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary loose object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the loose object map
 - csum-file: define hashwrite's count as a uint32_t
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Expecting a reroll.
 source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>


* ad/blame-diff-algorithm (2025-11-01) 2 commits
 - blame: make diff algorithm configurable
 - xdiff: add 'minimal' to XDF_DIFF_ALGORITHM_MASK

 "git blame" learns "--diff-algorithm=<algo>" option.

 Ready?
 source: <pull.2075.v4.git.git.1762034252.gitgitgadget@gmail.com>


* cc/fast-import-export-i18n-cleanup (2025-10-30) 5 commits
  (merged to 'next' on 2025-11-03 at 41a35c3e52)
 + gpg-interface: mark a string for translation
 + fast-import: mark strings for translation
 + fast-export: mark strings for translation
 + gpg-interface: use left shift to define GPG_VERIFY_*
 + gpg-interface: simplify ssh fingerprint parsing

 Messages from fast-import/export are now marked for i18n.

 Will merge to 'master'.
 source: <20251030123332.3337684-1-christian.couder@gmail.com>


* ps/packed-git-in-object-store (2025-10-30) 9 commits
  (merged to 'next' on 2025-11-03 at 1eb3440abd)
 + packfile: track packs via the MRU list exclusively
 + packfile: always add packfiles to MRU when adding a pack
 + packfile: move list of packs into the packfile store
 + builtin/pack-objects: simplify logic to find kept or nonlocal objects
 + packfile: fix approximation of object counts
 + http: refactor subsystem to use `packfile_list`s
 + packfile: move the MRU list into the packfile store
 + packfile: use a `strmap` to store packs by name
 + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store

 The list of packfiles used in a running Git process is moved from
 the packed_git structure into the packfile store.

 Will cook in 'next'.
 source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>


* ps/rust-cbindgen (2025-10-24) 6 commits
 . rust: generate bindings via cbindgen
 . meson: rename Rust library target
 . ci: use Debian instead of deprecated i386/ubuntu
 . gitlab-ci: backfill missing Linux jobs
 . gitlab-ci: reorder Linux job matrix to match GitHub's order
 . Merge branch 'ps/ci-rust' into ps/rust-cbindgen

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 More discussion?
 cf. <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
  (merged to 'next' on 2025-11-04 at dbab18969a)
 + t/pack-refs-tests: move the 'test_done' to callees
 + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 + refs: move to using the '.optimize' functions
 + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch is used by kn/maintenance-is-needed; uses ps/ref-peeled-tags.)

 Code clean-up.

 Will cook in 'next'.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqpla43wcp.fsf@gitster.g> <aQRaRuBtt_r7SamL@pks.im>
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* en/xdiff-cleanup-2 (2025-10-29) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Comments?
 source: <pull.2070.v2.git.git.1761776388.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/ref-peeled-tags (2025-11-04) 18 commits
  (merged to 'next' on 2025-11-04 at 3818774c94)
 + t7004: do not chdir around in the main process
 + ref-filter: fix stale parsed objects
 + ref-filter: parse objects on demand
 + ref-filter: detect broken tags when dereferencing them
 + refs: don't store peeled object IDs for invalid tags
 + object: add flag to `peel_object()` to verify object type
 + refs: drop infrastructure to peel via iterators
 + refs: drop `current_ref_iter` hack
 + builtin/show-ref: convert to use `reference_get_peeled_oid()`
 + ref-filter: propagate peeled object ID
 + upload-pack: convert to use `reference_get_peeled_oid()`
 + refs: expose peeled object ID via the iterator
 + refs: refactor reference status flags
 + refs: fully reset `struct ref_iterator::ref` on iteration
 + refs: introduce `.ref` field for the base iterator
 + refs: introduce wrapper struct for `each_ref_fn`
 + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/maintenance-is-needed and kn/refs-optim-cleanup.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will cook in 'next'.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* je/doc-data-model (2025-10-31) 2 commits
 - SQUASH??? fix xml that does not validate
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Expecting a (hopefully small and final) reroll?
 cf. <aQhcZwv0PdwNc6RW@pks.im>
 source: <pull.1981.v5.git.1761856336360.gitgitgadget@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Comments?
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-11-05) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'next'?
 source: <20251105191650.89975-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <878qh4qxsl.fsf@gentoo.mail-host-address-is-not-set>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 28%]

* Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)
  2025-11-03 18:43 99%     ` Junio C Hamano
@ 2025-11-03 20:10 98%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-03 20:10 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> Bisect points at 054f5f45 (ref-filter: parse objects on demand,
> 2025-10-23), which is unfortunate, as that is the motivating step of
> the whole topic.

Here is a fairly simple reproduction.  It appears that this does not
require the refs to be packed (i.e., "t7004-tag.sh -i -v" fails
after saying "*** Loose ***" here, without moving to the packed
test).

 t/t7004-tag.sh | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git c/t/t7004-tag.sh w/t/t7004-tag.sh
index 10835631ca..7216a8d21c 100755
--- c/t/t7004-tag.sh
+++ w/t/t7004-tag.sh
@@ -2332,4 +2332,25 @@ test_expect_success 'If tag cannot be created then tag message file is not unlin
 	test_path_exists .git/TAG_EDITMSG
 '
 
+test_expect_success 'annotated tag version sort' '
+	git tag -a -m "sample 1.0" vsample-1.0 &&
+	git tag -a -m "sample 2.0" vsample-2.0 &&
+	git tag -a -m "sample 10.0" vsample-10.0 &&
+	cat >expect <<-EOF &&
+	vsample-1.0
+	vsample-2.0
+	vsample-10.0
+	EOF
+
+	echo "*** Loose ***" &&
+	git tag --list --sort=version:tag vsample-\* >actual &&
+	test_cmp expect actual &&
+
+	echo "*** Packed ***" &&
+	git pack-refs --all &&
+	git tag --list --sort=version:tag vsample-\* &&
+	test_cmp expect actual
+'
+
+
 test_done


^ permalink raw reply related	[relevance 98%]

* Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)
  2025-11-03 17:57 99%   ` Junio C Hamano
@ 2025-11-03 18:43 99%     ` Junio C Hamano
  2025-11-03 20:10 98%       ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-11-03 18:43 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> The tip of 'next' as of today after merging this topic, it seems.
>
>     $ git tag --list --sort=version:tag 'v*.0'
>
> no longer works correctly and shows ascii sort.
>
>     v1.0.0
>     v1.1.0
>     ...
>     v2.0.0
>     v2.1.0
>     v2.10.0
>     v2.11.0
>     ...
>     v2.19.0
>     v2.2.0
>     v2.20.0
>     v2.21.0
>     ...
>     v2.49.0
>     v2.5.0
>     v2.50.0
>     v2.51.0
>     v2.6.0
>     v2.7.0
>     v2.8.0
>     v2.9.0
>
> The merge on 'next' immediately before this topic got merged, i.e.,
> 9ab444ed (Merge branch 'tc/last-modified-active-paths-optimization'
> into next, 2025-11-03), is the last commit on the 'next'
> first-parent chain with which the above command works correctly.
>
> I haven't dug it further yet.

Bisect points at 054f5f45 (ref-filter: parse objects on demand,
2025-10-23), which is unfortunate, as that is the motivating step of
the whole topic.



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)
    2025-10-31 15:51 99%   ` Junio C Hamano
@ 2025-11-03 17:57 99%   ` Junio C Hamano
  2025-11-03 18:43 99%     ` Junio C Hamano
  1 sibling, 1 reply; 200+ results
From: Junio C Hamano @ 2025-11-03 17:57 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

>> * ps/ref-peeled-tags (2025-10-23) 16 commits
>>  - ref-filter: parse objects on demand
>> ...
>>  - Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
>>  - Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
>>  (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure.)
>> 
>>  Some ref backend storage can hold not just the object name of an
>>  annotated tag, but the object name of the object the tag points at.
>>  The code to handle this information has been streamlined.
>> 
>>  Will merge to 'next' after base topics are merged.
>>  source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>
>
> Both dependencies have landed, so this should be ready to be merged now.

The tip of 'next' as of today after merging this topic, it seems.

    $ git tag --list --sort=version:tag 'v*.0'

no longer works correctly and shows ascii sort.

    v1.0.0
    v1.1.0
    ...
    v2.0.0
    v2.1.0
    v2.10.0
    v2.11.0
    ...
    v2.19.0
    v2.2.0
    v2.20.0
    v2.21.0
    ...
    v2.49.0
    v2.5.0
    v2.50.0
    v2.51.0
    v2.6.0
    v2.7.0
    v2.8.0
    v2.9.0

The merge on 'next' immediately before this topic got merged, i.e.,
9ab444ed (Merge branch 'tc/last-modified-active-paths-optimization'
into next, 2025-11-03), is the last commit on the 'next'
first-parent chain with which the above command works correctly.

I haven't dug it further yet.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Nov 2025, #01; Mon, 3)
@ 2025-11-03 17:24 28% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-11-03 17:24 UTC (permalink / raw)
  To: git

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

Git 2.52-rc0 has been tagged.  Later this week we'd go into
pre-release freeze after tagging 2.52-rc1 and hopefully we can have
a reasonably solid Git 2.52 in the middle of this month.  Until then
let's concentrate on finding and fixing regressions introduced
during this cycle, if any.

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

* jk/diff-patch-dry-run-cleanup (2025-10-24) 6 commits
  (merged to 'next' on 2025-10-26 at 28426e9102)
 + diff: simplify run_external_diff() quiet logic
 + diff: drop dry-run redirection to /dev/null
 + diff: replace diff_options.dry_run flag with NULL file
 + diff: drop save/restore of color_moved in dry-run mode
 + diff: send external diff output to diff_options.file
 + Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-patch-dry-run-cleanup

 Finishing touches to fixes to the recent regression in "git diff -w
 --quiet" and anything that needs to internally generate patch to
 see if it turns empty.
 source: <20251024170522.GA2344972@coredump.intra.peff.net>


* jk/match-pathname-fix (2025-10-26) 2 commits
  (merged to 'next' on 2025-10-26 at f18b45f0df)
 + match_pathname(): give fnmatch one char of prefix context
 + match_pathname(): reorder prefix-match check

 The wildmatch code had a corner case bug that mistakenly makes
 "foo**/bar" match with "foobar", which has been corrected.
 source: <20251026154036.GA2173430@coredump.intra.peff.net>


* kh/doc-patch-id-1 (2025-10-13) 2 commits
  (merged to 'next' on 2025-10-26 at e284077116)
 + doc: patch-id: convert to the modern synopsis style
 + Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1

 Will merge to 'master'.
 source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>


* ps/maintenance-geometric (2025-10-27) 12 commits
  (merged to 'next' on 2025-10-27 at 839fc31de9)
 + t7900: fix a flaky test due to git-repack always regenerating MIDX
  (merged to 'next' on 2025-10-26 at 505f26dcf7)
 + builtin/maintenance: introduce "geometric" strategy
 + builtin/maintenance: make "gc" strategy accessible
 + builtin/maintenance: extend "maintenance.strategy" to manual maintenance
 + builtin/maintenance: run maintenance tasks depending on type
 + builtin/maintenance: improve readability of strategies
 + builtin/maintenance: don't silently ignore invalid strategy
 + builtin/maintenance: make the geometric factor configurable
 + builtin/maintenance: introduce "geometric-repack" task
 + builtin/gc: make `too_many_loose_objects()` reusable without GC config
 + builtin/gc: remove global `repack` variable
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/maintenance-geometric

 "git maintenance" command learns the "geometric" strategy where it
 avoids doing maintenance tasks that rebuilds everything from
 scratch.
 source: <20251024-pks-maintenance-geometric-strategy-v3-0-9b5b3bdb4387@pks.im>
 source: <20251027-pks-maintenance-geometric-strategy-v4-0-18049e4a0adf@pks.im>


* rs/add-patch-quit (2025-10-24) 2 commits
  (merged to 'next' on 2025-10-26 at 859e2555b2)
 + add-patch: quit on EOF
 + add-patch: quit without skipping undecided hunks

 The 'q'(uit) command in "git add -p" has been improved to quit
 without doing any meaningless work before leaving, and giving EOF
 (typically control-D) to the prompt is made to behave the same way.
 source: <13529bee-1e02-4c20-9461-6569312bfe4f@web.de>


* rs/merge-base-optim (2025-10-24) 1 commit
  (merged to 'next' on 2025-10-26 at 45f9bd4b81)
 + commit-reach: avoid commit_list_insert_by_date()

 The code to walk revision graph to compute merge base has been
 optimized.
 source: <87a00cb8-8faf-48ec-91aa-009e6e906363@web.de>

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

* tc/last-modified-active-paths-optimization (2025-10-23) 1 commit
  (merged to 'next' on 2025-11-03 at 9ab444edfb)
 + last-modified: implement faster algorithm

 "git last-modified" was optimized by narrowing the set of paths to
 follow as it dug deeper in the history.

 Will merge to 'master'.
 source: <20251023-b4-toon-last-modified-faster-v3-1-40a4ddbbadec@iotcl.com>


* ps/object-source-loose (2025-10-30) 13 commits
 - object-file: refactor writing objects via a stream
 - object-file: rename `write_object_file()`
 - object-file: refactor freshening of objects
 - object-file: rename `has_loose_object()`
 - object-file: read objects via the loose object source
 - object-file: move loose object map into loose source
 - object-file: hide internals when we need to reprepare loose sources
 - object-file: move loose object cache into loose source
 - object-file: introduce `struct odb_loose_source`
 - object-file: move `fetch_if_missing`
 - odb: adjust naming to free object sources
 - odb: introduce `odb_source_new()`
 - odb: fix subtle logic to check whether an alternate is usable

 A part of code paths that deals with loose objects has been cleaned
 up.

 Will merge to 'next'?
 source: <20251031-b4-pks-odb-loose-backend-v2-0-920f721aef71@pks.im>

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

* kh/doc-checkout-markup-fix (2025-10-28) 1 commit
  (merged to 'next' on 2025-10-29 at f106c77f74)
 + doc: git-checkout: fix placeholder markup

 Doc mark-up fix.

 Will merge to 'master'.
 source: <v2-cb38c701537.1761675472.git.code@khaugsbakk.name>


* rz/t0450-bisect-doc-update (2025-10-28) 1 commit
  (merged to 'next' on 2025-10-31 at f563b543eb)
 + bisect: update usage and docs to match each other

 The help text and manual page of "git bisect" command have been
 made consistent with each other.

 Will merge to 'master'.
 source: <pull.2084.git.git.1761690461697.gitgitgadget@gmail.com>


* bc/sha1-256-interop-02 (2025-10-29) 15 commits
 - SQUASH??? downgrade build.rs syntax
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary loose object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the loose object map
 - csum-file: define hashwrite's count as a uint32_t
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Expecting a reroll.
 source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>


* jk/doc-backslash-in-exclude (2025-10-29) 1 commit
  (merged to 'next' on 2025-10-30 at 29790121d5)
 + doc: document backslash in gitignore patterns

 The patterns used in the .gitignore files use backslash in the way
 documented for fnmatch(3); document as such to reduce confusion.

 Will merge to 'master'.
 source: <20251029153237.GA1133542@coredump.intra.peff.net>


* jk/test-delete-gpgsig-leakfix (2025-10-29) 1 commit
  (merged to 'next' on 2025-10-30 at 097810cb65)
 + test-tool: fix leak in delete-gpgsig command

 Leakfix.

 Will merge to 'master'.
 source: <20251029191031.GA1257596@coredump.intra.peff.net>


* qj/doc-my1stcontrib-email-verify (2025-10-27) 1 commit
  (merged to 'next' on 2025-10-29 at 33f961f37a)
 + MyFirstContribution: add note on confirming patches

 The "MyFirstContribution" tutorial tells the reader how to send out
 their patches; the section gained a hint to verify the message
 reached the mailing list.

 Will merge to 'master'.
 source: <20251027111600.1481-1-qjessa662@gmail.com>


* xr/ref-debug-remove-on-disk (2025-10-24) 1 commit
  (merged to 'next' on 2025-10-29 at 316e4afdbf)
 + refs: add missing remove_on_disk implementation for debug backend

 The "debug" ref-backend was missing a method implementation, which
 has been corrected.

 Will merge to 'master'.
 source: <pull.2082.git.git.1761295094982.gitgitgadget@gmail.com>


* ad/blame-diff-algorithm (2025-10-28) 1 commit
 - blame: make diff algorithm configurable

 "git blame" learns "--diff-algorithm=<algo>" option.

 Expecting a reroll.
 cf. <fde3dae1-bb11-45e8-9211-50ae003ca497@gmail.com>
 source: <pull.2075.v2.git.git.1761658643278.gitgitgadget@gmail.com>


* cc/fast-import-export-i18n-cleanup (2025-10-30) 5 commits
  (merged to 'next' on 2025-11-03 at 41a35c3e52)
 + gpg-interface: mark a string for translation
 + fast-import: mark strings for translation
 + fast-export: mark strings for translation
 + gpg-interface: use left shift to define GPG_VERIFY_*
 + gpg-interface: simplify ssh fingerprint parsing

 Messages from fast-import/export are now marked for i18n.

 Will merge to 'master'.
 source: <20251030123332.3337684-1-christian.couder@gmail.com>


* eb/t1016-hash-transition-fix (2025-10-28) 1 commit
  (merged to 'next' on 2025-10-30 at b743410ab6)
 + t1016-compatObjectFormat: really freeze time for reproduciblity

 Test fix.

 Will merge to 'master'.
 source: <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>


* ps/packed-git-in-object-store (2025-10-30) 9 commits
  (merged to 'next' on 2025-11-03 at 1eb3440abd)
 + packfile: track packs via the MRU list exclusively
 + packfile: always add packfiles to MRU when adding a pack
 + packfile: move list of packs into the packfile store
 + builtin/pack-objects: simplify logic to find kept or nonlocal objects
 + packfile: fix approximation of object counts
 + http: refactor subsystem to use `packfile_list`s
 + packfile: move the MRU list into the packfile store
 + packfile: use a `strmap` to store packs by name
 + Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store

 The list of packfiles used in a running Git process is moved from
 the packed_git structure into the packfile store.

 Will merge to 'master'.
 source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>


* tu/credential-install (2025-10-25) 1 commit
  (merged to 'next' on 2025-10-28 at 43589c4832)
 + contrib/credential: add install target

 Contributed credential helpers (obviously in contrib/) now have "cd
 $there && make install" target.

 Will merge to 'master'.
 source: <f67b3cbd-a117-a863-37ba-fbba7a2ca17a@mailbox.tu-dresden.de>


* qj/doc-first-contrib-check-lore (2025-10-24) 1 commit
 - MyFirstContribution: add tip to confirm patches reached the mailing list
 (this branch uses ps/rust-cbindgen.)

 Doc update.

 Will merge to 'next'?
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* ps/rust-cbindgen (2025-10-24) 6 commits
 - rust: generate bindings via cbindgen
 - meson: rename Rust library target
 - ci: use Debian instead of deprecated i386/ubuntu
 - gitlab-ci: backfill missing Linux jobs
 - gitlab-ci: reorder Linux job matrix to match GitHub's order
 - Merge branch 'ps/ci-rust' into ps/rust-cbindgen
 (this branch is used by qj/doc-first-contrib-check-lore.)

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 More discussion?
 cf. <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
  (merged to 'next' on 2025-11-03 at 8c2d7a4413)
 + t/pack-refs-tests: move the 'test_done' to callees
 + refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 + refs: move to using the '.optimize' functions
 + Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch uses jt/repo-structure and ps/ref-peeled-tags.)

 Code clean-up.

 Will merge to 'master'.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqpla43wcp.fsf@gitster.g> <aQRaRuBtt_r7SamL@pks.im>
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* jt/repo-structure (2025-10-21) 7 commits
  (merged to 'next' on 2025-10-28 at c4d81a2da9)
 + builtin/repo: add progress meter for structure stats
 + builtin/repo: add keyvalue and nul format for structure stats
 + builtin/repo: add object counts in structure output
 + builtin/repo: introduce structure subcommand
 + ref-filter: export ref_kind_from_refname()
 + ref-filter: allow NULL filter pattern
 + builtin/repo: rename repo_info() to cmd_repo_info()
 (this branch is used by kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git repo structure", a new command.

 Will merge to 'master'.
 cf. <eesy5qhqzi56qrzv7wlpenxag23l2zykakvpmr6p5rnak6cril@ap3rugp44bcz>
 cf. <aPsLS6lbzG27W-C8@pks.im>
 source: <20251021182601.2687284-1-jltobler@gmail.com>


* en/xdiff-cleanup-2 (2025-10-29) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Comments?
 source: <pull.2070.v2.git.git.1761776388.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
  (merged to 'next' on 2025-10-28 at f612107bf9)
 + t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 + t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 flaky tests are exposed in t1016, which needs to be addressed
 before this topic can move forward.

 Will merge to 'master'.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 cf. <xmqqbjlump3m.fsf@gitster.g>
 cf. <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>
 source: <20240703153738.916469-1-tmz@pobox.com>


* ps/ref-peeled-tags (2025-10-23) 16 commits
  (merged to 'next' on 2025-11-03 at 8ac48a10de)
 + ref-filter: parse objects on demand
 + ref-filter: detect broken tags when dereferencing them
 + refs: don't store peeled object IDs for invalid tags
 + object: add flag to `peel_object()` to verify object type
 + refs: drop infrastructure to peel via iterators
 + refs: drop `current_ref_iter` hack
 + builtin/show-ref: convert to use `reference_get_peeled_oid()`
 + ref-filter: propagate peeled object ID
 + upload-pack: convert to use `reference_get_peeled_oid()`
 + refs: expose peeled object ID via the iterator
 + refs: refactor reference status flags
 + refs: fully reset `struct ref_iterator::ref` on iteration
 + refs: introduce `.ref` field for the base iterator
 + refs: introduce wrapper struct for `each_ref_fn`
 + Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will merge to 'master'.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* je/doc-data-model (2025-10-31) 2 commits
 - SQUASH??? fix xml that does not validate
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Expecting a (hopefully small and final) reroll?
 cf. <aQhcZwv0PdwNc6RW@pks.im>
 source: <pull.1981.v5.git.1761856336360.gitgitgadget@gmail.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
  (merged to 'next' on 2025-10-28 at 9b5e0701fa)
 + SubmittingPatches: add section about AI

 AI guidelines.

 Will merge to 'master'.
 cf. <xmqqv7ki1xf1.fsf@gitster.g>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Comments?
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-10-30) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'next'?
 source: <20251030191931.30837-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <878qh4qxsl.fsf@gentoo.mail-host-address-is-not-set>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 28%]

* Re: What's cooking in git.git (Oct 2025, #11; Tue, 28)
  @ 2025-10-31 21:33 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-31 21:33 UTC (permalink / raw)
  To: Toon Claes; +Cc: git

Toon Claes <toon@iotcl.com> writes:

> Hi Junio,
>
> I don't see the patch I've submitted to speed up git-last-modified in
> this report? As a follow-up to your response on v2, I did submit v3[1]
> which resolves the -Wsign-compare issues, but I forgot to Cc you. This
> version was acked by Taylor[2].
>
> King regards,
> Toon
>
> [1]: <20251023-b4-toon-last-modified-faster-v3-1-40a4ddbbadec@iotcl.com>
> [2]: <aPrCaSOA/dclWye5@nand.local>

Unfortunately, the topic breaks make coccicheck.

https://github.com/git/git/actions/runs/18981332553/job/54214401412

We'd need at least something like the attached squashed in.

 builtin/last-modified.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/last-modified.c b/builtin/last-modified.c
index c271d9585b..b0ecbdc540 100644
--- a/builtin/last-modified.c
+++ b/builtin/last-modified.c
@@ -493,7 +493,7 @@ static int last_modified_init(struct last_modified *lm, struct repository *r,
 	if (populate_paths_from_revs(lm) < 0)
 		return error(_("unable to setup last-modified"));
 
-	lm->all_paths = xcalloc(hashmap_get_size(&lm->paths), sizeof(const char *));
+	CALLOC_ARRAY(lm->all_paths, hashmap_get_size(&lm->paths));
 	lm->all_paths_nr = 0;
 	hashmap_for_each_entry(&lm->paths, &iter, ent, hashent) {
 		ent->diff_idx = lm->all_paths_nr++;
-- 
2.51.2-719-gbbf487eab4



^ permalink raw reply related	[relevance 99%]

* Re: What's cooking in git.git (Oct 2025, #12; Thu, 30)
  @ 2025-10-31 15:51 99%   ` Junio C Hamano
  2025-11-03 17:57 99%   ` Junio C Hamano
  1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-31 15:51 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

>> * je/doc-data-model (2025-10-27) 1 commit
>>  - doc: add an explanation of Git's data model
>> 
>>  Add a new manual that describes the data model.
>> 
>>  Comments?
>>  source: <pull.1981.v4.git.1761593537924.gitgitgadget@gmail.com>
>
> Will have another look at v5 of this series. I think it's nearing a
> state where it's good enough to be merged down.

I share that assessment.

Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Oct 2025, #12; Thu, 30)
@ 2025-10-30 21:36 25% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-10-30 21:36 UTC (permalink / raw)
  To: git

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

* ey/commit-graph-changed-paths-config (2025-10-17) 1 commit
  (merged to 'next' on 2025-10-23 at 48fd936ff1)
 + commit-graph: add new config for changed-paths & recommend it in scalar

 A new configuration variable commitGraph.changedPaths allows to
 turn "--changed-paths" on by default for "git commit-graph".
 source: <pull.1983.v2.git.1760734739642.gitgitgadget@gmail.com>


* kf/log-shortlog-completion-fix (2025-10-20) 1 commit
  (merged to 'next' on 2025-10-24 at 2300659a0a)
 + completion: complete some 'git log' options

 "git shortlog" knows "--committer" and "--author" options, which
 the command line completion (in contrib/) did not handle well,
 which has been corrected.
 source: <pull.2073.v2.git.git.1760981577441.gitgitgadget@gmail.com>


* ly/diff-name-only-with-diff-from-content (2025-10-19) 3 commits
  (merged to 'next' on 2025-10-24 at 237c19e4e6)
 + diff: stop output garbled message in dry run mode
 + Merge branch 'jc/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 + Merge branch 'jk/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 (this branch is used by jk/diff-patch-dry-run-cleanup.)

 Regression fixes for a topic that has already been merged.
 source: <20251019163024.18939-1-yldhome2d2@gmail.com>


* ob/gpg-interface-cleanup (2025-10-23) 2 commits
  (merged to 'next' on 2025-10-24 at ce6d041635)
 + gpg-interface: do not use misdesigned strbuf_split*()
 + gpg-interface: do not use misdesigned strbuf_split*()

 strbuf_split*() to split a string into multiple strbufs is often a
 wrong API to use.  A few uses of it have been removed by
 simplifying the code.
 cf. <CAP8UFD1fousSKKduFAaZrsV9REnOaRDOQYcqB+rTQ0Ys60OWGA@mail.gmail.com>
 source: <cover.1761217100.git.belkid98@gmail.com>


* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
  (merged to 'next' on 2025-10-24 at e2f6fba6fe)
 + packfile: rename `packfile_store_get_all_packs()`
 + packfile: introduce macro to iterate through packs
 + packfile: drop `packfile_store_get_packs()`
 + builtin/grep: simplify how we preload packs
 + builtin/gc: convert to use `packfile_store_get_all_packs()`
 + object-name: convert to use `packfile_store_get_all_packs()`
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch is used by ps/packed-git-in-object-store.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.
 source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>


* ps/symlink-symref-deprecation (2025-10-14) 1 commit
  (merged to 'next' on 2025-10-24 at b37ca35280)
 + refs/files: deprecate writing symrefs as symbolic links

 "Symlink symref" has been added to the list of things that will
 disappear at Git 3.0 boundary.
 source: <20251015-pks-ref-files-deprecate-symbolic-links-v2-1-0529ba48db41@pks.im>


* rz/bisect-help-unknown (2025-10-22) 1 commit
  (merged to 'next' on 2025-10-24 at d0633ab14d)
 + bisect: fix handling of `help` and invalid subcommands

 "git bisect" command did not react correctly to "git bisect help"
 and "git bisect unknown", which has been corrected.
 source: <pull.2078.git.git.1761122173126.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.1 (2025-10-15) 50 commits
  (merged to 'next' on 2025-10-22 at e78054f5a0)
 + builtin/repack.c: clean up unused `#include`s
 + repack: move `write_cruft_pack()` out of the builtin
 + repack: move `write_filtered_pack()` out of the builtin
 + repack: move `pack_kept_objects` to `struct pack_objects_args`
 + repack: move `finish_pack_objects_cmd()` out of the builtin
 + builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 + repack: extract `write_pack_opts_is_local()`
 + repack: move `find_pack_prefix()` out of the builtin
 + builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 + builtin/repack.c: introduce `struct write_pack_opts`
 + repack: 'write_midx_included_packs' API from the builtin
 + builtin/repack.c: inline packs within `write_midx_included_packs()`
 + builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 + builtin/repack.c: inline `remove_redundant_bitmaps()`
 + builtin/repack.c: reorder `remove_redundant_bitmaps()`
 + repack: keep track of MIDX pack names using existing_packs
 + builtin/repack.c: use a string_list for 'midx_pack_names'
 + builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 + builtin/repack.c: remove ref snapshotting from builtin
 + repack: remove pack_geometry API from the builtin
 + builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 + builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 + builtin/repack.c: rename various pack_geometry functions
 + builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 + builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 + repack: remove 'generated_pack' API from the builtin
 + builtin/repack.c: provide pack locations to `generated_pack_install()`
 + builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 + builtin/repack.c: factor out "generated_pack_install"
 + builtin/repack.c: rename "struct generated_pack_data"
 + repack: remove 'existing_packs' API from the builtin
 + builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 + builtin/repack.c: pass "packdir" when removing packs
 + repack: remove 'remove_redundant_pack' from the builtin
 + builtin/repack.c: rename many 'struct existing_packs' functions
 + repack: remove 'prepare_pack_objects' from the builtin
 + repack: move 'delta_base_offset' to 'struct pack_objects_args'
 + builtin/repack.c: pass both pack_objects args to repack_config
 + repack: introduce new compilation unit
 + builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 + builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 + builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 + builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 + builtin/repack.c: avoid "the_hash_algo" when deleting packs
 + builtin/repack.c: avoid "the_repository" when repacking promisor objects
 + builtin/repack.c: avoid "the_repository" when removing packs
 + builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 + builtin/repack.c: avoid "the_repository" in existing packs API
 + builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 + Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by kn/refs-optim-cleanup, ps/maintenance-geometric, ps/packed-git-in-object-store, ps/ref-peeled-tags and ps/remove-packfile-store-get-packs.)

 Clean-up "git repack" machinery to prepare for incremental update
 of midx files.
 source: <cover.1760567210.git.me@ttaylorr.com>

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

* kh/doc-checkout-markup-fix (2025-10-28) 1 commit
  (merged to 'next' on 2025-10-29 at f106c77f74)
 + doc: git-checkout: fix placeholder markup

 Doc mark-up fix.

 Will merge to 'master'.
 source: <v2-cb38c701537.1761675472.git.code@khaugsbakk.name>


* rz/t0450-bisect-doc-update (2025-10-28) 1 commit
 - bisect: update usage and docs to match each other

 The help text and manual page of "git bisect" command have been
 made consistent with each other.

 Will merge to 'next'.
 source: <pull.2084.git.git.1761690461697.gitgitgadget@gmail.com>


* bc/sha1-256-interop-02 (2025-10-29) 15 commits
 - SQUASH??? downgrade build.rs syntax
 - object-file-convert: always make sure object ID algo is valid
 - rust: add a small wrapper around the hashfile code
 - rust: add a new binary loose object map format
 - rust: add functionality to hash an object
 - rust: add a build.rs script for tests
 - hash: expose hash context functions to Rust
 - write-or-die: add an fsync component for the loose object map
 - csum-file: define hashwrite's count as a uint32_t
 - hash: add a function to look up hash algo structs
 - rust: add a hash algorithm abstraction
 - rust: add a ObjectID struct
 - hash: use uint32_t for object_id algorithm
 - conversion: don't crash when no destination algo
 - repository: require Rust support for interoperability

 The code to maintain mapping between object names in multiple hash
 functions is being added, written in Rust.

 Expecting a reroll.
 source: <20251027004404.2152927-1-sandals@crustytoothpaste.net>


* jk/doc-backslash-in-exclude (2025-10-29) 1 commit
  (merged to 'next' on 2025-10-30 at 29790121d5)
 + doc: document backslash in gitignore patterns

 The patterns used in the .gitignore files use backslash in the way
 documented for fnmatch(3); document as such to reduce confusion.

 Will merge to 'master'.
 source: <20251029153237.GA1133542@coredump.intra.peff.net>


* jk/test-delete-gpgsig-leakfix (2025-10-29) 1 commit
  (merged to 'next' on 2025-10-30 at 097810cb65)
 + test-tool: fix leak in delete-gpgsig command

 Leakfix.

 Will merge to 'master'.
 source: <20251029191031.GA1257596@coredump.intra.peff.net>

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

* qj/doc-my1stcontrib-email-verify (2025-10-27) 1 commit
  (merged to 'next' on 2025-10-29 at 33f961f37a)
 + MyFirstContribution: add note on confirming patches

 The "MyFirstContribution" tutorial tells the reader how to send out
 their patches; the section gained a hint to verify the message
 reached the mailing list.

 Will merge to 'master'.
 source: <20251027111600.1481-1-qjessa662@gmail.com>


* xr/ref-debug-remove-on-disk (2025-10-24) 1 commit
  (merged to 'next' on 2025-10-29 at 316e4afdbf)
 + refs: add missing remove_on_disk implementation for debug backend

 The "debug" ref-backend was missing a method implementation, which
 has been corrected.

 Will merge to 'master'.
 source: <pull.2082.git.git.1761295094982.gitgitgadget@gmail.com>


* ad/blame-diff-algorithm (2025-10-28) 1 commit
 - blame: make diff algorithm configurable

 "git blame" learns "--diff-algorithm=<algo>" option.

 Expecting a reroll.
 cf. <fde3dae1-bb11-45e8-9211-50ae003ca497@gmail.com>
 source: <pull.2075.v2.git.git.1761658643278.gitgitgadget@gmail.com>


* cc/fast-import-export-i18n-cleanup (2025-10-30) 5 commits
 - gpg-interface: mark a string for translation
 - fast-import: mark strings for translation
 - fast-export: mark strings for translation
 - gpg-interface: use left shift to define GPG_VERIFY_*
 - gpg-interface: simplify ssh fingerprint parsing

 Messages from fast-import/export are now marked for i18n.

 Will merge to 'next'?
 source: <20251030123332.3337684-1-christian.couder@gmail.com>


* eb/t1016-hash-transition-fix (2025-10-28) 1 commit
  (merged to 'next' on 2025-10-30 at b743410ab6)
 + t1016-compatObjectFormat: really freeze time for reproduciblity

 Test fix.

 Will merge to 'master'.
 source: <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>


* ps/packed-git-in-object-store (2025-10-30) 9 commits
 - packfile: track packs via the MRU list exclusively
 - packfile: always add packfiles to MRU when adding a pack
 - packfile: move list of packs into the packfile store
 - builtin/pack-objects: simplify logic to find kept or nonlocal objects
 - packfile: fix approximation of object counts
 - http: refactor subsystem to use `packfile_list`s
 - packfile: move the MRU list into the packfile store
 - packfile: use a `strmap` to store packs by name
 - Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store

 The list of packfiles used in a running Git process is moved from
 the object-database layer down to object-store layer.

 Will merge to 'next'?
 source: <20251030-pks-packfiles-store-drop-list-v2-0-84654f080cc0@pks.im>


* tu/credential-install (2025-10-25) 1 commit
  (merged to 'next' on 2025-10-28 at 43589c4832)
 + contrib/credential: add install target

 Contributed credential helpers (obviously in contrib/) now have "cd
 $there && make install" target.

 Will merge to 'master'.
 source: <f67b3cbd-a117-a863-37ba-fbba7a2ca17a@mailbox.tu-dresden.de>


* jk/diff-patch-dry-run-cleanup (2025-10-24) 6 commits
  (merged to 'next' on 2025-10-26 at 28426e9102)
 + diff: simplify run_external_diff() quiet logic
 + diff: drop dry-run redirection to /dev/null
 + diff: replace diff_options.dry_run flag with NULL file
 + diff: drop save/restore of color_moved in dry-run mode
 + diff: send external diff output to diff_options.file
 + Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-patch-dry-run-cleanup

 Finishing touches to fixes to the recent regression in "git diff -w
 --quiet" and anything that needs to internally generate patch to
 see if it turns empty.

 Will merge to 'master'.
 source: <20251024170522.GA2344972@coredump.intra.peff.net>


* qj/doc-first-contrib-check-lore (2025-10-24) 1 commit
 - MyFirstContribution: add tip to confirm patches reached the mailing list
 (this branch uses ps/rust-cbindgen.)

 Doc update.

 Will merge to 'next'?
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* rs/merge-base-optim (2025-10-24) 1 commit
  (merged to 'next' on 2025-10-26 at 45f9bd4b81)
 + commit-reach: avoid commit_list_insert_by_date()

 The code to walk revision graph to compute merge base has been
 optimized.

 Will merge to 'master'.
 source: <87a00cb8-8faf-48ec-91aa-009e6e906363@web.de>


* rs/add-patch-quit (2025-10-24) 2 commits
  (merged to 'next' on 2025-10-26 at 859e2555b2)
 + add-patch: quit on EOF
 + add-patch: quit without skipping undecided hunks

 The 'q'(uit) command in "git add -p" has been improved to quit
 without doing any meaningless work before leaving, and giving EOF
 (typically control-D) to the prompt is made to behave the same way.

 Will merge to 'master'.
 source: <13529bee-1e02-4c20-9461-6569312bfe4f@web.de>


* ps/rust-cbindgen (2025-10-24) 6 commits
 - rust: generate bindings via cbindgen
 - meson: rename Rust library target
 - ci: use Debian instead of deprecated i386/ubuntu
 - gitlab-ci: backfill missing Linux jobs
 - gitlab-ci: reorder Linux job matrix to match GitHub's order
 - Merge branch 'ps/ci-rust' into ps/rust-cbindgen
 (this branch is used by qj/doc-first-contrib-check-lore.)

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 More discussion?
 cf. <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* jk/match-pathname-fix (2025-10-26) 2 commits
  (merged to 'next' on 2025-10-26 at f18b45f0df)
 + match_pathname(): give fnmatch one char of prefix context
 + match_pathname(): reorder prefix-match check

 The wildmatch code had a corner case bug that mistakenly makes
 "foo**/bar" match with "foobar", which has been corrected.

 Will merge to 'master'.
 source: <20251026154036.GA2173430@coredump.intra.peff.net>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
 - t/pack-refs-tests: move the 'test_done' to callees
 - refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 - refs: move to using the '.optimize' functions
 - Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch uses jt/repo-structure and ps/ref-peeled-tags.)

 Code clean-up.

 Will merge to 'next' after base topics are merged.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Will merge to 'next'?
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* jt/repo-structure (2025-10-21) 7 commits
  (merged to 'next' on 2025-10-28 at c4d81a2da9)
 + builtin/repo: add progress meter for structure stats
 + builtin/repo: add keyvalue and nul format for structure stats
 + builtin/repo: add object counts in structure output
 + builtin/repo: introduce structure subcommand
 + ref-filter: export ref_kind_from_refname()
 + ref-filter: allow NULL filter pattern
 + builtin/repo: rename repo_info() to cmd_repo_info()
 (this branch is used by kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git repo structure", a new command.

 Will merge to 'master'.
 cf. <eesy5qhqzi56qrzv7wlpenxag23l2zykakvpmr6p5rnak6cril@ap3rugp44bcz>
 cf. <aPsLS6lbzG27W-C8@pks.im>
 source: <20251021182601.2687284-1-jltobler@gmail.com>


* ps/maintenance-geometric (2025-10-27) 12 commits
  (merged to 'next' on 2025-10-27 at 839fc31de9)
 + t7900: fix a flaky test due to git-repack always regenerating MIDX
  (merged to 'next' on 2025-10-26 at 505f26dcf7)
 + builtin/maintenance: introduce "geometric" strategy
 + builtin/maintenance: make "gc" strategy accessible
 + builtin/maintenance: extend "maintenance.strategy" to manual maintenance
 + builtin/maintenance: run maintenance tasks depending on type
 + builtin/maintenance: improve readability of strategies
 + builtin/maintenance: don't silently ignore invalid strategy
 + builtin/maintenance: make the geometric factor configurable
 + builtin/maintenance: introduce "geometric-repack" task
 + builtin/gc: make `too_many_loose_objects()` reusable without GC config
 + builtin/gc: remove global `repack` variable
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/maintenance-geometric

 "git maintenance" command learns the "geometric" strategy where it
 avoids doing maintenance tasks that rebuilds everything from
 scratch.

 Will merge to 'master'.
 source: <20251024-pks-maintenance-geometric-strategy-v3-0-9b5b3bdb4387@pks.im>
 source: <20251027-pks-maintenance-geometric-strategy-v4-0-18049e4a0adf@pks.im>


* en/xdiff-cleanup-2 (2025-10-29) 10 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t
 - doc: define unambiguous type mappings across C and Rust

 Code clean-up.

 Comments?
 source: <pull.2070.v2.git.git.1761776388.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* kh/doc-patch-id-1 (2025-10-13) 2 commits
  (merged to 'next' on 2025-10-26 at e284077116)
 + doc: patch-id: convert to the modern synopsis style
 + Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1

 Will merge to 'master'.
 source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
  (merged to 'next' on 2025-10-28 at f612107bf9)
 + t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 + t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 flaky tests are exposed in t1016, which needs to be addressed
 before this topic can move forward.

 Will merge to 'master'.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 cf. <xmqqbjlump3m.fsf@gitster.g>
 cf. <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>
 source: <20240703153738.916469-1-tmz@pobox.com>


* ps/ref-peeled-tags (2025-10-23) 16 commits
 - ref-filter: parse objects on demand
 - ref-filter: detect broken tags when dereferencing them
 - refs: don't store peeled object IDs for invalid tags
 - object: add flag to `peel_object()` to verify object type
 - refs: drop infrastructure to peel via iterators
 - refs: drop `current_ref_iter` hack
 - builtin/show-ref: convert to use `reference_get_peeled_oid()`
 - ref-filter: propagate peeled object ID
 - upload-pack: convert to use `reference_get_peeled_oid()`
 - refs: expose peeled object ID via the iterator
 - refs: refactor reference status flags
 - refs: fully reset `struct ref_iterator::ref` on iteration
 - refs: introduce `.ref` field for the base iterator
 - refs: introduce wrapper struct for `each_ref_fn`
 - Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will merge to 'next' after base topics are merged.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* je/doc-data-model (2025-10-27) 1 commit
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Comments?
 source: <pull.1981.v4.git.1761593537924.gitgitgadget@gmail.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
  (merged to 'next' on 2025-10-28 at 9b5e0701fa)
 + SubmittingPatches: add section about AI

 AI guidelines.

 Will merge to 'master'.
 cf. <xmqqv7ki1xf1.fsf@gitster.g>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Comments?
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-10-28) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Reroll exists.
 source: <20251028214609.10041-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <878qh4qxsl.fsf@gentoo.mail-host-address-is-not-set>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 25%]

* What's cooking in git.git (Oct 2025, #11; Tue, 28)
@ 2025-10-28 22:55 25% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-10-28 22:55 UTC (permalink / raw)
  To: git

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

* cc/fast-import-strip-signed-tags (2025-10-13) 5 commits
  (merged to 'next' on 2025-10-22 at c25f8aa54a)
 + fast-import: add '--signed-tags=<mode>' option
 + fast-export: handle all kinds of tag signatures
 + t9350: properly count annotated tags
 + lib-gpg: allow tests with GPGSM or GPGSSH prereq first
 + doc: git-tag: stop focusing on GPG signed tags

 "git fast-import" is taught to handle signed tags, just like it
 recently learned to handle signed commits, in different ways.
 
 source: <20251013084857.1646783-1-christian.couder@gmail.com>


* ds/sparse-checkout-clean (2025-10-20) 8 commits
  (merged to 'next' on 2025-10-20 at afc50f3401)
 + sparse-index: improve advice message instructions
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.
 
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>


* ps/ci-rust (2025-10-14) 8 commits
  (merged to 'next' on 2025-10-22 at 89129fa777)
 + rust: support for Windows
 + ci: verify minimum supported Rust version
 + ci: check for common Rust mistakes via Clippy
 + rust/varint: add safety comments
 + ci: check formatting of our Rust code
 + ci: deduplicate calls to `apt-get update`
 + Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
 + Merge branch 'ps/rust-balloon' into ps/ci-rust
 (this branch is used by ps/rust-cbindgen and qj/doc-first-contrib-check-lore.)

 CI improvements to handle the recent Rust integration better.
 
 source: <20251015-b4-pks-ci-rust-v3-0-13810af33bd5@pks.im>

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

* qj/doc-my1stcontrib-email-verify (2025-10-27) 1 commit
 - MyFirstContribution: add note on confirming patches

 The "MyFirstContribution" tutorial tells the reader how to send out
 their patches; the section gained a hint to verify the message
 reached the mailing list.

 Will merge to 'next'.
 source: <20251027111600.1481-1-qjessa662@gmail.com>


* xr/ref-debug-remove-on-disk (2025-10-24) 1 commit
 - refs: add missing remove_on_disk implementation for debug backend

 The "debug" ref-backend was missing a method implementation, which
 has been corrected.

 Will merge to 'next'.
 source: <pull.2082.git.git.1761295094982.gitgitgadget@gmail.com>


* ad/blame-diff-algorithm (2025-10-28) 1 commit
 - blame: make diff algorithm configurable

 source: <pull.2075.v2.git.git.1761658643278.gitgitgadget@gmail.com>


* cc/fast-import-export-i18n-cleanup (2025-10-28) 5 commits
 - gpg-interface: mark a string for translation
 - fast-import: mark strings for translation
 - fast-export: mark strings for translation
 - gpg-interface: use left shift to define GPG_VERIFY_*
 - gpg-interface: simplify ssh fingerprint parsing

 source: <20251028081232.3068147-1-christian.couder@gmail.com>


* eb/t1016-hash-transition-fix (2025-10-28) 1 commit
 - t1016-compatObjectFormat: really freeze time for reproduciblity

 source: <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>


* ps/packed-git-in-object-store (2025-10-28) 9 commits
 - packfile: track packs via the MRU list exclusively
 - packfile: always add packfiles to MRU when adding a pack
 - packfile: move list of packs into the packfile store
 - builtin/pack-objects: simplify logic to find kept or nonlocal objects
 - packfile: fix approximation of object counts
 - http: refactor subsystem to use `packfile_list`s
 - packfile: move the MRU list into the packfile store
 - packfile: use a `strmap` to store packs by name
 - Merge branch 'ps/remove-packfile-store-get-packs' into ps/packed-git-in-object-store
 (this branch uses ps/remove-packfile-store-get-packs and tb/incremental-midx-part-3.1.)

 source: <20251028-pks-packfiles-store-drop-list-v1-0-1a3b82030a7a@pks.im>

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

* tu/credential-install (2025-10-25) 1 commit
  (merged to 'next' on 2025-10-28 at 43589c4832)
 + contrib/credential: add install target

 Contributed credential helpers (obviously in contrib/) now have "cd
 $there && make install" target.

 Will merge to 'master'.
 source: <f67b3cbd-a117-a863-37ba-fbba7a2ca17a@mailbox.tu-dresden.de>


* jk/diff-patch-dry-run-cleanup (2025-10-24) 6 commits
  (merged to 'next' on 2025-10-26 at 28426e9102)
 + diff: simplify run_external_diff() quiet logic
 + diff: drop dry-run redirection to /dev/null
 + diff: replace diff_options.dry_run flag with NULL file
 + diff: drop save/restore of color_moved in dry-run mode
 + diff: send external diff output to diff_options.file
 + Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-patch-dry-run-cleanup
 (this branch uses ly/diff-name-only-with-diff-from-content.)

 Finishing touches to fixes to the recent regression in "git diff -w
 --quiet" and anything that needs to internally generate patch to
 see if it turns empty.

 Will merge to 'master'.
 source: <20251024170522.GA2344972@coredump.intra.peff.net>


* qj/doc-first-contrib-check-lore (2025-10-24) 1 commit
 - MyFirstContribution: add tip to confirm patches reached the mailing list
 (this branch uses ps/rust-cbindgen.)

 Doc update.

 Comments?
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* rs/merge-base-optim (2025-10-24) 1 commit
  (merged to 'next' on 2025-10-26 at 45f9bd4b81)
 + commit-reach: avoid commit_list_insert_by_date()

 The code to walk revision graph to compute merge base has been
 optimized.

 Will merge to 'master'.
 source: <87a00cb8-8faf-48ec-91aa-009e6e906363@web.de>


* rs/add-patch-quit (2025-10-24) 2 commits
  (merged to 'next' on 2025-10-26 at 859e2555b2)
 + add-patch: quit on EOF
 + add-patch: quit without skipping undecided hunks

 The 'q'(uit) command in "git add -p" has been improved to quit
 without doing any meaningless work before leaving, and giving EOF
 (typically control-D) to the prompt is made to behave the same way.

 Will merge to 'master'.
 source: <13529bee-1e02-4c20-9461-6569312bfe4f@web.de>


* ey/commit-graph-changed-paths-config (2025-10-17) 1 commit
  (merged to 'next' on 2025-10-23 at 48fd936ff1)
 + commit-graph: add new config for changed-paths & recommend it in scalar

 A new configuration variable commitGraph.changedPaths allows to
 turn "--changed-paths" on by default for "git commit-graph".

 Will merge to 'master'.
 source: <pull.1983.v2.git.1760734739642.gitgitgadget@gmail.com>


* ob/gpg-interface-cleanup (2025-10-23) 2 commits
  (merged to 'next' on 2025-10-24 at ce6d041635)
 + gpg-interface: do not use misdesigned strbuf_split*()
 + gpg-interface: do not use misdesigned strbuf_split*()

 strbuf_split*() to split a string into multiple strbufs is often a
 wrong API to use.  A few uses of it have been removed by
 simplifying the code.

 Will merge to 'master'.
 cf. <CAP8UFD1fousSKKduFAaZrsV9REnOaRDOQYcqB+rTQ0Ys60OWGA@mail.gmail.com>
 source: <cover.1761217100.git.belkid98@gmail.com>


* rz/bisect-help-unknown (2025-10-22) 1 commit
  (merged to 'next' on 2025-10-24 at d0633ab14d)
 + bisect: fix handling of `help` and invalid subcommands

 "git bisect" command did not react correctly to "git bisect help"
 and "git bisect unknown", which has been corrected.

 Will merge to 'master'.
 source: <pull.2078.git.git.1761122173126.gitgitgadget@gmail.com>


* ps/rust-cbindgen (2025-10-24) 6 commits
 - rust: generate bindings via cbindgen
 - meson: rename Rust library target
 - ci: use Debian instead of deprecated i386/ubuntu
 - gitlab-ci: backfill missing Linux jobs
 - gitlab-ci: reorder Linux job matrix to match GitHub's order
 - Merge branch 'ps/ci-rust' into ps/rust-cbindgen
 (this branch is used by qj/doc-first-contrib-check-lore.)

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Another dependency in an ecosystem that is not mature yet complicates things a bit too much?
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* jk/match-pathname-fix (2025-10-26) 2 commits
  (merged to 'next' on 2025-10-26 at f18b45f0df)
 + match_pathname(): give fnmatch one char of prefix context
 + match_pathname(): reorder prefix-match check

 The wildmatch code had a corner case bug that mistakenly makes
 "foo**/bar" match with "foobar", which has been corrected.

 Will merge to 'master'.
 source: <20251026154036.GA2173430@coredump.intra.peff.net>


* kf/log-shortlog-completion-fix (2025-10-20) 1 commit
  (merged to 'next' on 2025-10-24 at 2300659a0a)
 + completion: complete some 'git log' options

 "git shortlog" knows "--committer" and "--author" options, which
 the command line completion (in contrib/) did not handle well,
 which has been corrected.

 Will merge to 'master'.
 source: <pull.2073.v2.git.git.1760981577441.gitgitgadget@gmail.com>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
 - t/pack-refs-tests: move the 'test_done' to callees
 - refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 - refs: move to using the '.optimize' functions
 - Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch uses jt/repo-structure, ps/ref-peeled-tags and tb/incremental-midx-part-3.1.)

 Code clean-up.

 Will merge to 'next' after base topics are merged.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Will merge to 'next'?
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* ly/diff-name-only-with-diff-from-content (2025-10-19) 3 commits
  (merged to 'next' on 2025-10-24 at 237c19e4e6)
 + diff: stop output garbled message in dry run mode
 + Merge branch 'jc/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 + Merge branch 'jk/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 (this branch is used by jk/diff-patch-dry-run-cleanup.)

 Regression fixes for a topic that has already been merged.

 Will merge to 'master'.
 source: <20251019163024.18939-1-yldhome2d2@gmail.com>


* jt/repo-structure (2025-10-21) 7 commits
 - builtin/repo: add progress meter for structure stats
 - builtin/repo: add keyvalue and nul format for structure stats
 - builtin/repo: add object counts in structure output
 - builtin/repo: introduce structure subcommand
 - ref-filter: export ref_kind_from_refname()
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()
 (this branch is used by kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git repo structure", a new command.

 Will merge to 'next'.
 cf. <eesy5qhqzi56qrzv7wlpenxag23l2zykakvpmr6p5rnak6cril@ap3rugp44bcz>
 cf. <aPsLS6lbzG27W-C8@pks.im>
 source: <20251021182601.2687284-1-jltobler@gmail.com>


* ps/maintenance-geometric (2025-10-27) 12 commits
  (merged to 'next' on 2025-10-27 at 839fc31de9)
 + t7900: fix a flaky test due to git-repack always regenerating MIDX
  (merged to 'next' on 2025-10-26 at 505f26dcf7)
 + builtin/maintenance: introduce "geometric" strategy
 + builtin/maintenance: make "gc" strategy accessible
 + builtin/maintenance: extend "maintenance.strategy" to manual maintenance
 + builtin/maintenance: run maintenance tasks depending on type
 + builtin/maintenance: improve readability of strategies
 + builtin/maintenance: don't silently ignore invalid strategy
 + builtin/maintenance: make the geometric factor configurable
 + builtin/maintenance: introduce "geometric-repack" task
 + builtin/gc: make `too_many_loose_objects()` reusable without GC config
 + builtin/gc: remove global `repack` variable
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/maintenance-geometric
 (this branch uses tb/incremental-midx-part-3.1.)

 "git maintenance" command learns the "geometric" strategy where it
 avoids doing maintenance tasks that rebuilds everything from
 scratch.

 Will merge to 'master'.
 source: <20251024-pks-maintenance-geometric-strategy-v3-0-9b5b3bdb4387@pks.im>
 source: <20251027-pks-maintenance-geometric-strategy-v4-0-18049e4a0adf@pks.im>


* en/xdiff-cleanup-2 (2025-10-15) 9 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t

 Code clean-up.
 source: <pull.2070.git.git.1760563101.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/symlink-symref-deprecation (2025-10-14) 1 commit
  (merged to 'next' on 2025-10-24 at b37ca35280)
 + refs/files: deprecate writing symrefs as symbolic links

 "Symlink symref" has been added to the list of things that will
 disappear at Git 3.0 boundary.

 Will merge to 'master'.
 source: <20251015-pks-ref-files-deprecate-symbolic-links-v2-1-0529ba48db41@pks.im>


* kh/doc-patch-id-1 (2025-10-13) 2 commits
  (merged to 'next' on 2025-10-26 at e284077116)
 + doc: patch-id: convert to the modern synopsis style
 + Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1

 Will merge to 'master'.
 source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
 - t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 - t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 flaky tests are exposed in t1016, which needs to be addressed
 before this topic can move forward.

 Will merge to 'next'.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 cf. <xmqqbjlump3m.fsf@gitster.g>
 cf. <87frb310d2.fsf_-_@email.froward.int.ebiederm.org>
 source: <20240703153738.916469-1-tmz@pobox.com>


* ps/ref-peeled-tags (2025-10-23) 16 commits
 - ref-filter: parse objects on demand
 - ref-filter: detect broken tags when dereferencing them
 - refs: don't store peeled object IDs for invalid tags
 - object: add flag to `peel_object()` to verify object type
 - refs: drop infrastructure to peel via iterators
 - refs: drop `current_ref_iter` hack
 - builtin/show-ref: convert to use `reference_get_peeled_oid()`
 - ref-filter: propagate peeled object ID
 - upload-pack: convert to use `reference_get_peeled_oid()`
 - refs: expose peeled object ID via the iterator
 - refs: refactor reference status flags
 - refs: fully reset `struct ref_iterator::ref` on iteration
 - refs: introduce `.ref` field for the base iterator
 - refs: introduce wrapper struct for `each_ref_fn`
 - Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure and tb/incremental-midx-part-3.1.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will merge to 'next' after base topics are merged.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
  (merged to 'next' on 2025-10-24 at e2f6fba6fe)
 + packfile: rename `packfile_store_get_all_packs()`
 + packfile: introduce macro to iterate through packs
 + packfile: drop `packfile_store_get_packs()`
 + builtin/grep: simplify how we preload packs
 + builtin/gc: convert to use `packfile_store_get_all_packs()`
 + object-name: convert to use `packfile_store_get_all_packs()`
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch is used by ps/packed-git-in-object-store; uses tb/incremental-midx-part-3.1.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.

 Will merge to 'master'.
 source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>


* je/doc-data-model (2025-10-27) 1 commit
 - doc: add an explanation of Git's data model

 Add a new manual that describes the data model.

 Comments?
 source: <pull.1981.v4.git.1761593537924.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.1 (2025-10-15) 50 commits
  (merged to 'next' on 2025-10-22 at e78054f5a0)
 + builtin/repack.c: clean up unused `#include`s
 + repack: move `write_cruft_pack()` out of the builtin
 + repack: move `write_filtered_pack()` out of the builtin
 + repack: move `pack_kept_objects` to `struct pack_objects_args`
 + repack: move `finish_pack_objects_cmd()` out of the builtin
 + builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 + repack: extract `write_pack_opts_is_local()`
 + repack: move `find_pack_prefix()` out of the builtin
 + builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 + builtin/repack.c: introduce `struct write_pack_opts`
 + repack: 'write_midx_included_packs' API from the builtin
 + builtin/repack.c: inline packs within `write_midx_included_packs()`
 + builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 + builtin/repack.c: inline `remove_redundant_bitmaps()`
 + builtin/repack.c: reorder `remove_redundant_bitmaps()`
 + repack: keep track of MIDX pack names using existing_packs
 + builtin/repack.c: use a string_list for 'midx_pack_names'
 + builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 + builtin/repack.c: remove ref snapshotting from builtin
 + repack: remove pack_geometry API from the builtin
 + builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 + builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 + builtin/repack.c: rename various pack_geometry functions
 + builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 + builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 + repack: remove 'generated_pack' API from the builtin
 + builtin/repack.c: provide pack locations to `generated_pack_install()`
 + builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 + builtin/repack.c: factor out "generated_pack_install"
 + builtin/repack.c: rename "struct generated_pack_data"
 + repack: remove 'existing_packs' API from the builtin
 + builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 + builtin/repack.c: pass "packdir" when removing packs
 + repack: remove 'remove_redundant_pack' from the builtin
 + builtin/repack.c: rename many 'struct existing_packs' functions
 + repack: remove 'prepare_pack_objects' from the builtin
 + repack: move 'delta_base_offset' to 'struct pack_objects_args'
 + builtin/repack.c: pass both pack_objects args to repack_config
 + repack: introduce new compilation unit
 + builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 + builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 + builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 + builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 + builtin/repack.c: avoid "the_hash_algo" when deleting packs
 + builtin/repack.c: avoid "the_repository" when repacking promisor objects
 + builtin/repack.c: avoid "the_repository" when removing packs
 + builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 + builtin/repack.c: avoid "the_repository" in existing packs API
 + builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 + Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by kn/refs-optim-cleanup, ps/maintenance-geometric, ps/packed-git-in-object-store, ps/ref-peeled-tags and ps/remove-packfile-store-get-packs.)

 Clean-up "git repack" machinery to prepare for incremental update
 of midx files.

 Will merge to 'master'.
 source: <cover.1760567210.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
  (merged to 'next' on 2025-10-28 at 9b5e0701fa)
 + SubmittingPatches: add section about AI

 AI guidelines.

 Will merge to 'master'.
 cf. <xmqqv7ki1xf1.fsf@gitster.g>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-27) 12 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Comments?
 source: <20251027-b4-pks-history-builtin-v6-0-407dd3f57ad3@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-10-22) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf9encl1.fsf@gitster.g>
 source: <20251022185045.29256-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <878qh4qxsl.fsf@gentoo.mail-host-address-is-not-set>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


^ permalink raw reply	[relevance 25%]

* What's cooking in git.git (Oct 2025, #10; Mon, 27)
@ 2025-10-27 15:58 26% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-27 15:58 UTC (permalink / raw)
  To: git

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]

* tu/credential-install (2025-10-25) 1 commit
 - contrib/credential: add install target

 Contributed credential helpers (obviously in contrib/) now have "cd
 $there && make install" target.

 Will merge to 'next'.
 source: <f67b3cbd-a117-a863-37ba-fbba7a2ca17a@mailbox.tu-dresden.de>

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

* jk/diff-patch-dry-run-cleanup (2025-10-24) 6 commits
  (merged to 'next' on 2025-10-26 at 28426e9102)
 + diff: simplify run_external_diff() quiet logic
 + diff: drop dry-run redirection to /dev/null
 + diff: replace diff_options.dry_run flag with NULL file
 + diff: drop save/restore of color_moved in dry-run mode
 + diff: send external diff output to diff_options.file
 + Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-patch-dry-run-cleanup
 (this branch uses ly/diff-name-only-with-diff-from-content.)

 Finishing touches to fixes to the recent regression in "git diff -w
 --quiet" and anything that needs to internally generate patch to
 see if it turns empty.

 Will merge to 'master'.
 source: <20251024170522.GA2344972@coredump.intra.peff.net>


* qj/doc-first-contrib-check-lore (2025-10-24) 1 commit
 - MyFirstContribution: add tip to confirm patches reached the mailing list
 (this branch uses ps/ci-rust and ps/rust-cbindgen.)

 Doc update.

 Comments?
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* rs/merge-base-optim (2025-10-24) 1 commit
  (merged to 'next' on 2025-10-26 at 45f9bd4b81)
 + commit-reach: avoid commit_list_insert_by_date()

 The code to walk revision graph to compute merge base has been
 optimized.

 Will merge to 'master'.
 source: <87a00cb8-8faf-48ec-91aa-009e6e906363@web.de>


* rs/add-patch-quit (2025-10-24) 2 commits
  (merged to 'next' on 2025-10-26 at 859e2555b2)
 + add-patch: quit on EOF
 + add-patch: quit without skipping undecided hunks

 The 'q'(uit) command in "git add -p" has been improved to quit
 without doing any meaningless work before leaving, and giving EOF
 (typically control-D) to the prompt is made to behave the same way.

 Will merge to 'master'.
 source: <13529bee-1e02-4c20-9461-6569312bfe4f@web.de>


* ey/commit-graph-changed-paths-config (2025-10-17) 1 commit
  (merged to 'next' on 2025-10-23 at 48fd936ff1)
 + commit-graph: add new config for changed-paths & recommend it in scalar

 A new configuration variable commitGraph.changedPaths allows to
 turn "--changed-paths" on by default for "git commit-graph".

 Will merge to 'master'.
 source: <pull.1983.v2.git.1760734739642.gitgitgadget@gmail.com>


* ob/gpg-interface-cleanup (2025-10-23) 2 commits
  (merged to 'next' on 2025-10-24 at ce6d041635)
 + gpg-interface: do not use misdesigned strbuf_split*()
 + gpg-interface: do not use misdesigned strbuf_split*()

 strbuf_split*() to split a string into multiple strbufs is often a
 wrong API to use.  A few uses of it have been removed by
 simplifying the code.

 Will merge to 'master'.
 cf. <CAP8UFD1fousSKKduFAaZrsV9REnOaRDOQYcqB+rTQ0Ys60OWGA@mail.gmail.com>
 source: <cover.1761217100.git.belkid98@gmail.com>


* rz/bisect-help-unknown (2025-10-22) 1 commit
  (merged to 'next' on 2025-10-24 at d0633ab14d)
 + bisect: fix handling of `help` and invalid subcommands

 "git bisect" command did not react correctly to "git bisect help"
 and "git bisect unknown", which has been corrected.

 Will merge to 'master'.
 source: <pull.2078.git.git.1761122173126.gitgitgadget@gmail.com>


* ps/rust-cbindgen (2025-10-24) 6 commits
 - rust: generate bindings via cbindgen
 - meson: rename Rust library target
 - ci: use Debian instead of deprecated i386/ubuntu
 - gitlab-ci: backfill missing Linux jobs
 - gitlab-ci: reorder Linux job matrix to match GitHub's order
 - Merge branch 'ps/ci-rust' into ps/rust-cbindgen
 (this branch is used by qj/doc-first-contrib-check-lore; uses ps/ci-rust.)

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Comments?
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* jk/match-pathname-fix (2025-10-26) 2 commits
  (merged to 'next' on 2025-10-26 at f18b45f0df)
 + match_pathname(): give fnmatch one char of prefix context
 + match_pathname(): reorder prefix-match check

 The wildmatch code had a corner case bug that mistakenly makes
 "foo**/bar" match with "foobar", which has been corrected.

 Will merge to 'master'.
 source: <20251026154036.GA2173430@coredump.intra.peff.net>


* kf/log-shortlog-completion-fix (2025-10-20) 1 commit
  (merged to 'next' on 2025-10-24 at 2300659a0a)
 + completion: complete some 'git log' options

 "git shortlog" knows "--committer" and "--author" options, which
 the command line completion (in contrib/) did not handle well,
 which has been corrected.

 Will merge to 'master'.
 source: <pull.2073.v2.git.git.1760981577441.gitgitgadget@gmail.com>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
 - t/pack-refs-tests: move the 'test_done' to callees
 - refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 - refs: move to using the '.optimize' functions
 - Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch uses jt/repo-structure, ps/ref-peeled-tags and tb/incremental-midx-part-3.1.)

 Code clean-up.

 Will merge to 'next' after base topics are merged.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-26) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Will merge to 'next'?
 source: <20251026225409.46647-1-lucasseikioshiro@gmail.com>


* ly/diff-name-only-with-diff-from-content (2025-10-19) 3 commits
  (merged to 'next' on 2025-10-24 at 237c19e4e6)
 + diff: stop output garbled message in dry run mode
 + Merge branch 'jc/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 + Merge branch 'jk/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 (this branch is used by jk/diff-patch-dry-run-cleanup.)

 Regression fixes for a topic that has already been merged.

 Will merge to 'master'.
 source: <20251019163024.18939-1-yldhome2d2@gmail.com>


* jt/repo-structure (2025-10-21) 7 commits
 - builtin/repo: add progress meter for structure stats
 - builtin/repo: add keyvalue and nul format for structure stats
 - builtin/repo: add object counts in structure output
 - builtin/repo: introduce structure subcommand
 - ref-filter: export ref_kind_from_refname()
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()
 (this branch is used by kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git repo structure", a new command.

 Will merge to 'next'?
 cf. <eesy5qhqzi56qrzv7wlpenxag23l2zykakvpmr6p5rnak6cril@ap3rugp44bcz>
 source: <20251021182601.2687284-1-jltobler@gmail.com>


* ps/maintenance-geometric (2025-10-23) 11 commits
  (merged to 'next' on 2025-10-26 at 505f26dcf7)
 + builtin/maintenance: introduce "geometric" strategy
 + builtin/maintenance: make "gc" strategy accessible
 + builtin/maintenance: extend "maintenance.strategy" to manual maintenance
 + builtin/maintenance: run maintenance tasks depending on type
 + builtin/maintenance: improve readability of strategies
 + builtin/maintenance: don't silently ignore invalid strategy
 + builtin/maintenance: make the geometric factor configurable
 + builtin/maintenance: introduce "geometric-repack" task
 + builtin/gc: make `too_many_loose_objects()` reusable without GC config
 + builtin/gc: remove global `repack` variable
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/maintenance-geometric
 (this branch uses tb/incremental-midx-part-3.1.)

 "git maintenance" command learns the "geometric" strategy where it
 avoids doing maintenance tasks that rebuilds everything from
 scratch.

 Will merge to 'master'.
 source: <20251024-pks-maintenance-geometric-strategy-v3-0-9b5b3bdb4387@pks.im>


* en/xdiff-cleanup-2 (2025-10-15) 9 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t

 Code clean-up.
 source: <pull.2070.git.git.1760563101.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/symlink-symref-deprecation (2025-10-14) 1 commit
  (merged to 'next' on 2025-10-24 at b37ca35280)
 + refs/files: deprecate writing symrefs as symbolic links

 "Symlink symref" has been added to the list of things that will
 disappear at Git 3.0 boundary.

 Will merge to 'master'.
 source: <20251015-pks-ref-files-deprecate-symbolic-links-v2-1-0529ba48db41@pks.im>


* kh/doc-patch-id-1 (2025-10-13) 2 commits
  (merged to 'next' on 2025-10-26 at e284077116)
 + doc: patch-id: convert to the modern synopsis style
 + Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1

 Will merge to 'master'.
 source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>


* tz/test-prepare-gnupghome (2025-10-25) 3 commits
 - t1016: disable flakey tests
 - t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 - t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 flaky tests are exposed in t1016, which needs to be addressed
 before this topic can move forward.

 On hold.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 cf. <xmqqbjlump3m.fsf@gitster.g>
 source: <20240703153738.916469-1-tmz@pobox.com>


* cc/fast-import-strip-signed-tags (2025-10-13) 5 commits
  (merged to 'next' on 2025-10-22 at c25f8aa54a)
 + fast-import: add '--signed-tags=<mode>' option
 + fast-export: handle all kinds of tag signatures
 + t9350: properly count annotated tags
 + lib-gpg: allow tests with GPGSM or GPGSSH prereq first
 + doc: git-tag: stop focusing on GPG signed tags

 "git fast-import" is taught to handle signed tags, just like it
 recently learned to handle signed commits, in different ways.

 Will merge to 'master'.
 source: <20251013084857.1646783-1-christian.couder@gmail.com>


* ps/ci-rust (2025-10-14) 8 commits
  (merged to 'next' on 2025-10-22 at 89129fa777)
 + rust: support for Windows
 + ci: verify minimum supported Rust version
 + ci: check for common Rust mistakes via Clippy
 + rust/varint: add safety comments
 + ci: check formatting of our Rust code
 + ci: deduplicate calls to `apt-get update`
 + Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
 + Merge branch 'ps/rust-balloon' into ps/ci-rust
 (this branch is used by ps/rust-cbindgen and qj/doc-first-contrib-check-lore.)

 CI improvements to handle the recent Rust integration better.

 Will merge to 'master'.
 source: <20251015-b4-pks-ci-rust-v3-0-13810af33bd5@pks.im>


* ps/ref-peeled-tags (2025-10-23) 16 commits
 - ref-filter: parse objects on demand
 - ref-filter: detect broken tags when dereferencing them
 - refs: don't store peeled object IDs for invalid tags
 - object: add flag to `peel_object()` to verify object type
 - refs: drop infrastructure to peel via iterators
 - refs: drop `current_ref_iter` hack
 - builtin/show-ref: convert to use `reference_get_peeled_oid()`
 - ref-filter: propagate peeled object ID
 - upload-pack: convert to use `reference_get_peeled_oid()`
 - refs: expose peeled object ID via the iterator
 - refs: refactor reference status flags
 - refs: fully reset `struct ref_iterator::ref` on iteration
 - refs: introduce `.ref` field for the base iterator
 - refs: introduce wrapper struct for `each_ref_fn`
 - Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure and tb/incremental-midx-part-3.1.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will merge to 'next' after base topics are merged.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
  (merged to 'next' on 2025-10-24 at e2f6fba6fe)
 + packfile: rename `packfile_store_get_all_packs()`
 + packfile: introduce macro to iterate through packs
 + packfile: drop `packfile_store_get_packs()`
 + builtin/grep: simplify how we preload packs
 + builtin/gc: convert to use `packfile_store_get_all_packs()`
 + object-name: convert to use `packfile_store_get_all_packs()`
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch uses tb/incremental-midx-part-3.1.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.

 Will merge to 'master'.
 source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>


* je/doc-data-model (2025-10-20) 2 commits
 - SQUASH??? work around AsciiDoc xml that does not validate
 - doc: add a explanation of Git's data model

 Add a new manual that describes the data model.

 Expecting a reroll.
 cf. <0eb276ef-7b1a-4e79-93da-13a83226aa01@app.fastmail.com>
 source: <pull.1981.v3.git.1760476346040.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.1 (2025-10-15) 50 commits
  (merged to 'next' on 2025-10-22 at e78054f5a0)
 + builtin/repack.c: clean up unused `#include`s
 + repack: move `write_cruft_pack()` out of the builtin
 + repack: move `write_filtered_pack()` out of the builtin
 + repack: move `pack_kept_objects` to `struct pack_objects_args`
 + repack: move `finish_pack_objects_cmd()` out of the builtin
 + builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 + repack: extract `write_pack_opts_is_local()`
 + repack: move `find_pack_prefix()` out of the builtin
 + builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 + builtin/repack.c: introduce `struct write_pack_opts`
 + repack: 'write_midx_included_packs' API from the builtin
 + builtin/repack.c: inline packs within `write_midx_included_packs()`
 + builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 + builtin/repack.c: inline `remove_redundant_bitmaps()`
 + builtin/repack.c: reorder `remove_redundant_bitmaps()`
 + repack: keep track of MIDX pack names using existing_packs
 + builtin/repack.c: use a string_list for 'midx_pack_names'
 + builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 + builtin/repack.c: remove ref snapshotting from builtin
 + repack: remove pack_geometry API from the builtin
 + builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 + builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 + builtin/repack.c: rename various pack_geometry functions
 + builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 + builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 + repack: remove 'generated_pack' API from the builtin
 + builtin/repack.c: provide pack locations to `generated_pack_install()`
 + builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 + builtin/repack.c: factor out "generated_pack_install"
 + builtin/repack.c: rename "struct generated_pack_data"
 + repack: remove 'existing_packs' API from the builtin
 + builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 + builtin/repack.c: pass "packdir" when removing packs
 + repack: remove 'remove_redundant_pack' from the builtin
 + builtin/repack.c: rename many 'struct existing_packs' functions
 + repack: remove 'prepare_pack_objects' from the builtin
 + repack: move 'delta_base_offset' to 'struct pack_objects_args'
 + builtin/repack.c: pass both pack_objects args to repack_config
 + repack: introduce new compilation unit
 + builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 + builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 + builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 + builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 + builtin/repack.c: avoid "the_hash_algo" when deleting packs
 + builtin/repack.c: avoid "the_repository" when repacking promisor objects
 + builtin/repack.c: avoid "the_repository" when removing packs
 + builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 + builtin/repack.c: avoid "the_repository" in existing packs API
 + builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 + Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by kn/refs-optim-cleanup, ps/maintenance-geometric, ps/ref-peeled-tags and ps/remove-packfile-store-get-packs.)

 Clean-up "git repack" machinery to prepare for incremental update
 of midx files.

 Will merge to 'master'.
 source: <cover.1760567210.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
 - SubmittingPatches: add section about AI

 AI guidelines.

 Will merge to 'next'.
 cf. <xmqqv7ki1xf1.fsf@gitster.g>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-21) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: parse commits before dereferencing them
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.
 source: <20251021-b4-pks-history-builtin-v5-0-78d23f578fe6@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-10-22) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf9encl1.fsf@gitster.g>
 source: <20251022185045.29256-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <878qh4qxsl.fsf@gentoo.mail-host-address-is-not-set>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


* ds/sparse-checkout-clean (2025-10-20) 8 commits
  (merged to 'next' on 2025-10-20 at afc50f3401)
 + sparse-index: improve advice message instructions
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Will merge to 'master'.
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.

* lc/rebase-trailer (2025-08-03) 2 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Has been expecting a reroll for way too long.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Has been expecting a reroll for way too long.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>


^ permalink raw reply	[relevance 26%]

* What's cooking in git.git (Oct 2025, #09; Sat, 25)
@ 2025-10-25 21:16 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-25 21:16 UTC (permalink / raw)
  To: git

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

* jc/diff-from-contents-fix (2025-10-22) 1 commit
  (merged to 'next' on 2025-10-23 at fae07d2113)
 + diff: make sure the other caller of diff_flush_patch_quietly() is silent
 (this branch is used by ly/diff-name-only-with-diff-from-content; uses jk/diff-from-contents-fix.)

 The code to squelch output from "git diff -w --name-status"
 etc. for paths that "git diff -w -p" would have stayed silent
 leaked output from dry-run patch generation, which has been
 corrected.
 source: <xmqqy0p4wcac.fsf@gitster.g>


* jc/t1016-setup-fix (2025-10-10) 1 commit
  (merged to 'next' on 2025-10-24 at 7d5464a96f)
 + t1016: make sure to use specified GPG

 GPG signing test set-up has been broken for a year, which has been
 corrected.
 source: <xmqqsefq7947.fsf@gitster.g>


* jk/diff-from-contents-fix (2025-10-17) 2 commits
  (merged to 'next' on 2025-10-20 at 19442a804e)
 + diff: restore redirection to /dev/null for diff_from_contents
 + Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-from-contents-fix
 (this branch is used by jc/diff-from-contents-fix and ly/diff-name-only-with-diff-from-content.)

 Recently we attempted to improve "git diff -w" and friends to
 handle cases where patch output would be suppressed, but it
 introduced a bug that emits unnecessary output, which has been
 corrected.

 Will merge to 'master' and then to 'maint'.
 source: <20251017083641.GB4073661@coredump.intra.peff.net>


* jk/status-z-short-fix (2025-10-17) 1 commit
  (merged to 'next' on 2025-10-20 at 0d649c97b7)
 + status: make coloring of "-z --short" consistent

 The "--short" option of "git status" that meant output for humans
 and "-z" option to show NUL delimited output format did not mix
 well, and colored some but not all things.  The command has been
 updated to color all elements consistently in such a case.
 source: <20251017084455.GA4096702@coredump.intra.peff.net>


* js/t7500-pwd-windows-fix (2025-10-20) 1 commit
  (merged to 'next' on 2025-10-20 at d3996041e8)
 + t7500: fix tests with absolute path following ":(optional)" on Windows

 Test fix.
 source: <6a83c7d1-7cd4-432e-a0ab-7b18ce3af08d@kdbg.org>


* ps/t7528-ssh-agent-uds-workaround (2025-10-23) 1 commit
  (merged to 'next' on 2025-10-23 at 9642f0746a)
 + t7528: work around ETOOMANY in OpenSSH 10.1 and newer

 Recent OpenSSH creates the Unix domain socket to communicate with
 ssh-agent under $HOME instead of /tmp, which causes our test to
 fail doe to overly long pathname in our test environment, which has
 been worked around by using "ssh-agent -T".
 source: <20251023-b4-pks-t7528-ssh-agent-socket-name-too-long-v1-1-f15eeec199f3@pks.im>


* rj/doc-technical-fixes (2025-10-16) 4 commits
  (merged to 'next' on 2025-10-23 at 0af15d1860)
 + doc: add large-object-promisors.adoc to the docs build
 + doc: commit-graph.adoc: fix up some formatting
 + doc: sparse-checkout.adoc: fix asciidoc warnings
 + doc: remembering-renames.adoc: fix asciidoc warnings

 Documentation mark-up fixes.
 source: <20251016200301.1595204-1-ramsay@ramsayjones.plus.com>


* rs/add-patch-document-p-for-pager (2025-10-21) 1 commit
  (merged to 'next' on 2025-10-22 at 7937ae0274)
 + add-patch: fully document option P

 Show 'P'ipe command in "git add -p".
 source: <0188c766-d788-476d-a4d4-f95a6f59b31b@web.de>


* tb/unicode-width-table-17 (2025-10-21) 1 commit
  (merged to 'next' on 2025-10-22 at 6382b8bd44)
 + unicode: update the width tables to Unicode 17

 Unicode width table update.
 source: <20251021094849.93284-1-tboegi@web.de>


* tu/credential-makefile-updates (2025-10-20) 1 commit
  (merged to 'next' on 2025-10-22 at 1a8d65324c)
 + contrib/credential: harmonize Makefiles

 Build procedure for a few credential helpers (in contrib/) have
 been updated.
 source: <0a61b0b3-365b-c198-6afd-f26fcd5a9c20@mailbox.tu-dresden.de>

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

* jk/diff-patch-dry-run-cleanup (2025-10-24) 6 commits
 - diff: simplify run_external_diff() quiet logic
 - diff: drop dry-run redirection to /dev/null
 - diff: replace diff_options.dry_run flag with NULL file
 - diff: drop save/restore of color_moved in dry-run mode
 - diff: send external diff output to diff_options.file
 - Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-patch-dry-run-cleanup
 (this branch uses ly/diff-name-only-with-diff-from-content.)

 Finishing touches to fixes to the recent regression in "git diff -w
 --quiet" and anything that needs to internally generate patch to
 see if it turns empty.

 Will merge to 'next'.
 source: <20251024170522.GA2344972@coredump.intra.peff.net>


* qj/doc-first-contrib-check-lore (2025-10-24) 1 commit
 - MyFirstContribution: add tip to confirm patches reached the mailing list
 (this branch uses ps/ci-rust and ps/rust-cbindgen.)

 Doc update.

 Comments?
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* rs/merge-base-optim (2025-10-24) 1 commit
 - commit-reach: avoid commit_list_insert_by_date()

 The code to walk revision graph to compute merge base has been
 optimized.

 Will merge to 'next'.
 source: <87a00cb8-8faf-48ec-91aa-009e6e906363@web.de>


* rs/add-patch-quit (2025-10-24) 2 commits
 - add-patch: quit on EOF
 - add-patch: quit without skipping undecided hunks

 The 'q'(uit) command in "git add -p" has been improved to quit
 without doing any meaningless work before leaving, and giving EOF
 (typically control-D) to the prompt is made to behave the same way.

 Will merge to 'next'.
 source: <13529bee-1e02-4c20-9461-6569312bfe4f@web.de>

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

* ey/commit-graph-changed-paths-config (2025-10-17) 1 commit
  (merged to 'next' on 2025-10-23 at 48fd936ff1)
 + commit-graph: add new config for changed-paths & recommend it in scalar

 A new configuration variable commitGraph.changedPaths allows to
 turn "--changed-paths" on by default for "git commit-graph".

 Will merge to 'master'.
 source: <pull.1983.v2.git.1760734739642.gitgitgadget@gmail.com>


* ob/gpg-interface-cleanup (2025-10-23) 2 commits
  (merged to 'next' on 2025-10-24 at ce6d041635)
 + gpg-interface: do not use misdesigned strbuf_split*()
 + gpg-interface: do not use misdesigned strbuf_split*()

 strbuf_split*() to split a string into multiple strbufs is often a
 wrong API to use.  A few uses of it have been removed by
 simplifying the code.

 Will merge to 'master'.
 cf. <CAP8UFD1fousSKKduFAaZrsV9REnOaRDOQYcqB+rTQ0Ys60OWGA@mail.gmail.com>
 source: <cover.1761217100.git.belkid98@gmail.com>


* rz/bisect-help-unknown (2025-10-22) 1 commit
  (merged to 'next' on 2025-10-24 at d0633ab14d)
 + bisect: fix handling of `help` and invalid subcommands

 "git bisect" command did not react correctly to "git bisect help"
 and "git bisect unknown", which has been corrected.

 Will merge to 'master'.
 source: <pull.2078.git.git.1761122173126.gitgitgadget@gmail.com>


* ps/rust-cbindgen (2025-10-24) 6 commits
 - rust: generate bindings via cbindgen
 - meson: rename Rust library target
 - ci: use Debian instead of deprecated i386/ubuntu
 - gitlab-ci: backfill missing Linux jobs
 - gitlab-ci: reorder Linux job matrix to match GitHub's order
 - Merge branch 'ps/ci-rust' into ps/rust-cbindgen
 (this branch is used by qj/doc-first-contrib-check-lore; uses ps/ci-rust.)

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Comments?
 source: <20251024-b4-pks-rust-cbindgen-v2-0-4b4bd4f18490@pks.im>


* jk/match-pathname-fix (2025-10-13) 1 commit
 - match_pathname(): give fnmatch one char of prefix context

 The wildmatch code had a corner case bug that mistakenly makes
 "foo**/bar" match with "foobar", which has been corrected.

 Will merge to 'next'.
 source: <20251014003404.GC1507@coredump.intra.peff.net>


* kf/log-shortlog-completion-fix (2025-10-20) 1 commit
  (merged to 'next' on 2025-10-24 at 2300659a0a)
 + completion: complete some 'git log' options

 "git shortlog" knows "--committer" and "--author" options, which
 the command line completion (in contrib/) did not handle well,
 which has been corrected.

 Will merge to 'master'.
 source: <pull.2073.v2.git.git.1760981577441.gitgitgadget@gmail.com>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
 - t/pack-refs-tests: move the 'test_done' to callees
 - refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 - refs: move to using the '.optimize' functions
 - Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch uses jt/repo-structure, ps/ref-peeled-tags and tb/incremental-midx-part-3.1.)

 Code clean-up.

 Will merge to 'next' after base topics are merged.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-20) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Expecting a reroll.
 cf. <aPcduvnjD0yphja2@pks.im>
 source: <20251020181943.6314-1-lucasseikioshiro@gmail.com>


* ly/diff-name-only-with-diff-from-content (2025-10-19) 3 commits
  (merged to 'next' on 2025-10-24 at 237c19e4e6)
 + diff: stop output garbled message in dry run mode
 + Merge branch 'jc/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 + Merge branch 'jk/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 (this branch is used by jk/diff-patch-dry-run-cleanup.)

 Regression fixes for a topic that has already been merged.

 Will merge to 'master'.
 source: <20251019163024.18939-1-yldhome2d2@gmail.com>


* jt/repo-structure (2025-10-21) 7 commits
 - builtin/repo: add progress meter for structure stats
 - builtin/repo: add keyvalue and nul format for structure stats
 - builtin/repo: add object counts in structure output
 - builtin/repo: introduce structure subcommand
 - ref-filter: export ref_kind_from_refname()
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()
 (this branch is used by kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git repo structure", a new command.

 Will merge to 'next'?
 cf. <eesy5qhqzi56qrzv7wlpenxag23l2zykakvpmr6p5rnak6cril@ap3rugp44bcz>
 source: <20251021182601.2687284-1-jltobler@gmail.com>


* ps/maintenance-geometric (2025-10-23) 11 commits
 - builtin/maintenance: introduce "geometric" strategy
 - builtin/maintenance: make "gc" strategy accessible
 - builtin/maintenance: extend "maintenance.strategy" to manual maintenance
 - builtin/maintenance: run maintenance tasks depending on type
 - builtin/maintenance: improve readability of strategies
 - builtin/maintenance: don't silently ignore invalid strategy
 - builtin/maintenance: make the geometric factor configurable
 - builtin/maintenance: introduce "geometric-repack" task
 - builtin/gc: make `too_many_loose_objects()` reusable without GC config
 - builtin/gc: remove global `repack` variable
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/maintenance-geometric
 (this branch uses tb/incremental-midx-part-3.1.)

 "git maintenance" command learns the "geometric" strategy where it
 avoids doing maintenance tasks that rebuilds everything from
 scratch.

 Will merge to 'next'.
 source: <20251024-pks-maintenance-geometric-strategy-v3-0-9b5b3bdb4387@pks.im>


* en/xdiff-cleanup-2 (2025-10-15) 9 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t

 Code clean-up.
 source: <pull.2070.git.git.1760563101.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* ps/symlink-symref-deprecation (2025-10-14) 1 commit
  (merged to 'next' on 2025-10-24 at b37ca35280)
 + refs/files: deprecate writing symrefs as symbolic links

 "Symlink symref" has been added to the list of things that will
 disappear at Git 3.0 boundary.

 Will merge to 'master'.
 source: <20251015-pks-ref-files-deprecate-symbolic-links-v2-1-0529ba48db41@pks.im>


* kh/doc-patch-id-1 (2025-10-13) 2 commits
 - doc: patch-id: convert to the modern synopsis style
 - Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1

 Will merge to 'next'.
 source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
 - t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 - t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 bugs are exposed in t1016, which needs to be addressed before this
 topic can move forward.

 On hold.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 source: <20240703153738.916469-1-tmz@pobox.com>


* cc/fast-import-strip-signed-tags (2025-10-13) 5 commits
  (merged to 'next' on 2025-10-22 at c25f8aa54a)
 + fast-import: add '--signed-tags=<mode>' option
 + fast-export: handle all kinds of tag signatures
 + t9350: properly count annotated tags
 + lib-gpg: allow tests with GPGSM or GPGSSH prereq first
 + doc: git-tag: stop focusing on GPG signed tags

 "git fast-import" is taught to handle signed tags, just like it
 recently learned to handle signed commits, in different ways.

 Will merge to 'master'.
 source: <20251013084857.1646783-1-christian.couder@gmail.com>


* ps/ci-rust (2025-10-14) 8 commits
  (merged to 'next' on 2025-10-22 at 89129fa777)
 + rust: support for Windows
 + ci: verify minimum supported Rust version
 + ci: check for common Rust mistakes via Clippy
 + rust/varint: add safety comments
 + ci: check formatting of our Rust code
 + ci: deduplicate calls to `apt-get update`
 + Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
 + Merge branch 'ps/rust-balloon' into ps/ci-rust
 (this branch is used by ps/rust-cbindgen and qj/doc-first-contrib-check-lore.)

 CI improvements to handle the recent Rust integration better.

 Will merge to 'master'.
 source: <20251015-b4-pks-ci-rust-v3-0-13810af33bd5@pks.im>


* ps/ref-peeled-tags (2025-10-23) 16 commits
 - ref-filter: parse objects on demand
 - ref-filter: detect broken tags when dereferencing them
 - refs: don't store peeled object IDs for invalid tags
 - object: add flag to `peel_object()` to verify object type
 - refs: drop infrastructure to peel via iterators
 - refs: drop `current_ref_iter` hack
 - builtin/show-ref: convert to use `reference_get_peeled_oid()`
 - ref-filter: propagate peeled object ID
 - upload-pack: convert to use `reference_get_peeled_oid()`
 - refs: expose peeled object ID via the iterator
 - refs: refactor reference status flags
 - refs: fully reset `struct ref_iterator::ref` on iteration
 - refs: introduce `.ref` field for the base iterator
 - refs: introduce wrapper struct for `each_ref_fn`
 - Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure and tb/incremental-midx-part-3.1.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will merge to 'next' after base topics are merged.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
  (merged to 'next' on 2025-10-24 at e2f6fba6fe)
 + packfile: rename `packfile_store_get_all_packs()`
 + packfile: introduce macro to iterate through packs
 + packfile: drop `packfile_store_get_packs()`
 + builtin/grep: simplify how we preload packs
 + builtin/gc: convert to use `packfile_store_get_all_packs()`
 + object-name: convert to use `packfile_store_get_all_packs()`
 + Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch uses tb/incremental-midx-part-3.1.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.

 Will merge to 'master'.
 source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>


* je/doc-data-model (2025-10-20) 2 commits
 - SQUASH??? work around AsciiDoc xml that does not validate
 - doc: add a explanation of Git's data model

 Add a new manual that describes the data model.

 Expecting a reroll.
 cf. <0eb276ef-7b1a-4e79-93da-13a83226aa01@app.fastmail.com>
 source: <pull.1981.v3.git.1760476346040.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.1 (2025-10-15) 50 commits
  (merged to 'next' on 2025-10-22 at e78054f5a0)
 + builtin/repack.c: clean up unused `#include`s
 + repack: move `write_cruft_pack()` out of the builtin
 + repack: move `write_filtered_pack()` out of the builtin
 + repack: move `pack_kept_objects` to `struct pack_objects_args`
 + repack: move `finish_pack_objects_cmd()` out of the builtin
 + builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 + repack: extract `write_pack_opts_is_local()`
 + repack: move `find_pack_prefix()` out of the builtin
 + builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 + builtin/repack.c: introduce `struct write_pack_opts`
 + repack: 'write_midx_included_packs' API from the builtin
 + builtin/repack.c: inline packs within `write_midx_included_packs()`
 + builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 + builtin/repack.c: inline `remove_redundant_bitmaps()`
 + builtin/repack.c: reorder `remove_redundant_bitmaps()`
 + repack: keep track of MIDX pack names using existing_packs
 + builtin/repack.c: use a string_list for 'midx_pack_names'
 + builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 + builtin/repack.c: remove ref snapshotting from builtin
 + repack: remove pack_geometry API from the builtin
 + builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 + builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 + builtin/repack.c: rename various pack_geometry functions
 + builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 + builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 + repack: remove 'generated_pack' API from the builtin
 + builtin/repack.c: provide pack locations to `generated_pack_install()`
 + builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 + builtin/repack.c: factor out "generated_pack_install"
 + builtin/repack.c: rename "struct generated_pack_data"
 + repack: remove 'existing_packs' API from the builtin
 + builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 + builtin/repack.c: pass "packdir" when removing packs
 + repack: remove 'remove_redundant_pack' from the builtin
 + builtin/repack.c: rename many 'struct existing_packs' functions
 + repack: remove 'prepare_pack_objects' from the builtin
 + repack: move 'delta_base_offset' to 'struct pack_objects_args'
 + builtin/repack.c: pass both pack_objects args to repack_config
 + repack: introduce new compilation unit
 + builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 + builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 + builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 + builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 + builtin/repack.c: avoid "the_hash_algo" when deleting packs
 + builtin/repack.c: avoid "the_repository" when repacking promisor objects
 + builtin/repack.c: avoid "the_repository" when removing packs
 + builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 + builtin/repack.c: avoid "the_repository" in existing packs API
 + builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 + Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by kn/refs-optim-cleanup, ps/maintenance-geometric, ps/ref-peeled-tags and ps/remove-packfile-store-get-packs.)

 Clean-up "git repack" machinery to prepare for incremental update
 of midx files.

 Will merge to 'master'.
 source: <cover.1760567210.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
 - SubmittingPatches: add section about AI

 AI guidelines.

 Will merge to 'next'.
 cf. <xmqqv7ki1xf1.fsf@gitster.g>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-21) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: parse commits before dereferencing them
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.
 source: <20251021-b4-pks-history-builtin-v5-0-78d23f578fe6@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* sa/replay-atomic-ref-updates (2025-10-22) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Expecting a (hopefully small and final) reroll.
 cf. <xmqqzf9encl1.fsf@gitster.g>
 source: <20251022185045.29256-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <878qh4qxsl.fsf@gentoo.mail-host-address-is-not-set>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


* ds/sparse-checkout-clean (2025-10-20) 8 commits
  (merged to 'next' on 2025-10-20 at afc50f3401)
 + sparse-index: improve advice message instructions
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Will merge to 'master'.
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.

* lc/rebase-trailer (2025-08-03) 2 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Has been expecting a reroll for way too long.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Has been expecting a reroll for way too long.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>


^ permalink raw reply	[relevance 23%]

* Re: What's cooking in git.git (Oct 2025, #08; Thu, 23)
  @ 2025-10-24 16:06 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-24 16:06 UTC (permalink / raw)
  To: Jeff King; +Cc: git

Jeff King <peff@peff.net> writes:

> On Thu, Oct 23, 2025 at 04:36:01PM -0700, Junio C Hamano wrote:
>
>> * jc/diff-from-contents-fix (2025-10-22) 1 commit
>>   (merged to 'next' on 2025-10-23 at fae07d2113)
>>  + diff: make sure the other caller of diff_flush_patch_quietly() is silent
>>  (this branch is used by ly/diff-name-only-with-diff-from-content; uses jk/diff-from-contents-fix.)
>> 
>>  The code to squelch output from "git diff -w --name-status"
>>  etc. for paths that "git diff -w -p" would have stayed silent
>>  leaked output from dry-run patch generation, which has been
>>  corrected.
>> 
>>  Will merge to 'master'.
>>  source: <xmqqy0p4wcac.fsf@gitster.g>
>
> OK, looks like you picked up the fix from the last round of discussion.
> Good. Is this destined for 'maint'? My patch fixed the regression from
> v2.51.1 with "--quiet", but I think there is still one for "-w --raw",
> etc.

The plan is to merge "j?/diff-from-contents-fix" down to 'maint';
any other changes that tweak dry-run are to be done 'next' down to
'master' but not to 'maint' as a longer term "true fix".



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Oct 2025, #08; Thu, 23)
@ 2025-10-23 23:36 24% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-10-23 23:36 UTC (permalink / raw)
  To: git

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

* bc/sha1-256-interop-01 (2025-10-09) 9 commits
  (merged to 'next' on 2025-10-14 at c571bab975)
 + t1010: use BROKEN_OBJECTS prerequisite
 + t: allow specifying compatibility hash
 + fsck: consider gpgsig headers expected in tags
 + rev-parse: allow printing compatibility hash
 + docs: add documentation for loose objects
 + docs: improve ambiguous areas of pack format documentation
 + docs: reflect actual double signature for tags
 + docs: update offset order for pack index v3
 + docs: update pack index v3 format

 The beginning of SHA1-SHA256 interoperability work.
 source: <20251009215626.3089287-1-sandals@crustytoothpaste.net>


* je/doc-pull (2025-10-15) 4 commits
  (merged to 'next' on 2025-10-16 at 71e7a0cac0)
 + doc: git-pull: clarify how to exit a conflicted merge
 + doc: git-pull: delete the example
 + doc: git-pull: clarify options for integrating remote branch
 + doc: git-pull: move <repository> and <refspec> params

 Documentation updates.
 source: <pull.1976.v3.git.1760534011.gitgitgadget@gmail.com>


* js/ci-github-actions-update (2025-10-16) 4 commits
  (merged to 'next' on 2025-10-17 at 6fa7439b70)
 + build(deps): bump actions/github-script from 7 to 8
 + build(deps): bump actions/setup-python from 5 to 6
 + build(deps): bump actions/checkout from 4 to 5
 + build(deps): bump actions/download-artifact from 4 to 5

 CI update.
 source: <pull.1990.git.1760629692.gitgitgadget@gmail.com>


* so/t2401-use-test-path-helpers (2025-10-15) 1 commit
  (merged to 'next' on 2025-10-16 at b6fe4d2222)
 + t2401: update path checks using test_path helpers

 Test modernization.
 source: <20251015140329.13691-2-solobarine@gmail.com>

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

* ey/commit-graph-changed-paths-config (2025-10-17) 1 commit
  (merged to 'next' on 2025-10-23 at 48fd936ff1)
 + commit-graph: add new config for changed-paths & recommend it in scalar

 A new configuration variable commitGraph.changedPaths allows to
 turn "--changed-paths" on by default for "git commit-graph".

 Will merge to 'master'.
 source: <pull.1983.v2.git.1760734739642.gitgitgadget@gmail.com>


* jc/diff-from-contents-fix (2025-10-22) 1 commit
  (merged to 'next' on 2025-10-23 at fae07d2113)
 + diff: make sure the other caller of diff_flush_patch_quietly() is silent
 (this branch is used by ly/diff-name-only-with-diff-from-content; uses jk/diff-from-contents-fix.)

 The code to squelch output from "git diff -w --name-status"
 etc. for paths that "git diff -w -p" would have stayed silent
 leaked output from dry-run patch generation, which has been
 corrected.

 Will merge to 'master'.
 source: <xmqqy0p4wcac.fsf@gitster.g>


* ob/gpg-interface-cleanup (2025-10-23) 2 commits
 - gpg-interface: do not use misdesigned strbuf_split*()
 - gpg-interface: do not use misdesigned strbuf_split*()

 strbuf_split*() to split a string into multiple strbufs is often a
 wrong API to use.  A few uses of it have been removed by
 simplifying the code.

 Will merge to 'next'.
 source: <cover.1761217100.git.belkid98@gmail.com>


* rz/bisect-help-unknown (2025-10-22) 1 commit
 - bisect: fix handling of `help` and invalid subcommands

 "git bisect" command did not react correctly to "git bisect help"
 and "git bisect unknown", which has been corrected.

 Will merge to 'next'?
 source: <pull.2078.git.git.1761122173126.gitgitgadget@gmail.com>


* ps/rust-cbindgen (2025-10-23) 4 commits
 - rust: generate bindings via cbindgen
 - meson: rename Rust library target
 - ci: use Debian instead of deprecated i386/ubuntu
 - Merge branch 'ps/ci-rust' into ps/rust-cbindgen
 (this branch uses ps/ci-rust.)

 Introduce cbindgen in the build framework to help interfacing with
 Rust.

 Comments?
 source: <20251023-b4-pks-rust-cbindgen-v1-0-c19b61b03127@pks.im>


* ps/t7528-ssh-agent-uds-workaround (2025-10-23) 1 commit
  (merged to 'next' on 2025-10-23 at 9642f0746a)
 + t7528: work around ETOOMANY in OpenSSH 10.1 and newer

 Recent OpenSSH creates the Unix domain socket to communicate with
 ssh-agent under $HOME instead of /tmp, which causes our test to
 fail doe to overly long pathname in our test environment, which has
 been worked around by using "ssh-agent -T".

 Will merge to 'master'.
 source: <20251023-b4-pks-t7528-ssh-agent-socket-name-too-long-v1-1-f15eeec199f3@pks.im>


* jk/match-pathname-fix (2025-10-13) 1 commit
 - match_pathname(): give fnmatch one char of prefix context

 The wildmatch code had a corner case bug that mistakenly makes
 "foo**/bar" match with "foobar", which has been corrected.

 Will merge to 'next'?
 source: <20251014003404.GC1507@coredump.intra.peff.net>

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

* js/t7500-pwd-windows-fix (2025-10-20) 1 commit
  (merged to 'next' on 2025-10-20 at d3996041e8)
 + t7500: fix tests with absolute path following ":(optional)" on Windows

 Test fix.

 Will merge to 'master'.
 source: <6a83c7d1-7cd4-432e-a0ab-7b18ce3af08d@kdbg.org>


* kf/log-shortlog-completion-fix (2025-10-20) 1 commit
 - completion: complete some 'git log' options

 "git shortlog" knows "--committer" and "--author" options, which
 the command line completion (in contrib/) did not handle well,
 which has been corrected.

 Will merge to 'next'?
 source: <pull.2073.v2.git.git.1760981577441.gitgitgadget@gmail.com>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
 - t/pack-refs-tests: move the 'test_done' to callees
 - refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 - refs: move to using the '.optimize' functions
 - Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch uses jt/repo-structure, ps/ref-peeled-tags and tb/incremental-midx-part-3.1.)

 Code clean-up.

 Will merge to 'next' after base topics are merged.
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-20) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Expecting a reroll.
 cf. <aPcduvnjD0yphja2@pks.im>
 source: <20251020181943.6314-1-lucasseikioshiro@gmail.com>


* ly/diff-name-only-with-diff-from-content (2025-10-19) 3 commits
 - diff: stop output garbled message in dry run mode
 - Merge branch 'jc/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 - Merge branch 'jk/diff-from-contents-fix' into ly/diff-name-only-with-diff-from-content
 (this branch uses jc/diff-from-contents-fix and jk/diff-from-contents-fix.)

 Regression fixes for a topic that has already been merged.

 Will merge to 'next' after the dust settles.
 source: <20251019163024.18939-1-yldhome2d2@gmail.com>


* jt/repo-structure (2025-10-21) 7 commits
 - builtin/repo: add progress meter for structure stats
 - builtin/repo: add keyvalue and nul format for structure stats
 - builtin/repo: add object counts in structure output
 - builtin/repo: introduce structure subcommand
 - ref-filter: export ref_kind_from_refname()
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()
 (this branch is used by kn/refs-optim-cleanup and ps/ref-peeled-tags.)

 "git repo structure", a new command.

 Will merge to 'next'?
 cf. <eesy5qhqzi56qrzv7wlpenxag23l2zykakvpmr6p5rnak6cril@ap3rugp44bcz>
 source: <20251021182601.2687284-1-jltobler@gmail.com>


* ps/maintenance-geometric (2025-10-21) 10 commits
 - builtin/maintenance: introduce "geometric" strategy
 - builtin/maintenance: make "gc" strategy accessible
 - builtin/maintenance: extend "maintenance.strategy" to manual maintenance
 - builtin/maintenance: run maintenance tasks depending on type
 - builtin/maintenance: don't silently ignore invalid strategy
 - builtin/maintenance: make the geometric factor configurable
 - builtin/maintenance: introduce "geometric-repack" task
 - builtin/gc: make `too_many_loose_objects()` reusable without GC config
 - builtin/gc: remove global `repack` variable
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/maintenance-geometric
 (this branch uses tb/incremental-midx-part-3.1.)

 "git maintenance" command learns the "geometric" strategy where it
 avoids doing maintenance tasks that rebuilds everything from
 scratch.

 Comments?
 source: <20251021-pks-maintenance-geometric-strategy-v2-0-f0d727832b80@pks.im>


* rs/add-patch-document-p-for-pager (2025-10-21) 1 commit
  (merged to 'next' on 2025-10-22 at 7937ae0274)
 + add-patch: fully document option P

 Show 'P'ipe command in "git add -p".

 Will merge to 'master'.
 source: <0188c766-d788-476d-a4d4-f95a6f59b31b@web.de>


* tb/unicode-width-table-17 (2025-10-21) 1 commit
  (merged to 'next' on 2025-10-22 at 6382b8bd44)
 + unicode: update the width tables to Unicode 17

 Unicode width table update.

 Will merge to 'master'.
 source: <20251021094849.93284-1-tboegi@web.de>


* en/xdiff-cleanup-2 (2025-10-15) 9 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t

 Code clean-up.
 source: <pull.2070.git.git.1760563101.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Expecting a reroll.
 cf. <8099e7ef-2673-407e-8cca-e6b566b99549@app.fastmail.com>
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* jk/diff-from-contents-fix (2025-10-17) 2 commits
  (merged to 'next' on 2025-10-20 at 19442a804e)
 + diff: restore redirection to /dev/null for diff_from_contents
 + Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-from-contents-fix
 (this branch is used by jc/diff-from-contents-fix and ly/diff-name-only-with-diff-from-content.)

 Recently we attempted to improve "git diff -w" and friends to
 handle cases where patch output would be suppressed, but it
 introduced a bug that emits unnecessary output, which has been
 corrected.

 Will merge to 'master' and then to 'maint'.
 source: <20251017083641.GB4073661@coredump.intra.peff.net>


* jk/status-z-short-fix (2025-10-17) 1 commit
  (merged to 'next' on 2025-10-20 at 0d649c97b7)
 + status: make coloring of "-z --short" consistent

 The "--short" option of "git status" that meant output for humans
 and "-z" option to show NUL delimited output format did not mix
 well, and colored some but not all things.  The command has been
 updated to color all elements consistently in such a case.

 Will merge to 'master'.
 source: <20251017084455.GA4096702@coredump.intra.peff.net>


* tu/credential-makefile-updates (2025-10-20) 1 commit
  (merged to 'next' on 2025-10-22 at 1a8d65324c)
 + contrib/credential: harmonize Makefiles

 Build procedure for a few credential helpers (in contrib/) have
 been updated.

 Will merge to 'master'.
 source: <0a61b0b3-365b-c198-6afd-f26fcd5a9c20@mailbox.tu-dresden.de>


* ps/symlink-symref-deprecation (2025-10-14) 1 commit
 - refs/files: deprecate writing symrefs as symbolic links

 "Symlink symref" has been added to the list of things that will
 disappear at Git 3.0 boundary.

 Will merge to 'next'.
 source: <20251014-pks-ref-files-deprecate-symbolic-links-v1-1-4bcd6a4ef6f5@pks.im>


* kh/doc-patch-id-1 (2025-10-13) 2 commits
 - doc: patch-id: convert to the modern synopsis style
 - Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1

 Will merge to 'next'?
 source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
 - t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 - t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 bugs are exposed in t1016, which needs to be addressed before this
 topic can move forward.

 On hold.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 source: <20240703153738.916469-1-tmz@pobox.com>


* jc/t1016-setup-fix (2025-10-10) 1 commit
 - t1016: make sure to use specified GPG

 GPG signing test set-up has been broken for a year, which has been
 corrected.

 Will merge to 'next'.
 source: <xmqqsefq7947.fsf@gitster.g>


* cc/fast-import-strip-signed-tags (2025-10-13) 5 commits
  (merged to 'next' on 2025-10-22 at c25f8aa54a)
 + fast-import: add '--signed-tags=<mode>' option
 + fast-export: handle all kinds of tag signatures
 + t9350: properly count annotated tags
 + lib-gpg: allow tests with GPGSM or GPGSSH prereq first
 + doc: git-tag: stop focusing on GPG signed tags

 "git fast-import" is taught to handle signed tags, just like it
 recently learned to handle signed commits, in different ways.

 Will merge to 'master'.
 source: <20251013084857.1646783-1-christian.couder@gmail.com>


* ps/ci-rust (2025-10-14) 8 commits
  (merged to 'next' on 2025-10-22 at 89129fa777)
 + rust: support for Windows
 + ci: verify minimum supported Rust version
 + ci: check for common Rust mistakes via Clippy
 + rust/varint: add safety comments
 + ci: check formatting of our Rust code
 + ci: deduplicate calls to `apt-get update`
 + Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
 + Merge branch 'ps/rust-balloon' into ps/ci-rust
 (this branch is used by ps/rust-cbindgen.)

 CI improvements to handle the recent Rust integration better.

 Will merge to 'master'.
 source: <20251015-b4-pks-ci-rust-v3-0-13810af33bd5@pks.im>


* ps/ref-peeled-tags (2025-10-23) 16 commits
 - ref-filter: parse objects on demand
 - ref-filter: detect broken tags when dereferencing them
 - refs: don't store peeled object IDs for invalid tags
 - object: add flag to `peel_object()` to verify object type
 - refs: drop infrastructure to peel via iterators
 - refs: drop `current_ref_iter` hack
 - builtin/show-ref: convert to use `reference_get_peeled_oid()`
 - ref-filter: propagate peeled object ID
 - upload-pack: convert to use `reference_get_peeled_oid()`
 - refs: expose peeled object ID via the iterator
 - refs: refactor reference status flags
 - refs: fully reset `struct ref_iterator::ref` on iteration
 - refs: introduce `.ref` field for the base iterator
 - refs: introduce wrapper struct for `each_ref_fn`
 - Merge branch 'jt/repo-structure' into ps/ref-peeled-tags
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/ref-peeled-tags
 (this branch is used by kn/refs-optim-cleanup; uses jt/repo-structure and tb/incremental-midx-part-3.1.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Will merge to 'next' after base topics are merged.
 source: <20251023-b4-pks-ref-filter-skip-parsing-objects-v4-0-2be68ce82c9a@pks.im>


* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
 - packfile: rename `packfile_store_get_all_packs()`
 - packfile: introduce macro to iterate through packs
 - packfile: drop `packfile_store_get_packs()`
 - builtin/grep: simplify how we preload packs
 - builtin/gc: convert to use `packfile_store_get_all_packs()`
 - object-name: convert to use `packfile_store_get_all_packs()`
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch uses tb/incremental-midx-part-3.1.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.

 Will merge to 'next' after tb/incremental-midx-part-3.1 settles.
 source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>


* je/doc-data-model (2025-10-20) 2 commits
 - SQUASH??? work around AsciiDoc xml that does not validate
 - doc: add a explanation of Git's data model

 Add a new manual that describes the data model.

 Expecting a reroll.
 cf. <0eb276ef-7b1a-4e79-93da-13a83226aa01@app.fastmail.com>
 source: <pull.1981.v3.git.1760476346040.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.1 (2025-10-15) 50 commits
  (merged to 'next' on 2025-10-22 at e78054f5a0)
 + builtin/repack.c: clean up unused `#include`s
 + repack: move `write_cruft_pack()` out of the builtin
 + repack: move `write_filtered_pack()` out of the builtin
 + repack: move `pack_kept_objects` to `struct pack_objects_args`
 + repack: move `finish_pack_objects_cmd()` out of the builtin
 + builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 + repack: extract `write_pack_opts_is_local()`
 + repack: move `find_pack_prefix()` out of the builtin
 + builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 + builtin/repack.c: introduce `struct write_pack_opts`
 + repack: 'write_midx_included_packs' API from the builtin
 + builtin/repack.c: inline packs within `write_midx_included_packs()`
 + builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 + builtin/repack.c: inline `remove_redundant_bitmaps()`
 + builtin/repack.c: reorder `remove_redundant_bitmaps()`
 + repack: keep track of MIDX pack names using existing_packs
 + builtin/repack.c: use a string_list for 'midx_pack_names'
 + builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 + builtin/repack.c: remove ref snapshotting from builtin
 + repack: remove pack_geometry API from the builtin
 + builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 + builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 + builtin/repack.c: rename various pack_geometry functions
 + builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 + builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 + repack: remove 'generated_pack' API from the builtin
 + builtin/repack.c: provide pack locations to `generated_pack_install()`
 + builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 + builtin/repack.c: factor out "generated_pack_install"
 + builtin/repack.c: rename "struct generated_pack_data"
 + repack: remove 'existing_packs' API from the builtin
 + builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 + builtin/repack.c: pass "packdir" when removing packs
 + repack: remove 'remove_redundant_pack' from the builtin
 + builtin/repack.c: rename many 'struct existing_packs' functions
 + repack: remove 'prepare_pack_objects' from the builtin
 + repack: move 'delta_base_offset' to 'struct pack_objects_args'
 + builtin/repack.c: pass both pack_objects args to repack_config
 + repack: introduce new compilation unit
 + builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 + builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 + builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 + builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 + builtin/repack.c: avoid "the_hash_algo" when deleting packs
 + builtin/repack.c: avoid "the_repository" when repacking promisor objects
 + builtin/repack.c: avoid "the_repository" when removing packs
 + builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 + builtin/repack.c: avoid "the_repository" in existing packs API
 + builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 + Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by kn/refs-optim-cleanup, ps/maintenance-geometric, ps/ref-peeled-tags and ps/remove-packfile-store-get-packs.)

 Clean-up "git repack" machinery to prepare for incremental update
 of midx files.

 Will merge to 'master'.
 source: <cover.1760567210.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
 - SubmittingPatches: add section about AI

 AI guidelines.

 Will merge to 'next'?
 cf. <xmqqv7ki1xf1.fsf@gitster.g>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-21) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: parse commits before dereferencing them
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.
 source: <20251021-b4-pks-history-builtin-v5-0-78d23f578fe6@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Expecting a reroll.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* rj/doc-technical-fixes (2025-10-16) 4 commits
  (merged to 'next' on 2025-10-23 at 0af15d1860)
 + doc: add large-object-promisors.adoc to the docs build
 + doc: commit-graph.adoc: fix up some formatting
 + doc: sparse-checkout.adoc: fix asciidoc warnings
 + doc: remembering-renames.adoc: fix asciidoc warnings

 Documentation mark-up fixes.

 Will merge to 'master'.
 source: <20251016200301.1595204-1-ramsay@ramsayjones.plus.com>


* sa/replay-atomic-ref-updates (2025-10-22) 3 commits
 - replay: add replay.refAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Will merge to 'next'?
 source: <20251022185045.29256-1-siddharthasthana31@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <878qh4qxsl.fsf@gentoo.mail-host-address-is-not-set>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


* ds/sparse-checkout-clean (2025-10-20) 8 commits
  (merged to 'next' on 2025-10-20 at afc50f3401)
 + sparse-index: improve advice message instructions
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Will merge to 'master'.
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.

* lc/rebase-trailer (2025-08-03) 2 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Has been expecting a reroll for way too long.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Has been expecting a reroll for way too long.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>


^ permalink raw reply	[relevance 24%]

* What's cooking in git.git (Oct 2025, #07; Tue, 21)
@ 2025-10-22  2:16 26% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-22  2:16 UTC (permalink / raw)
  To: git

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

* dk/stash-apply-index (2025-10-06) 1 commit
  (merged to 'next' on 2025-10-13 at 2187046f6c)
 + doc: explain the impact of stash.index on --autostash options

 Doc update.
 source: <d4a277b6b0695d86636562f4c07efae17f9249f9.1759755379.git.ben.knoble+github@gmail.com>


* js/mingw-includes-cleanup (2025-10-09) 2 commits
  (merged to 'next' on 2025-10-13 at b7144c1feb)
 + mingw: order `#include`s alphabetically
 + mingw: avoid relative `#include`s

 Code clean-up.
 source: <pull.1985.git.1759995961.gitgitgadget@gmail.com>


* js/unreachable-workaround-for-no-symlink-head (2025-10-09) 1 commit
  (merged to 'next' on 2025-10-13 at 0e970d5e4e)
 + refs: forbid clang to complain about unreachable code

 Code clean-up.
 source: <pull.1984.git.1759995982220.gitgitgadget@gmail.com>


* kh/doc-continued-paragraph-fix (2025-10-08) 1 commit
  (merged to 'next' on 2025-10-13 at e66316f041)
 + doc: fix accidental literal blocks

 Doc mark-up fixes.
 source: <7a955ecb1b5.1759923933.git.code@khaugsbakk.name>


* tb/cat-file-objectmode-update (2025-10-13) 1 commit
  (merged to 'next' on 2025-10-13 at 4fd0f1b5b5)
 + builtin/cat-file.c: simplify calling `report_object_status()`

 Code clean-up.
 source: <9236fa6e654a59337266430a2a8807da21210cd4.1760392502.git.me@ttaylorr.com>

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

* js/t7500-pwd-windows-fix (2025-10-20) 1 commit
  (merged to 'next' on 2025-10-20 at d3996041e8)
 + t7500: fix tests with absolute path following ":(optional)" on Windows

 Test fix.

 Will merge to 'master'.
 source: <6a83c7d1-7cd4-432e-a0ab-7b18ce3af08d@kdbg.org>


* kf/log-shortlog-completion-fix (2025-10-20) 1 commit
 - completion: complete some 'git log' options

 "git shortlog" knows "--committer" and "--author" options, which
 the command line completion (in contrib/) did not handle well,
 which has been corrected.

 Will merge to 'next'?
 source: <pull.2073.v2.git.git.1760981577441.gitgitgadget@gmail.com>


* kn/refs-optim-cleanup (2025-10-20) 4 commits
 . t/pack-refs-tests: move the 'test_done' to callees
 . refs: rename 'pack_refs_opts' to 'refs_optimize_opts'
 . refs: move to using the '.optimize' functions
 . Merge branch 'ps/ref-peeled-tags' into kn/refs-optim-cleanup
 (this branch uses ps/ref-peeled-tags.)

 Code clean-up.

 Comments?
 source: <20251020-refs-code-cleanup-v2-0-f5349ed0f6a5@gmail.com>


* lo/repo-info-all (2025-10-20) 2 commits
 - repo: add --all to git-repo-info
 - repo: factor out field printing to dedicated function

 "git repo info" learned "--all" option.

 Comments?
 cf. <aPcduvnjD0yphja2@pks.im>
 source: <20251020181943.6314-1-lucasseikioshiro@gmail.com>


* ly/diff-name-only-with-diff-from-content (2025-10-19) 1 commit
  (merged to 'next' on 2025-10-20 at 8a271653ce)
 + diff: stop output garbled message in dry run mode

 Regression fixes for a topic that has already been merged.

 Will merge to 'master'.
 source: <20251019163024.18939-1-yldhome2d2@gmail.com>


* jt/repo-structure (2025-10-21) 7 commits
 - builtin/repo: add progress meter for structure stats
 - builtin/repo: add keyvalue and nul format for structure stats
 - builtin/repo: add object counts in structure output
 - builtin/repo: introduce structure subcommand
 - ref-filter: export ref_kind_from_refname()
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()

 "git repo structure", a new command.

 Comments?
 source: <20251021182601.2687284-1-jltobler@gmail.com>


* ps/maintenance-geometric (2025-10-21) 10 commits
 - builtin/maintenance: introduce "geometric" strategy
 - builtin/maintenance: make "gc" strategy accessible
 - builtin/maintenance: extend "maintenance.strategy" to manual maintenance
 - builtin/maintenance: run maintenance tasks depending on type
 - builtin/maintenance: don't silently ignore invalid strategy
 - builtin/maintenance: make the geometric factor configurable
 - builtin/maintenance: introduce "geometric-repack" task
 - builtin/gc: make `too_many_loose_objects()` reusable without GC config
 - builtin/gc: remove global `repack` variable
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/maintenance-geometric
 (this branch uses tb/incremental-midx-part-3.1.)

 "git maintenance" command learns the "geometric" strategy where it
 avoids doing maintenance tasks that rebuilds everything from
 scratch.

 Comments?
 source: <20251021-pks-maintenance-geometric-strategy-v2-0-f0d727832b80@pks.im>


* rs/add-patch-document-p-for-pager (2025-10-21) 1 commit
 - add-patch: fully document option P

 Show 'P'ipe command in "git add -p".

 Will merge to 'next'.
 source: <0188c766-d788-476d-a4d4-f95a6f59b31b@web.de>


* tb/unicode-width-table-17 (2025-10-21) 1 commit
 - unicode: update the width tables to Unicode 17

 Unicode width table update.

 Will merge to 'next'.
 source: <20251021094849.93284-1-tboegi@web.de>

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

* so/t2401-use-test-path-helpers (2025-10-15) 1 commit
  (merged to 'next' on 2025-10-16 at b6fe4d2222)
 + t2401: update path checks using test_path helpers

 Test modernization.

 Will merge to 'master'.
 source: <20251015140329.13691-2-solobarine@gmail.com>


* en/xdiff-cleanup-2 (2025-10-15) 9 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t

 Code clean-up.

 Comments?
 source: <pull.2070.git.git.1760563101.gitgitgadget@gmail.com>


* js/ci-github-actions-update (2025-10-16) 4 commits
  (merged to 'next' on 2025-10-17 at 6fa7439b70)
 + build(deps): bump actions/github-script from 7 to 8
 + build(deps): bump actions/setup-python from 5 to 6
 + build(deps): bump actions/checkout from 4 to 5
 + build(deps): bump actions/download-artifact from 4 to 5

 CI update.

 Will merge to 'master'.
 source: <pull.1990.git.1760629692.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Comments?
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* jk/diff-from-contents-fix (2025-10-17) 2 commits
  (merged to 'next' on 2025-10-20 at 19442a804e)
 + diff: restore redirection to /dev/null for diff_from_contents
 + Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-from-contents-fix

 Recently we attempted to improve "git diff -w" and friends to
 handle cases where patch output would be suppressed, but it
 introduced a bug that emits unnecessary output, which has been
 corrected.

 Will merge to 'master' and then to 'maint'.
 source: <20251017083641.GB4073661@coredump.intra.peff.net>


* jk/status-z-short-fix (2025-10-17) 1 commit
  (merged to 'next' on 2025-10-20 at 0d649c97b7)
 + status: make coloring of "-z --short" consistent

 The "--short" option of "git status" that meant output for humans
 and "-z" option to show NUL delimited output format did not mix
 well, and colored some but not all things.  The command has been
 updated to color all elements consistently in such a case.

 Will merge to 'master'.
 source: <20251017084455.GA4096702@coredump.intra.peff.net>


* tu/credential-makefile-updates (2025-10-20) 1 commit
 - contrib/credential: harmonize Makefiles

 Build procedure for a few credential helpers (in contrib/) have
 been updated.

 Will merge to 'next'.
 source: <0a61b0b3-365b-c198-6afd-f26fcd5a9c20@mailbox.tu-dresden.de>


* ps/symlink-symref-deprecation (2025-10-14) 1 commit
 - refs/files: deprecate writing symrefs as symbolic links

 "Symlink symref" has been added to the list of things that will
 disappear at Git 3.0 boundary.

 Comments?
 source: <20251014-pks-ref-files-deprecate-symbolic-links-v1-1-4bcd6a4ef6f5@pks.im>


* kh/doc-patch-id-1 (2025-10-13) 2 commits
 - doc: patch-id: convert to the modern synopsis style
 - Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1

 Will merge to 'next'?
 source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
 - t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 - t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 bugs are exposed in t1016, which needs to be addressed before this
 topic can move forward.

 On hold.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 source: <20240703153738.916469-1-tmz@pobox.com>


* jc/t1016-setup-fix (2025-10-10) 1 commit
 - t1016: make sure to use specified GPG

 GPG signing test set-up has been broken for a year, which has been
 corrected.

 Comments?
 source: <xmqqsefq7947.fsf@gitster.g>


* cc/fast-import-strip-signed-tags (2025-10-13) 5 commits
 - fast-import: add '--signed-tags=<mode>' option
 - fast-export: handle all kinds of tag signatures
 - t9350: properly count annotated tags
 - lib-gpg: allow tests with GPGSM or GPGSSH prereq first
 - doc: git-tag: stop focusing on GPG signed tags

 "git fast-import" is taught to handle signed tags, just like it
 recently learned to handle signed commits, in different ways.

 Will merge to 'next'.
 source: <20251013084857.1646783-1-christian.couder@gmail.com>


* ps/ci-rust (2025-10-14) 8 commits
 - rust: support for Windows
 - ci: verify minimum supported Rust version
 - ci: check for common Rust mistakes via Clippy
 - rust/varint: add safety comments
 - ci: check formatting of our Rust code
 - ci: deduplicate calls to `apt-get update`
 - Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
 - Merge branch 'ps/rust-balloon' into ps/ci-rust

 CI improvements to handle the recent Rust integration better.

 Will merge to 'next'.
 source: <20251015-b4-pks-ci-rust-v3-0-13810af33bd5@pks.im>


* ps/ref-peeled-tags (2025-10-08) 14 commits
 . ref-filter: parse objects on demand
 . ref-filter: detect broken tags when dereferencing them
 . refs: don't store peeled object IDs for invalid tags
 . object: add flag to `peel_object()` to verify object type
 . refs: drop infrastructure to peel via iterators
 . refs: drop `current_ref_iter` hack
 . builtin/show-ref: convert to use `reference_get_peeled_oid()`
 . ref-filter: propagate peeled object ID
 . upload-pack: convert to use `reference_get_peeled_oid()`
 . refs: expose peeled object ID via the iterator
 . refs: refactor reference status flags
 . refs: fully reset `struct ref_iterator::ref` on iteration
 . refs: introduce `.ref` field for the base iterator
 . refs: introduce wrapper struct for `each_ref_fn`
 (this branch is used by kn/refs-optim-cleanup.)

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Tentatively kicked out of 'seen'.
 Needs larger merge-fix to adjust other topics to "struct reference".
 source: <20251008-b4-pks-ref-filter-skip-parsing-objects-v2-0-76e30d5c9542@pks.im>


* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
 - packfile: rename `packfile_store_get_all_packs()`
 - packfile: introduce macro to iterate through packs
 - packfile: drop `packfile_store_get_packs()`
 - builtin/grep: simplify how we preload packs
 - builtin/gc: convert to use `packfile_store_get_all_packs()`
 - object-name: convert to use `packfile_store_get_all_packs()`
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch uses tb/incremental-midx-part-3.1.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.

 Will merge to 'next' after tb/incremental-midx-part-3.1 settles.
 source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>


* je/doc-data-model (2025-10-20) 2 commits
 - SQUASH??? work around AsciiDoc xml that does not validate
 - doc: add a explanation of Git's data model

 Add a new manual that describes the data model.

 Comments?
 source: <pull.1981.v3.git.1760476346040.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.1 (2025-10-15) 50 commits
 - builtin/repack.c: clean up unused `#include`s
 - repack: move `write_cruft_pack()` out of the builtin
 - repack: move `write_filtered_pack()` out of the builtin
 - repack: move `pack_kept_objects` to `struct pack_objects_args`
 - repack: move `finish_pack_objects_cmd()` out of the builtin
 - builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 - repack: extract `write_pack_opts_is_local()`
 - repack: move `find_pack_prefix()` out of the builtin
 - builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 - builtin/repack.c: introduce `struct write_pack_opts`
 - repack: 'write_midx_included_packs' API from the builtin
 - builtin/repack.c: inline packs within `write_midx_included_packs()`
 - builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 - builtin/repack.c: inline `remove_redundant_bitmaps()`
 - builtin/repack.c: reorder `remove_redundant_bitmaps()`
 - repack: keep track of MIDX pack names using existing_packs
 - builtin/repack.c: use a string_list for 'midx_pack_names'
 - builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 - builtin/repack.c: remove ref snapshotting from builtin
 - repack: remove pack_geometry API from the builtin
 - builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 - builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 - builtin/repack.c: rename various pack_geometry functions
 - builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 - builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 - repack: remove 'generated_pack' API from the builtin
 - builtin/repack.c: provide pack locations to `generated_pack_install()`
 - builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 - builtin/repack.c: factor out "generated_pack_install"
 - builtin/repack.c: rename "struct generated_pack_data"
 - repack: remove 'existing_packs' API from the builtin
 - builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 - builtin/repack.c: pass "packdir" when removing packs
 - repack: remove 'remove_redundant_pack' from the builtin
 - builtin/repack.c: rename many 'struct existing_packs' functions
 - repack: remove 'prepare_pack_objects' from the builtin
 - repack: move 'delta_base_offset' to 'struct pack_objects_args'
 - builtin/repack.c: pass both pack_objects args to repack_config
 - repack: introduce new compilation unit
 - builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 - builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 - builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 - builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 - builtin/repack.c: avoid "the_hash_algo" when deleting packs
 - builtin/repack.c: avoid "the_repository" when repacking promisor objects
 - builtin/repack.c: avoid "the_repository" when removing packs
 - builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 - builtin/repack.c: avoid "the_repository" in existing packs API
 - builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 - Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by ps/maintenance-geometric and ps/remove-packfile-store-get-packs.)

 Clean-up "git repack" machinery to prepare for incremental update
 of midx files.

 Will merge to 'next'.
 source: <cover.1760567210.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
 - SubmittingPatches: add section about AI

 AI guidelines.

 Will merge to 'next'?
 cf. <xmqqv7ki1xf1.fsf@gitster.g>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-21) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: parse commits before dereferencing them
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.
 source: <20251021-b4-pks-history-builtin-v5-0-78d23f578fe6@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Under discussion.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* rj/doc-technical-fixes (2025-10-16) 4 commits
 - doc: add large-object-promisors.adoc to the docs build
 - doc: commit-graph.adoc: fix up some formatting
 - doc: sparse-checkout.adoc: fix asciidoc warnings
 - doc: remembering-renames.adoc: fix asciidoc warnings

 Documentation mark-up fixes.

 Will merge to 'next'?
 source: <20251016200301.1595204-1-ramsay@ramsayjones.plus.com>


* sa/replay-atomic-ref-updates (2025-10-14) 4 commits
 - SQAUASH??? t0450 band-aid
 - replay: add replay.defaultAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Expecting a reroll.
 source: <20251013183311.33329-1-siddharthasthana31@gmail.com>


* je/doc-pull (2025-10-15) 4 commits
  (merged to 'next' on 2025-10-16 at 71e7a0cac0)
 + doc: git-pull: clarify how to exit a conflicted merge
 + doc: git-pull: delete the example
 + doc: git-pull: clarify options for integrating remote branch
 + doc: git-pull: move <repository> and <refspec> params

 Documentation updates.

 Will merge to 'master'.
 source: <pull.1976.v3.git.1760534011.gitgitgadget@gmail.com>


* bc/sha1-256-interop-01 (2025-10-09) 9 commits
  (merged to 'next' on 2025-10-14 at c571bab975)
 + t1010: use BROKEN_OBJECTS prerequisite
 + t: allow specifying compatibility hash
 + fsck: consider gpgsig headers expected in tags
 + rev-parse: allow printing compatibility hash
 + docs: add documentation for loose objects
 + docs: improve ambiguous areas of pack format documentation
 + docs: reflect actual double signature for tags
 + docs: update offset order for pack index v3
 + docs: update pack index v3 format

 The beginning of SHA1-SHA256 interoperability work.

 Will merge to 'master'.
 source: <20251009215626.3089287-1-sandals@crustytoothpaste.net>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <20251006112518.3764240-1-adrian.ratiu@collabora.com>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


* ds/sparse-checkout-clean (2025-10-20) 8 commits
  (merged to 'next' on 2025-10-20 at afc50f3401)
 + sparse-index: improve advice message instructions
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Will merge to 'master'.
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.

* lc/rebase-trailer (2025-08-03) 2 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Has been expecting a reroll for way too long.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Has been expecting a reroll for way too long.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>


^ permalink raw reply	[relevance 26%]

* Re: What's cooking in git.git (Oct 2025, #06; Fri, 17)
  @ 2025-10-21 21:48 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-21 21:48 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

> On Mon, Oct 20, 2025 at 02:02:52PM -0700, Junio C Hamano wrote:
>> * ar/run-command-hook (2025-10-17) 10 commits
>> ...
>>  Comments?
>>  source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>
>
> I'll make sure tho give the current iteration another review today.

Thanks, very much appreciated.

>> * cc/fast-import-strip-signed-tags (2025-10-13) 5 commits
>> ...
>>  Will merge to 'next'?
>>  source: <20251013084857.1646783-1-christian.couder@gmail.com>
>
> Should be ready from my point of view. v2 already addressed all of
> my comments, and v3 clarified the documentation in one more case. So I'm
> happy with this version.

Yup, matches my feeling.

>> * ps/ci-rust (2025-10-14) 8 commits
>> ...
>>  Will merge to 'next'?
>>  source: <20251015-b4-pks-ci-rust-v3-0-13810af33bd5@pks.im>
>
> I think it should be ready. The 3rd version only saw a single minor
> fixup relative to the 2nd one.

OK.  CI changes are easy to handle as we would know breakage fairly
soon ;-)

>> * ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
>> ...
>>  Comments?
>>  source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>
>
> I think this series should be ready once the below series is merged
> down. v2 addressed all of Taylor's feedback and saw another positive
> review by Justin.

Yeah, relying on an in-flight topic has to block the topic until
the base solidifies, which I do not particularly like (as I can
easily screw up by merging the dependent and drag the base into
'next' before it is ready).  As the other one does look ready, it
should be OK as well.

>> * tb/incremental-midx-part-3.1 (2025-10-15) 50 commits
>> ...
>>  (this branch is used by ps/remove-packfile-store-get-packs.)
>> 
>>  Clean-up "git repack" machinery to prepare for incremental update
>>  of midx files.
>> 
>>  Will merge to 'next'?
>>  source: <cover.1760567210.git.me@ttaylorr.com>
>
> Yeah, I think this one is ready to go.

Thanks, concurred.



^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Oct 2025, #06; Fri, 17)
@ 2025-10-20 21:02 27% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-10-20 21:02 UTC (permalink / raw)
  To: git

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

* en/make-libgit-a (2025-10-02) 2 commits
  (merged to 'next' on 2025-10-10 at 913fc0337a)
 + make: delete REFTABLE_LIB, add reftable to LIB_OBJS
 + make: delete XDIFF_LIB, add xdiff to LIB_OBJS

 Instead of three library archives (one for git, one for reftable,
 and one for xdiff), roll everything into a single libgit.a archive.
 This would help later effort to FFI into Rust.
 
 source: <pull.2065.v2.git.git.1759447647.gitgitgadget@gmail.com>


* jk/diff-no-index-with-pathspec-fix (2025-09-24) 1 commit
  (merged to 'next' on 2025-10-10 at 75721dbc16)
 + diff --no-index: fix logic for paths ending in '/'

 An earlier addition to "git diff --no-index A B" to limit the
 output with pathspec after the two directories misbehaved when
 these directories were given with a trailing slash, which has been
 corrected.
 
 source: <20250924-jk-fix-no-index-path-with-slash-v1-1-6b2028c0de92@intel.com>


* rs/add-patch-options-fix (2025-10-06) 6 commits
  (merged to 'next' on 2025-10-10 at ef52e0377e)
 + add-patch: reset "permitted" at loop start
 + add-patch: let options a and d roll over like y and n
 + add-patch: let options k and K roll over like j and J
 + add-patch: let options y, n, j, and e roll over to next undecided
 + add-patch: document that option J rolls over
 + add-patch: improve help for options j, J, k, and K

 The code in "git add -p" and friends to iterate over hunks was
 riddled with bugs, which has been corrected.
 
 source: <fe8e8097-2b05-4dd2-a754-f59e4ba5f95a@web.de>


* tb/doc-submitting-patches (2025-10-07) 2 commits
  (merged to 'next' on 2025-10-10 at b63283990d)
 + SubmittingPatches: guidance for multi-series efforts
 + SubmittingPatches: extend release-notes experiment to topic names

 A few more things that patch authors can do to help maintainer to
 keep track of their topics better.
 
 source: <cover.1759873165.git.me@ttaylorr.com>

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

* so/t2401-use-test-path-helpers (2025-10-15) 1 commit
  (merged to 'next' on 2025-10-16 at b6fe4d2222)
 + t2401: update path checks using test_path helpers

 Test modernization.

 Will merge to 'master'.
 source: <20251015140329.13691-2-solobarine@gmail.com>


* en/xdiff-cleanup-2 (2025-10-15) 9 commits
 - xdiff: rename rindex -> reference_index
 - xdiff: change rindex from long to size_t in xdfile_t
 - xdiff: make xdfile_t.nreff a size_t instead of long
 - xdiff: make xdfile_t.nrec a size_t instead of long
 - xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 - xdiff: use unambiguous types in xdl_hash_record()
 - xdiff: use size_t for xrecord_t.size
 - xdiff: make xrecord_t.ptr a uint8_t instead of char
 - xdiff: use ssize_t for dstart/dend, make them last in xdfile_t

 Code clean-up.

 Comments?
 source: <pull.2070.git.git.1760563101.gitgitgadget@gmail.com>


* js/ci-github-actions-update (2025-10-16) 4 commits
  (merged to 'next' on 2025-10-17 at 6fa7439b70)
 + build(deps): bump actions/github-script from 7 to 8
 + build(deps): bump actions/setup-python from 5 to 6
 + build(deps): bump actions/checkout from 4 to 5
 + build(deps): bump actions/download-artifact from 4 to 5

 CI update.

 Will merge to 'master'.
 source: <pull.1990.git.1760629692.gitgitgadget@gmail.com>


* ar/run-command-hook (2025-10-17) 10 commits
 - receive-pack: convert receive hooks to hook API
 - receive-pack: convert update hooks to new API
 - hooks: allow callers to capture output
 - run-command: allow capturing of collated output
 - reference-transaction: use hook API instead of run-command
 - hook: allow overriding the ungroup option
 - transport: convert pre-push to hook API
 - hook: convert 'post-rewrite' hook in sequencer.c to hook API
 - hook: provide stdin via callback
 - run-command: add stdin callback for parallelization

 Use hook API to replace ad-hoc invocation of hook scripts with the
 run_command() API.

 Comments?
 source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>


* je/doc-reset (2025-10-17) 4 commits
 - doc: git-reset: clarify `git reset <pathspec>`
 - doc: git-reset: clarify `git reset [mode]`
 - doc: git-reset: clarify intro
 - doc: git-reset: reorder the forms

 Documentation updates.

 Comments?
 source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>


* jk/diff-from-contents-fix (2025-10-17) 2 commits
 - diff: restore redirection to /dev/null for diff_from_contents
 - Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-from-contents-fix

 Recently we attempted to improve "git diff -w" and friends to
 handle cases where patch output would be suppressed, but it
 introduced a bug that emits unnecessary output, which has been
 corrected.

 Will merge to 'next' and then to 'master' and then to 'maint'.
 source: <20251017083641.GB4073661@coredump.intra.peff.net>


* jk/status-z-short-fix (2025-10-17) 1 commit
 - status: make coloring of "-z --short" consistent

 The "--short" option of "git status" that meant output for humans
 and "-z" option to show NUL delimited output format did not mix
 well, and colored some but not all things.  The command has been
 updated to color all elements consistently in such a case.

 Will merge to 'next'.
 source: <20251017084455.GA4096702@coredump.intra.peff.net>

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

* tu/credential-makefile-updates (2025-10-10) 1 commit
 - contrib/credential: Amend and harmonize Makefiles

 Build procedure for a few credential helpers (in contrib/) have
 been updated.

 Expecting a reroll.
 source: <48d92664-41af-bb59-1844-7bb57f21924f@mailbox.tu-dresden.de>


* tb/cat-file-objectmode-update (2025-10-13) 1 commit
  (merged to 'next' on 2025-10-13 at 4fd0f1b5b5)
 + builtin/cat-file.c: simplify calling `report_object_status()`

 Code clean-up.

 Will merge to 'master'.
 source: <9236fa6e654a59337266430a2a8807da21210cd4.1760392502.git.me@ttaylorr.com>


* ps/symlink-symref-deprecation (2025-10-14) 1 commit
 - refs/files: deprecate writing symrefs as symbolic links

 "Symlink symref" has been added to the list of things that will
 disappear at Git 3.0 boundary.

 Comments?
 source: <20251014-pks-ref-files-deprecate-symbolic-links-v1-1-4bcd6a4ef6f5@pks.im>


* dk/stash-apply-index (2025-10-06) 1 commit
  (merged to 'next' on 2025-10-13 at 2187046f6c)
 + doc: explain the impact of stash.index on --autostash options

 Doc update.

 Will merge to 'master'.
 source: <d4a277b6b0695d86636562f4c07efae17f9249f9.1759755379.git.ben.knoble+github@gmail.com>


* js/mingw-includes-cleanup (2025-10-09) 2 commits
  (merged to 'next' on 2025-10-13 at b7144c1feb)
 + mingw: order `#include`s alphabetically
 + mingw: avoid relative `#include`s

 Code clean-up.

 Will merge to 'master'.
 source: <pull.1985.git.1759995961.gitgitgadget@gmail.com>


* js/unreachable-workaround-for-no-symlink-head (2025-10-09) 1 commit
  (merged to 'next' on 2025-10-13 at 0e970d5e4e)
 + refs: forbid clang to complain about unreachable code

 Code clean-up.

 Will merge to 'master'.
 source: <pull.1984.git.1759995982220.gitgitgadget@gmail.com>


* kh/doc-patch-id-1 (2025-10-13) 2 commits
 - doc: patch-id: convert to the modern synopsis style
 - Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1

 Will merge to 'next'?
 source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
 - t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 - t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 bugs are exposed in t1016, which needs to be addressed before this
 topic can move forward.

 On hold.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 source: <20240703153738.916469-1-tmz@pobox.com>


* jc/t1016-setup-fix (2025-10-10) 1 commit
 - t1016: make sure to use specified GPG

 GPG signing test set-up has been broken for a year, which has been
 corrected.

 Comments?
 source: <xmqqsefq7947.fsf@gitster.g>


* kh/doc-continued-paragraph-fix (2025-10-08) 1 commit
  (merged to 'next' on 2025-10-13 at e66316f041)
 + doc: fix accidental literal blocks

 Doc mark-up fixes.

 Will merge to 'master'.
 source: <7a955ecb1b5.1759923933.git.code@khaugsbakk.name>


* cc/fast-import-strip-signed-tags (2025-10-13) 5 commits
 - fast-import: add '--signed-tags=<mode>' option
 - fast-export: handle all kinds of tag signatures
 - t9350: properly count annotated tags
 - lib-gpg: allow tests with GPGSM or GPGSSH prereq first
 - doc: git-tag: stop focusing on GPG signed tags

 "git fast-import" is taught to handle signed tags, just like it
 recently learned to handle signed commits, in different ways.

 Will merge to 'next'?
 source: <20251013084857.1646783-1-christian.couder@gmail.com>


* ps/ci-rust (2025-10-14) 8 commits
 - rust: support for Windows
 - ci: verify minimum supported Rust version
 - ci: check for common Rust mistakes via Clippy
 - rust/varint: add safety comments
 - ci: check formatting of our Rust code
 - ci: deduplicate calls to `apt-get update`
 - Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
 - Merge branch 'ps/rust-balloon' into ps/ci-rust

 CI improvements to handle the recent Rust integration better.

 Will merge to 'next'?
 source: <20251015-b4-pks-ci-rust-v3-0-13810af33bd5@pks.im>


* ps/ref-peeled-tags (2025-10-08) 14 commits
 - ref-filter: parse objects on demand
 - ref-filter: detect broken tags when dereferencing them
 - refs: don't store peeled object IDs for invalid tags
 - object: add flag to `peel_object()` to verify object type
 - refs: drop infrastructure to peel via iterators
 - refs: drop `current_ref_iter` hack
 - builtin/show-ref: convert to use `reference_get_peeled_oid()`
 - ref-filter: propagate peeled object ID
 - upload-pack: convert to use `reference_get_peeled_oid()`
 - refs: expose peeled object ID via the iterator
 - refs: refactor reference status flags
 - refs: fully reset `struct ref_iterator::ref` on iteration
 - refs: introduce `.ref` field for the base iterator
 - refs: introduce wrapper struct for `each_ref_fn`

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.
 source: <20251008-b4-pks-ref-filter-skip-parsing-objects-v2-0-76e30d5c9542@pks.im>


* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
 - packfile: rename `packfile_store_get_all_packs()`
 - packfile: introduce macro to iterate through packs
 - packfile: drop `packfile_store_get_packs()`
 - builtin/grep: simplify how we preload packs
 - builtin/gc: convert to use `packfile_store_get_all_packs()`
 - object-name: convert to use `packfile_store_get_all_packs()`
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch uses tb/incremental-midx-part-3.1.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.

 Comments?
 source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>


* je/doc-data-model (2025-10-14) 1 commit
 - doc: add a explanation of Git's data model

 Add a new manual that describes the data model.

 Comments?
 source: <pull.1981.v3.git.1760476346040.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.1 (2025-10-15) 50 commits
 - builtin/repack.c: clean up unused `#include`s
 - repack: move `write_cruft_pack()` out of the builtin
 - repack: move `write_filtered_pack()` out of the builtin
 - repack: move `pack_kept_objects` to `struct pack_objects_args`
 - repack: move `finish_pack_objects_cmd()` out of the builtin
 - builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 - repack: extract `write_pack_opts_is_local()`
 - repack: move `find_pack_prefix()` out of the builtin
 - builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 - builtin/repack.c: introduce `struct write_pack_opts`
 - repack: 'write_midx_included_packs' API from the builtin
 - builtin/repack.c: inline packs within `write_midx_included_packs()`
 - builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 - builtin/repack.c: inline `remove_redundant_bitmaps()`
 - builtin/repack.c: reorder `remove_redundant_bitmaps()`
 - repack: keep track of MIDX pack names using existing_packs
 - builtin/repack.c: use a string_list for 'midx_pack_names'
 - builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 - builtin/repack.c: remove ref snapshotting from builtin
 - repack: remove pack_geometry API from the builtin
 - builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 - builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 - builtin/repack.c: rename various pack_geometry functions
 - builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 - builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 - repack: remove 'generated_pack' API from the builtin
 - builtin/repack.c: provide pack locations to `generated_pack_install()`
 - builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 - builtin/repack.c: factor out "generated_pack_install"
 - builtin/repack.c: rename "struct generated_pack_data"
 - repack: remove 'existing_packs' API from the builtin
 - builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 - builtin/repack.c: pass "packdir" when removing packs
 - repack: remove 'remove_redundant_pack' from the builtin
 - builtin/repack.c: rename many 'struct existing_packs' functions
 - repack: remove 'prepare_pack_objects' from the builtin
 - repack: move 'delta_base_offset' to 'struct pack_objects_args'
 - builtin/repack.c: pass both pack_objects args to repack_config
 - repack: introduce new compilation unit
 - builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 - builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 - builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 - builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 - builtin/repack.c: avoid "the_hash_algo" when deleting packs
 - builtin/repack.c: avoid "the_repository" when repacking promisor objects
 - builtin/repack.c: avoid "the_repository" when removing packs
 - builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 - builtin/repack.c: avoid "the_repository" in existing packs API
 - builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 - Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by ps/remove-packfile-store-get-packs.)

 Clean-up "git repack" machinery to prepare for incremental update
 of midx files.

 Will merge to 'next'?
 source: <cover.1760567210.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
 - SubmittingPatches: add section about AI

 AI guidelines.

 Will merge to 'next'?
 cf. <xmqqv7ki1xf1.fsf@gitster.g>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-01) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: parse commits before dereferencing them
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Stomps on each others toes with sa/replay-atomic-ref-updates topic.
 source: <20251001-b4-pks-history-builtin-v4-0-8e61ddb86317@pks.im>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Under discussion.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* rj/doc-technical-fixes (2025-10-16) 4 commits
 - doc: add large-object-promisors.adoc to the docs build
 - doc: commit-graph.adoc: fix up some formatting
 - doc: sparse-checkout.adoc: fix asciidoc warnings
 - doc: remembering-renames.adoc: fix asciidoc warnings

 Documentation mark-up fixes.

 Will merge to 'next'?
 source: <20251016200301.1595204-1-ramsay@ramsayjones.plus.com>


* sa/replay-atomic-ref-updates (2025-10-14) 4 commits
 - SQAUASH??? t0450 band-aid
 - replay: add replay.defaultAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Expecting a reroll.
 source: <20251013183311.33329-1-siddharthasthana31@gmail.com>


* je/doc-pull (2025-10-15) 4 commits
  (merged to 'next' on 2025-10-16 at 71e7a0cac0)
 + doc: git-pull: clarify how to exit a conflicted merge
 + doc: git-pull: delete the example
 + doc: git-pull: clarify options for integrating remote branch
 + doc: git-pull: move <repository> and <refspec> params

 Documentation updates.

 Will merge to 'master'.
 source: <pull.1976.v3.git.1760534011.gitgitgadget@gmail.com>


* jt/repo-stats (2025-10-15) 6 commits
 - builtin/repo: add progress meter for structure stats
 - builtin/repo: add keyvalue and nul format for structure stats
 - builtin/repo: add object counts in structure output
 - builtin/repo: introduce structure subcommand
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()

 "git repo stats", a new command.

 Expecting a (hopefully small and final) reroll.
 cf. <aPDPyEVOTSU6NuOH@pks.im>
 source: <20251015211213.361797-1-jltobler@gmail.com>


* bc/sha1-256-interop-01 (2025-10-09) 9 commits
  (merged to 'next' on 2025-10-14 at c571bab975)
 + t1010: use BROKEN_OBJECTS prerequisite
 + t: allow specifying compatibility hash
 + fsck: consider gpgsig headers expected in tags
 + rev-parse: allow printing compatibility hash
 + docs: add documentation for loose objects
 + docs: improve ambiguous areas of pack format documentation
 + docs: reflect actual double signature for tags
 + docs: update offset order for pack index v3
 + docs: update pack index v3 format

 The beginning of SHA1-SHA256 interoperability work.

 Will merge to 'master'.
 source: <20251009215626.3089287-1-sandals@crustytoothpaste.net>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <20251006112518.3764240-1-adrian.ratiu@collabora.com>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


* ds/sparse-checkout-clean (2025-09-12) 7 commits
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Expecting a (hopefully small) incremental update.
 cf. <3537e220-44b6-4e37-a568-cef34a2fddfd@gmail.com>
 cf. <xmqq5xcpgy9t.fsf@gitster.g>
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.

* lc/rebase-trailer (2025-08-03) 2 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Has been expecting a reroll for way too long.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Has been expecting a reroll for way too long.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>



^ permalink raw reply	[relevance 27%]

* What's cooking in git.git (Oct 2025, #05; Tue, 14)
@ 2025-10-14 23:20 24% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-14 23:20 UTC (permalink / raw)
  To: git

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.

Since we have been seeing so many "I still use whatchanged" --
"Well, log replaced it 12 yearas ago" exchanges, let's have a
maintenance release 2.51.1 that updates the message when the
deprecated command is used, among other things.

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

* en/xdiff-cleanup (2025-09-26) 12 commits
  (merged to 'next' on 2025-10-08 at 5bc21d0f06)
 + xdiff: change type of xdfile_t.changed from char to bool
 + xdiff: add macros DISCARD(0), KEEP(1), INVESTIGATE(2) in xprepare.c
 + xdiff: rename rchg -> changed in xdfile_t
 + xdiff: delete chastore from xdfile_t
 + xdiff: delete fields ha, line, size in xdlclass_t in favor of an xrecord_t
 + xdiff: delete redundant array xdfile_t.ha
 + xdiff: delete struct diffdata_t
 + xdiff: delete local variables that alias fields in xrecord_t
 + xdiff: delete superfluous function xdl_get_rec() in xemit
 + xdiff: delete unnecessary fields from xrecord_t and xdfile_t
 + xdiff: delete local variables and initialize/free xdfile_t directly
 + xdiff: delete static forward declarations in xprepare

 A lot of code clean-up of xdiff.
 Split out of a larger topic.
 source: <pull.2048.v6.git.git.1758926520.gitgitgadget@gmail.com>


* ja/doc-markup-attached-paragraph-fix (2025-10-07) 2 commits
  (merged to 'next' on 2025-10-07 at 5b991a7b14)
 + doc: fix indentation of refStorage item in git-config(1)
  (merged to 'next' on 2025-09-30 at a91ca5db03)
 + doc: change the markup of paragraphs following a nested list item

 Documentation mark-up fix.
 source: <20250927195032.37223-1-jn.avila@free.fr>
 source: <20251007082223.GA3336685@coredump.intra.peff.net>


* jc/optional-path (2025-09-28) 4 commits
  (merged to 'next' on 2025-10-08 at a1e8af9952)
 + parseopt: values of pathname type can be prefixed with :(optional)
 + config: values of pathname type can be prefixed with :(optional)
 + t7500: fix GIT_EDITOR shell snippet
 + t7500: make each piece more independent

 Configuration variables that take a pathname as a value
 (e.g. blame.ignorerevsfile) can be marked as optional by prefixing
 ":(optoinal)" before its value.
 source: <cover.1759094936.git.ben.knoble+github@gmail.com>


* je/doc-push-upstream (2025-10-06) 5 commits
  (merged to 'next' on 2025-10-08 at 7bda6929b1)
 + doc: git-push: add explanation of `git push origin main`
 + doc: git-push: clarify "what to push"
 + doc: git-push: clarify "where to push"
 + doc: add an UPSTREAM BRANCHES section to pull/push/fetch
 + doc: git-push: clarify intro

 Documentation updates.
 source: <pull.1964.v5.git.1759777131.gitgitgadget@gmail.com>


* jn/doc-help-translaing-pretty-options (2025-10-05) 1 commit
  (merged to 'next' on 2025-10-08 at 8962b8d1f0)
 + doc: do not break sentences into "lego" pieces

 Documentation for "git log --pretty" options has been updated
 to make it easier to translate.
 source: <pull.1982.git.1759698724134.gitgitgadget@gmail.com>


* jn/doc-synopsis (2025-10-05) 3 commits
  (merged to 'next' on 2025-10-08 at fd4f96ff5e)
 + doc: convert git worktree to synopsis style
 + doc: convert git tag to synopsis style
 + doc: convert git-stash.adoc to synopis style

 Doc-mark-up modernization continues.
 source: <pull.1969.git.1759698702.gitgitgadget@gmail.com>


* kh/doc-patch-id-markup-fix (2025-09-29) 1 commit
  (merged to 'next' on 2025-10-08 at a81dc9f7e6)
 + doc: patch-id: fix accidental literal blocks
 (this branch is used by kh/doc-patch-id-1.)

 Documentation mark-up fix.
 source: <v2-e5ad12cc3b3.1759178715.git.code@khaugsbakk.name>


* kh/format-patch-range-diff-notes (2025-09-25) 3 commits
  (merged to 'next' on 2025-10-08 at e06aae4166)
 + format-patch: handle range-diff on notes correctly for single patches
 + revision: add rdiff_log_arg to rev_info
 + range-diff: rename other_arg to log_arg

 "git format-patch --range-diff=... --notes=..." did not drive the
 underlying range-diff with correct --notes parameter, ending up
 comparing with different set of notes from its main patch output
 you would get from "git format-patch --notes=..." for a singleton
 patch.
 source: <v2-cover.1758819879.git.code@khaugsbakk.name>


* kn/reftable-consistency-checks (2025-10-07) 7 commits
  (merged to 'next' on 2025-10-07 at b9f4bd79f9)
 + refs/reftable: add fsck check for checking the table name
 + reftable: add code to facilitate consistency checks
 + fsck: order 'fsck_msg_type' alphabetically
 + Documentation/fsck-msgids: remove duplicate msg id
 + reftable: check for trailing newline in 'tables.list'
 + refs: move consistency check msg to generic layer
 + refs: remove unused headers

 The reftable backend learned to sanity check its on-disk data more
 carefully.
 source: <20251007-228-reftable-introduce-consistency-checks-v6-0-638cff42f0b0@gmail.com>


* ps/ci-avoid-broken-sudo-on-ubuntu (2025-10-10) 1 commit
  (merged to 'next' on 2025-10-13 at fd60b6d14b)
 + ci: fix broken jobs on Ubuntu 25.10 caused by switch to sudo-rs(1)

 Our CI script requires "sudo" that can be told to preserve
 environment, but Ubuntu replaced with "sudo" with an implementation
 that lacks the feature.  Work this around by reinstalling the
 original version.
 source: <20251010-b4-pks-ci-ubuntu-sudo-rs-v1-1-88cc846d251c@pks.im>


* ps/commit-graph-per-object-source (2025-09-04) 5 commits
  (merged to 'next' on 2025-10-07 at 6c9690a649)
 + commit-graph: pass graphs that are to be merged as parameter
 + commit-graph: return commit graph from `repo_find_commit_pos_in_graph()`
 + commit-graph: return the prepared commit graph from `prepare_commit_graph()`
 + revision: drop explicit check for commit graph
 + blame: drop explicit check for commit graph

 Code clean-up around commit-graph.
 cf. <cf7aeda1-297a-4805-b0ae-e379ce11bbcf@gmail.com>
 cf. <aN5gPoPC4WEYw9CF@pks.im>
 source: <20250904-b4-pks-commit-graph-via-source-v1-0-d932c2481e1a@pks.im>


* pw/add-p-hunk-splitting-fix (2025-09-25) 2 commits
  (merged to 'next' on 2025-10-08 at 3fdb4a84ce)
 + add-patch: update hunk splitability after editing
 + add -p: mark split hunks as undecided

 Marking a hunk 'selected' in "git add -p" and then splitting made
 all the split pieces 'selected'; this has been changed to make them
 all 'undecided', which gives better end-user experience.
 source: <pull.1863.v3.git.1758813038.gitgitgadget@gmail.com>


* sj/string-list (2025-10-05) 4 commits
  (merged to 'next' on 2025-10-08 at cf0fc3ea18)
 + refs: enable sign compare warnings check
 + string-list: change "string_list_find_insert_index" return type to "size_t"
 + string-list: replace negative index encoding with "exact_match" parameter
 + string-list: use bool instead of int for "exact_match"

 The "string-list" API function to find where a given string would
 be inserted got updated so that it can use unrealistically huge
 array index that would only fit in size_t but not int or ssize_t
 to achieve unstated goal.
 source: <aONhmrE0otiyZ16f@ArchLinux>

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

* tu/credential-makefile-updates (2025-10-10) 1 commit
 - contrib/credential: Amend and harmonize Makefiles

 Build procedure for a few credential helpers (in contrib/) have
 been updated.

 Expecting a reroll.
 source: <48d92664-41af-bb59-1844-7bb57f21924f@mailbox.tu-dresden.de>


* tb/cat-file-objectmode-update (2025-10-13) 1 commit
  (merged to 'next' on 2025-10-13 at 4fd0f1b5b5)
 + builtin/cat-file.c: simplify calling `report_object_status()`

 Code clean-up.

 Will merge to 'master'.
 source: <9236fa6e654a59337266430a2a8807da21210cd4.1760392502.git.me@ttaylorr.com>


* ps/symlink-symref-deprecation (2025-10-14) 1 commit
 - refs/files: deprecate writing symrefs as symbolic links

 "Symlink symref" has been added to the list of things that will
 disappear at Git 3.0 boundary.

 Comments?
 source: <20251014-pks-ref-files-deprecate-symbolic-links-v1-1-4bcd6a4ef6f5@pks.im>

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

* dk/stash-apply-index (2025-10-06) 1 commit
  (merged to 'next' on 2025-10-13 at 2187046f6c)
 + doc: explain the impact of stash.index on --autostash options

 Doc update.

 Will merge to 'master'.
 source: <d4a277b6b0695d86636562f4c07efae17f9249f9.1759755379.git.ben.knoble+github@gmail.com>


* js/mingw-includes-cleanup (2025-10-09) 2 commits
  (merged to 'next' on 2025-10-13 at b7144c1feb)
 + mingw: order `#include`s alphabetically
 + mingw: avoid relative `#include`s

 Code clean-up.

 Will merge to 'master'.
 source: <pull.1985.git.1759995961.gitgitgadget@gmail.com>


* js/unreachable-workaround-for-no-symlink-head (2025-10-09) 1 commit
  (merged to 'next' on 2025-10-13 at 0e970d5e4e)
 + refs: forbid clang to complain about unreachable code

 Code clean-up.

 Will merge to 'master'.
 source: <pull.1984.git.1759995982220.gitgitgadget@gmail.com>


* kh/doc-patch-id-1 (2025-10-13) 2 commits
 - doc: patch-id: convert to the modern synopsis style
 - Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1

 Will merge to 'next'?
 source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
 - t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 - t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 bugs are exposed in t1016, which needs to be addressed before this
 topic can move forward.

 On hold.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 source: <20240703153738.916469-1-tmz@pobox.com>


* jc/t1016-setup-fix (2025-10-10) 1 commit
 - t1016: make sure to use specified GPG

 GPG signing test set-up has been broken for a year, which has been
 corrected.

 Comments?
 source: <xmqqsefq7947.fsf@gitster.g>


* kh/doc-continued-paragraph-fix (2025-10-08) 1 commit
  (merged to 'next' on 2025-10-13 at e66316f041)
 + doc: fix accidental literal blocks

 Doc mark-up fixes.

 Will merge to 'master'.
 source: <7a955ecb1b5.1759923933.git.code@khaugsbakk.name>


* cc/fast-import-strip-signed-tags (2025-10-13) 5 commits
 - fast-import: add '--signed-tags=<mode>' option
 - fast-export: handle all kinds of tag signatures
 - t9350: properly count annotated tags
 - lib-gpg: allow tests with GPGSM or GPGSSH prereq first
 - doc: git-tag: stop focusing on GPG signed tags

 "git fast-import" is taught to handle signed tags, just like it
 recently learned to handle signed commits, in different ways.

 Will merge to 'next'?
 source: <20251013084857.1646783-1-christian.couder@gmail.com>


* ps/ci-rust (2025-10-07) 8 commits
 - rust: support for Windows
 - ci: verify minimum supported Rust version
 - ci: check for common Rust mistakes via Clippy
 - rust/varint: add safety comments
 - ci: check formatting of our Rust code
 - ci: deduplicate calls to `apt-get update`
 - Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
 - Merge branch 'ps/rust-balloon' into ps/ci-rust

 CI improvements to handle the recent Rust integration better.

 Expecting an update.
 cf. <aOdIRnB-SGQwj935@pks.im>
 source: <20251008-b4-pks-ci-rust-v2-0-d556ee83c381@pks.im>


* ps/ref-peeled-tags (2025-10-08) 14 commits
 - ref-filter: parse objects on demand
 - ref-filter: detect broken tags when dereferencing them
 - refs: don't store peeled object IDs for invalid tags
 - object: add flag to `peel_object()` to verify object type
 - refs: drop infrastructure to peel via iterators
 - refs: drop `current_ref_iter` hack
 - builtin/show-ref: convert to use `reference_get_peeled_oid()`
 - ref-filter: propagate peeled object ID
 - upload-pack: convert to use `reference_get_peeled_oid()`
 - refs: expose peeled object ID via the iterator
 - refs: refactor reference status flags
 - refs: fully reset `struct ref_iterator::ref` on iteration
 - refs: introduce `.ref` field for the base iterator
 - refs: introduce wrapper struct for `each_ref_fn`

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.
 source: <20251008-b4-pks-ref-filter-skip-parsing-objects-v2-0-76e30d5c9542@pks.im>


* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
 - packfile: rename `packfile_store_get_all_packs()`
 - packfile: introduce macro to iterate through packs
 - packfile: drop `packfile_store_get_packs()`
 - builtin/grep: simplify how we preload packs
 - builtin/gc: convert to use `packfile_store_get_all_packs()`
 - object-name: convert to use `packfile_store_get_all_packs()`
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch uses tb/incremental-midx-part-3.1.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.

 Comments?
 source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>


* tb/doc-submitting-patches (2025-10-07) 2 commits
  (merged to 'next' on 2025-10-10 at b63283990d)
 + SubmittingPatches: guidance for multi-series efforts
 + SubmittingPatches: extend release-notes experiment to topic names

 A few more things that patch authors can do to help maintainer to
 keep track of their topics better.

 Will merge to 'master'.
 source: <cover.1759873165.git.me@ttaylorr.com>


* je/doc-data-model (2025-10-08) 1 commit
 - doc: add a explanation of Git's data model

 Add a new manual that describes the data model.
 source: <pull.1981.v2.git.1759931621272.gitgitgadget@gmail.com>


* rs/add-patch-options-fix (2025-10-06) 6 commits
  (merged to 'next' on 2025-10-10 at ef52e0377e)
 + add-patch: reset "permitted" at loop start
 + add-patch: let options a and d roll over like y and n
 + add-patch: let options k and K roll over like j and J
 + add-patch: let options y, n, j, and e roll over to next undecided
 + add-patch: document that option J rolls over
 + add-patch: improve help for options j, J, k, and K

 The code in "git add -p" and friends to iterate over hunks was
 riddled with bugs, which has been corrected.

 Will merge to 'master'.
 source: <fe8e8097-2b05-4dd2-a754-f59e4ba5f95a@web.de>


* tb/incremental-midx-part-3.1 (2025-09-29) 51 commits
 - SQUASH??? play well with other topics by preemptively including "repository.h"
 - builtin/repack.c: clean up unused `#include`s
 - repack: move `write_cruft_pack()` out of the builtin
 - repack: move `write_filtered_pack()` out of the builtin
 - repack: move `pack_kept_objects` to `struct pack_objects_args`
 - repack: move `finish_pack_objects_cmd()` out of the builtin
 - builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 - repack: extract `write_pack_opts_is_local()`
 - repack: move `find_pack_prefix()` out of the builtin
 - builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 - builtin/repack.c: introduce `struct write_pack_opts`
 - repack: 'write_midx_included_packs' API from the builtin
 - builtin/repack.c: inline packs within `write_midx_included_packs()`
 - builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 - builtin/repack.c: inline `remove_redundant_bitmaps()`
 - builtin/repack.c: reorder `remove_redundant_bitmaps()`
 - repack: keep track of MIDX pack names using existing_packs
 - builtin/repack.c: use a string_list for 'midx_pack_names'
 - builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 - builtin/repack.c: remove ref snapshotting from builtin
 - repack: remove pack_geometry API from the builtin
 - builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 - builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 - builtin/repack.c: rename various pack_geometry functions
 - builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 - builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 - repack: remove 'generated_pack' API from the builtin
 - builtin/repack.c: provide pack locations to `generated_pack_install()`
 - builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 - builtin/repack.c: factor our "generated_pack_install"
 - builtin/repack.c: rename "struct generated_pack_data"
 - repack: remove 'existing_packs' API from the builtin
 - builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 - builtin/repack.c: pass "packdir" when removing packs
 - repack: remove 'remove_redundant_pack' from the builtin
 - builtin/repack.c: rename many 'struct existing_packs' functions
 - repack: remove 'prepare_pack_objects' from the builtin
 - repack: move 'delta_base_offset' to 'struct pack_objects_args'
 - builtin/repack.c: pass both pack_objects args to repack_config
 - repack: introduce new compilation unit
 - builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 - builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 - builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 - builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 - builtin/repack.c: avoid "the_hash_algo" when deleting packs
 - builtin/repack.c: avoid "the_repository" when repacking promisor objects
 - builtin/repack.c: avoid "the_repository" when removing packs
 - builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 - builtin/repack.c: avoid "the_repository" in existing packs API
 - builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 - Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by ps/remove-packfile-store-get-packs.)

 Comments?
 source: <cover.1759097191.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
 - SubmittingPatches: add section about AI

 AI guidelines.

 Perhaps we should adopt what QEMU uses for simplicity?
 cf. <aOBMHqLxNd86vgjH@fruit.crustytoothpaste.net>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-01) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: parse commits before dereferencing them
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.

 Stomps on each others toes with sa/replay-atomic-ref-updates topic.
 source: <20251001-b4-pks-history-builtin-v4-0-8e61ddb86317@pks.im>


* en/make-libgit-a (2025-10-02) 2 commits
  (merged to 'next' on 2025-10-10 at 913fc0337a)
 + make: delete REFTABLE_LIB, add reftable to LIB_OBJS
 + make: delete XDIFF_LIB, add xdiff to LIB_OBJS

 Instead of three library archives (one for git, one for reftable,
 and one for xdiff), roll everything into a single libgit.a archive.
 This would help later effort to FFI into Rust.

 Will merge to 'master'.
 source: <pull.2065.v2.git.git.1759447647.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Under discussion.
 cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* rj/doc-technical-fixes (2025-10-02) 3 commits
 - doc: commit-graph.adoc: fix up some formatting
 - doc: sparse-checkout.adoc: fix asciidoc warnings
 - doc: remembering-renames.adoc: fix asciidoc warnings

 Documentation mark-up fixes.

 Expecting v3.
 cf. <20251002221233.541844-1-ramsay@ramsayjones.plus.com>
 source: <20251002221233.541844-1-ramsay@ramsayjones.plus.com>


* sa/replay-atomic-ref-updates (2025-10-14) 4 commits
 - SQAUASH??? t0450 band-aid
 - replay: add replay.defaultAction config option
 - replay: make atomic ref updates the default behavior
 - replay: use die_for_incompatible_opt2() for option validation
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Expecting a reroll.
 source: <20251013183311.33329-1-siddharthasthana31@gmail.com>


* je/doc-pull (2025-10-08) 4 commits
 - doc: git-pull: clarify how to exit a conflicted merge
 - doc: git-pull: delete the example
 - doc: git-pull: clarify options for integrating remote branch
 - doc: git-pull: move <repository> and <refspec> params

 Documentation updates.

 Will merge to 'next'?
 source: <pull.1976.v2.git.1759951536.gitgitgadget@gmail.com>


* jk/diff-no-index-with-pathspec-fix (2025-09-24) 1 commit
  (merged to 'next' on 2025-10-10 at 75721dbc16)
 + diff --no-index: fix logic for paths ending in '/'

 An earlier addition to "git diff --no-index A B" to limit the
 output with pathspec after the two directories misbehaved when
 these directories were given with a trailing slash, which has been
 corrected.

 Will merge to 'master'.
 source: <20250924-jk-fix-no-index-path-with-slash-v1-1-6b2028c0de92@intel.com>


* jt/repo-stats (2025-09-27) 6 commits
 - builtin/repo: add progress meter for stats
 - builtin/repo: add keyvalue and nul format for stats
 - builtin/repo: add object counts in stats output
 - builtin/repo: introduce stats subcommand
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()

 "git repo stats", a new command.

 Comments?
 source: <20250927145049.723341-1-jltobler@gmail.com>


* bc/sha1-256-interop-01 (2025-10-09) 9 commits
  (merged to 'next' on 2025-10-14 at c571bab975)
 + t1010: use BROKEN_OBJECTS prerequisite
 + t: allow specifying compatibility hash
 + fsck: consider gpgsig headers expected in tags
 + rev-parse: allow printing compatibility hash
 + docs: add documentation for loose objects
 + docs: improve ambiguous areas of pack format documentation
 + docs: reflect actual double signature for tags
 + docs: update offset order for pack index v3
 + docs: update pack index v3 format

 The beginning of SHA1-SHA256 interoperability work.

 Will merge to 'master'.
 source: <20251009215626.3089287-1-sandals@crustytoothpaste.net>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <20251006112518.3764240-1-adrian.ratiu@collabora.com>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


* ds/sparse-checkout-clean (2025-09-12) 7 commits
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Expecting a (hopefully small) incremental update.
 cf. <3537e220-44b6-4e37-a568-cef34a2fddfd@gmail.com>
 cf. <xmqq5xcpgy9t.fsf@gitster.g>
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.

* lc/rebase-trailer (2025-08-03) 2 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Has been expecting a reroll for way too long.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Has been expecting a reroll for way too long.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>


^ permalink raw reply	[relevance 24%]

* Re: What's cooking in git.git (Oct 2025, #04; Fri, 10)
  @ 2025-10-13 15:28 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-13 15:28 UTC (permalink / raw)
  To: Eric Sunshine; +Cc: git

Eric Sunshine <sunshine@sunshineco.com> writes:

> On Fri, Oct 10, 2025 at 8:00 PM Junio C Hamano <gitster@pobox.com> wrote:
>> * ms/doc-worktree-side-by-side (2025-10-10) 2 commits
>>  - doc: git-worktree: Add side by side branch checkout example
>>  - doc: git-worktree: Link to examples
>>
>>  Document "git worktree add" and use of out-of-tree worktrees with
>>  examples.
>>
>>  Will merge to 'next'?
>>  source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>
>
> I'd prefer that this not be merged to 'next' in its present form since
> I think the first patch either needs significantly more justification
> or ought to be dropped altogether[1], and because the second patch
> still needs a good deal of work[2].
>
> [1]: https://lore.kernel.org/git/CAPig+cQRHp7A=gtSkrVS4_EvZ9PyqBOdGGHcEajfLPE=qU4uDQ@mail.gmail.com/
> [2]: https://lore.kernel.org/git/CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com/

Let me watch from the sidelines how the discussion goes.

Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Oct 2025, #04; Fri, 10)
  @ 2025-10-13 14:07 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-13 14:07 UTC (permalink / raw)
  To: Patrick Steinhardt; +Cc: git

Patrick Steinhardt <ps@pks.im> writes:

> On Fri, Oct 10, 2025 at 05:00:43PM -0700, Junio C Hamano wrote:
>> * ps/ci-rust (2025-10-07) 8 commits
>>  - rust: support for Windows
>>  - ci: verify minimum supported Rust version
>>...
>>  - Merge branch 'ps/rust-balloon' into ps/ci-rust
>> 
>>  CI improvements to handle the recent Rust integration better.
>> 
>>  Expecting an update.
>>  cf. <aOdIRnB-SGQwj935@pks.im>
>>  source: <20251008-b4-pks-ci-rust-v2-0-d556ee83c381@pks.im>
>
> I think this status is stale, right? v2 didn't have review feedback that
> would require changes as far as I can see.

Indeed it is.



^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Oct 2025, #04; Fri, 10)
  @ 2025-10-11 17:14 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-11 17:14 UTC (permalink / raw)
  To: D. Ben Knoble; +Cc: git, Phillip Wood, Kristoffer Haugsbakk

"D. Ben Knoble" <ben.knoble@gmail.com> writes:

> On Fri, Oct 10, 2025 at 8:00 PM Junio C Hamano <gitster@pobox.com> wrote:
>> --------------------------------------------------
>> [New Topics]
>>
>> * dk/stash-apply-index (2025-10-06) 1 commit
>>  - doc: explain the impact of stash.index on --autostash options
>>
>>  Doc update.
>>
>>  Will merge to 'next'.
>>  source: <d4a277b6b0695d86636562f4c07efae17f9249f9.1759755379.git.ben.knoble+github@gmail.com>
>
> I think Kristoffer had some feedback about the message—if changes need
> made, my understanding is that happens prior to "next" ?
>
> I'll send a reply there shortly, at any rate.

OK, will wait (I am not sure what needs updated, though).


>> * jc/optional-path (2025-09-28) 4 commits
>>   (merged to 'next' on 2025-10-08 at a1e8af9952)
>>  + parseopt: values of pathname type can be prefixed with :(optional)
>>  + config: values of pathname type can be prefixed with :(optional)
>>  + t7500: fix GIT_EDITOR shell snippet
>>  + t7500: make each piece more independent
>>
>>  Configuration variables that take a pathname as a value
>>  (e.g. blame.ignorerevsfile) can be marked as optional by prefixing
>>  ":(optoinal)" before its value.
>>
>>  Will merge to 'master'.
>>  source: <cover.1759094936.git.ben.knoble+github@gmail.com>
>
> As I mentioned in <1D9EE7CD-800B-4B70-8D98-79B0C2FB8DBA@gmail.com>, I
> think we might want a slight reroll for some tests and to use the
> correct functions in a few places.

If you want to change anything, can you do it with incremental
patches on top?  Thanks.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Oct 2025, #04; Fri, 10)
@ 2025-10-11  0:00 25% Junio C Hamano
                     ` (2 more replies)
  0 siblings, 3 replies; 200+ results
From: Junio C Hamano @ 2025-10-11  0:00 UTC (permalink / raw)
  To: git

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

* en/doc-merge-tree-describe-merge-base (2025-10-02) 1 commit
  (merged to 'next' on 2025-10-06 at 787ff6f08a)
 + Documentation/git-merge-tree.adoc: clarify the --merge-base option

 Clarify the "--merge-base" command line option in "git merge-tree".
 
 source: <pull.1980.git.1759444487406.gitgitgadget@gmail.com>


* ps/gitlab-ci-windows-improvements (2025-10-02) 5 commits
  (merged to 'next' on 2025-10-03 at 6adb054d12)
 + t8020: fix test failure due to indeterministic tag sorting
 + gitlab-ci: upload Meson test logs as JUnit reports
 + gitlab-ci: drop workaround for Python certificate store on Windows
 + gitlab-ci: ignore failures to disable realtime monitoring
 + gitlab-ci: dedup instructions to disable realtime monitoring
 (this branch is used by ps/ci-rust.)

 GitLab CI improvements.
 
 source: <20251002-pks-gitlab-ci-windows-improvements-v1-0-6a8b6b45d728@pks.im>


* rj/doc-missing-technical-docs (2025-10-02) 1 commit
  (merged to 'next' on 2025-10-06 at f639955fdc)
 + doc: add some missing technical documents
 (this branch is used by rj/doc-technical-fixes.)

 Doc updates.
 
 source: <20251002221233.541844-2-ramsay@ramsayjones.plus.com>

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

* dk/stash-apply-index (2025-10-06) 1 commit
 - doc: explain the impact of stash.index on --autostash options

 Doc update.

 Will merge to 'next'.
 source: <d4a277b6b0695d86636562f4c07efae17f9249f9.1759755379.git.ben.knoble+github@gmail.com>


* js/mingw-includes-cleanup (2025-10-09) 2 commits
 - mingw: order `#include`s alphabetically
 - mingw: avoid relative `#include`s

 Code clean-up.

 Will merge to 'next'.
 source: <pull.1985.git.1759995961.gitgitgadget@gmail.com>


* js/unreachable-workaround-for-no-symlink-head (2025-10-09) 1 commit
 - refs: forbid clang to complain about unreachable code

 Code clean-up.

 Will merge to 'next'.
 source: <pull.1984.git.1759995982220.gitgitgadget@gmail.com>


* kh/doc-patch-id-1 (2025-10-09) 2 commits
 - doc: patch-id: convert to the modern synopsis style
 - Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1
 (this branch uses kh/doc-patch-id-markup-fix.)

 Expecting a reroll.
 cf. <d0dcaea3-844f-497a-adca-6241bf39db41@free.fr>
 source: <978261e3be4.1760043036.git.code@khaugsbakk.name>


* tz/test-prepare-gnupghome (2024-07-03) 2 commits
 - t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
 - t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir

 Tests did not set up GNUPGHOME correctly, which is fixed but some
 bugs are exposed in t1016, which needs to be addressed before this
 topic can move forward.

 On hold.
 cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
 source: <20240703153738.916469-1-tmz@pobox.com>


* jc/t1016-setup-fix (2025-10-10) 1 commit
 - t1016: make sure to use specified GPG

 GPG signing test set-up has been broken for a year, which has been
 corrected.

 Comments?
 source: <xmqqsefq7947.fsf@gitster.g>

* kh/doc-continued-paragraph-fix (2025-10-08) 1 commit
 - doc: fix accidental literal blocks

 Doc mark-up fixes.

 Will merge to 'next'.
 source: <7a955ecb1b5.1759923933.git.code@khaugsbakk.name>

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

* cc/fast-import-strip-signed-tags (2025-10-09) 5 commits
 - fast-import: add '--signed-tags=<mode>' option
 - fast-export: handle all kinds of tag signatures
 - t9350: properly count annotated tags
 - lib-gpg: allow tests with GPGSM or GPGSSH prereq first
 - doc: git-tag: stop focusing on GPG signed tags

 "git fast-import" is taught to handle signed tags, just like it
 recently learned to handle signed commits, in different ways.

 Expecting v3.
 cf. <CAP8UFD10eMwKdacEzLumdXUghV2nYZViDT4o44u1qgXVU5Pzew@mail.gmail.com>
 source: <20251009122457.1273701-1-christian.couder@gmail.com>


* ps/ci-rust (2025-10-07) 8 commits
 - rust: support for Windows
 - ci: verify minimum supported Rust version
 - ci: check for common Rust mistakes via Clippy
 - rust/varint: add safety comments
 - ci: check formatting of our Rust code
 - ci: deduplicate calls to `apt-get update`
 - Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
 - Merge branch 'ps/rust-balloon' into ps/ci-rust

 CI improvements to handle the recent Rust integration better.

 Expecting an update.
 cf. <aOdIRnB-SGQwj935@pks.im>
 source: <20251008-b4-pks-ci-rust-v2-0-d556ee83c381@pks.im>


* ps/ref-peeled-tags (2025-10-08) 14 commits
 - ref-filter: parse objects on demand
 - ref-filter: detect broken tags when dereferencing them
 - refs: don't store peeled object IDs for invalid tags
 - object: add flag to `peel_object()` to verify object type
 - refs: drop infrastructure to peel via iterators
 - refs: drop `current_ref_iter` hack
 - builtin/show-ref: convert to use `reference_get_peeled_oid()`
 - ref-filter: propagate peeled object ID
 - upload-pack: convert to use `reference_get_peeled_oid()`
 - refs: expose peeled object ID via the iterator
 - refs: refactor reference status flags
 - refs: fully reset `struct ref_iterator::ref` on iteration
 - refs: introduce `.ref` field for the base iterator
 - refs: introduce wrapper struct for `each_ref_fn`

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.
 source: <20251008-b4-pks-ref-filter-skip-parsing-objects-v2-0-76e30d5c9542@pks.im>


* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
 - packfile: rename `packfile_store_get_all_packs()`
 - packfile: introduce macro to iterate through packs
 - packfile: drop `packfile_store_get_packs()`
 - builtin/grep: simplify how we preload packs
 - builtin/gc: convert to use `packfile_store_get_all_packs()`
 - object-name: convert to use `packfile_store_get_all_packs()`
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch uses tb/incremental-midx-part-3.1.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.

 Comments?
 source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>


* tb/doc-submitting-patches (2025-10-07) 2 commits
  (merged to 'next' on 2025-10-10 at b63283990d)
 + SubmittingPatches: guidance for multi-series efforts
 + SubmittingPatches: extend release-notes experiment to topic names

 A few more things that patch authors can do to help maintainer to
 keep track of their topics better.

 Will merge to 'master'.
 source: <cover.1759873165.git.me@ttaylorr.com>


* je/doc-data-model (2025-10-08) 1 commit
 - doc: add a explanation of Git's data model

 Add a new manual that describes the data model.
 source: <pull.1981.v2.git.1759931621272.gitgitgadget@gmail.com>


* rs/add-patch-options-fix (2025-10-06) 6 commits
  (merged to 'next' on 2025-10-10 at ef52e0377e)
 + add-patch: reset "permitted" at loop start
 + add-patch: let options a and d roll over like y and n
 + add-patch: let options k and K roll over like j and J
 + add-patch: let options y, n, j, and e roll over to next undecided
 + add-patch: document that option J rolls over
 + add-patch: improve help for options j, J, k, and K

 The code in "git add -p" and friends to iterate over hunks was
 riddled with bugs, which has been corrected.

 Will merge to 'master'.
 source: <fe8e8097-2b05-4dd2-a754-f59e4ba5f95a@web.de>


* jn/doc-help-translaing-pretty-options (2025-10-05) 1 commit
  (merged to 'next' on 2025-10-08 at 8962b8d1f0)
 + doc: do not break sentences into "lego" pieces

 Documentation for "git log --pretty" options has been updated
 to make it easier to translate.

 Will merge to 'master'.
 source: <pull.1982.git.1759698724134.gitgitgadget@gmail.com>


* jn/doc-synopsis (2025-10-05) 3 commits
  (merged to 'next' on 2025-10-08 at fd4f96ff5e)
 + doc: convert git worktree to synopsis style
 + doc: convert git tag to synopsis style
 + doc: convert git-stash.adoc to synopis style

 Doc-mark-up modernization continues.

 Will merge to 'master'.
 source: <pull.1969.git.1759698702.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.1 (2025-09-29) 51 commits
 - SQUASH??? play well with other topics by preemptively including "repository.h"
 - builtin/repack.c: clean up unused `#include`s
 - repack: move `write_cruft_pack()` out of the builtin
 - repack: move `write_filtered_pack()` out of the builtin
 - repack: move `pack_kept_objects` to `struct pack_objects_args`
 - repack: move `finish_pack_objects_cmd()` out of the builtin
 - builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 - repack: extract `write_pack_opts_is_local()`
 - repack: move `find_pack_prefix()` out of the builtin
 - builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 - builtin/repack.c: introduce `struct write_pack_opts`
 - repack: 'write_midx_included_packs' API from the builtin
 - builtin/repack.c: inline packs within `write_midx_included_packs()`
 - builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 - builtin/repack.c: inline `remove_redundant_bitmaps()`
 - builtin/repack.c: reorder `remove_redundant_bitmaps()`
 - repack: keep track of MIDX pack names using existing_packs
 - builtin/repack.c: use a string_list for 'midx_pack_names'
 - builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 - builtin/repack.c: remove ref snapshotting from builtin
 - repack: remove pack_geometry API from the builtin
 - builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 - builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 - builtin/repack.c: rename various pack_geometry functions
 - builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 - builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 - repack: remove 'generated_pack' API from the builtin
 - builtin/repack.c: provide pack locations to `generated_pack_install()`
 - builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 - builtin/repack.c: factor our "generated_pack_install"
 - builtin/repack.c: rename "struct generated_pack_data"
 - repack: remove 'existing_packs' API from the builtin
 - builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 - builtin/repack.c: pass "packdir" when removing packs
 - repack: remove 'remove_redundant_pack' from the builtin
 - builtin/repack.c: rename many 'struct existing_packs' functions
 - repack: remove 'prepare_pack_objects' from the builtin
 - repack: move 'delta_base_offset' to 'struct pack_objects_args'
 - builtin/repack.c: pass both pack_objects args to repack_config
 - repack: introduce new compilation unit
 - builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 - builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 - builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 - builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 - builtin/repack.c: avoid "the_hash_algo" when deleting packs
 - builtin/repack.c: avoid "the_repository" when repacking promisor objects
 - builtin/repack.c: avoid "the_repository" when removing packs
 - builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 - builtin/repack.c: avoid "the_repository" in existing packs API
 - builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 - Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by ps/remove-packfile-store-get-packs.)

 Comments?
 source: <cover.1759097191.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
 - SubmittingPatches: add section about AI

 AI guidelines.

 Perhaps we should adopt what QEMU uses for simplicity?
 cf. <aOBMHqLxNd86vgjH@fruit.crustytoothpaste.net>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-01) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: parse commits before dereferencing them
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.
 source: <20251001-b4-pks-history-builtin-v4-0-8e61ddb86317@pks.im>


* en/make-libgit-a (2025-10-02) 2 commits
  (merged to 'next' on 2025-10-10 at 913fc0337a)
 + make: delete REFTABLE_LIB, add reftable to LIB_OBJS
 + make: delete XDIFF_LIB, add xdiff to LIB_OBJS

 Instead of three library archives (one for git, one for reftable,
 and one for xdiff), roll everything into a single libgit.a archive.
 This would help later effort to FFI into Rust.

 Will merge to 'master'.
 source: <pull.2065.v2.git.git.1759447647.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
 - doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Will merge to 'next'?
 source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>


* rj/doc-technical-fixes (2025-10-02) 3 commits
 - doc: commit-graph.adoc: fix up some formatting
 - doc: sparse-checkout.adoc: fix asciidoc warnings
 - doc: remembering-renames.adoc: fix asciidoc warnings

 Documentation mark-up fixes.

 Expecting v3. 
 cf. <20251002221233.541844-1-ramsay@ramsayjones.plus.com>
 source: <20251002221233.541844-1-ramsay@ramsayjones.plus.com>


* ja/doc-markup-attached-paragraph-fix (2025-10-07) 2 commits
  (merged to 'next' on 2025-10-07 at 5b991a7b14)
 + doc: fix indentation of refStorage item in git-config(1)
  (merged to 'next' on 2025-09-30 at a91ca5db03)
 + doc: change the markup of paragraphs following a nested list item

 Documentation mark-up fix.
 source: <20250927195032.37223-1-jn.avila@free.fr>
 source: <20251007082223.GA3336685@coredump.intra.peff.net>


* jc/optional-path (2025-09-28) 4 commits
  (merged to 'next' on 2025-10-08 at a1e8af9952)
 + parseopt: values of pathname type can be prefixed with :(optional)
 + config: values of pathname type can be prefixed with :(optional)
 + t7500: fix GIT_EDITOR shell snippet
 + t7500: make each piece more independent

 Configuration variables that take a pathname as a value
 (e.g. blame.ignorerevsfile) can be marked as optional by prefixing
 ":(optoinal)" before its value.

 Will merge to 'master'.
 source: <cover.1759094936.git.ben.knoble+github@gmail.com>


* kh/doc-patch-id-markup-fix (2025-09-29) 1 commit
  (merged to 'next' on 2025-10-08 at a81dc9f7e6)
 + doc: patch-id: fix accidental literal blocks
 (this branch is used by kh/doc-patch-id-1.)

 Documentation mark-up fix.

 Will merge to 'master'.
 source: <v2-e5ad12cc3b3.1759178715.git.code@khaugsbakk.name>


* sa/replay-atomic-ref-updates (2025-09-26) 1 commit
 - replay: make atomic ref updates the default behavior
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Expecting v3.
 cf. <64b63d62-482d-42b2-8090-60aac8f505d4@gmail.com>
 source: <20250926230838.35870-2-siddharthasthana31@gmail.com>


* kh/format-patch-range-diff-notes (2025-09-25) 3 commits
  (merged to 'next' on 2025-10-08 at e06aae4166)
 + format-patch: handle range-diff on notes correctly for single patches
 + revision: add rdiff_log_arg to rev_info
 + range-diff: rename other_arg to log_arg

 "git format-patch --range-diff=... --notes=..." did not drive the
 underlying range-diff with correct --notes parameter, ending up
 comparing with different set of notes from its main patch output
 you would get from "git format-patch --notes=..." for a singleton
 patch.

 Will merge to 'master'.
 source: <v2-cover.1758819879.git.code@khaugsbakk.name>


* je/doc-pull (2025-10-08) 4 commits
 - doc: git-pull: clarify how to exit a conflicted merge
 - doc: git-pull: delete the example
 - doc: git-pull: clarify options for integrating remote branch
 - doc: git-pull: move <repository> and <refspec> params

 Documentation updates.

 Will merge to 'next'?
 source: <pull.1976.v2.git.1759951536.gitgitgadget@gmail.com>


* je/doc-push-upstream (2025-10-06) 5 commits
  (merged to 'next' on 2025-10-08 at 7bda6929b1)
 + doc: git-push: add explanation of `git push origin main`
 + doc: git-push: clarify "what to push"
 + doc: git-push: clarify "where to push"
 + doc: add an UPSTREAM BRANCHES section to pull/push/fetch
 + doc: git-push: clarify intro

 Documentation updates.

 Will merge to 'master'.
 source: <pull.1964.v5.git.1759777131.gitgitgadget@gmail.com>


* jk/diff-no-index-with-pathspec-fix (2025-09-24) 1 commit
  (merged to 'next' on 2025-10-10 at 75721dbc16)
 + diff --no-index: fix logic for paths ending in '/'

 An earlier addition to "git diff --no-index A B" to limit the
 output with pathspec after the two directories misbehaved when
 these directories were given with a trailing slash, which has been
 corrected.

 Will merge to 'master'.
 source: <20250924-jk-fix-no-index-path-with-slash-v1-1-6b2028c0de92@intel.com>


* jt/repo-stats (2025-09-27) 6 commits
 - builtin/repo: add progress meter for stats
 - builtin/repo: add keyvalue and nul format for stats
 - builtin/repo: add object counts in stats output
 - builtin/repo: introduce stats subcommand
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()

 "git repo stats", a new command.

 Comments?
 source: <20250927145049.723341-1-jltobler@gmail.com>


* kn/reftable-consistency-checks (2025-10-07) 7 commits
  (merged to 'next' on 2025-10-07 at b9f4bd79f9)
 + refs/reftable: add fsck check for checking the table name
 + reftable: add code to facilitate consistency checks
 + fsck: order 'fsck_msg_type' alphabetically
 + Documentation/fsck-msgids: remove duplicate msg id
 + reftable: check for trailing newline in 'tables.list'
 + refs: move consistency check msg to generic layer
 + refs: remove unused headers

 The reftable backend learned to sanity check its on-disk data more
 carefully.

 Will merge to 'master'.
 source: <20251007-228-reftable-introduce-consistency-checks-v6-0-638cff42f0b0@gmail.com>


* bc/sha1-256-interop-01 (2025-10-09) 9 commits
 - t1010: use BROKEN_OBJECTS prerequisite
 - t: allow specifying compatibility hash
 - fsck: consider gpgsig headers expected in tags
 - rev-parse: allow printing compatibility hash
 - docs: add documentation for loose objects
 - docs: improve ambiguous areas of pack format documentation
 - docs: reflect actual double signature for tags
 - docs: update offset order for pack index v3
 - docs: update pack index v3 format

 The beginning of SHA1-SHA256 interoperability work.

 Will merge to 'next'?
 source: <20251009215626.3089287-1-sandals@crustytoothpaste.net>


* pw/add-p-hunk-splitting-fix (2025-09-25) 2 commits
  (merged to 'next' on 2025-10-08 at 3fdb4a84ce)
 + add-patch: update hunk splitability after editing
 + add -p: mark split hunks as undecided

 Marking a hunk 'selected' in "git add -p" and then splitting made
 all the split pieces 'selected'; this has been changed to make them
 all 'undecided', which gives better end-user experience.

 Will merge to 'master'.
 source: <pull.1863.v3.git.1758813038.gitgitgadget@gmail.com>


* en/xdiff-cleanup (2025-09-26) 12 commits
  (merged to 'next' on 2025-10-08 at 5bc21d0f06)
 + xdiff: change type of xdfile_t.changed from char to bool
 + xdiff: add macros DISCARD(0), KEEP(1), INVESTIGATE(2) in xprepare.c
 + xdiff: rename rchg -> changed in xdfile_t
 + xdiff: delete chastore from xdfile_t
 + xdiff: delete fields ha, line, size in xdlclass_t in favor of an xrecord_t
 + xdiff: delete redundant array xdfile_t.ha
 + xdiff: delete struct diffdata_t
 + xdiff: delete local variables that alias fields in xrecord_t
 + xdiff: delete superfluous function xdl_get_rec() in xemit
 + xdiff: delete unnecessary fields from xrecord_t and xdfile_t
 + xdiff: delete local variables and initialize/free xdfile_t directly
 + xdiff: delete static forward declarations in xprepare

 A lot of code clean-up of xdiff.
 Split out of a larger topic.

 Will merge to 'master'.
 source: <pull.2048.v6.git.git.1758926520.gitgitgadget@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <20251006112518.3764240-1-adrian.ratiu@collabora.com>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


* ps/commit-graph-per-object-source (2025-09-04) 5 commits
  (merged to 'next' on 2025-10-07 at 6c9690a649)
 + commit-graph: pass graphs that are to be merged as parameter
 + commit-graph: return commit graph from `repo_find_commit_pos_in_graph()`
 + commit-graph: return the prepared commit graph from `prepare_commit_graph()`
 + revision: drop explicit check for commit graph
 + blame: drop explicit check for commit graph

 Code clean-up around commit-graph.

 Will merge to 'master'.
 cf. <cf7aeda1-297a-4805-b0ae-e379ce11bbcf@gmail.com>
 cf. <aN5gPoPC4WEYw9CF@pks.im>
 source: <20250904-b4-pks-commit-graph-via-source-v1-0-d932c2481e1a@pks.im>


* sj/string-list (2025-10-05) 4 commits
  (merged to 'next' on 2025-10-08 at cf0fc3ea18)
 + refs: enable sign compare warnings check
 + string-list: change "string_list_find_insert_index" return type to "size_t"
 + string-list: replace negative index encoding with "exact_match" parameter
 + string-list: use bool instead of int for "exact_match"

 The "string-list" API function to find where a given string would
 be inserted got updated so that it can use unrealistically huge
 array index that would only fit in size_t but not int or ssize_t
 to achieve unstated goal.

 Will merge to 'master'.
 source: <aONhmrE0otiyZ16f@ArchLinux>


* ds/sparse-checkout-clean (2025-09-12) 7 commits
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Expecting a (hopefully small) incremental update.
 cf. <3537e220-44b6-4e37-a568-cef34a2fddfd@gmail.com>
 cf. <xmqq5xcpgy9t.fsf@gitster.g>
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.

* lc/rebase-trailer (2025-08-03) 2 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Has been expecting a reroll for way too long.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Has been expecting a reroll for way too long.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>


^ permalink raw reply	[relevance 25%]

* What's cooking in git.git (Oct 2025, #03; Wed, 8)
@ 2025-10-09  0:18 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-09  0:18 UTC (permalink / raw)
  To: git

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]

* cc/fast-import-strip-signed-tags (2025-10-07) 5 commits
 - fast-import: add '--signed-tags=<mode>' option
 - fast-export: handle all kinds of tag signatures
 - t9350: properly count annotated tags
 - lib-gpg: allow tests with the GPGSM prereq first
 - doc: git-tag: stop focussing on GPG signed tags

 "git fast-import" is taught to handle signed tags, just like it
 recently learned to handle signed commits, in different ways.

 Comments?
 source: <20251007122958.1089680-1-christian.couder@gmail.com>


* ps/ci-rust (2025-10-07) 8 commits
 - rust: support for Windows
 - ci: verify minimum supported Rust version
 - ci: check for common Rust mistakes via Clippy
 - rust/varint: add safety comments
 - ci: check formatting of our Rust code
 - ci: deduplicate calls to `apt-get update`
 - Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
 - Merge branch 'ps/rust-balloon' into ps/ci-rust
 (this branch uses ps/gitlab-ci-windows-improvements.)

 CI improvements to handle the recent Rust integration better.

 Comments?
 source: <20251007-b4-pks-ci-rust-v1-0-394502abe7ea@pks.im>


* ps/ref-peeled-tags (2025-10-07) 13 commits
 - ref-filter: parse objects on demand
 - ref-filter: detect broken tags when dereferencing them
 - refs: don't store peeled object IDs for invalid tags
 - object: add flag to `peel_object()` to verify object type
 - refs: drop infrastructure to peel via iterators
 - refs: drop `current_ref_iter` hack
 - builtin/show-ref: convert to use `reference_get_peeled_oid()`
 - ref-filter: propagate peeled object ID
 - upload-pack: convert to use `reference_get_peeled_oid()`
 - refs: expose peeled object ID via the iterator
 - refs: refactor reference status flags
 - refs: introduce `.ref` field for the base iterator
 - refs: introduce wrapper struct for `each_ref_fn`

 Some ref backend storage can hold not just the object name of an
 annotated tag, but the object name of the object the tag points at.
 The code to handle this information has been streamlined.

 Expecting v2.
 cf. <aOZqVAOjVboM3sm3@pks.im>
 source: <20251007-b4-pks-ref-filter-skip-parsing-objects-v1-0-916cc7c6886b@pks.im>


* ps/remove-packfile-store-get-packs (2025-10-07) 7 commits
 - packfile: rename `packfile_store_get_all_packs()`
 - packfile: introduce macro to iterate through packs
 - packfile: drop `packfile_store_get_packs()`
 - builtin/grep: simplify how we preload packs
 - builtin/gc: convert to use `packfile_store_get_all_packs()`
 - object-name: convert to use `packfile_store_get_all_packs()`
 - Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
 (this branch uses tb/incremental-midx-part-3.1.)

 Two slightly different ways to get at "all the packfiles" in API
 has been cleaned up.

 Comments?
 source: <20251007-pks-packfiles-convert-get-all-v1-0-428227657a89@pks.im>


* tb/doc-submitting-patches (2025-10-07) 2 commits
 - SubmittingPatches: guidance for multi-series efforts
 - SubmittingPatches: extend release-notes experiment to topic names

 A few more things that patch authors can do to help maintainer to
 keep track of their topics better.

 Will merge to 'next'.
 source: <cover.1759873165.git.me@ttaylorr.com>

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

* je/doc-push (2025-09-23) 2 commits
  (merged to 'next' on 2025-09-29 at 4ff1b675ed)
 + doc: git-push: rewrite refspec specification
 + doc: git-push: create PUSH RULES section

 Doc updates.
 source: <pull.1973.v2.git.1758651049.gitgitgadget@gmail.com>


* js/curl-off-t-fixes (2025-09-26) 3 commits
  (merged to 'next' on 2025-09-30 at 6d1e5fd288)
 + http-push: avoid new compile error
 + imap-send: be more careful when casting to `curl_off_t`
 + http: offer to cast `size_t` to `curl_off_t` safely

 A few places where an size_t value was cast to curl_off_t without
 checking has been updated to use the existing helper function.
 source: <pull.1974.v2.git.1758882772.gitgitgadget@gmail.com>


* jt/clang-format-foreach-wo-space-before-parenthesis (2025-09-27) 1 commit
  (merged to 'next' on 2025-09-30 at c32668ab36)
 + clang-format: exclude control macros from SpaceBeforeParens

 Clang-format update to let our control macros formatted the way we
 had them traditionally, e.g., "for_each_string_list_item()" without
 space before the parentheses.
 source: <20250927145049.723341-4-jltobler@gmail.com>


* kn/ref-cache-seek-fix (2025-10-01) 1 commit
  (merged to 'next' on 2025-10-02 at 5896b8c896)
 + refs/ref-cache: fix SEGFAULT when seeking in empty directories

 Handling of an empty subdirectory of .git/refs/ in the ref-files
 backend has been corrected.
 source: <20251001-583-git-for-each-ref-start-after-v3-1-000f03837a92@gmail.com>


* mh/doc-credential-url-prefix (2025-10-01) 1 commit
  (merged to 'next' on 2025-10-02 at dd0d9a1c59)
 + docs/gitcredentials: describe URL prefix matching

 Doc update to describe a feature that has already been implemented.
 source: <pull.1979.git.1759352209657.gitgitgadget@gmail.com>


* ml/reflog-write-committer-info-fix (2025-09-30) 1 commit
  (merged to 'next' on 2025-10-02 at 9a61d07bac)
 + builtin/reflog: respect user config in "write" subcommand

 "git reflog write" did not honor the configured user.name/email
 which has been corrected.
 source: <20250930195320.23825-1-git@lohmann.sh>


* ps/odb-clean-stale-wrappers (2025-09-10) 1 commit
  (merged to 'next' on 2025-09-30 at 90f1033b8c)
 + odb: drop deprecated wrapper functions

 Code clean-up.
 source: <20250910-b4-pks-odb-drop-wrappers-v1-1-6ed660cb1eec@pks.im>


* ps/packfile-store (2025-09-23) 16 commits
  (merged to 'next' on 2025-09-29 at 342bb57fc2)
 + packfile: refactor `get_packed_git_mru()` to work on packfile store
 + packfile: refactor `get_all_packs()` to work on packfile store
 + packfile: refactor `get_packed_git()` to work on packfile store
 + packfile: move `get_multi_pack_index()` into "midx.c"
 + packfile: introduce function to load and add packfiles
 + packfile: refactor `install_packed_git()` to work on packfile store
 + packfile: split up responsibilities of `reprepare_packed_git()`
 + packfile: refactor `prepare_packed_git()` to work on packfile store
 + packfile: reorder functions to avoid function declaration
 + odb: move kept cache into `struct packfile_store`
 + odb: move MRU list of packfiles into `struct packfile_store`
 + odb: move packfile map into `struct packfile_store`
 + odb: move initialization bit into `struct packfile_store`
 + odb: move list of packfiles into `struct packfile_store`
 + packfile: introduce a new `struct packfile_store`
 + Merge branch 'ps/object-store-midx-dedup-info' into ps/packfile-store
 (this branch is used by tb/incremental-midx-part-3.1.)

 Code clean-up around the in-core list of all the pack files and
 object database(s).
 cf. <aNmxQqV3+1Ad12qC@nand.local>
 source: <20250923-b4-pks-packfiles-store-v6-0-b48f2a882759@pks.im>


* ps/rust-balloon (2025-10-02) 9 commits
  (merged to 'next' on 2025-10-02 at fe4cdc2dfa)
 + ci: enable Rust for breaking-changes jobs
 + ci: convert "pedantic" job into full build with breaking changes
 + BreakingChanges: announce Rust becoming mandatory
 + varint: reimplement as test balloon for Rust
 + varint: use explicit width for integers
 + help: report on whether or not Rust is enabled
 + Makefile: introduce infrastructure to build internal Rust library
 + Makefile: reorder sources after includes
 + meson: add infrastructure to build internal Rust library
 (this branch is used by ps/ci-rust.)

 Dip our toes a bit to (optionally) use Rust implemented helper
 called from our C code.
 cf. <aNsQ5UjjbqJr8_Ik@fruit.crustytoothpaste.net>
 source: <20251002-b4-pks-rust-breaking-change-v8-0-3a89fd5b1ce7@pks.im>

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

* en/doc-merge-tree-describe-merge-base (2025-10-02) 1 commit
  (merged to 'next' on 2025-10-06 at 787ff6f08a)
 + Documentation/git-merge-tree.adoc: clarify the --merge-base option

 Clarify the "--merge-base" command line option in "git merge-tree".

 Will merge to 'master'.
 source: <pull.1980.git.1759444487406.gitgitgadget@gmail.com>


* je/doc-data-model (2025-10-07) 2 commits
 - fixup! doc: add a explanation of Git's data model
 - doc: add a explanation of Git's data model

 Add a new manual that describes the data model.

 Comments?
 source: <pull.1981.git.1759512876284.gitgitgadget@gmail.com>


* rs/add-patch-options-fix (2025-10-06) 6 commits
 - add-patch: reset "permitted" at loop start
 - add-patch: let options a and d roll over like y and n
 - add-patch: let options k and K roll over like j and J
 - add-patch: let options y, n, j, and e roll over to next undecided
 - add-patch: document that option J rolls over
 - add-patch: improve help for options j, J, k, and K

 The code in "git add -p" and friends to iterate over hunks was
 riddled with bugs, which has been corrected.

 Will merge to 'next'.
 source: <fe8e8097-2b05-4dd2-a754-f59e4ba5f95a@web.de>


* jn/doc-help-translaing-pretty-options (2025-10-05) 1 commit
  (merged to 'next' on 2025-10-08 at 8962b8d1f0)
 + doc: do not break sentences into "lego" pieces

 Documentation for "git log --pretty" options has been updated
 to make it easier to translate.

 Will merge to 'master'.
 source: <pull.1982.git.1759698724134.gitgitgadget@gmail.com>


* jn/doc-synopsis (2025-10-05) 3 commits
  (merged to 'next' on 2025-10-08 at fd4f96ff5e)
 + doc: convert git worktree to synopsis style
 + doc: convert git tag to synopsis style
 + doc: convert git-stash.adoc to synopis style

 Doc-mark-up modernization continues.

 Will merge to 'master'.
 source: <pull.1969.git.1759698702.gitgitgadget@gmail.com>


* tb/incremental-midx-part-3.1 (2025-09-29) 51 commits
 - SQUASH??? play well with other topics by preemptively including "repository.h"
 - builtin/repack.c: clean up unused `#include`s
 - repack: move `write_cruft_pack()` out of the builtin
 - repack: move `write_filtered_pack()` out of the builtin
 - repack: move `pack_kept_objects` to `struct pack_objects_args`
 - repack: move `finish_pack_objects_cmd()` out of the builtin
 - builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 - repack: extract `write_pack_opts_is_local()`
 - repack: move `find_pack_prefix()` out of the builtin
 - builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 - builtin/repack.c: introduce `struct write_pack_opts`
 - repack: 'write_midx_included_packs' API from the builtin
 - builtin/repack.c: inline packs within `write_midx_included_packs()`
 - builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 - builtin/repack.c: inline `remove_redundant_bitmaps()`
 - builtin/repack.c: reorder `remove_redundant_bitmaps()`
 - repack: keep track of MIDX pack names using existing_packs
 - builtin/repack.c: use a string_list for 'midx_pack_names'
 - builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 - builtin/repack.c: remove ref snapshotting from builtin
 - repack: remove pack_geometry API from the builtin
 - builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 - builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 - builtin/repack.c: rename various pack_geometry functions
 - builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 - builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 - repack: remove 'generated_pack' API from the builtin
 - builtin/repack.c: provide pack locations to `generated_pack_install()`
 - builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 - builtin/repack.c: factor our "generated_pack_install"
 - builtin/repack.c: rename "struct generated_pack_data"
 - repack: remove 'existing_packs' API from the builtin
 - builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 - builtin/repack.c: pass "packdir" when removing packs
 - repack: remove 'remove_redundant_pack' from the builtin
 - builtin/repack.c: rename many 'struct existing_packs' functions
 - repack: remove 'prepare_pack_objects' from the builtin
 - repack: move 'delta_base_offset' to 'struct pack_objects_args'
 - builtin/repack.c: pass both pack_objects args to repack_config
 - repack: introduce new compilation unit
 - builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 - builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 - builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 - builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 - builtin/repack.c: avoid "the_hash_algo" when deleting packs
 - builtin/repack.c: avoid "the_repository" when repacking promisor objects
 - builtin/repack.c: avoid "the_repository" when removing packs
 - builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 - builtin/repack.c: avoid "the_repository" in existing packs API
 - builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 - Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch is used by ps/remove-packfile-store-get-packs.)

 Comments?
 source: <cover.1759097191.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
 - SubmittingPatches: add section about AI

 AI guidelines.

 Perhaps we should adopt what QEMU uses for simplicity?
 cf. <aOBMHqLxNd86vgjH@fruit.crustytoothpaste.net>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* ps/history (2025-10-01) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: parse commits before dereferencing them
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.
 source: <20251001-b4-pks-history-builtin-v4-0-8e61ddb86317@pks.im>


* en/make-libgit-a (2025-10-02) 2 commits
 - make: delete REFTABLE_LIB, add reftable to LIB_OBJS
 - make: delete XDIFF_LIB, add xdiff to LIB_OBJS

 Instead of three library archives (one for git, one for reftable,
 and one for xdiff), roll everything into a single libgit.a archive.
 This would help later effort to FFI into Rust.

 Will merge to 'next'.
 source: <pull.2065.v2.git.git.1759447647.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-02) 4 commits
 - amend! doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Add side by side branch checkout example
 - amend! doc: git-worktree: Link to examples
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Comments?
 source: <xmqqseg1xwc1.fsf@gitster.g>


* ps/gitlab-ci-windows-improvements (2025-10-02) 5 commits
  (merged to 'next' on 2025-10-03 at 6adb054d12)
 + t8020: fix test failure due to indeterministic tag sorting
 + gitlab-ci: upload Meson test logs as JUnit reports
 + gitlab-ci: drop workaround for Python certificate store on Windows
 + gitlab-ci: ignore failures to disable realtime monitoring
 + gitlab-ci: dedup instructions to disable realtime monitoring
 (this branch is used by ps/ci-rust.)

 GitLab CI improvements.

 Will merge to 'master'.
 source: <20251002-pks-gitlab-ci-windows-improvements-v1-0-6a8b6b45d728@pks.im>


* rj/doc-missing-technical-docs (2025-10-02) 1 commit
  (merged to 'next' on 2025-10-06 at f639955fdc)
 + doc: add some missing technical documents
 (this branch is used by rj/doc-technical-fixes.)

 Doc updates.

 Will merge to 'master'.
 source: <20251002221233.541844-2-ramsay@ramsayjones.plus.com>


* rj/doc-technical-fixes (2025-10-02) 3 commits
 - doc: commit-graph.adoc: fix up some formatting
 - doc: sparse-checkout.adoc: fix asciidoc warnings
 - doc: remembering-renames.adoc: fix asciidoc warnings
 (this branch uses rj/doc-missing-technical-docs.)

 Documentation mark-up fixes.

 Expecting v3.
 cf. <20251002221233.541844-1-ramsay@ramsayjones.plus.com>
 source: <20251002221233.541844-1-ramsay@ramsayjones.plus.com>


* ja/doc-markup-attached-paragraph-fix (2025-10-07) 2 commits
  (merged to 'next' on 2025-10-07 at 5b991a7b14)
 + doc: fix indentation of refStorage item in git-config(1)
  (merged to 'next' on 2025-09-30 at a91ca5db03)
 + doc: change the markup of paragraphs following a nested list item

 Documentation mark-up fix.
 source: <20250927195032.37223-1-jn.avila@free.fr>
 source: <20251007082223.GA3336685@coredump.intra.peff.net>


* jc/optional-path (2025-09-28) 4 commits
  (merged to 'next' on 2025-10-08 at a1e8af9952)
 + parseopt: values of pathname type can be prefixed with :(optional)
 + config: values of pathname type can be prefixed with :(optional)
 + t7500: fix GIT_EDITOR shell snippet
 + t7500: make each piece more independent

 Configuration variables that take a pathname as a value
 (e.g. blame.ignorerevsfile) can be marked as optional by prefixing
 ":(optoinal)" before its value.

 Will merge to 'master'.
 source: <cover.1759094936.git.ben.knoble+github@gmail.com>


* kh/doc-patch-id-markup-fix (2025-09-29) 1 commit
  (merged to 'next' on 2025-10-08 at a81dc9f7e6)
 + doc: patch-id: fix accidental literal blocks

 Documentation mark-up fix.

 Will merge to 'master'.
 source: <v2-e5ad12cc3b3.1759178715.git.code@khaugsbakk.name>


* sa/replay-atomic-ref-updates (2025-09-26) 1 commit
 - replay: make atomic ref updates the default behavior
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Expecting v3.
 cf. <64b63d62-482d-42b2-8090-60aac8f505d4@gmail.com>
 source: <20250926230838.35870-2-siddharthasthana31@gmail.com>


* kh/format-patch-range-diff-notes (2025-09-25) 3 commits
  (merged to 'next' on 2025-10-08 at e06aae4166)
 + format-patch: handle range-diff on notes correctly for single patches
 + revision: add rdiff_log_arg to rev_info
 + range-diff: rename other_arg to log_arg

 "git format-patch --range-diff=... --notes=..." did not drive the
 underlying range-diff with correct --notes parameter, ending up
 comparing with different set of notes from its main patch output
 you would get from "git format-patch --notes=..." for a singleton
 patch.

 Will merge to 'master'.
 source: <v2-cover.1758819879.git.code@khaugsbakk.name>


* je/doc-pull (2025-09-23) 4 commits
 - doc: git-pull: clarify how to exit a conflicted merge
 - doc: git-pull: delete the example
 - doc: git-pull: clarify options for integrating remote branch
 - doc: git-pull: move <repository> and <refspec> params

 Documentation updates.

 Will replace with v2.
 source: <pull.1976.git.1758656702.gitgitgadget@gmail.com>


* je/doc-push-upstream (2025-10-06) 5 commits
  (merged to 'next' on 2025-10-08 at 7bda6929b1)
 + doc: git-push: add explanation of `git push origin main`
 + doc: git-push: clarify "what to push"
 + doc: git-push: clarify "where to push"
 + doc: add an UPSTREAM BRANCHES section to pull/push/fetch
 + doc: git-push: clarify intro

 Documentation updates.

 Will merge to 'master'.
 source: <pull.1964.v5.git.1759777131.gitgitgadget@gmail.com>


* jk/diff-no-index-with-pathspec-fix (2025-09-24) 1 commit
 - diff --no-index: fix logic for paths ending in '/'

 An earlier addition to "git diff --no-index A B" to limit the
 output with pathspec after the two directories misbehaved when
 these directories were given with a trailing slash, which has been
 corrected.
 source: <20250924-jk-fix-no-index-path-with-slash-v1-1-6b2028c0de92@intel.com>


* jt/repo-stats (2025-09-27) 6 commits
 - builtin/repo: add progress meter for stats
 - builtin/repo: add keyvalue and nul format for stats
 - builtin/repo: add object counts in stats output
 - builtin/repo: introduce stats subcommand
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()

 "git repo stats", a new command.

 Comments?
 source: <20250927145049.723341-1-jltobler@gmail.com>


* kn/reftable-consistency-checks (2025-10-07) 7 commits
  (merged to 'next' on 2025-10-07 at b9f4bd79f9)
 + refs/reftable: add fsck check for checking the table name
 + reftable: add code to facilitate consistency checks
 + fsck: order 'fsck_msg_type' alphabetically
 + Documentation/fsck-msgids: remove duplicate msg id
 + reftable: check for trailing newline in 'tables.list'
 + refs: move consistency check msg to generic layer
 + refs: remove unused headers

 The reftable backend learned to sanity check its on-disk data more
 carefully.

 Will merge to 'master'.
 source: <20251007-228-reftable-introduce-consistency-checks-v6-0-638cff42f0b0@gmail.com>


* bc/sha1-256-interop-01 (2025-10-02) 9 commits
 - t1010: use BROKEN_OBJECTS prerequisite
 - t: allow specifying compatibility hash
 - fsck: consider gpgsig headers expected in tags
 - rev-parse: allow printing compatibility hash
 - docs: add documentation for loose objects
 - docs: improve ambiguous areas of pack format documentation
 - docs: reflect actual double signature for tags
 - docs: update offset order for pack index v3
 - docs: update pack index v3 format

 The beginning of SHA1-SHA256 interoperability work.

 Expecting v3.
 cf. <aOA6z-kFCd78XtxX@fruit.crustytoothpaste.net>
 source: <20251002223855.1022847-1-sandals@crustytoothpaste.net>


* pw/add-p-hunk-splitting-fix (2025-09-25) 2 commits
  (merged to 'next' on 2025-10-08 at 3fdb4a84ce)
 + add-patch: update hunk splitability after editing
 + add -p: mark split hunks as undecided

 Marking a hunk 'selected' in "git add -p" and then splitting made
 all the split pieces 'selected'; this has been changed to make them
 all 'undecided', which gives better end-user experience.

 Will merge to 'master'.
 source: <pull.1863.v3.git.1758813038.gitgitgadget@gmail.com>


* en/xdiff-cleanup (2025-09-26) 12 commits
  (merged to 'next' on 2025-10-08 at 5bc21d0f06)
 + xdiff: change type of xdfile_t.changed from char to bool
 + xdiff: add macros DISCARD(0), KEEP(1), INVESTIGATE(2) in xprepare.c
 + xdiff: rename rchg -> changed in xdfile_t
 + xdiff: delete chastore from xdfile_t
 + xdiff: delete fields ha, line, size in xdlclass_t in favor of an xrecord_t
 + xdiff: delete redundant array xdfile_t.ha
 + xdiff: delete struct diffdata_t
 + xdiff: delete local variables that alias fields in xrecord_t
 + xdiff: delete superfluous function xdl_get_rec() in xemit
 + xdiff: delete unnecessary fields from xrecord_t and xdfile_t
 + xdiff: delete local variables and initialize/free xdfile_t directly
 + xdiff: delete static forward declarations in xprepare

 A lot of code clean-up of xdiff.
 Split out of a larger topic.

 Will merge to 'master'.
 source: <pull.2048.v6.git.git.1758926520.gitgitgadget@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting v4.
 cf. <20251006112518.3764240-1-adrian.ratiu@collabora.com>
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


* ps/commit-graph-per-object-source (2025-09-04) 5 commits
  (merged to 'next' on 2025-10-07 at 6c9690a649)
 + commit-graph: pass graphs that are to be merged as parameter
 + commit-graph: return commit graph from `repo_find_commit_pos_in_graph()`
 + commit-graph: return the prepared commit graph from `prepare_commit_graph()`
 + revision: drop explicit check for commit graph
 + blame: drop explicit check for commit graph

 Code clean-up around commit-graph.

 Will merge to 'master'.
 cf. <cf7aeda1-297a-4805-b0ae-e379ce11bbcf@gmail.com>
 cf. <aN5gPoPC4WEYw9CF@pks.im>
 source: <20250904-b4-pks-commit-graph-via-source-v1-0-d932c2481e1a@pks.im>


* sj/string-list (2025-10-05) 4 commits
  (merged to 'next' on 2025-10-08 at cf0fc3ea18)
 + refs: enable sign compare warnings check
 + string-list: change "string_list_find_insert_index" return type to "size_t"
 + string-list: replace negative index encoding with "exact_match" parameter
 + string-list: use bool instead of int for "exact_match"

 The "string-list" API function to find where a given string would
 be inserted got updated so that it can use unrealistically huge
 array index that would only fit in size_t but not int or ssize_t
 to achieve unstated goal.

 Will merge to 'master'.
 source: <aONhmrE0otiyZ16f@ArchLinux>


* ds/sparse-checkout-clean (2025-09-12) 7 commits
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Expecting a (hopefully small) incremental update.
 cf. <3537e220-44b6-4e37-a568-cef34a2fddfd@gmail.com>
 cf. <xmqq5xcpgy9t.fsf@gitster.g>
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.

* lc/rebase-trailer (2025-08-03) 2 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Has been expecting a reroll for way too long.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Has been expecting a reroll for way too long.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>


^ permalink raw reply	[relevance 23%]

* Re: What's cooking in git.git (Oct 2025, #02; Mon, 6)
  @ 2025-10-08 16:41 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-08 16:41 UTC (permalink / raw)
  To: Elijah Newren; +Cc: git

Elijah Newren <newren@gmail.com> writes:

>> * rj/doc-technical-fixes (2025-10-02) 3 commits
>>  - doc: commit-graph.adoc: fix up some formatting
>>  - doc: sparse-checkout.adoc: fix asciidoc warnings
>>  - doc: remembering-renames.adoc: fix asciidoc warnings
>>  (this branch uses rj/doc-missing-technical-docs.)
>>
>>  Documenation mark-up fixes.
>>
>>  Comments?
>>  source: <20251002221233.541844-1-ramsay@ramsayjones.plus.com>
>
> Documenation -> Documentation
>
> Ramsay commented that he had a small fixup to send after waiting for
> more feedback (https://lore.kernel.org/git/436fb507-6764-46f4-abb1-34c82e27b808@ramsayjones.plus.com/),
> so maybe mark as waiting for a re-roll?

I missed this one.  Very much appreciated.

> The series looked fine to me, I just feel bad for causing so much work
> for him.  Are the things in Documentation/technical/ meant to be
> pretty-formatted and distributed anywhere?  I assumed the audience was
> fellow git developers and the original .txt file (that someone else
> renamed to .adoc) was the preferred viewing format.

My assumpstion has been the same as yours.  I was surprised already
when some folks started to subject things in Documentation/howto/ to
AsciiDoc long ago, so I am no longer surprised by this, though ;-)

>> * kh/doc-patch-id-markup-fix (2025-09-29) 1 commit
>>  - doc: patch-id: fix accidental literal blocks
>>
>>  Documenaotin mark-up fix.
>>
>>  Will merge to 'next'?
>>  source: <v2-e5ad12cc3b3.1759178715.git.code@khaugsbakk.name>
>
> I think Documentation is determined to be misspelled in your release
> notes, in various exciting ways.  :-)

Thanks.  Fixed.

I blame a new keyboard at work.  If somebody measures my typo-rate
and finds it higher than other days on Tuesdays thru Thursdays, then
that is it ;-)

All others points in your list were very helpful.  Thanks.


^ permalink raw reply	[relevance 99%]

* Re: What's cooking in git.git (Oct 2025, #02; Mon, 6)
  @ 2025-10-07 14:24 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-10-07 14:24 UTC (permalink / raw)
  To: Jeff King; +Cc: Jean-Noël Avila, git

Jeff King <peff@peff.net> writes:

> Subject: [PATCH] doc: fix indentation of refStorage item in git-config(1)
>
> Commit 5a12fd2a8c (doc: change the markup of paragraphs following a
> nested list item, 2025-09-27) converted the list of items in
> config/extensions.adoc into a definition list. This caused a small
> regression in the indentation of one item, but only when built with
> AsciiDoctor. You can see the problem with:
>
>   $ ./doc-diff --asciidoctor 5a12fd2a8c^ 5a12fd2a8c
>   --- a/c44beea485f0f2feaf460e2ac87fdd5608d63cf0-asciidoctor/home/peff/share/man/man1/git-config.1
>   +++ b/5a12fd2a8c850df311aa149c9bad87b7cb002abb-asciidoctor/home/peff/share/man/man1/git-config.1
>   @@ -3128,9 +3128,9 @@ CONFIGURATION FILE
>                   •   reftable for the reftable format. This format is
>                       experimental and its internals are subject to change.
>
>   -               Note that this setting should only be set by git-init(1) or git-
>   -               clone(1). Trying to change it after initialization will not work
>   -               and will produce hard-to-diagnose issues.
>   +           Note that this setting should only be set by git-init(1) or git-
>   +           clone(1). Trying to change it after initialization will not work and
>   +           will produce hard-to-diagnose issues.
>
>               relativeWorktrees
>                   If enabled, indicates at least one worktree has been linked with
>
> (along with many other changes which are correctly fixing what
> 5a12fd2a8c intended to fix). The "Note" paragraph should remain aligned
> with the bullet points, as they are left-aligned with the rest of the
> definition text.
>
> The confusion comes from a paragraph following a list item (ironically,
> the same case that 5a12fd2a8c was solving!). We can solve it by adding
> "--" block markers around the nested list. We couldn't have done that
> before 5a12fd2a8c because before then our list was nested inside another
> set of block markers, something that AsciiDoctor has trouble with. But
> now that we are a top-level definition list, it is OK to do so (and in
> fact, you can see that commit already made a similar adjustment for the
> worktreeConfig entry).
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
>  Documentation/config/extensions.adoc | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/config/extensions.adoc b/Documentation/config/extensions.adoc
> index 49a7598ca5..aaea8c107f 100644
> --- a/Documentation/config/extensions.adoc
> +++ b/Documentation/config/extensions.adoc
> @@ -55,8 +55,9 @@ For historical reasons, this extension is respected regardless of the
>  refStorage:::
>  	Specify the ref storage format to use. The acceptable values are:
>  +
> +--
>  include::../ref-storage-format.adoc[]
> -
> +--
>  +
>  Note that this setting should only be set by linkgit:git-init[1] or
>  linkgit:git-clone[1]. Trying to change it after initialization will not

Thanks.  Will queue.


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Oct 2025, #02; Mon, 6)
@ 2025-10-06 23:41 26% Junio C Hamano
      0 siblings, 2 replies; 200+ results
From: Junio C Hamano @ 2025-10-06 23:41 UTC (permalink / raw)
  To: git

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]

* en/doc-merge-tree-describe-merge-base (2025-10-02) 1 commit
  (merged to 'next' on 2025-10-06 at 787ff6f08a)
 + Documentation/git-merge-tree.adoc: clarify the --merge-base option

 Clarify the "--merge-base" command line option in "git merge-tree".

 Will merge to 'master'.
 source: <pull.1980.git.1759444487406.gitgitgadget@gmail.com>


* je/doc-data-model (2025-10-03) 1 commit
 - doc: add a explanation of Git's data model

 Add a new manual that describes the data model.

 Comments?
 source: <pull.1981.git.1759512876284.gitgitgadget@gmail.com>


* rs/add-patch-options-fix (2025-10-06) 6 commits
 - add-patch: reset "permitted" at loop start
 - add-patch: let options a and d roll over like y and n
 - add-patch: let options k and K roll over like j and J
 - add-patch: let options y, n, j, and e roll over to next undecided
 - add-patch: document that option J rolls over
 - add-patch: improve help for options j, J, k, and K

 The code in "git add -p" and friends to iterate over hunks was
 riddled with bugs, which has been corrected.

 Will merge to 'next'?
 source: <fe8e8097-2b05-4dd2-a754-f59e4ba5f95a@web.de>


* jn/doc-help-translaing-pretty-options (2025-10-05) 1 commit
 - doc: do not break sentences into "lego" pieces

 Documentation for "git log --pretty" options has been updated
 to make it easier to translate.

 Will merge to 'next'.
 source: <pull.1982.git.1759698724134.gitgitgadget@gmail.com>


* jn/doc-synopsis (2025-10-05) 3 commits
 - doc: convert git worktree to synopsis style
 - doc: convert git tag to synopsis style
 - doc: convert git-stash.adoc to synopis style

 Doc-mark-up modernization continues.

 Will merge to 'next'.
 source: <pull.1969.git.1759698702.gitgitgadget@gmail.com>

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

* tb/incremental-midx-part-3.1 (2025-09-29) 51 commits
 - SQUASH??? play well with other topics by preemptively including "repository.h"
 - builtin/repack.c: clean up unused `#include`s
 - repack: move `write_cruft_pack()` out of the builtin
 - repack: move `write_filtered_pack()` out of the builtin
 - repack: move `pack_kept_objects` to `struct pack_objects_args`
 - repack: move `finish_pack_objects_cmd()` out of the builtin
 - builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
 - repack: extract `write_pack_opts_is_local()`
 - repack: move `find_pack_prefix()` out of the builtin
 - builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
 - builtin/repack.c: introduce `struct write_pack_opts`
 - repack: 'write_midx_included_packs' API from the builtin
 - builtin/repack.c: inline packs within `write_midx_included_packs()`
 - builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
 - builtin/repack.c: inline `remove_redundant_bitmaps()`
 - builtin/repack.c: reorder `remove_redundant_bitmaps()`
 - repack: keep track of MIDX pack names using existing_packs
 - builtin/repack.c: use a string_list for 'midx_pack_names'
 - builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
 - builtin/repack.c: remove ref snapshotting from builtin
 - repack: remove pack_geometry API from the builtin
 - builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
 - builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
 - builtin/repack.c: rename various pack_geometry functions
 - builtin/repack.c: remove "repack_promisor_objects()" from the builtin
 - builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
 - repack: remove 'generated_pack' API from the builtin
 - builtin/repack.c: provide pack locations to `generated_pack_install()`
 - builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
 - builtin/repack.c: factor our "generated_pack_install"
 - builtin/repack.c: rename "struct generated_pack_data"
 - repack: remove 'existing_packs' API from the builtin
 - builtin/repack.c: avoid unnecessary numeric casts in existing_packs
 - builtin/repack.c: pass "packdir" when removing packs
 - repack: remove 'remove_redundant_pack' from the builtin
 - builtin/repack.c: rename many 'struct existing_packs' functions
 - repack: remove 'prepare_pack_objects' from the builtin
 - repack: move 'delta_base_offset' to 'struct pack_objects_args'
 - builtin/repack.c: pass both pack_objects args to repack_config
 - repack: introduce new compilation unit
 - builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
 - builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
 - builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
 - builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
 - builtin/repack.c: avoid "the_hash_algo" when deleting packs
 - builtin/repack.c: avoid "the_repository" when repacking promisor objects
 - builtin/repack.c: avoid "the_repository" when removing packs
 - builtin/repack.c: avoid "the_repository" when taking a ref snapshot
 - builtin/repack.c: avoid "the_repository" in existing packs API
 - builtin/repack.c: avoid "the_repository" in `cmd_repack()`
 - Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
 (this branch uses ps/packfile-store.)

 Comments?
 source: <cover.1759097191.git.me@ttaylorr.com>


* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
 - SubmittingPatches: add section about AI

 AI guidelines.

 Perhaps we should adopt what QEMU uses for simplicity?
 cf. <aOBMHqLxNd86vgjH@fruit.crustytoothpaste.net>
 source: <20251001140310.527097-1-christian.couder@gmail.com>


* kn/ref-cache-seek-fix (2025-10-01) 1 commit
  (merged to 'next' on 2025-10-02 at 5896b8c896)
 + refs/ref-cache: fix SEGFAULT when seeking in empty directories

 Fix handling of an empty subdirectory of .git/refs/ in the
 ref-files backend.

 Will merge to 'master'.
 source: <20251001-583-git-for-each-ref-start-after-v3-1-000f03837a92@gmail.com>


* mh/doc-credential-url-prefix (2025-10-01) 1 commit
  (merged to 'next' on 2025-10-02 at dd0d9a1c59)
 + docs/gitcredentials: describe URL prefix matching

 Doc update to describe a feature that has already been implemented.

 Will merge to 'master'.
 source: <pull.1979.git.1759352209657.gitgitgadget@gmail.com>


* ml/reflog-write-committer-info-fix (2025-09-30) 1 commit
  (merged to 'next' on 2025-10-02 at 9a61d07bac)
 + builtin/reflog: respect user config in "write" subcommand

 "git reflog write" did not honor the configured user.name/email
 which has been corrected.

 Will merge to 'master'.
 source: <20250930195320.23825-1-git@lohmann.sh>


* ps/history (2025-10-01) 13 commits
 - builtin/history: implement "split" subcommand
 - cache-tree: allow writing in-memory index as tree
 - add-patch: add support for in-memory index patching
 - add-patch: remove dependency on "add-interactive" subsystem
 - add-patch: split out `struct interactive_options`
 - add-patch: split out header from "add-interactive.h"
 - builtin/history: implement "reword" subcommand
 - builtin: add new "history" command
 - replay: parse commits before dereferencing them
 - replay: stop using `the_repository`
 - replay: extract logic to pick commits
 - wt-status: provide function to expose status for trees
 - Merge branch 'sa/replay-atomic-ref-updates' into ps/history
 (this branch uses sa/replay-atomic-ref-updates.)

 "git history" history rewriting UI.
 source: <20251001-b4-pks-history-builtin-v4-0-8e61ddb86317@pks.im>


* en/make-libgit-a (2025-10-02) 2 commits
 - make: delete REFTABLE_LIB, add reftable to LIB_OBJS
 - make: delete XDIFF_LIB, add xdiff to LIB_OBJS

 Instead of three library archives (one for git, one for reftable,
 and one for xdiff), roll everything into a single libgit.a archive.
 This would help later effort to FFI into Rust.

 Will merge to 'next'?
 source: <pull.2065.v2.git.git.1759447647.gitgitgadget@gmail.com>


* ms/doc-worktree-side-by-side (2025-10-02) 4 commits
 - amend! doc: git-worktree: Add side by side branch checkout example
 - doc: git-worktree: Add side by side branch checkout example
 - amend! doc: git-worktree: Link to examples
 - doc: git-worktree: Link to examples

 Document "git worktree add" and use of out-of-tree worktrees with
 examples.

 Comments?
 source: <xmqqseg1xwc1.fsf@gitster.g>


* ps/gitlab-ci-windows-improvements (2025-10-02) 5 commits
  (merged to 'next' on 2025-10-03 at 6adb054d12)
 + t8020: fix test failure due to indeterministic tag sorting
 + gitlab-ci: upload Meson test logs as JUnit reports
 + gitlab-ci: drop workaround for Python certificate store on Windows
 + gitlab-ci: ignore failures to disable realtime monitoring
 + gitlab-ci: dedup instructions to disable realtime monitoring

 GitLab CI improvements.

 Will merge to 'master'.
 source: <20251002-pks-gitlab-ci-windows-improvements-v1-0-6a8b6b45d728@pks.im>


* rj/doc-missing-technical-docs (2025-10-02) 1 commit
  (merged to 'next' on 2025-10-06 at f639955fdc)
 + doc: add some missing technical documents
 (this branch is used by rj/doc-technical-fixes.)

 Doc updates.

 Will merge to 'master'.
 source: <20251002221233.541844-2-ramsay@ramsayjones.plus.com>


* rj/doc-technical-fixes (2025-10-02) 3 commits
 - doc: commit-graph.adoc: fix up some formatting
 - doc: sparse-checkout.adoc: fix asciidoc warnings
 - doc: remembering-renames.adoc: fix asciidoc warnings
 (this branch uses rj/doc-missing-technical-docs.)

 Documenation mark-up fixes.

 Comments?
 source: <20251002221233.541844-1-ramsay@ramsayjones.plus.com>


* ja/doc-markup-attached-paragraph-fix (2025-09-27) 1 commit
  (merged to 'next' on 2025-09-30 at a91ca5db03)
 + doc: change the markup of paragraphs following a nested list item

 Documentation mark-up fix.

 Expecting an incremental follow-up to avoid regerssion.
 cf. <2239952.irdbgypaU6@cayenne>
 source: <20250927195032.37223-1-jn.avila@free.fr>


* jc/optional-path (2025-09-28) 4 commits
 - parseopt: values of pathname type can be prefixed with :(optional)
 - config: values of pathname type can be prefixed with :(optional)
 - t7500: fix GIT_EDITOR shell snippet
 - t7500: make each piece more independent

 Configuration variables that take a pathname as a value
 (e.g. blame.ignorerevsfile) can be marked as optional by prefixing
 ":(optoinal)" before its value.

 Will merge to 'next'?
 source: <cover.1759094936.git.ben.knoble+github@gmail.com>


* jt/clang-format-foreach-wo-space-before-parenthesis (2025-09-27) 1 commit
  (merged to 'next' on 2025-09-30 at c32668ab36)
 + clang-format: exclude control macros from SpaceBeforeParens

 Clang-format update to let our control macros formatted the way we
 had them traditionally, e.g., "for_each_string_list_item()" without
 space before the parentheses.

 Will merge to 'master'.
 source: <20250927145049.723341-4-jltobler@gmail.com>


* kh/doc-patch-id-markup-fix (2025-09-29) 1 commit
 - doc: patch-id: fix accidental literal blocks

 Documenaotin mark-up fix.

 Will merge to 'next'?
 source: <v2-e5ad12cc3b3.1759178715.git.code@khaugsbakk.name>


* sa/replay-atomic-ref-updates (2025-09-26) 1 commit
 - replay: make atomic ref updates the default behavior
 (this branch is used by ps/history.)

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Comments?
 source: <20250926230838.35870-2-siddharthasthana31@gmail.com>


* kh/format-patch-range-diff-notes (2025-09-25) 3 commits
 - format-patch: handle range-diff on notes correctly for single patches
 - revision: add rdiff_log_arg to rev_info
 - range-diff: rename other_arg to log_arg

 "git format-patch --range-diff=... --notes=..." did not drive the
 underlying range-diff with correct --notes parameter, ending up
 comparing with different set of notes from its main patch output
 you would get from "git format-patch --notes=..." for a singleton
 patch.

 Will merge to 'next'?
 source: <v2-cover.1758819879.git.code@khaugsbakk.name>


* je/doc-pull (2025-09-23) 4 commits
 - doc: git-pull: clarify how to exit a conflicted merge
 - doc: git-pull: delete the example
 - doc: git-pull: clarify options for integrating remote branch
 - doc: git-pull: move <repository> and <refspec> params

 Documentation updates.
 source: <pull.1976.git.1758656702.gitgitgadget@gmail.com>


* je/doc-push-upstream (2025-10-06) 5 commits
 - doc: git-push: add explanation of `git push origin main`
 - doc: git-push: clarify "what to push"
 - doc: git-push: clarify "where to push"
 - doc: add an UPSTREAM BRANCHES section to pull/push/fetch
 - doc: git-push: clarify intro

 Documentation updates.

 Will merge to 'next'?
 source: <pull.1964.v5.git.1759777131.gitgitgadget@gmail.com>


* jk/diff-no-index-with-pathspec-fix (2025-09-24) 1 commit
 - diff --no-index: fix logic for paths ending in '/'

 An earlier addition to "git diff --no-index A B" to limit the
 output with pathspec after the two directories misbehaved when
 these directories were given with a trailing slash, which has been
 corrected.
 source: <20250924-jk-fix-no-index-path-with-slash-v1-1-6b2028c0de92@intel.com>


* jt/repo-stats (2025-09-27) 6 commits
 - builtin/repo: add progress meter for stats
 - builtin/repo: add keyvalue and nul format for stats
 - builtin/repo: add object counts in stats output
 - builtin/repo: introduce stats subcommand
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()

 "git repo stats", a new command.

 Comments?
 source: <20250927145049.723341-1-jltobler@gmail.com>


* js/curl-off-t-fixes (2025-09-26) 3 commits
  (merged to 'next' on 2025-09-30 at 6d1e5fd288)
 + http-push: avoid new compile error
 + imap-send: be more careful when casting to `curl_off_t`
 + http: offer to cast `size_t` to `curl_off_t` safely

 A few places where an size_t value was cast to curl_off_t without
 checking has been updated to use the existing helper function.

 Will merge to 'master'.
 source: <pull.1974.v2.git.1758882772.gitgitgadget@gmail.com>


* kn/reftable-consistency-checks (2025-10-06) 7 commits
 - refs/reftable: add fsck check for checking the table name
 - reftable: add code to facilitate consistency checks
 - fsck: order 'fsck_msg_type' alphabetically
 - Documentation/fsck-msgids: remove duplicate msg id
 - reftable: check for trailing newline in 'tables.list'
 - refs: move consistency check msg to generic layer
 - refs: remove unused headers

 The reftable backend learned to sanity check its on-disk data more
 carefully.

 Comments?
 source: <20251006-228-reftable-introduce-consistency-checks-v5-0-f196d386214f@gmail.com>


* bc/sha1-256-interop-01 (2025-10-02) 9 commits
 - t1010: use BROKEN_OBJECTS prerequisite
 - t: allow specifying compatibility hash
 - fsck: consider gpgsig headers expected in tags
 - rev-parse: allow printing compatibility hash
 - docs: add documentation for loose objects
 - docs: improve ambiguous areas of pack format documentation
 - docs: reflect actual double signature for tags
 - docs: update offset order for pack index v3
 - docs: update pack index v3 format

 The beginning of SHA1-SHA256 interoperability work.

 Will merge to 'next'?
 source: <20251002223855.1022847-1-sandals@crustytoothpaste.net>


* pw/add-p-hunk-splitting-fix (2025-09-25) 2 commits
 - add-patch: update hunk splitability after editing
 - add -p: mark split hunks as undecided

 Marking a hunk 'selected' in "git add -p" and then splitting made
 all the split pieces 'selected'; this has been changed to make them
 all 'undecided', which gives better end-user experience.

 Will merge to 'next'?
 source: <pull.1863.v3.git.1758813038.gitgitgadget@gmail.com>


* en/xdiff-cleanup (2025-09-26) 12 commits
 - xdiff: change type of xdfile_t.changed from char to bool
 - xdiff: add macros DISCARD(0), KEEP(1), INVESTIGATE(2) in xprepare.c
 - xdiff: rename rchg -> changed in xdfile_t
 - xdiff: delete chastore from xdfile_t
 - xdiff: delete fields ha, line, size in xdlclass_t in favor of an xrecord_t
 - xdiff: delete redundant array xdfile_t.ha
 - xdiff: delete struct diffdata_t
 - xdiff: delete local variables that alias fields in xrecord_t
 - xdiff: delete superfluous function xdl_get_rec() in xemit
 - xdiff: delete unnecessary fields from xrecord_t and xdfile_t
 - xdiff: delete local variables and initialize/free xdfile_t directly
 - xdiff: delete static forward declarations in xprepare

 A lot of code clean-up of xdiff.
 Split out of a larger topic.

 Will merge to 'next'?
 source: <pull.2048.v6.git.git.1758926520.gitgitgadget@gmail.com>


* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - submodule: add gitdir path config override
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Comments?
 source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>


* je/doc-push (2025-09-23) 2 commits
  (merged to 'next' on 2025-09-29 at 4ff1b675ed)
 + doc: git-push: rewrite refspec specification
 + doc: git-push: create PUSH RULES section

 Doc updates.

 Will merge to 'master'.
 source: <pull.1973.v2.git.1758651049.gitgitgadget@gmail.com>


* ps/odb-clean-stale-wrappers (2025-09-10) 1 commit
  (merged to 'next' on 2025-09-30 at 90f1033b8c)
 + odb: drop deprecated wrapper functions

 Code clean-up.

 Will merge to 'master'.
 source: <20250910-b4-pks-odb-drop-wrappers-v1-1-6ed660cb1eec@pks.im>


* ps/commit-graph-per-object-source (2025-09-04) 5 commits
 - commit-graph: pass graphs that are to be merged as parameter
 - commit-graph: return commit graph from `repo_find_commit_pos_in_graph()`
 - commit-graph: return the prepared commit graph from `prepare_commit_graph()`
 - revision: drop explicit check for commit graph
 - blame: drop explicit check for commit graph

 Declare commit-graph is per object_source, which may not be a good idea.

 Will merge to 'next'.
 cf. <cf7aeda1-297a-4805-b0ae-e379ce11bbcf@gmail.com>
 cf. <aN5gPoPC4WEYw9CF@pks.im>
 source: <20250904-b4-pks-commit-graph-via-source-v1-0-d932c2481e1a@pks.im>


* ps/rust-balloon (2025-10-02) 9 commits
  (merged to 'next' on 2025-10-02 at fe4cdc2dfa)
 + ci: enable Rust for breaking-changes jobs
 + ci: convert "pedantic" job into full build with breaking changes
 + BreakingChanges: announce Rust becoming mandatory
 + varint: reimplement as test balloon for Rust
 + varint: use explicit width for integers
 + help: report on whether or not Rust is enabled
 + Makefile: introduce infrastructure to build internal Rust library
 + Makefile: reorder sources after includes
 + meson: add infrastructure to build internal Rust library

 Dip our toes a bit to (optionally) use Rust implemented helper
 called from our C code.

 Will merge to 'master'.
 cf. <aNsQ5UjjbqJr8_Ik@fruit.crustytoothpaste.net>
 source: <20251002-b4-pks-rust-breaking-change-v8-0-3a89fd5b1ce7@pks.im>


* sj/string-list (2025-10-05) 4 commits
 - refs: enable sign compare warnings check
 - string-list: change "string_list_find_insert_index" return type to "size_t"
 - string-list: replace negative index encoding with "exact_match" parameter
 - string-list: use bool instead of int for "exact_match"

 The "string-list" API function to find where a given string would
 be inserted got updated so that it can use unrealistically huge
 array index that would only fit in size_t but not int or ssize_t
 to achieve unstated goal.

 Will merge to 'next'?
 source: <aONhmrE0otiyZ16f@ArchLinux>


* ps/packfile-store (2025-09-23) 16 commits
  (merged to 'next' on 2025-09-29 at 342bb57fc2)
 + packfile: refactor `get_packed_git_mru()` to work on packfile store
 + packfile: refactor `get_all_packs()` to work on packfile store
 + packfile: refactor `get_packed_git()` to work on packfile store
 + packfile: move `get_multi_pack_index()` into "midx.c"
 + packfile: introduce function to load and add packfiles
 + packfile: refactor `install_packed_git()` to work on packfile store
 + packfile: split up responsibilities of `reprepare_packed_git()`
 + packfile: refactor `prepare_packed_git()` to work on packfile store
 + packfile: reorder functions to avoid function declaration
 + odb: move kept cache into `struct packfile_store`
 + odb: move MRU list of packfiles into `struct packfile_store`
 + odb: move packfile map into `struct packfile_store`
 + odb: move initialization bit into `struct packfile_store`
 + odb: move list of packfiles into `struct packfile_store`
 + packfile: introduce a new `struct packfile_store`
 + Merge branch 'ps/object-store-midx-dedup-info' into ps/packfile-store
 (this branch is used by tb/incremental-midx-part-3.1.)

 Code clean-up around the in-core list of all the pack files and
 object database(s).

 Will merge to 'master'.
 cf. <aNmxQqV3+1Ad12qC@nand.local>
 source: <20250923-b4-pks-packfiles-store-v6-0-b48f2a882759@pks.im>


* ds/sparse-checkout-clean (2025-09-12) 7 commits
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 On hold.
 cf. <3537e220-44b6-4e37-a568-cef34a2fddfd@gmail.com>
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.

* lc/rebase-trailer (2025-08-03) 2 commits
 . rebase: support --trailer
 . trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Has been expecting a reroll for way too long.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Has been expecting a reroll for way too long.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>


^ permalink raw reply	[relevance 26%]

* Re: What's cooking in git.git (Sep 2025, #11; Mon, 29)
  @ 2025-09-30 14:43 99%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-09-30 14:43 UTC (permalink / raw)
  To: brian m. carlson; +Cc: git

"brian m. carlson" <sandals@crustytoothpaste.net> writes:

> On 2025-09-29 at 22:19:25, Junio C Hamano wrote:
>> * ps/rust-balloon (2025-09-24) 9 commits
>>  - ci: enable Rust for breaking-changes jobs
>>  - ci: convert "pedantic" job into full build with breaking changes
>>  - BreakingChanges: announce Rust becoming mandatory
>>  - varint: reimplement as test balloon for Rust
>>  - varint: use explicit width for integers
>>  - help: report on whether or not Rust is enabled
>>  - Makefile: introduce infrastructure to build internal Rust library
>>  - Makefile: reorder sources after includes
>>  - meson: add infrastructure to build internal Rust library
>> 
>>  Dip our toes a bit to (optionally) use Rust implemented helper
>>  called from our C code.
>> 
>>  Comments?
>
> This looks fine to me and addressed all of my previous feedback.  The
> cover letter incorrectly says that it's only wiring up Meson (which is
> no longer true), but we're not including that in the series, so we don't
> need to fix it.
>
> I confirmed that my branch using Rust builds fine on top of that version
> as well.

Thanks!


^ permalink raw reply	[relevance 99%]

* What's cooking in git.git (Sep 2025, #11; Mon, 29)
@ 2025-09-29 22:19 23% Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2025-09-29 22:19 UTC (permalink / raw)
  To: git

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

* dk/stash-apply-index (2025-09-21) 4 commits
  (merged to 'next' on 2025-09-23 at 04e76cf5be)
 + stash: honor stash.index in apply, pop modes
 + stash: refactor private config globals
 + t3905: remove unneeded blank line
 + t3903: reduce dependencies on previous tests

 The stash.index configuration variable can be set to make "git stash
 pop/apply" pretend that it was invoked with "--index".
 source: <cover.1758505011.git.ben.knoble+github@gmail.com>


* jc/3.0-default-initial-branch-to-main-addendum (2025-09-17) 1 commit
  (merged to 'next' on 2025-09-22 at dc4168c337)
 + initial branch: give hints after switching the default name
 (this branch uses pw/3.0-default-initial-branch-to-main.)

 Keep giving hint about the default initial branch name for users
 who may be surprised after Git 3.0 switch-over.
 source: <cover.1757518141.git.phillip.wood@dunelm.org.uk>


* je/doc-checkout (2025-09-10) 7 commits
  (merged to 'next' on 2025-09-23 at b776ac7a24)
 + doc: git-checkout: clarify restoring files section
 + doc: git-checkout: split up restoring files section
 + doc: git-checkout: deduplicate --detach explanation
 + doc: git-checkout: clarify `-b` and `-B`
 + doc: git-checkout: clarify `git checkout <branch>`
 + doc: git-checkout: clarify ARGUMENT DISAMBIGUATION
 + doc: git-checkout: clarify intro sentence

 Doc updates.
 cf. <236a79f4-e9a2-4335-bbff-79ae0cc67e9b@app.fastmail.com>
 source: <pull.1962.v4.git.1757531669.gitgitgadget@gmail.com>


* jk/color-variable-fixes (2025-09-16) 13 commits
  (merged to 'next' on 2025-09-23 at 8aa3006a1e)
 + config: store want_color() result in a separate bool
 + add-interactive: retain colorbool values longer
 + color: return bool from want_color()
 + color: use git_colorbool enum type to store colorbools
 + pretty: use format_commit_context.auto_color as colorbool
 + diff: stop passing ecbdata->use_color as boolean
 + diff: pass o->use_color directly to fill_metainfo()
 + diff: don't use diff_options.use_color as a strict bool
 + diff: simplify color_moved check when flushing
 + grep: don't treat grep_opt.color as a strict bool
 + color: return enum from git_config_colorbool()
 + color: use GIT_COLOR_* instead of numeric constants
 + Merge branch 'jk/add-i-color' into jk/color-variable-fixes

 Some places in the code confused a variable that is *not* a boolean
 to enable color but is an enum that records what the user requested
 to do about color.  A couple of bugs of this sort have been fixed,
 while the code has been cleaned up to prevent similar bugs in the
 future.
 source: <20250916201036.GA612463@coredump.intra.peff.net>
 source: <20250916202408.GI612873@coredump.intra.peff.net>


* jk/setup-revisions-freefix (2025-09-19) 6 commits
  (merged to 'next' on 2025-09-23 at e30036fad0)
 + revision: retain argv NULL invariant in setup_revisions()
 + treewide: pass strvecs around for setup_revisions_from_strvec()
 + treewide: use setup_revisions_from_strvec() when we have a strvec
 + revision: add wrapper to setup_revisions() from a strvec
 + revision: manage memory ownership of argv in setup_revisions()
 + stash: tell setup_revisions() to free our allocated strings

 There are double frees and leaks around setup_revisions() API used
 in "git stash show", which has been fixed, and setup_revisions()
 API gained a wrapper to make it more ergonomic when using it with
 strvec-manged argc/argv pairs.
 source: <20250919223351.GA3906184@coredump.intra.peff.net>


* kn/refs-files-case-insensitive (2025-09-17) 4 commits
  (merged to 'next' on 2025-09-23 at 51c2a665f0)
 + refs/files: handle D/F conflicts during locking
 + refs/files: handle F/D conflicts in case-insensitive FS
 + refs/files: use correct error type when lock exists
 + refs/files: catch conflicts on case-insensitive file-systems

 Deal more gracefully with directory / file conflicts when the files
 backend is used for ref storage, by failing only the ones that are
 involved in the conflict while allowing others.
 source: <20250917-587-git-fetch-1-fails-fetches-on-case-insensitive-repositories-v4-0-da3c74a08ed0@gmail.com>


* nb/send-email-no-dup-reply-to (2025-09-16) 1 commit
  (merged to 'next' on 2025-09-18 at d7081e00ec)
 + send-email: don't duplicate Reply-to: in intro message

 "git send-email --compose --reply-to=<address>" used to add
 duplicated Reply-To: header, which made mailservers unhappy.  This
 has been corrected.
 source: <175809074627.1696783.67425889158412786@noble.neil.brown.name>


* ps/clar-updates (2025-09-22) 2 commits
  (merged to 'next' on 2025-09-22 at c811e8c172)
 + t/unit-tests: update to 10e96bc
  (merged to 'next' on 2025-09-15 at 73402f7652)
 + t/unit-tests: update clar to fcbed04

 Import a newer version of the clar unit testing framework.
 source: <20250910-b4-pks-clar-update-v1-1-26a196237e0a@pks.im>
 source: <20250922-pks-clar-update-v1-1-9154e7d1b7a1@pks.im>


* pw/3.0-default-initial-branch-to-main (2025-09-10) 4 commits
  (merged to 'next' on 2025-09-22 at 01bbebdab6)
 + t0613: stop setting default initial branch
 + t9902: switch default branch name to main
 + t4013: switch default branch name to main
 + breaking-changes: switch default branch to main
 (this branch is used by jc/3.0-default-initial-branch-to-main-addendum.)

 Declare that "git init" that is not otherwise configured uses
 'main' as the initial branch, not 'master', starting Git 3.0.
 source: <cover.1757518141.git.phillip.wood@dunelm.org.uk>


* pw/rebase-i-cleanup-fix (2025-09-18) 2 commits
  (merged to 'next' on 2025-09-22 at 2d0aec7821)
 + sequencer: remove VERBATIM_MSG flag
 + rebase -i: respect commit.cleanup when picking fixups

 "git rebase -i" failed to clean-up the commit log message when the
 command commits the final one in a chain of "fixup" commands, which
 has been corrected.
 source: <cover.1758186038.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-recursive-fix (2025-09-18) 1 commit
  (merged to 'next' on 2025-09-23 at 3be2b08060)
 + last-modified: fix bug when some paths remain unhandled

 "git last-modified" operating in non-recursive mode used to trigger
 a BUG(), which has been corrected.
 source: <20250918-toon-fix-last-modified-v3-1-0c3910e224f6@iotcl.com>

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

* rj/doc-missing-technical-docs (2025-09-25) 1 commit
 - doc: add some missing technical documents
 (this branch is used by rj/doc-technical-rfc.)

 Doc updates.

 Will merge to 'next'?
 source: <2326e1c8-19a3-4454-ab71-0a6cfa8cf8e9@ramsayjones.plus.com>


* rj/doc-technical-rfc (2025-09-25) 3 commits
 - doc: commit-graph.adoc: fix up some formatting
 - doc: sparse-checkout.adoc: fix asciidoc warnings
 - doc: remembering-renames.adoc: fix asciidoc warnings
 (this branch uses rj/doc-missing-technical-docs.)

 Documenation mark-up fixes.

 RFC.
 source: <875fb7a0-6dd9-412b-a34a-21758c339871@ramsayjones.plus.com>


* ja/doc-markup-attached-paragraph-fix (2025-09-27) 1 commit
 - doc: change the markup of paragraphs following a nested list item

 Documentation mark-up fix.

 Will merge to 'next'.
 source: <20250927195032.37223-1-jn.avila@free.fr>


* jc/optional-path (2025-09-28) 3 commits
 - parseopt: values of pathname type can be prefixed with :(optional)
 - config: values of pathname type can be prefixed with :(optional)
 - t7500: make each piece more independent

 Configuration variables that take a pathname as a value
 (e.g. blame.ignorerevsfile) can be marked as optional by prefixing
 ":(optoinal)" before its value.

 Comments?
 source: <cover.1759094936.git.ben.knoble+github@gmail.com>


* jt/clang-format-foreach-wo-space-before-parenthesis (2025-09-27) 1 commit
 - clang-format: exclude control macros from SpaceBeforeParens

 Clang-format update to let our control macros formatted the way we
 had them traditionally, e.g., "for_each_string_list_item()" without
 space before the parentheses.

 Will merge to 'next'.
 source: <20250927145049.723341-4-jltobler@gmail.com>


* kh/doc-patch-id-markup-fix (2025-09-28) 1 commit
 - doc: patch-id: fix accidental literal blocks

 Documenaotin mark-up fix.

 Will merge to 'next'?
 source: <0520e8f9caf.1759067095.git.code@khaugsbakk.name>


* sa/replay-atomic-ref-updates (2025-09-26) 1 commit
 - replay: make atomic ref updates the default behavior

 "git replay" (experimental) learned to perform ref updates itself
 in a transaction by default, instead of emitting where each refs
 should point at and leaving the actual update to another command.

 Comments?
 source: <20250926230838.35870-2-siddharthasthana31@gmail.com>

--------------------------------------------------
[Stalled]

These topics have been expecting updates for quite some time.  I'll
eject any of them when they start to conflict with other topics in
'seen' and may drop them from my tree when they are dormant for too
long (let's say 8 weeks is way too long, for now).  After that, they
can be proposed again by rerolling them in a shape that would work
well with other topics in 'seen' (and of course 'next' and
"master').

* lc/rebase-trailer (2025-08-03) 2 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Expecting a reroll.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Expecting a reroll.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>

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

* kh/format-patch-range-diff-notes (2025-09-25) 3 commits
 - format-patch: handle range-diff on notes correctly for single patches
 - revision: add rdiff_log_arg to rev_info
 - range-diff: rename other_arg to log_arg

 "git format-patch --range-diff=... --notes=..." did not drive the
 underlying range-diff with correct --notes parameter, ending up
 comparing with different set of notes from its main patch output
 you would get from "git format-patch --notes=..." for a singleton
 patch.

 Will merge to 'next'?
 source: <v2-cover.1758819879.git.code@khaugsbakk.name>


* je/doc-pull (2025-09-23) 4 commits
 - doc: git-pull: clarify how to exit a conflicted merge
 - doc: git-pull: delete the example
 - doc: git-pull: clarify options for integrating remote branch
 - doc: git-pull: move <repository> and <refspec> params

 Documentation updates.
 source: <pull.1976.git.1758656702.gitgitgadget@gmail.com>


* je/doc-push-upstream (2025-09-23) 4 commits
 - doc: git-push: clarify "what to push"
 - doc: git-push: clarify "where to push"
 - doc: add an UPSTREAM BRANCHES section to pull/push/fetch
 - doc: git-push: clarify intro

 Documentation updates.
 source: <pull.1964.v3.git.1758649472.gitgitgadget@gmail.com>


* jk/diff-no-index-with-pathspec-fix (2025-09-24) 1 commit
 - diff --no-index: fix logic for paths ending in '/'

 An earlier addition to "git diff --no-index A B" to limit the
 output with pathspec after the two directories misbehaved when
 these directories were given with a trailing slash, which has been
 corrected.
 source: <20250924-jk-fix-no-index-path-with-slash-v1-1-6b2028c0de92@intel.com>


* jt/repo-stats (2025-09-27) 6 commits
 - builtin/repo: add progress meter for stats
 - builtin/repo: add keyvalue and nul format for stats
 - builtin/repo: add object counts in stats output
 - builtin/repo: introduce stats subcommand
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()

 "git repo stats", a new command.

 Comments?
 source: <20250927145049.723341-1-jltobler@gmail.com>


* js/curl-off-t-fixes (2025-09-26) 3 commits
 - http-push: avoid new compile error
 - imap-send: be more careful when casting to `curl_off_t`
 - http: offer to cast `size_t` to `curl_off_t` safely

 A few places where an size_t value was cast to curl_off_t without
 checking has been updated to use the existing helper function.

 Will merge to 'next'.
 source: <pull.1974.v2.git.1758882772.gitgitgadget@gmail.com>


* kn/reftable-consistency-checks (2025-09-26) 7 commits
 - refs/reftable: add fsck check for checking the table name
 - reftable: add code to facilitate consistency checks
 - fsck: order 'fsck_msg_type' alphabetically
 - Documentation/fsck-msgids: remove duplicate msg id
 - reftable: check for trailing newline in 'tables.list'
 - refs: move consistency check msg to generic layer
 - refs: remove unused headers

 The reftable backend learned to sanity check its on-disk data more
 carefully.

 Comments?
 source: <20250926-228-reftable-introduce-consistency-checks-v4-0-c96fd8551c0d@gmail.com>


* bc/sha1-256-interop-01 (2025-09-19) 10 commits
 - fixup! docs: add documentation for loose objects
 - t: add a prerequisite for a compatibility hash
 - Allow specifying compatibility hash
 - fsck: consider gpgsig headers expected in tags
 - rev-parse: allow printing compatibility hash
 - docs: add documentation for loose objects
 - docs: improve ambiguous areas of pack format documentation
 - docs: reflect actual double signature for tags
 - docs: update offset order for pack index v3
 - docs: update pack index v3 format

 The beginning of SHA1-SHA256 interoperability work.

 Expecting a reroll.
 cf. <aNHB4V7figj9lmfk@fruit.crustytoothpaste.net>
 source: <20250919010911.649831-1-sandals@crustytoothpaste.net>


* pw/add-p-hunk-splitting-fix (2025-09-25) 2 commits
 - add-patch: update hunk splitability after editing
 - add -p: mark split hunks as undecided

 Marking a hunk 'selected' in "git add -p" and then splitting made
 all the split pieces 'selected'; this has been changed to make them
 all 'undecided', which gives better end-user experience.

 Will merge to 'next'?
 source: <pull.1863.v3.git.1758813038.gitgitgadget@gmail.com>


* en/xdiff-cleanup (2025-09-26) 12 commits
 - xdiff: change type of xdfile_t.changed from char to bool
 - xdiff: add macros DISCARD(0), KEEP(1), INVESTIGATE(2) in xprepare.c
 - xdiff: rename rchg -> changed in xdfile_t
 - xdiff: delete chastore from xdfile_t
 - xdiff: delete fields ha, line, size in xdlclass_t in favor of an xrecord_t
 - xdiff: delete redundant array xdfile_t.ha
 - xdiff: delete struct diffdata_t
 - xdiff: delete local variables that alias fields in xrecord_t
 - xdiff: delete superfluous function xdl_get_rec() in xemit
 - xdiff: delete unnecessary fields from xrecord_t and xdfile_t
 - xdiff: delete local variables and initialize/free xdfile_t directly
 - xdiff: delete static forward declarations in xprepare

 A lot of code clean-up of xdiff.
 Split out of a larger topic.

 Will merge to 'next'?
 source: <pull.2048.v6.git.git.1758926520.gitgitgadget@gmail.com>


* ar/submodule-gitdir-tweak (2025-09-08) 10 commits
 - t7425: add gitdir encoding tests
 - t7450: move nested gitdir tests to t7425
 - submodule: remove validate_submodule_git_dir()
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - t7425: add basic mixed submodule gitdir path tests
 - submodule: add gitdir path config override
 - submodule: create new gitdirs under submodules path
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting a reroll.
 cf. <87ecsf7g84.fsf@collabora.com> etc.
 source: <20250908140117.262205-1-adrian.ratiu@collabora.com>


* je/doc-push (2025-09-23) 2 commits
  (merged to 'next' on 2025-09-29 at 4ff1b675ed)
 + doc: git-push: rewrite refspec specification
 + doc: git-push: create PUSH RULES section

 Doc updates.

 Will merge to 'master'.
 source: <pull.1973.v2.git.1758651049.gitgitgadget@gmail.com>


* ps/config-get-color-fixes (2025-09-22) 5 commits
  (merged to 'next' on 2025-09-25 at 7b69f57ef6)
 + builtin/config: do not spawn pager when printing color codes
 + builtin/config: special-case retrieving colors without a key
 + builtin/config: do not die in `get_color()`
 + t1300: small style fixups
 + t1300: write test expectations in the test's body

 The use of "git config get" command to learn how ANSI color
 sequence is for a particular type, e.g., "git config get
 --type=color --default=reset no.such.thing", isn't very ergonomic.

 Will merge to 'master'.
 source: <20250922-pks-config-color-v4-0-28b7d2697eed@pks.im>


* ps/meson-build-docs (2025-09-11) 3 commits
  (merged to 'next' on 2025-09-25 at d531b1afdc)
 + ci: don't compile whole project when testing docs with Meson
 + meson: print docs backend as part of the summary
 + meson: introduce a "docs" alias to compile documentation only

 The build procedure based on meson learned a target to only build
 documentation, similar to "make doc".

 Will merge to 'master'.
 source: <20250911-b4-pks-meson-docs-target-v1-0-a92c666ecef9@pks.im>


* ps/odb-clean-stale-wrappers (2025-09-10) 1 commit
 - odb: drop deprecated wrapper functions

 Code clean-up.

 Will merge to 'next'.
 source: <20250910-b4-pks-odb-drop-wrappers-v1-1-6ed660cb1eec@pks.im>


* jt/odb-transaction (2025-09-16) 7 commits
  (merged to 'next' on 2025-09-25 at 1a5c704fb9)
 + odb: add transaction interface
 + object-file: update naming from bulk-checkin
 + object-file: relocate ODB transaction code
 + bulk-checkin: drop flush_odb_transaction()
 + builtin/update-index: end ODB transaction when --verbose is specified
 + bulk-checkin: remove ODB transaction nesting
 + Merge branch 'jt/de-global-bulk-checkin' into jt/odb-transaction

 Continue the work to build on the bulk-checkin infrastructure to
 create many objects at once in a transaction and abstract it into
 the generic object layer.

 Will merge to 'master'.
 source: <20250916182938.2193476-1-jltobler@gmail.com>


* cc/fast-import-strip-signed-commits (2025-09-17) 2 commits
  (merged to 'next' on 2025-09-25 at 6c9a275f43)
 + fast-import: add '--signed-commits=<mode>' option
 + gpg-interface: refactor 'enum sign_mode' parsing

 "git fast-import" learned that "--signed-commits=<how>" option that
 corresponds to that of "git fast-export".

 Will merge to 'master'.
 source: <20250917181427.3193500-1-christian.couder@gmail.com>


* ps/commit-graph-per-object-source (2025-09-04) 6 commits
 - odb: move commit-graph into the object sources
 - commit-graph: pass graphs that are to be merged as parameter
 - commit-graph: return commit graph from `repo_find_commit_pos_in_graph()`
 - commit-graph: return the prepared commit graph from `prepare_commit_graph()`
 - revision: drop explicit check for commit graph
 - blame: drop explicit check for commit graph

 Declare commit-graph is per object_source, which may not be a good idea.

 Comments?
 cf. <cf7aeda1-297a-4805-b0ae-e379ce11bbcf@gmail.com>
 source: <20250904-b4-pks-commit-graph-via-source-v1-0-d932c2481e1a@pks.im>


* ps/rust-balloon (2025-09-24) 9 commits
 - ci: enable Rust for breaking-changes jobs
 - ci: convert "pedantic" job into full build with breaking changes
 - BreakingChanges: announce Rust becoming mandatory
 - varint: reimplement as test balloon for Rust
 - varint: use explicit width for integers
 - help: report on whether or not Rust is enabled
 - Makefile: introduce infrastructure to build internal Rust library
 - Makefile: reorder sources after includes
 - meson: add infrastructure to build internal Rust library

 Dip our toes a bit to (optionally) use Rust implemented helper
 called from our C code.

 Comments?
 source: <20250925-b4-pks-rust-breaking-change-v7-0-4e49dcb904d5@pks.im>


* ms/refs-optimize (2025-09-19) 9 commits
  (merged to 'next' on 2025-09-25 at 5fd0825882)
 + t: add test for git refs optimize subcommand
 + t0601: refactor tests to be shareable
 + builtin/refs: add optimize subcommand
 + doc: pack-refs: factor out common options
 + builtin/pack-refs: factor out core logic into a shared library
 + builtin/pack-refs: convert to use the generic refs_optimize() API
 + reftable-backend: implement 'optimize' action
 + files-backend: implement 'optimize' action
 + refs: add a generic 'optimize' API

 "git refs optimize" is added for not very well explained reason
 despite it does the same thing as "git pack-refs"...

 Will merge to 'master'.
 source: <20250919082647.535213-1-meetsoni3017@gmail.com>


* sj/string-list (2025-09-17) 4 commits
 - refs: enable sign compare warnings check
 - string-list: change "string_list_find_insert_index" return type to "size_t"
 - string-list: replace negative index encoding with "exact_match" parameter
 - string-list: use bool instead of int for "exact_match"

 The "string-list" API function to find where a given string would
 be inserted got updated so that it can use unrealistically huge
 array index that would only fit in size_t but not int or ssize_t
 to achieve unstated goal.

 Expecting a reroll.
 cf. <CAOLa=ZShms1D-cq=x04dtT2ULTVE3ZDo8DODFnJRP2wcJz0EgQ@mail.gmail.com>
 source: <aMp8yNFiXDyk2hP4@ArchLinux>


* ps/packfile-store (2025-09-23) 16 commits
  (merged to 'next' on 2025-09-29 at 342bb57fc2)
 + packfile: refactor `get_packed_git_mru()` to work on packfile store
 + packfile: refactor `get_all_packs()` to work on packfile store
 + packfile: refactor `get_packed_git()` to work on packfile store
 + packfile: move `get_multi_pack_index()` into "midx.c"
 + packfile: introduce function to load and add packfiles
 + packfile: refactor `install_packed_git()` to work on packfile store
 + packfile: split up responsibilities of `reprepare_packed_git()`
 + packfile: refactor `prepare_packed_git()` to work on packfile store
 + packfile: reorder functions to avoid function declaration
 + odb: move kept cache into `struct packfile_store`
 + odb: move MRU list of packfiles into `struct packfile_store`
 + odb: move packfile map into `struct packfile_store`
 + odb: move initialization bit into `struct packfile_store`
 + odb: move list of packfiles into `struct packfile_store`
 + packfile: introduce a new `struct packfile_store`
 + Merge branch 'ps/object-store-midx-dedup-info' into ps/packfile-store
 (this branch is used by tb/incremental-midx-part-3.1.)

 Code clean-up around the in-core list of all the pack files and
 object database(s).

 Will merge to 'master'.
 cf. <aNmxQqV3+1Ad12qC@nand.local>
 source: <20250923-b4-pks-packfiles-store-v6-0-b48f2a882759@pks.im>


* kh/you-still-use-whatchanged-fix (2025-09-17) 9 commits
  (merged to 'next' on 2025-09-25 at de9c8c526c)
 + BreakingChanges: remove claim about whatchanged reports
 + whatchanged: remove not-even-shorter clause
 + whatchanged: hint about git-log(1) and aliasing
 + you-still-use-that??: help the user help themselves
 + t0014: test shadowing of aliases for a sample of builtins
 + git: allow alias-shadowing deprecated builtins
 + git: move seen-alias bookkeeping into handle_alias(...)
 + git: add `deprecated` category to --list-cmds
 + Makefile: don’t add whatchanged after it has been removed

 Update "do you still use it?" message given by a command that is
 deeply deprecated and allow us to suggest alternatives.

 Will merge to 'master'.
 source: <cover.1758139856.short.code@khaugsbakk.name>


* ds/sparse-checkout-clean (2025-09-12) 7 commits
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 On hold.
 cf. <3537e220-44b6-4e37-a568-cef34a2fddfd@gmail.com>
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

These have been kept outside 'seen' for some time, and were removed
for now, until they are resubmit in a shape that plays well with
other topics in 'seen'.

* en/rust-xdiff (2025-09-07) 8 commits
 . xdiff: change the types of dstart, dend, rchg, and rindex in xdfile_t
 . xdiff: make xdfile_t.nreff a usize instead of long
 . xdiff: make xdfile_t.nrec a usize instead of long
 . xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 . xdiff: make xrecord_t.size a usize instead of long
 . xdiff: make xrecord_t.ptr a u8 instead of char
 . xdiff: include compat/rust_types.h
 . compat/rust_types.h: define rust primitive types
 . Merge branch 'en/xdiff-cleanup' into en/rust-xdiff

 Use Rust-friendly types in xdiff code.

 Expecting a reroll based on the updated base topic, but the base
 topic may further be updated first?
 cf. <CAH=ZcbA5hAM9kmO410KzVW7RXWWiwX2oJk6GGPP+6oVYatRVOw@mail.gmail.com>
 source: <pull.2048.git.git.1757274320.gitgitgadget@gmail.com>


* en/rust-wip (2025-09-16) 18 commits
 . misc::varint: reimplement as test balloon for Rust
 . misc: use BuildHelper
 . build: new crate, misc
 . varint: use explicit width for integers
 . build-helper: cbindgen, let crates generate a header file
 . build-helper: link against libgit.a and any other required C libraries
 . build: new crate, build-helper
 . github workflows: upload Cargo.lock
 . win+Meson: do allow linking with the Rust-built xdiff
 . github workflows: install rust
 . help: report on whether or not Rust is enabled
 . build: introduce rust
 . BreakingChanges: announce Rust becoming mandatory
 . doc: add a policy for using Rust
 . make: merge reftable lib into libgit.a
 . make: merge xdiff lib into libgit.a
 . make: add -fPIE flag
 . cleanup: rename variables that collide with Rust primitive type names

 Expecting a reroll, but probably xdiff stuff comes first?
 source: <pull.2043.v2.git.git.1758071798.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 23%]

* What's cooking in git.git (Sep 2025, #10; Thu, 25)
@ 2025-09-25 22:06 23% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2025-09-25 22:06 UTC (permalink / raw)
  To: git

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

* cc/promisor-remote-capability (2025-09-07) 7 commits
  (merged to 'next' on 2025-09-15 at 367d83c08c)
 + promisor-remote: use string_list_split() in mark_remotes_as_accepted()
 + promisor-remote: allow a client to check fields
 + promisor-remote: use string_list_split() in filter_promisor_remote()
 + promisor-remote: refactor how we parse advertised fields
 + promisor-remote: use string constants for 'name' and 'url' too
 + promisor-remote: allow a server to advertise more fields
 + promisor-remote: refactor to get rid of 'struct strvec'

 The "promisor-remote" capability mechanism has been updated to
 allow the "partialCloneFilter" settings and the "token" value to be
 communicated from the server side.
 source: <20250908053056.956907-1-christian.couder@gmail.com>


* cs/subtree-squash-split-fix (2025-09-09) 1 commit
  (merged to 'next' on 2025-09-15 at 4206316342)
 + contrib/subtree: fix split with squashed subtrees

 "git subtree" (in contrib/) did not work correctly when splitting
 squashed subtrees, which has been improved.
 source: <20250910031124.1807856-1-ask+git@howdoi.land>


* jk/add-i-color (2025-09-08) 4 commits
  (merged to 'next' on 2025-09-15 at 48aae5184a)
 + contrib/diff-highlight: mention interactive.diffFilter
 + add-interactive: manually fall back color config to color.ui
 + add-interactive: respect color.diff for diff coloring
 + stash: pass --no-color to diff plumbing child processes
 (this branch is used by jk/color-variable-fixes.)

 Some among "git add -p" and friends ignored color.diff and/or
 color.ui configuration variables, which is an old regression, which
 has been corrected.
 source: <20250908164157.GA1323487@coredump.intra.peff.net>


* rs/get-oid-with-flags-cleanup (2025-09-10) 1 commit
  (merged to 'next' on 2025-09-15 at ff8d1faae9)
 + use repo_get_oid_with_flags()

 Code clean-up.
 source: <906196ac-2fd7-4c07-9e8f-22d67b0b64f9@web.de>

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

* kh/format-patch-range-diff-notes (2025-09-25) 3 commits
 - format-patch: handle range-diff on notes correctly for single patches
 - revision: add rdiff_log_arg to rev_info
 - range-diff: rename other_arg to log_arg

 "git format-patch --range-diff=... --notes=..." did not drive the
 underlying range-diff with correct --notes parameter, ending up
 comparing with different set of notes from its main patch output
 you would get from "git format-patch --notes=..." for a singleton
 patch.

 Will merge to 'next'?
 source: <v2-cover.1758819879.git.code@khaugsbakk.name>


* je/doc-pull (2025-09-23) 4 commits
 - doc: git-pull: clarify how to exit a conflicted merge
 - doc: git-pull: delete the example
 - doc: git-pull: clarify options for integrating remote branch
 - doc: git-pull: move <repository> and <refspec> params

 Documentation updates.
 source: <pull.1976.git.1758656702.gitgitgadget@gmail.com>


* je/doc-push-upstream (2025-09-23) 4 commits
 - doc: git-push: clarify "what to push"
 - doc: git-push: clarify "where to push"
 - doc: add an UPSTREAM BRANCHES section to pull/push/fetch
 - doc: git-push: clarify intro

 Documentation updates.
 source: <pull.1964.v3.git.1758649472.gitgitgadget@gmail.com>


* jk/diff-no-index-with-pathspec-fix (2025-09-24) 1 commit
 - diff --no-index: fix logic for paths ending in '/'

 An earlier addition to "git diff --no-index A B" to limit the
 output with pathspec after the two directories misbehaved when
 these directories were given with a trailing slash, which has been
 corrected.
 source: <20250924-jk-fix-no-index-path-with-slash-v1-1-6b2028c0de92@intel.com>


* jt/repo-stats (2025-09-24) 6 commits
 - builtin/repo: add progress meter for stats
 - builtin/repo: add keyvalue and nul format for stats
 - builtin/repo: add object counts in stats output
 - builtin/repo: introduce stats subcommand
 - ref-filter: allow NULL filter pattern
 - builtin/repo: rename repo_info() to cmd_repo_info()

 "git repo stats", a new command.
 source: <20250924212426.2930029-1-jltobler@gmail.com>

--------------------------------------------------
[Stalled]

These topics have been expecting updates for quite some time.  I'll
eject any of them when they start to conflict with other topics in
'seen' and may drop them from my tree when they are dormant for too
long (let's say 8 weeks is way too long, for now).  After that, they
can be proposed again by rerolling them in a shape that would work
well with other topics in 'seen' (and of course 'next' and
"master').

* lc/rebase-trailer (2025-08-03) 2 commits
 - rebase: support --trailer
 - trailer: append trailers in-process and drop the fork to `interpret-trailers`

 Expecting a reroll.
 cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
 cf. <xmqqiki7qasu.fsf@gitster.g>
 source: <20250803150059.402017-1-me@linux.beauty>


* ac/deglobal-sparse-variables (2025-07-18) 3 commits
 . environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
 . environment: move access to "core.sparsecheckoutcone" into repo_settings
 . environment: move access to "core.sparsecheckout" into repo_settings

 Two global variables related to sparse checkout have been moved to
 the repository settings structure.

 Expecting a reroll.
 cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
 Ejected out of 'seen' for now.
 source: <cover.1752882401.git.ayu.chandekar@gmail.com>

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

* jk/setup-revisions-freefix (2025-09-19) 6 commits
  (merged to 'next' on 2025-09-23 at e30036fad0)
 + revision: retain argv NULL invariant in setup_revisions()
 + treewide: pass strvecs around for setup_revisions_from_strvec()
 + treewide: use setup_revisions_from_strvec() when we have a strvec
 + revision: add wrapper to setup_revisions() from a strvec
 + revision: manage memory ownership of argv in setup_revisions()
 + stash: tell setup_revisions() to free our allocated strings

 There are double frees and leaks around setup_revisions() API used
 in "git stash show", which has been fixed, and setup_revisions()
 API gained a wrapper to make it more ergonomic when using it with
 strvec-manged argc/argv pairs.

 Will merge to 'master'.
 source: <20250919223351.GA3906184@coredump.intra.peff.net>


* js/curl-off-t-fixes (2025-09-21) 3 commits
 - http-push: avoid new compile error
 - imap-send: be more careful when casting to `curl_off_t`
 - http: offer to cast `size_t` to `curl_off_t` safely

 A few places where an size_t value was cast to curl_off_t without
 checking has been updated to use the existing helper function.

 Expecting a (hopefully small) reroll to clarify log message.
 cf. <pull.1974.git.1758457356.gitgitgadget@gmail.com>
 source: <pull.1974.git.1758457356.gitgitgadget@gmail.com>


* kn/reftable-consistency-checks (2025-09-18) 9 commits
 - fixup! reftable: check for trailing newline in 'tables.list'
 - refs/reftable: add fsck check for checking the table name
 - reftable: add code to facilitate consistency checks
 - fsck: order 'fsck_msg_type' alphabetically
 - Documentation/fsck-msgids: remove duplicate msg id
 - reftable: ensure tables in a stack use sequential update indices
 - reftable: check for trailing newline in 'tables.list'
 - refs: move consistency check msg to generic layer
 - refs: remove unused headers

 The reftable backend learned to sanity check its on-disk data more
 carefully.

 Expecting a reroll.
 cf. <CAOLa=ZQMDjpMLeyHxeePY3VQjD1GhotXA6-GDhTNY_BDu4zSVQ@mail.gmail.com>
 source: <20250918-228-reftable-introduce-consistency-checks-v3-0-271af03eb34d@gmail.com>


* pw/rebase-i-cleanup-fix (2025-09-18) 2 commits
  (merged to 'next' on 2025-09-22 at 2d0aec7821)
 + sequencer: remove VERBATIM_MSG flag
 + rebase -i: respect commit.cleanup when picking fixups

 "git rebase -i" failed to clean-up the commit log message when the
 command commits the final one in a chain of "fixup" commands, which
 has been corrected.

 Will merge to 'master'.
 source: <cover.1758186038.git.phillip.wood@dunelm.org.uk>


* tc/last-modified-recursive-fix (2025-09-18) 1 commit
  (merged to 'next' on 2025-09-23 at 3be2b08060)
 + last-modified: fix bug when some paths remain unhandled

 "git last-modified" operating in non-recursive mode used to trigger
 a BUG(), which has been corrected.

 Will merge to 'master'.
 source: <20250918-toon-fix-last-modified-v3-1-0c3910e224f6@iotcl.com>


* en/rust-wip (2025-09-16) 18 commits
 . misc::varint: reimplement as test balloon for Rust
 . misc: use BuildHelper
 . build: new crate, misc
 . varint: use explicit width for integers
 . build-helper: cbindgen, let crates generate a header file
 . build-helper: link against libgit.a and any other required C libraries
 . build: new crate, build-helper
 . github workflows: upload Cargo.lock
 . win+Meson: do allow linking with the Rust-built xdiff
 . github workflows: install rust
 . help: report on whether or not Rust is enabled
 . build: introduce rust
 . BreakingChanges: announce Rust becoming mandatory
 . doc: add a policy for using Rust
 . make: merge reftable lib into libgit.a
 . make: merge xdiff lib into libgit.a
 . make: add -fPIE flag
 . cleanup: rename variables that collide with Rust primitive type names

 Expecting a reroll, but probably xdiff stuff comes first?
 source: <pull.2043.v2.git.git.1758071798.gitgitgadget@gmail.com>


* bc/sha1-256-interop-01 (2025-09-19) 10 commits
 - fixup! docs: add documentation for loose objects
 - t: add a prerequisite for a compatibility hash
 - Allow specifying compatibility hash
 - fsck: consider gpgsig headers expected in tags
 - rev-parse: allow printing compatibility hash
 - docs: add documentation for loose objects
 - docs: improve ambiguous areas of pack format documentation
 - docs: reflect actual double signature for tags
 - docs: update offset order for pack index v3
 - docs: update pack index v3 format

 The beginning of SHA1-SHA256 interoperability work.

 Expecting a reroll.
 cf. <aNHB4V7figj9lmfk@fruit.crustytoothpaste.net>
 source: <20250919010911.649831-1-sandals@crustytoothpaste.net>


* pw/add-p-hunk-splitting-fix (2025-09-25) 2 commits
 - add-patch: update hunk splitability after editing
 - add -p: mark split hunks as undecided

 Marking a hunk 'selected' in "git add -p" and then splitting made
 all the split pieces 'selected'; this has been changed to make them
 all 'undecided', which gives better end-user experience.

 Will merge to 'next'?
 source: <pull.1863.v3.git.1758813038.gitgitgadget@gmail.com>


* dk/stash-apply-index (2025-09-21) 4 commits
  (merged to 'next' on 2025-09-23 at 04e76cf5be)
 + stash: honor stash.index in apply, pop modes
 + stash: refactor private config globals
 + t3905: remove unneeded blank line
 + t3903: reduce dependencies on previous tests

 The stash.index configuration variable can be set to make "git stash
 pop/apply" pretend that it was invoked with "--index".

 Will merge to 'master'.
 source: <cover.1758505011.git.ben.knoble+github@gmail.com>


* jk/color-variable-fixes (2025-09-16) 13 commits
  (merged to 'next' on 2025-09-23 at 8aa3006a1e)
 + config: store want_color() result in a separate bool
 + add-interactive: retain colorbool values longer
 + color: return bool from want_color()
 + color: use git_colorbool enum type to store colorbools
 + pretty: use format_commit_context.auto_color as colorbool
 + diff: stop passing ecbdata->use_color as boolean
 + diff: pass o->use_color directly to fill_metainfo()
 + diff: don't use diff_options.use_color as a strict bool
 + diff: simplify color_moved check when flushing
 + grep: don't treat grep_opt.color as a strict bool
 + color: return enum from git_config_colorbool()
 + color: use GIT_COLOR_* instead of numeric constants
 + Merge branch 'jk/add-i-color' into jk/color-variable-fixes

 Some places in the code confused a variable that is *not* a boolean
 to enable color but is an enum that records what the user requested
 to do about color.  A couple of bugs of this sort have been fixed,
 while the code has been cleaned up to prevent similar bugs in the
 future.

 Will merge to 'master'.
 source: <20250916201036.GA612463@coredump.intra.peff.net>
 source: <20250916202408.GI612873@coredump.intra.peff.net>


* en/xdiff-cleanup (2025-09-23) 13 commits
 - xdiff: change type of xdfile_t.changed from char to bool
 - xdiff: use enum macros NONE(0), SOME(1), TOO_MANY(2) in xprepare.c
 - xdiff: rename rchg -> changed in xdfile_t
 - xdiff: delete rchg aliasing
 - xdiff: delete chastore from xdfile_t
 - xdiff: delete fields ha, line, size in xdlclass_t in favor of an xrecord_t
 - xdiff: delete redundant array xdfile_t.ha
 - xdiff: delete struct diffdata_t
 - xdiff: delete superfluous local variables that alias fields in xrecord_t
 - xdiff: delete superfluous function xdl_get_rec() in xemit
 - xdiff: delete unnecessary fields from xrecord_t and xdfile_t
 - xdiff: delete local variables and initialize/free xdfile_t directly
 - xdiff: delete static forward declarations in xprepare

 A lot of code clean-up of xdiff.
 Split out of a larger topic.

 Expecting a reroll with better log messages.
 cf. <CAH=ZcbC-cB35AGmiKgEQdFa5ee+DftwOQ_dUe4=T+Vq-dxR+qQ@mail.gmail.com>
 source: <pull.2048.v5.git.git.1758662670.gitgitgadget@gmail.com>


* jc/3.0-default-initial-branch-to-main-addendum (2025-09-17) 1 commit
  (merged to 'next' on 2025-09-22 at dc4168c337)
 + initial branch: give hints after switching the default name
 (this branch uses pw/3.0-default-initial-branch-to-main.)

 Keep giving hint about the default initial branch name for users
 who may be surprised after Git 3.0 switchover.

 Will merge to 'master'.
 source: <cover.1757518141.git.phillip.wood@dunelm.org.uk>


* nb/send-email-no-dup-reply-to (2025-09-16) 1 commit
  (merged to 'next' on 2025-09-18 at d7081e00ec)
 + send-email: don't duplicate Reply-to: in intro message

 "git send-email --compose --reply-to=<address>" used to add
 duplicated Reply-To: header, which made mailservers unhappy.  This
 has been corrected.

 Will merge to 'master'.
 source: <175809074627.1696783.67425889158412786@noble.neil.brown.name>


* ar/submodule-gitdir-tweak (2025-09-08) 10 commits
 - t7425: add gitdir encoding tests
 - t7450: move nested gitdir tests to t7425
 - submodule: remove validate_submodule_git_dir()
 - submodule: error out if gitdir name is too long
 - submodule: encode gitdir paths to avoid conflicts
 - strbuf: bring back is_rfc3986_unreserved
 - t7425: add basic mixed submodule gitdir path tests
 - submodule: add gitdir path config override
 - submodule: create new gitdirs under submodules path
 - submodule--helper: use submodule_name_to_gitdir in add_submodule

 Avoid local submodule repository directory paths overlapping with
 each other by encoding submodule names before using them as path
 components.

 Expecting a reroll.
 cf. <87ecsf7g84.fsf@collabora.com> etc.
 source: <20250908140117.262205-1-adrian.ratiu@collabora.com>


* je/doc-push (2025-09-23) 2 commits
 - doc: git-push: rewrite refspec specification
 - doc: git-push: create PUSH RULES section

 Doc updates.

 Will merge to 'next'.
 source: <pull.1973.v2.git.1758651049.gitgitgadget@gmail.com>


* ps/clar-updates (2025-09-22) 2 commits
  (merged to 'next' on 2025-09-22 at c811e8c172)
 + t/unit-tests: update to 10e96bc
  (merged to 'next' on 2025-09-15 at 73402f7652)
 + t/unit-tests: update clar to fcbed04

 Import a newer version of the clar unit testing framework.

 Will merge to 'master'.
 source: <20250910-b4-pks-clar-update-v1-1-26a196237e0a@pks.im>
 source: <20250922-pks-clar-update-v1-1-9154e7d1b7a1@pks.im>


* ps/config-get-color-fixes (2025-09-22) 5 commits
  (merged to 'next' on 2025-09-25 at 7b69f57ef6)
 + builtin/config: do not spawn pager when printing color codes
 + builtin/config: special-case retrieving colors without a key
 + builtin/config: do not die in `get_color()`
 + t1300: small style fixups
 + t1300: write test expectations in the test's body

 The use of "git config get" command to learn how ANSI color
 sequence is for a particular type, e.g., "git config get
 --type=color --default=reset no.such.thing", isn't very ergonomic.

 Will merge to 'master'.
 source: <20250922-pks-config-color-v4-0-28b7d2697eed@pks.im>


* ps/meson-build-docs (2025-09-11) 3 commits
  (merged to 'next' on 2025-09-25 at d531b1afdc)
 + ci: don't compile whole project when testing docs with Meson
 + meson: print docs backend as part of the summary
 + meson: introduce a "docs" alias to compile documentation only

 The build procedure based on meson learned a target to only build
 documentation, similar to "make doc".

 Will merge to 'master'.
 source: <20250911-b4-pks-meson-docs-target-v1-0-a92c666ecef9@pks.im>


* ps/odb-clean-stale-wrappers (2025-09-10) 1 commit
 - odb: drop deprecated wrapper functions

 Code clean-up.

 Will merge to 'next'.
 source: <20250910-b4-pks-odb-drop-wrappers-v1-1-6ed660cb1eec@pks.im>


* jt/odb-transaction (2025-09-16) 7 commits
  (merged to 'next' on 2025-09-25 at 1a5c704fb9)
 + odb: add transaction interface
 + object-file: update naming from bulk-checkin
 + object-file: relocate ODB transaction code
 + bulk-checkin: drop flush_odb_transaction()
 + builtin/update-index: end ODB transaction when --verbose is specified
 + bulk-checkin: remove ODB transaction nesting
 + Merge branch 'jt/de-global-bulk-checkin' into jt/odb-transaction

 Continue the work to build on the bulk-checkin infrastructure to
 create many objects at once in a transaction and abstract it into
 the generic object layer.

 Will merge to 'master'.
 source: <20250916182938.2193476-1-jltobler@gmail.com>


* cc/fast-import-strip-signed-commits (2025-09-17) 2 commits
  (merged to 'next' on 2025-09-25 at 6c9a275f43)
 + fast-import: add '--signed-commits=<mode>' option
 + gpg-interface: refactor 'enum sign_mode' parsing

 "git fast-import" learned that "--signed-commits=<how>" option that
 corresponds to that of "git fast-export".

 Will merge to 'master'.
 source: <20250917181427.3193500-1-christian.couder@gmail.com>


* pw/3.0-default-initial-branch-to-main (2025-09-10) 4 commits
  (merged to 'next' on 2025-09-22 at 01bbebdab6)
 + t0613: stop setting default initial branch
 + t9902: switch default branch name to main
 + t4013: switch default branch name to main
 + breaking-changes: switch default branch to main
 (this branch is used by jc/3.0-default-initial-branch-to-main-addendum.)

 Declare that "git init" that is not otherwise configured uses
 'main' as the initial branch, not 'master', starting Git 3.0.

 Will merge to 'master'.
 source: <cover.1757518141.git.phillip.wood@dunelm.org.uk>


* ps/commit-graph-per-object-source (2025-09-04) 6 commits
 - odb: move commit-graph into the object sources
 - commit-graph: pass graphs that are to be merged as parameter
 - commit-graph: return commit graph from `repo_find_commit_pos_in_graph()`
 - commit-graph: return the prepared commit graph from `prepare_commit_graph()`
 - revision: drop explicit check for commit graph
 - blame: drop explicit check for commit graph

 Declare commit-graph is per object_source, which may not be a good idea.

 Comments?
 cf. <cf7aeda1-297a-4805-b0ae-e379ce11bbcf@gmail.com>
 source: <20250904-b4-pks-commit-graph-via-source-v1-0-d932c2481e1a@pks.im>


* ps/rust-balloon (2025-09-24) 9 commits
 - ci: enable Rust for breaking-changes jobs
 - ci: convert "pedantic" job into full build with breaking changes
 - BreakingChanges: announce Rust becoming mandatory
 - varint: reimplement as test balloon for Rust
 - varint: use explicit width for integers
 - help: report on whether or not Rust is enabled
 - Makefile: introduce infrastructure to build internal Rust library
 - Makefile: reorder sources after includes
 - meson: add infrastructure to build internal Rust library

 Dip our toes a bit to (optionally) use Rust implemented helper
 called from our C code.

 Comments?
 source: <20250925-b4-pks-rust-breaking-change-v7-0-4e49dcb904d5@pks.im>


* ms/refs-optimize (2025-09-19) 9 commits
  (merged to 'next' on 2025-09-25 at 5fd0825882)
 + t: add test for git refs optimize subcommand
 + t0601: refactor tests to be shareable
 + builtin/refs: add optimize subcommand
 + doc: pack-refs: factor out common options
 + builtin/pack-refs: factor out core logic into a shared library
 + builtin/pack-refs: convert to use the generic refs_optimize() API
 + reftable-backend: implement 'optimize' action
 + files-backend: implement 'optimize' action
 + refs: add a generic 'optimize' API

 "git refs optimize" is added for not very well explained reason
 despite it does the same thing as "git pack-refs"...

 Will merge to 'master'.
 source: <20250919082647.535213-1-meetsoni3017@gmail.com>


* sj/string-list (2025-09-17) 4 commits
 - refs: enable sign compare warnings check
 - string-list: change "string_list_find_insert_index" return type to "size_t"
 - string-list: replace negative index encoding with "exact_match" parameter
 - string-list: use bool instead of int for "exact_match"

 The "string-list" API function to find where a given string would
 be inserted got updated so that it can use unrealistically huge
 array index that would only fit in size_t but not int or ssize_t
 to achieve unstated goal.

 Expecting a reroll.
 cf. <CAOLa=ZShms1D-cq=x04dtT2ULTVE3ZDo8DODFnJRP2wcJz0EgQ@mail.gmail.com>
 source: <aMp8yNFiXDyk2hP4@ArchLinux>


* ps/packfile-store (2025-09-23) 16 commits
 - packfile: refactor `get_packed_git_mru()` to work on packfile store
 - packfile: refactor `get_all_packs()` to work on packfile store
 - packfile: refactor `get_packed_git()` to work on packfile store
 - packfile: move `get_multi_pack_index()` into "midx.c"
 - packfile: introduce function to load and add packfiles
 - packfile: refactor `install_packed_git()` to work on packfile store
 - packfile: split up responsibilities of `reprepare_packed_git()`
 - packfile: refactor `prepare_packed_git()` to work on packfile store
 - packfile: reorder functions to avoid function declaration
 - odb: move kept cache into `struct packfile_store`
 - odb: move MRU list of packfiles into `struct packfile_store`
 - odb: move packfile map into `struct packfile_store`
 - odb: move initialization bit into `struct packfile_store`
 - odb: move list of packfiles into `struct packfile_store`
 - packfile: introduce a new `struct packfile_store`
 - Merge branch 'ps/object-store-midx-dedup-info' into ps/packfile-store

 Code clean-up around the in-core list of all the pack files and
 object database(s).

 Will merge to 'next'.
 source: <20250923-b4-pks-packfiles-store-v6-0-b48f2a882759@pks.im>


* kn/refs-files-case-insensitive (2025-09-17) 4 commits
  (merged to 'next' on 2025-09-23 at 51c2a665f0)
 + refs/files: handle D/F conflicts during locking
 + refs/files: handle F/D conflicts in case-insensitive FS
 + refs/files: use correct error type when lock exists
 + refs/files: catch conflicts on case-insensitive file-systems

 Deal more gracefully with directory / file conflicts when the files
 backend is used for ref storage, by failing only the ones that are
 involved in the conflict while allowing others.

 Will merge to 'master'.
 source: <20250917-587-git-fetch-1-fails-fetches-on-case-insensitive-repositories-v4-0-da3c74a08ed0@gmail.com>


* en/rust-xdiff (2025-09-07) 8 commits
 . xdiff: change the types of dstart, dend, rchg, and rindex in xdfile_t
 . xdiff: make xdfile_t.nreff a usize instead of long
 . xdiff: make xdfile_t.nrec a usize instead of long
 . xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
 . xdiff: make xrecord_t.size a usize instead of long
 . xdiff: make xrecord_t.ptr a u8 instead of char
 . xdiff: include compat/rust_types.h
 . compat/rust_types.h: define rust primitive types
 . Merge branch 'en/xdiff-cleanup' into en/rust-xdiff

 Use Rust-friendly types in xdiff code.

 Expecting a reroll based on the updated base topic, but the base
 topic may further be updated first?
 cf. <CAH=ZcbA5hAM9kmO410KzVW7RXWWiwX2oJk6GGPP+6oVYatRVOw@mail.gmail.com>
 source: <pull.2048.git.git.1757274320.gitgitgadget@gmail.com>


* je/doc-checkout (2025-09-10) 7 commits
  (merged to 'next' on 2025-09-23 at b776ac7a24)
 + doc: git-checkout: clarify restoring files section
 + doc: git-checkout: split up restoring files section
 + doc: git-checkout: deduplicate --detach explanation
 + doc: git-checkout: clarify `-b` and `-B`
 + doc: git-checkout: clarify `git checkout <branch>`
 + doc: git-checkout: clarify ARGUMENT DISAMBIGUATION
 + doc: git-checkout: clarify intro sentence

 Doc updates.

 Will merge to 'master'.
 cf. <236a79f4-e9a2-4335-bbff-79ae0cc67e9b@app.fastmail.com>
 source: <pull.1962.v4.git.1757531669.gitgitgadget@gmail.com>


* kh/you-still-use-whatchanged-fix (2025-09-17) 9 commits
  (merged to 'next' on 2025-09-25 at de9c8c526c)
 + BreakingChanges: remove claim about whatchanged reports
 + whatchanged: remove not-even-shorter clause
 + whatchanged: hint about git-log(1) and aliasing
 + you-still-use-that??: help the user help themselves
 + t0014: test shadowing of aliases for a sample of builtins
 + git: allow alias-shadowing deprecated builtins
 + git: move seen-alias bookkeeping into handle_alias(...)
 + git: add `deprecated` category to --list-cmds
 + Makefile: don’t add whatchanged after it has been removed

 Update "do you still use it?" message given by a command that is
 deeply deprecated and allow us to suggest alternatives.

 Will merge to 'master'.
 source: <cover.1758139856.short.code@khaugsbakk.name>


* ds/sparse-checkout-clean (2025-09-12) 7 commits
  (merged to 'next' on 2025-09-25 at 00b296f153)
 + t: expand tests around sparse merges and clean
 + sparse-index: point users to new 'clean' action
 + sparse-checkout: add --verbose option to 'clean'
 + dir: add generic "walk all files" helper
 + sparse-checkout: match some 'clean' behavior
 + sparse-checkout: add basics of 'clean' command
 + sparse-checkout: remove use of the_repository

 "git sparse-checkout" subcommand learned a new "clean" action to
 prune otherwise unused working-tree files that are outside the
 areas of interest.

 Will merge to 'master'.
 source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>


^ permalink raw reply	[relevance 23%]

Results 1-200 of ~4000   | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2025-09-25 22:06 23% What's cooking in git.git (Sep 2025, #10; Thu, 25) Junio C Hamano
2025-09-29 22:19 23% What's cooking in git.git (Sep 2025, #11; Mon, 29) Junio C Hamano
2025-09-29 23:06     ` brian m. carlson
2025-09-30 14:43 99%   ` Junio C Hamano
2025-10-06 23:41 26% What's cooking in git.git (Oct 2025, #02; Mon, 6) Junio C Hamano
2025-10-07  8:22     ` Jeff King
2025-10-07 14:24 99%   ` Junio C Hamano
2025-10-08  4:10     ` Elijah Newren
2025-10-08 16:41 99%   ` Junio C Hamano
2025-10-09  0:18 23% What's cooking in git.git (Oct 2025, #03; Wed, 8) Junio C Hamano
2025-10-11  0:00 25% What's cooking in git.git (Oct 2025, #04; Fri, 10) Junio C Hamano
2025-10-11  5:23     ` Eric Sunshine
2025-10-13 15:28 99%   ` Junio C Hamano
2025-10-11 11:00     ` Patrick Steinhardt
2025-10-13 14:07 99%   ` Junio C Hamano
2025-10-11 14:35     ` D. Ben Knoble
2025-10-11 17:14 99%   ` Junio C Hamano
2025-10-14 23:20 24% What's cooking in git.git (Oct 2025, #05; Tue, 14) Junio C Hamano
2025-10-20 21:02 27% What's cooking in git.git (Oct 2025, #06; Fri, 17) Junio C Hamano
2025-10-21  5:25     ` Patrick Steinhardt
2025-10-21 21:48 99%   ` Junio C Hamano
2025-10-22  2:16 26% What's cooking in git.git (Oct 2025, #07; Tue, 21) Junio C Hamano
2025-10-23 23:36 24% What's cooking in git.git (Oct 2025, #08; Thu, 23) Junio C Hamano
2025-10-24 15:47     ` Jeff King
2025-10-24 16:06 99%   ` Junio C Hamano
2025-10-25 21:16 23% What's cooking in git.git (Oct 2025, #09; Sat, 25) Junio C Hamano
2025-10-27 15:58 26% What's cooking in git.git (Oct 2025, #10; Mon, 27) Junio C Hamano
2025-10-28 22:55 25% What's cooking in git.git (Oct 2025, #11; Tue, 28) Junio C Hamano
2025-10-30 15:49     ` Toon Claes
2025-10-31 21:33 99%   ` Junio C Hamano
2025-10-30 21:36 25% What's cooking in git.git (Oct 2025, #12; Thu, 30) Junio C Hamano
2025-10-31  6:42     ` Patrick Steinhardt
2025-10-31 15:51 99%   ` Junio C Hamano
2025-11-03 17:57 99%   ` Junio C Hamano
2025-11-03 18:43 99%     ` Junio C Hamano
2025-11-03 20:10 98%       ` Junio C Hamano
2025-11-03 17:24 28% What's cooking in git.git (Nov 2025, #01; Mon, 3) Junio C Hamano
2025-11-06 17:34 28% What's cooking in git.git (Nov 2025, #02; Thu, 6) Junio C Hamano
2025-11-07 18:56 31% What's cooking in git.git (Nov 2025, #03; Fri, 7) Junio C Hamano
2025-11-12 12:56     ` Toon Claes
2025-11-12 16:13 99%   ` Junio C Hamano
2025-11-12 17:16 31% What's cooking in git.git (Nov 2025, #04; Wed, 12) Junio C Hamano
2025-11-14 22:26 28% What's cooking in git.git (Nov 2025, #04; Fri, 14) Junio C Hamano
2025-11-15 16:51     ` D. Ben Knoble
2025-11-17 16:31       ` Phillip Wood
2025-11-17 22:48 99%     ` Junio C Hamano
2025-11-17 17:18 28% What's cooking in git.git (Nov 2025, #05; Mon, 17) Junio C Hamano
2025-11-20  0:55 23% What's cooking in git.git (Nov 2025, #06; Wed, 19) Junio C Hamano
2025-11-24  4:59 24% What's cooking in git.git (Nov 2025, #07; Sun, 23) Junio C Hamano
2025-11-24 15:46     ` D. Ben Knoble
2025-11-24 18:26 99%   ` Junio C Hamano
2025-11-25  6:55     ` Elijah Newren
2025-11-25 17:18 98%   ` Junio C Hamano
2025-11-25 11:40     ` Toon Claes
2025-11-25 17:19 99%   ` Junio C Hamano
2025-11-26  0:39 24% What's cooking in git.git (Nov 2025, #08; Tue, 25) Junio C Hamano
2025-11-26  9:15     ` Christian Couder
2025-11-26 14:36 99%   ` Junio C Hamano
2025-11-26 17:04 99%     ` Junio C Hamano
2025-11-29  4:09 26% What's cooking in git.git (Nov 2025, #09; Fri, 28) Junio C Hamano
2025-12-01  5:05 27% What's cooking in git.git (Nov 2025, #10; Sun, 30) Junio C Hamano
2025-12-01 10:53     ` Karthik Nayak
2025-12-07  0:43 99%   ` Junio C Hamano
2025-12-07  7:38 24% What's cooking in git.git (Dec 2025, #01) Junio C Hamano
2025-12-09 21:08 26% What's cooking in git.git (Dec 2025, #02) Junio C Hamano
2025-12-09 22:46     ` Karthik Nayak
2025-12-09 23:10 99%   ` Junio C Hamano
2025-12-10 10:04         ` Karthik Nayak
2025-12-10 12:00 99%       ` Junio C Hamano
2025-12-10  7:55     ` Kristoffer Haugsbakk
2025-12-10  9:20 99%   ` Junio C Hamano
2025-12-12 10:26 25% What's cooking in git.git (Dec 2025, #03) Junio C Hamano
2025-12-13  7:42     ` Adrian Ratiu
2025-12-16  1:59 96%   ` Junio C Hamano
2025-12-16  8:13         ` Patrick Steinhardt
2025-12-16 10:41           ` Adrian Ratiu
2025-12-16 17:49             ` Emily Shaffer
2025-12-17  5:04 99%           ` Junio C Hamano
2025-12-17  0:09     ` Aaron Plattner
2025-12-17  5:02 93%   ` Junio C Hamano
2025-12-17  5:20         ` Aaron Plattner
2025-12-17 13:46 99%       ` Junio C Hamano
2025-12-17 20:26     ` Aaron Plattner
2025-12-18  2:57 80%   ` Junio C Hamano
2025-12-15 11:16 23% What's cooking in git.git (Dec 2025, #04) Junio C Hamano
2025-12-17  9:46 23% What's cooking in git.git (Dec 2025, #05) Junio C Hamano
2025-12-19 16:47 22% What's cooking in git.git (Dec 2025, #06) Junio C Hamano
2025-12-22 18:17 21% What's cooking in git.git (Dec 2025, #07) Junio C Hamano
2025-12-29  8:37 21% What's cooking in git.git (Dec 2025, #08) Junio C Hamano
2025-12-30 13:47 22% What's cooking in git.git (Dec 2025, #09) Junio C Hamano
2026-01-01 17:47 25% What's cooking in git.git (Jan 2026, #01) Junio C Hamano
2026-01-05 16:36 23% What's cooking in git.git (Jan 2026, #02) Junio C Hamano
2026-01-08 11:56 23% What's cooking in git.git (Jan 2026, #03) Junio C Hamano
2026-01-08 13:08     ` Kristoffer Haugsbakk
2026-01-09 14:01 99%   ` Junio C Hamano
2026-01-13 20:10 21% What's cooking in git.git (Jan 2026, #04) Junio C Hamano
2026-01-14  0:27 99% ` Junio C Hamano
2026-01-14  5:20     ` Patrick Steinhardt
2026-01-14 14:26 99%   ` Junio C Hamano
2026-01-15 18:44 18% What's cooking in git.git (Jan 2026, #05) Junio C Hamano
2026-01-16  7:00     ` Elijah Newren
2026-01-16 15:23 99%   ` Junio C Hamano
2026-01-20 12:10 18% What's cooking in git.git (Jan 2026, #06) Junio C Hamano
2026-01-20 15:01     ` Shreyansh Paliwal
2026-01-20 16:30 99%   ` Junio C Hamano
2026-01-21 10:08     ` Johannes Schindelin
2026-01-21 15:26 99%   ` Junio C Hamano
2026-01-21 16:20 99%     ` Junio C Hamano
2026-01-21 19:00 19% What's cooking in git.git (Jan 2026, #07) Junio C Hamano
2026-01-21 21:03     ` Lucas Seiki Oshiro
2026-01-21 21:08 99%   ` Junio C Hamano
2026-01-23 10:01 21% What's cooking in git.git (Jan 2026, #08) Junio C Hamano
2026-01-23 14:35     ` Toon Claes
2026-01-23 17:22 99%   ` Junio C Hamano
2026-01-27 17:42     What's cooking in git.git (Jan 2026, #09) Junio C Hamano
2026-01-27 22:03     ` Taylor Blau
2026-02-06 19:39 99%   ` Junio C Hamano
2026-01-29 23:52 23% What's cooking in git.git (Jan 2026, #10) Junio C Hamano
2026-01-30  0:33     ` Eric Sunshine
2026-01-30  5:43 99%   ` Junio C Hamano
2026-01-30 14:24     ` Pushkar Singh
2026-01-30 16:50 99%   ` Junio C Hamano
2026-02-02 17:36 22% What's cooking in git.git (Feb 2026, #01) Junio C Hamano
2026-02-06  1:15 21% What's cooking in git.git (Feb 2026, #02) Junio C Hamano
2026-02-06 16:30     ` Patrick Steinhardt
2026-02-06 19:37 99%   ` Junio C Hamano
2026-02-07 23:15 20% What's cooking in git.git (Feb 2026, #03) Junio C Hamano
2026-02-08 23:10     ` brian m. carlson
2026-02-09  0:55 93%   ` Junio C Hamano
2026-02-09  9:14     ` Patrick Steinhardt
2026-02-09 16:37 99%   ` Junio C Hamano
2026-02-10 22:21 19% What's cooking in git.git (Feb 2026, #04) Junio C Hamano
2026-02-11 20:46 99% ` Junio C Hamano
2026-02-12 15:56     ` Phillip Wood
2026-02-12 16:38 99%   ` Junio C Hamano
2026-02-14  2:01 19% What's cooking in git.git (Feb 2026, #05) Junio C Hamano
2026-02-14 21:17     ` ds/revision-maximal-only (was Re: What's cooking in git.git (Feb 2026, #05)) Derrick Stolee
2026-02-17 16:33 99%   ` Junio C Hamano
2026-02-18  0:50 21% What's cooking in git.git (Feb 2026, #06) Junio C Hamano
2026-02-21  1:20 18% What's cooking in git.git (Feb 2026, #07) Junio C Hamano
2026-02-23 15:13 18% What's cooking in git.git (Feb 2026, #08) Junio C Hamano
2026-02-23 15:37     ` Kristoffer Haugsbakk
2026-02-23 21:45 99%   ` Junio C Hamano
2026-02-26  1:40 16% What's cooking in git.git (Feb 2026, #09) Junio C Hamano
2026-02-26 21:00 16% What's cooking in git.git (Feb 2026, #10) Junio C Hamano
2026-02-28  1:02 16% What's cooking in git.git (Feb 2026, #11) Junio C Hamano
2026-03-02  8:50     ` Patrick Steinhardt
2026-03-02 19:07 99%   ` Junio C Hamano
2026-03-02 19:20         ` Adrian Ratiu
2026-03-02 21:41 99%       ` Junio C Hamano
2026-03-03  3:15 17% What's cooking in git.git (Mar 2026, #01) Junio C Hamano
2026-03-03 18:10     ` Derrick Stolee
2026-03-03 18:43 99%   ` Junio C Hamano
2026-03-05  0:05 18% What's cooking in git.git (Mar 2026, #02) Junio C Hamano
2026-03-07  2:22 21% What's cooking in git.git (Mar 2026, #03) Junio C Hamano
2026-03-07  6:33     ` Eric Sunshine
2026-03-07  6:47 99%   ` Junio C Hamano
2026-03-10  1:19 20% What's cooking in git.git (Mar 2026, #04) Junio C Hamano
2026-03-13  0:10 19% What's cooking in git.git (Mar 2026, #05) Junio C Hamano
2026-03-13  0:24     ` Jeff King
2026-03-13  4:24 99%   ` Junio C Hamano
2026-03-16 22:07     ` Taylor Blau
2026-03-18  3:03       ` Jeff King
2026-03-18 16:36 99%     ` Junio C Hamano
2026-03-17  0:25 20% What's cooking in git.git (Mar 2026, #06) Junio C Hamano
2026-03-20  0:45 19% What's cooking in git.git (Mar 2026, #07) Junio C Hamano
2026-03-22  6:46 19% What's cooking in git.git (Mar 2026, #08) Junio C Hamano
2026-03-22 14:14     ` Shreyansh Paliwal
2026-03-22 17:53 99%   ` Junio C Hamano
2026-03-22 16:30     ` René Scharfe
2026-03-22 17:50 99%   ` Junio C Hamano
2026-03-23 16:32         ` Johannes Schindelin
2026-03-23 16:54 85%       ` Junio C Hamano
2026-03-24  0:46 18% What's cooking in git.git (Mar 2026, #09) Junio C Hamano
2026-03-25  4:20 18% What's cooking in git.git (Mar 2026, #10) Junio C Hamano
2026-03-25  8:33     ` Shreyansh Paliwal
2026-03-25 19:50 99%   ` Junio C Hamano
2026-03-26 23:16 19% What's cooking in git.git (Mar 2026, #11) Junio C Hamano
2026-03-27  7:35     ` Patrick Steinhardt
2026-03-27 16:08 99%   ` Junio C Hamano
2026-03-27  8:07     ` Christian Couder
2026-03-27 16:13 99%   ` Junio C Hamano
2026-03-31  0:10 18% What's cooking in git.git (Mar 2026, #12) Junio C Hamano
2026-03-31  0:20     ` Mirko Faina
2026-03-31 15:15 99%   ` Junio C Hamano
2026-03-31  5:22     ` Patrick Steinhardt
2026-03-31 15:27 99%   ` Junio C Hamano
2026-04-01 23:42 18% What's cooking in git.git (Apr 2026, #01) Junio C Hamano
2026-04-09 19:54     ` René Scharfe
2026-04-09 20:09 99%   ` Junio C Hamano
2026-04-07  1:30 17% What's cooking in git.git (Apr 2026, #02) Junio C Hamano
2026-04-08 17:30 21% What's cooking in git.git (Apr 2026, #03) Junio C Hamano
2026-04-14  2:32 21% What's cooking in git.git (Apr 2026, #04) Junio C Hamano
2026-04-17 22:40 23% What's cooking in git.git (Apr 2026, #05) Junio C Hamano
2026-04-20 16:15 23% What's cooking in git.git (Apr 2026, #06) Junio C Hamano
2026-04-20 22:46 23% What's cooking in git.git (Apr 2026, #07) Junio C Hamano
2026-04-23 10:38 21% What's cooking in git.git (Apr 2026, #08) Junio C Hamano
2026-05-03  3:47 18% What's cooking in git.git (May 2026, #01) Junio C Hamano
2026-05-11  3:08 16% What's cooking in git.git (May 2026, #02) Junio C Hamano
2026-05-11  5:51 90% ` Junio C Hamano
2026-05-12  9:23 16% What's cooking in git.git (May 2026, #03) Junio C Hamano
2026-05-12 14:20     ` Pushkar Singh
2026-05-13 16:06 99%   ` Junio C Hamano
2026-05-14 17:41         ` Pushkar Singh
2026-05-15  1:46 99%       ` Junio C Hamano
2026-05-15 11:49     ` Karthik Nayak
2026-05-15 17:06 99%   ` Junio C Hamano
2026-05-18  1:32 15% What's cooking in git.git (May 2026, #04) Junio C Hamano
2026-05-19 16:26     ` Taylor Blau
2026-05-19 19:19       ` Jeff King
2026-05-20  2:35 99%     ` Junio C Hamano
2026-05-19 22:11     ` Justin Tobler
2026-05-20  2:37 99%   ` Junio C Hamano
2026-05-20  5:19 15% What's cooking in git.git (May 2026, #05) Junio C Hamano
2026-05-20  5:27 59% ` Junio C Hamano
2026-05-20  5:44     ` Jeff King
2026-05-20  6:38 99%   ` Junio C Hamano
2026-05-23  9:06 16% What's cooking in git.git (May 2026, #06) Junio C Hamano
2026-05-26 13:56 17% What's cooking in git.git (May 2026, #07) Junio C Hamano
2026-05-27 16:06 18% What's cooking in git.git (May 2026, #08) Junio C Hamano
2026-06-02 11:23 17% What's cooking in git.git (Jun 2026, #01) Junio C Hamano
2026-06-04  2:35 19% What's cooking in git.git (Jun 2026, #02) Junio C Hamano
2026-06-09  0:56 17% What's cooking in git.git (Jun 2026, #03) Junio C Hamano
2026-06-11 15:26     ` Phillip Wood
2026-06-11 16:10 99%   ` Junio C Hamano
2026-06-11 16:08 16% What's cooking in git.git (Jun 2026, #04) Junio C Hamano
2026-06-11 16:40     ` Mirko Faina
2026-06-11 18:55 99%   ` Junio C Hamano
2026-06-15 18:55 17% What's cooking in git.git (Jun 2026, #05) Junio C Hamano
2026-06-17 17:06 17% What's cooking in git.git (Jun 2026, #06) Junio C Hamano
2026-06-17 17:16 17% Junio C Hamano
2026-06-20  1:33 17% What's cooking in git.git (Jun 2026, #07) Junio C Hamano
2026-06-22  7:52     ` Patrick Steinhardt
2026-06-22 12:50 99%   ` Junio C Hamano
2026-06-23  7:06 18% What's cooking in git.git (Jun 2026, #08) Junio C Hamano
2026-06-23 16:56 19% What's cooking in git.git (Jun 2026, #09) Junio C Hamano
2026-06-26  0:30 18% What's cooking in git.git (Jun 2026, #10) Junio C Hamano
2026-06-30  8:20     ` Toon Claes
2026-06-30 19:27 99%   ` Junio C Hamano
2026-06-29 17:50 17% What's cooking in git.git (Jun 2026, #11) Junio C Hamano
2026-07-01 23:40 15% What's cooking in git.git (Jul 2026, #01) Junio C Hamano
2026-07-02 10:38     ` Patrick Steinhardt
2026-07-03 20:39 99%   ` Junio C Hamano
2026-07-07 17:18 13% What's cooking in git.git (Jul 2026, #03) Junio C Hamano
2026-07-08 11:45     ` Kristofer Karlsson
2026-07-08 16:14 99%   ` Junio C Hamano
2026-07-10  0:51 14% What's cooking in git.git (Jul 2026, #04) Junio C Hamano
2026-07-13  5:40 13% What's cooking in git.git (Jul 2026, #05) Junio C Hamano
2026-07-15  0:00 12% What's cooking in git.git (Jul 2026, #06) Junio C Hamano
2026-07-16 23:30 11% What's cooking in git.git (Jul 2026, #07) Junio C Hamano
2026-07-19  7:49 11% What's cooking in git.git (Jul 2026, #08) Junio C Hamano
2026-07-21  2:19 12% What's cooking in git.git (Jul 2026, #09) Junio C Hamano
2026-07-22  9:02     ` Christian Couder
2026-07-22 18:27 99%   ` Junio C Hamano
2026-07-23  2:38 14% What's cooking in git.git (Jul 2026, #10) Junio C Hamano
2026-07-23 21:55     ` Pablo Sabater
2026-07-24  0:33 99%   ` Junio C Hamano
2026-07-25  0:19 15% What's cooking in git.git (Jul 2026, #11) Junio C Hamano
2026-07-27  3:09 14% What's cooking in git.git (Jul 2026, #12) Junio C Hamano
2026-07-29 13:24     ` Phillip Wood
2026-07-29 14:18 99%   ` Junio C Hamano
2026-07-29 15:20         ` Phillip Wood
2026-07-29 17:48 99%       ` Junio C Hamano
2026-08-05 13:10             ` Phillip Wood
2026-08-05 17:03 99%           ` Junio C Hamano
2026-07-31  6:20         ` Matt Hunter
2026-07-31 15:36 99%       ` Junio C Hamano
2026-07-30  6:11       ` Harald Nordgren
2026-07-31  7:02         ` Matt Hunter
2026-08-03  9:05           ` Phillip Wood
2026-08-03 16:02 99%         ` Junio C Hamano
2026-07-29 15:14     ` Phillip Wood
2026-07-29 15:52 99%   ` Junio C Hamano
2026-07-29 19:07 13% What's cooking in git.git (Jul 2026, #13) Junio C Hamano
2026-08-03 19:09 14% What's cooking in git.git (Aug 2026, #01) Junio C Hamano
2026-08-05 22:48 15% What's cooking in git.git (Aug 2026, #02) Junio C Hamano
2026-08-06 15:41     ` Pablo Sabater
2026-08-06 17:08 95%   ` Junio C Hamano
2026-08-08  1:55 16% What's cooking in git.git (Aug 2026, #03) Junio C Hamano
2026-08-08  5:50 99% ` Junio C Hamano
2026-08-11  8:05 16% What's cooking in git.git (Aug 2026, #04) Junio C Hamano
2026-08-13  4:45 15% What's cooking in git.git (Aug 2026, #05) Junio C Hamano
2026-08-13  7:59     ` Patrick Steinhardt
2026-08-13 17:36 99%   ` Junio C Hamano
2026-08-15  0:33 14% What's cooking in git.git (Aug 2026, #06) Junio C Hamano
2026-08-17  7:43 14% What's cooking in git.git (Aug 2026, #07) Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://public-inbox.org/mirrors/git.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).