Git development
 help / color / mirror / Atom feed
* What's cooking in git.git (Aug 2026, #09)
@ 2026-08-21  1:29 Junio C Hamano
  2026-08-21  9:09 ` kh/doc-trailers Kristoffer Haugsbakk
  0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2026-08-21  1:29 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 16th batch of topics have now graduated to the 'master' branch.
We have 472 non-merge commits in 'master' since Git 2.55.  There
are 128 non-merge commits cooking in 'next' (note that some have
been reverted), and 245 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]

* kn/receive-report-hook (2026-08-18) 1 commit
 - hook: introduce the report hook for git-receive-pack(1)

 A new hook 'report' is added to 'git receive-pack', which runs after
 reference updates and allows the server to filter or modify the
 packet-line status report sent back to the client.

 Expecting a reroll.
 cf. <CAOLa=ZSuzd3FozharJ_1LRgaQdpY+eRZnMOJYoLJNvPXiait1w@mail.gmail.com>
 source: <20260818-758-introduce-hook-v1-1-8a8d89e65838@gmail.com>


* en/midx-missing-pack-fallback (2026-08-18) 2 commits
 - packfile: recover when a multi-pack-index names a removed pack
 - replay: fail gracefully when a merge input is unreadable

 The object lookup machinery has been taught to gracefully recover
 when a multi-pack-index points to an owning pack that was removed
 during a concurrent geometric repack, and 'git replay' has been
 fixed to not segfault when reading such missing objects.

 Waiting for response.
 cf. <xmqqfr0augls.fsf@gitster.g>
 cf. <aoayppoxHAkcFTBN@pks.im>
 source: <pull.2207.git.1787092446.gitgitgadget@gmail.com>


* ll/zsh-complete-git-potty-options (2026-08-19) 1 commit
 - completion: zsh: support completion after "git -C <path>"

 The zsh completion script (in 'contrib/') has been updated to
 correctly locate the Git command after global options like '-C' by
 properly skipping them, similar to how the bash completion does.

 Needs review.
 cf. <CALnO6CC35iuyJpKZtkEN7fGuGK7zKd_jbebyZdKSQ1pyfOBRZA@mail.gmail.com>
 source: <pull.2155.v2.git.1787144872870.gitgitgadget@gmail.com>


* ps/odb-generic-corrupt-objects (2026-08-19) 5 commits
 - odb: handle `OBJECT_INFO_DIE_IF_CORRUPT` generically
 - odb/source: allow `read_object_info()` to bubble up error messages
 - odb/source: let callers discern missing and corrupt objects
 - odb/source: introduce error status when reading objects
 - odb/source-packed: flag known-bad objects as corrupt and not missing

 The object database (odb) API has been refactored to distinguish
 between missing objects and corrupt ones by returning more
 descriptive error statuses.  Both the packed and loose backends now
 faithfully propagate error details using a generic strbuf error
 mechanism, removing backend-specific leakage from central lookup
 paths.

 Waiting for review.
 cf. <CAOLa=ZTVxdVAJynKjb0LjmZ-+b5nQmyD0Bm-aT81rOOdJ0a5yg@mail.gmail.com>
 cf. <aocNsR60-8W2A-fy@pks.im>
 cf. <aocNq1N9MWS4BeaJ@pks.im>
 source: <20260819-pks-odb-generic-corrupt-objects-v2-0-a984e3a0ad6f@pks.im>


* ap/http-preserve-wwwauth-redirect (2026-08-19) 1 commit
 - http: preserve wwwauth_headers across redirects

 When an HTTP request triggers a redirect and the target yields an
 authentication challenge, the WWW-Authenticate headers received
 during the redirect are now explicitly preserved across the
 credential URL update, fixing an issue where they were incorrectly
 cleared.

 Needs review.
 source: <20260819-http-preserve-wwwauth-redirect-v2-1-4c61039432b0@nvidia.com>


* fr/pack-objects-trace-pack-bytes (2026-08-19) 1 commit
 - pack-objects: trace pack bytes written

 The pack-objects command has been updated to record the total bytes
 written to pack files in trace2 output, allowing performance
 analysis of different compression settings by comparing the
 resulting pack sizes.

 Needs review.
 cf. <aobFLJuiuM1EuNpv@pks.im>
 cf. <20260820082102.GA2973952@coredump.intra.peff.net>
 source: <c6a8cdac36d2202055d637ebcc97e484122cdcd4.1787158152.git.friel@openai.com>


* kh/doc-datamodel (2026-08-20) 4 commits
 - doc: datamodel: link to the glossary
 - doc: glossary: link four of the terms to gitdatamodel(7)
 - doc: git: link to the gitdatamodel(7) tutorial
 - doc: git: list gitdatamodel(7) as a concept guide

 The gitdatamodel documentation page has been linked from a handful
 of key documentaiton pages.

 Needs review.
 source: <CV_doc_datamodel_advertize.bea@msgid.xyz>


* yn/worktree-repair-relative (2026-08-20) 1 commit
 - worktree repair: detect relative path in .git file correctly

 The git worktree repair command failed to rewrite the .git file of
 a working tree from a relative path to an absolute path when the
 command was run in the working tree itself. The
 read_gitfile_gently() function was modified to also return whether
 the path originally recorded in the file was absolute, and this new
 capability is used to correctly detect such mismatches. 

 Needs review.
 source: <pull.2205.v2.git.1787240760069.gitgitgadget@gmail.com>

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

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

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


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

 Graduated to 'master'.
 cf. <10b22a6b-e028-469c-a117-8dc2ed5bed3b@gmail.com>
 source: <pull.2285.v25.git.git.1785939877.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.

 Graduated to 'master'.
 cf. <anQYWlv3UhpS3iE7@pks.im>
 cf. <CAOLa=ZQQnrRca60BAfnm6Azu=bHvnoVhcGwQ3KkDT7yqLDd8Dw@mail.gmail.com>
 source: <V3_CV_git_ref_migration_warning.b23@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.

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


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

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


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

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

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

* 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 for too long, stalled.
 cf. <xmqqldb4xlqa.fsf@gitster.g>
 cf. <db7edc66-9b2a-47bc-98db-87d01885cef0@gmail.com>
 source: <20260721140443.1809379-2-hugo@hsal.es>

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

* sk/object-name-use-after-free (2026-08-17) 1 commit
  (merged to 'next' on 2026-08-20 at b0804dff5f)
 + object-name: avoid use-after-free in get_oid_with_context_1()

 A heap-use-after-free bug in the object name parsing code when
 reporting failures with a relative path to a sparse directory has
 been corrected.

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


* kh/format-rev-doc-synopsis (2026-08-17) 2 commits
  (merged to 'next' on 2026-08-20 at b9c47eddd0)
 + 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.

 Will merge to 'master'.
 cf. <xmqq33wc4dyq.fsf@gitster.g>
 source: <V4_CV_synopsis_block.b8e@msgid.xyz>


* kh/format-rev-more-options (2026-08-18) 5 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: place BUG calls first in callback
 - format-rev: use lower case for opts description

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

 Needs review.
 source: <V2_CV_format-rev_three_more_opts.bd3@msgid.xyz>


* ps/odb-pluggable-pack-generation (2026-08-20) 6 commits
 - bundle: generate packfiles via the object database
 - bundle: get (mostly) rid of `the_repository`
 - 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. <aobnos_v8xko0w57@pks.im>
 source: <20260820-b4-pks-odb-generate-pack-v3-0-bc42252f6169@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.

 Expecting a reroll.
 cf. <20260820151325.58087-1-nikolauspschuetz@gmail.com>
 cf. <20260820144648.47267-1-nikolauspschuetz@gmail.com>
 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
  (merged to 'next' on 2026-08-17 at 4b6b3295ed)
 + diff: avoid misleading statement about -l option

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

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


* ss/submittingpatches-typofix (2026-08-14) 1 commit
  (merged to 'next' on 2026-08-18 at b251ddc3d7)
 + doc: fix typo in submitting patches

 Typofix.

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


* ch/chdir-notify-drop-name (2026-08-14) 1 commit
  (merged to 'next' on 2026-08-18 at 973cefddd7)
 + 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 'master'.
 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
  (merged to 'next' on 2026-08-17 at f6a6ff92a6)
 + 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 'master'.
 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-19) 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. <aodyeILDMaBOX--K@denethor>
 cf. <aoaiz7M1oGboydY4@pks.im>
 cf. <aoaiy1wmSXjL30-m@pks.im>
 cf. <aoaixMF1biKYhWN2@pks.im>
 source: <20260819215311.3880274-1-jltobler@gmail.com>


* jc/complete-checkout (2026-08-13) 4 commits
  (merged to 'next' on 2026-08-19 at 758fc8c411)
 + 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 'master'.
 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
  (merged to 'next' on 2026-08-17 at 82d0706aef)
 + sequencer: remove unnecessary variable setting

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

 Will merge to 'master'.
 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
  (merged to 'next' on 2026-08-17 at a4d7a9d1d6)
 + 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 'master'.
 cf. <CAP8UFD0+iXC3VxWmuuuB7La-pP6hdz58tr6vaEJSKpXJ_4ZH2w@mail.gmail.com>
 source: <pull.2199.git.1786516783909.gitgitgadget@gmail.com>


* ps/odb-eagerly-load-alternates (2026-08-17) 6 commits
 - odb: drop `alternates_db` field
 - odb: drop `loaded_alternates` field
 - odb: eagerly initialize alternates
 - odb: decouple source path comparisons from `the_repository`
 - setup: create ref and object databases after config is written
 - Merge branch 'ps/odb-make-creation-pluggable' into ps/odb-eagerly-load-alternates

 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=ZT-ObRJ3t0XYAkL33CPDZ2ULu_5M7c477rr0pZBqTBi9w@mail.gmail.com>
 cf. <xmqqmrugsryl.fsf@gitster.g>
 source: <20260817-pks-odb-eagerly-prepare-alternates-v3-0-1115a7e02467@pks.im>


* gg/http-ssl-verify-status (2026-08-18) 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.
 source: <20260818214858.65122-1-ggordon@gitlab.com>


* js/packfile-fast-append (2026-08-13) 1 commit
  (merged to 'next' on 2026-08-18 at cc3da5a03d)
 + 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 'master'.
 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
  (merged to 'next' on 2026-08-18 at 23ad3f2b76)
 + 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 'master'.
 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.

 Will merge to 'next'?
 cf. <aoWP3TYq5rNjUx7S@pks.im>
 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. <xmqq1pc0mr5i.fsf@gitster.g>
 cf. <xmqqecg0oabe.fsf@gitster.g>
 cf. <xmqqy0e8mv0k.fsf@gitster.g>
 cf. <xmqqjypsoami.fsf@gitster.g>
 cf. <xmqq1pc0mr5i.fsf@gitster.g>
 source: <20260813154748.2378747-1-christian.couder@gmail.com>


* dk/use-nsec-runtime (2026-08-20) 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.

 Needs review.
 cf. <xmqqa4qgsn20.fsf@gitster.g>
 source: <cover.1787231825.git.ben.knoble@gmail.com>


* ps/t7900-deflake-maintenance (2026-08-12) 2 commits
  (merged to 'next' on 2026-08-17 at 7ef446fd59)
 + 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 'master'.
 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-20) 1 commit
 - worktree add: shouldn't dwim if -b or -B is given

 The DWIM logic in 'git worktree add' sometimes tried to infer a
 remote-tracking branch when an explicit '-b' or '-B' option was
 given to create a new branch, causing the explicit branch name to
 be ignored, which has been corrected.

 Will merge to 'next'?
 cf. <xmqqecfssnk0.fsf@gitster.g>
 source: <pull.2192.v4.git.1787221888406.gitgitgadget@gmail.com>


* yn/worktree-ambiguous-remote-advice (2026-08-20) 3 commits
 - worktree add: improve message for ambiguous remote branch name
 - checkout: improve message for ambiguous remote branch name
 - checkout: extract function to display advice for ambiguous remotes

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

 Needs review.
 source: <pull.2197.v6.git.1787259838.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>


* jc/complete-diff-tracked-paths (2026-08-12) 3 commits
  (merged to 'next' on 2026-08-19 at 37263f6528)
 + 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.

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


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

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

 Needs review.
 source: <V2_URLs_not_trailers.bf3@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>


* 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. <xmqqlda3z773.fsf@gitster.g>
 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>


* js/coverity-unchecked-returns-fix (2026-08-12) 12 commits
  (merged to 'next' on 2026-08-17 at 105f002870)
 + 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 'master'.
 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>


* js/pack-objects-delta-size-t (2026-08-13) 13 commits
  (merged to 'next' on 2026-08-17 at b6778ce373)
 + 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 'master'.
 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-20) 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.

 Waiting for response.
 cf. <xmqq4igov9h9.fsf@gitster.g>
 source: <pull.2337.v14.git.git.1787249432.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>


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

^ permalink raw reply	[flat|nested] 3+ messages in thread
* What's cooking in git.git (Jul 2026, #13)
@ 2026-07-29 19:07 Junio C Hamano
  2026-07-30  9:23 ` kh/doc-trailers Kristoffer Haugsbakk
  0 siblings, 1 reply; 3+ messages in thread
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	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-08-21  9:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-21  1:29 What's cooking in git.git (Aug 2026, #09) Junio C Hamano
2026-08-21  9:09 ` kh/doc-trailers Kristoffer Haugsbakk
  -- strict thread matches above, loose matches on Subject: below --
2026-07-29 19:07 What's cooking in git.git (Jul 2026, #13) Junio C Hamano
2026-07-30  9:23 ` kh/doc-trailers Kristoffer Haugsbakk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox