What's cooking (2026/07 #06)

todo
Junio C Hamano 2026-07-14 14:53:02 -07:00
parent ac7d686d29
commit 8550e564f5
1 changed files with 321 additions and 229 deletions

View File

@ -1,23 +1,24 @@
To: git@vger.kernel.org
Subject: What's cooking in git.git (Jul 2026, #05)
X-master-at: f60db8d575adb79761d363e026fb49bddf330c73
X-next-at: 8d093f411df65440e1ddb297f1180711f28b7488
Subject: What's cooking in git.git (Jul 2026, #06)
X-master-at: 55526a18268bbc1ddaf8a6b7850c33d984eac9e9
X-next-at: 8e2bf96aa5bacd9f277397638fd9823d0be25e88
Bcc: lwn@lwn.net, gitster@pobox.com

What's cooking in git.git (Jul 2026, #05)
What's cooking in git.git (Jul 2026, #06)
-----------------------------------------

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

The first batch of topics have now graduated to the 'master' branch.
The second batch of topics have now graduated to the 'master'
branch.

Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
@ -47,91 +48,174 @@ Release tarballs are available at:

https://www.kernel.org/pub/software/scm/git/

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

* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
(merged to 'next' on 2026-07-06 at b099249efd)
+ gpg-interface: fix strip_cr_before_lf to only remove CR before LF

The GPG and SSH signature parsing code has been corrected to strip
carriage return characters only when they immediately precede line
feeds, instead of unconditionally stripping all carriage returns.

Graduated to 'master'.
source: <20260624093618.17456-1-antonio.destefani08@gmail.com>


* hn/branch-push-slip-advice (2026-06-27) 2 commits
(merged to 'next' on 2026-07-06 at acdff65ac5)
+ push: suggest <remote> <branch> for a slash slip
+ branch: suggest <remote>/<branch> on upstream slip

When 'git push origin/main' or 'git branch origin main' is run, the
command is now recognized as a potential typo, and advice has been
added to offer a typo fix.

Graduated to 'master'.
cf. <xmqqfr272lq7.fsf@gitster.g>
source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>


* jk/format-patch-leakfix (2026-06-29) 2 commits
(merged to 'next' on 2026-07-06 at 35aff0d609)
+ format-patch: fix leak of rev_info in prepare_bases()
+ t: move LSan errors from stdout to stderr

A memory leak in the '--base' handling of 'git format-patch' has been
plugged, and the leak reporting of the test suite when running under a
TAP harness has been improved.

Graduated to 'master'.
cf. <akOZy-BygZS8fqPM@pks.im>
source: <20260630063944.GA3733670@coredump.intra.peff.net>


* jk/reftable-leakfix (2026-06-28) 1 commit
(merged to 'next' on 2026-07-06 at 55ce81f2d5)
+ reftable: fix unlikely leak on API error

A memory leak in the 'reftable_writer_new()' initialization function
has been fixed by delaying the allocation of 'struct reftable_writer'
until after input options are validated.

Graduated to 'master'.
cf. <akIPBJLtPqDjQt-A@pks.im>
source: <20260628090314.GA661068@coredump.intra.peff.net>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
(merged to 'next' on 2026-07-06 at aa748c4564)
+ prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
+ prio-queue: rename .nr to .nr_ and add accessor helpers
(this branch is used by kk/prio-queue-cascade-sift.)

The lazy priority queue optimization pattern (deferring actual removal
in 'prio_queue_get()' to allow get+put fusion) has been folded
directly into 'prio_queue' itself, speeding up commit traversal
workflows and simplifying callers.

Graduated to 'master'.
cf. <xmqqh5mjrbgq.fsf@gitster.g>
source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
(merged to 'next' on 2026-07-06 at 6132517517)
+ odb: introduce `odb_prepare()`
+ odb/source: generalize `reprepare()` callback
+ Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare

The 'reprepare()' callback for object database sources has been
generalized into a 'prepare()' callback with an optional flush cache
flag, and a new 'odb_prepare()' wrapper has been introduced to allow
pre-opening object database sources.

Graduated to 'master'.
cf. <87ik704f1j.fsf@emacs.iotcl.com>
source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>

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

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

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.
'git send-pack' has been taught to refrain from sending 'REF_DELTA'
encoded packfiles when the other side asks it to.

Needs review.
source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>
source: <alQ7WKITYDXfiVn9@com-79390>


* cl/b4-cover-change-id (2026-07-10) 1 commit
- b4: include change-id in cover template
* cc/doc-fast-export-synopsis-fix (2026-07-13) 1 commit
- fast-export: standardize usage string and SYNOPSIS

The in-tree 'b4' cover letter template has been updated to include the
'change-id' trailer, ensuring that sent tags generated by 'b4' contain
the required tracking information for subsequent runs.
The usage string and SYNOPSIS for 'git fast-export' have been
standardized to make them consistent with each other and with other
commands.

Will merge to 'next'.
source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>
Will merge to 'next'?
cf. <alX5Nl8uX4ctVqo3@pks.im>
source: <20260713124153.245268-1-christian.couder@gmail.com>


* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
- object-file: fix closing object stream twice
* sk/t1100-modernize (2026-07-14) 2 commits
- t1100: move creation of expected output into setup test
- t1100: modernize test style

The stream-based object signature verification path has been
corrected to avoid double-closing the stream on read errors.
The test script 't/t1100-commit-tree-options.sh' has been modernized
by converting test cases to the modern style (using single quotes and
tab indentation) and moving the creation of the expected file inside
the setup test so it runs under the protection of the test harness.

Will merge to 'next'.
source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>
Will merge to 'next'?
cf. <xmqq4ii1v7x0.fsf@gitster.g>
source: <20260714122033.61947-1-diy2903@gmail.com>


* pz/fetch-submodule-errors-config (2026-07-11) 3 commits
- fixup! fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
- fetch: add fetch.submoduleErrors to make submodule fetch errors non-fatal
- submodule: fix premature failure in recursive submodule fetch
* tn/packfile-uri-concurrency (2026-07-13) 2 commits
- fetch-pack: accept "pack" output for packfile URIs
- http: use unique tempfiles for packfile URI downloads

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.
Concurrent downloads of packfiles via packfile URIs have been
supported by using unique temporary files, preventing corruption when
multiple processes fetch the same pack. The 'fetch-pack' command has
also been updated to tolerate pre-existing '.keep' files.

Expecting a reroll.
cf. <alaAi4vNwi-KabYV@com-76773>
source: <alVn-QmK3K91_tkH@com-76773>


* rs/strbuf-avoid-redundant-reset (2026-07-14) 1 commit
- strbuf: avoid redundant reset in strbuf_getwholeline()

A redundant 'strbuf_reset()' call in the 'HAVE_GETDELIM' path of
'strbuf_getwholeline()' has been removed, as 'getdelim()' overwrites
the buffer and the length is updated afterwards.

Will merge to 'next'?
cf. <xmqq8q7dv82b.fsf@gitster.g>
source: <d4ffe7fb-f782-4f06-9e3b-f72729d1e225@web.de>


* rs/tempfile-wo-the-repository (2026-07-14) 5 commits
- use repo_hold_lock_file_for_update{,_mode,_timeout}() with custom repos
- tempfile: stop using the_repository
- lockfile: add repo_hold_lock_file_for_update{,_timeout}{,_mode}()
- refs/packed: use repo_create_tempfile()
- tempfile: add repo_create_tempfile{,_mode}()

The tempfile and lockfile APIs have been refactored to stop depending
on the 'the_repository' global variable, and their callers have been
updated to use the repository-aware variants.

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


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

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

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


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

A commit that is emptied by melding a 'fixup!' or 'squash!' commit
during 'git rebase --autosquash' is now handled according to the
'--empty' option, allowing it to be dropped, kept, or to halt the
rebase.

Waiting for response(s) to review comment(s).
cf. <xmqqh5m494yh.fsf@gitster.g>
source: <20260711-fz-autosquash-empty-v3-1-d227b63eb511@gmail.com>
source: <20260714175956.54601-1-l.s.r@web.de>

--------------------------------------------------
[Stalled]
@ -198,6 +282,95 @@ Release tarballs are available at:
--------------------------------------------------
[Cooking]

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

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

Needs review.
source: <pull.2175.git.1783615780.gitgitgadget@gmail.com>


* cl/b4-cover-change-id (2026-07-10) 1 commit
(merged to 'next' on 2026-07-13 at 15c7ad9a3f)
+ b4: include change-id in cover template

The in-tree 'b4' cover letter template has been updated to include the
'change-id' trailer, ensuring that sent tags generated by 'b4' contain
the required tracking information for subsequent runs.

Will merge to 'master'.
source: <20260710-add-change-id-to-b4-template-v1-1-1bd37a25064e@black-desk.cn>


* ps/odb-stream-double-close-fix (2026-07-10) 1 commit
(merged to 'next' on 2026-07-13 at dd2c5795b7)
+ object-file: fix closing object stream twice

The stream-based object signature verification path has been
corrected to avoid double-closing the stream on read errors.

Will merge to 'master'.
source: <20260710-pks-odb-stream-double-close-v1-1-d5fa233a37c7@pks.im>


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

The 'git fetch' command has been updated to allow configuring how
submodule fetch errors are handled. A new configuration variable
'fetch.submoduleErrors' and a corresponding '--submodule-errors'
command-line option have been introduced, allowing users to make
submodule fetch errors non-fatal (warn instead of fail).
Additionally, a premature failure during recursive submodule fetches
has been fixed by deferring the error until the OID-based retry phase
also fails.

Needs review.
cf. <xmqqldbdvb3x.fsf@gitster.g>
source: <20260714132959.3368867-1-paulius.zaleckas@gmail.com>


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

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

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


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

A commit that is emptied by melding a 'fixup!' or 'squash!' commit
during 'git rebase --autosquash' is now handled according to the
'--empty' option, allowing it to be dropped, kept, or to halt the
rebase.

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


* dm/submodule-update-i-shorthand (2026-07-07) 1 commit
- submodule--helper: accept '-i' shorthand for update --init

@ -205,7 +378,8 @@ Release tarballs are available at:
'git submodule update' command until it was broken in a modernization
of the option-parsing code, has been restored.

Needs review.
Will merge to 'next'.
cf. <xmqq8q7ltf51.fsf@gitster.g>
source: <20260708-submodule-init-v1-1-719456077262@atmark-techno.com>


@ -296,7 +470,7 @@ Release tarballs are available at:
source: <20260513070803.163546-1-grawity@nullroute.lt>


* ps/odb-pluggable-housekeeping (2026-07-07) 11 commits
* ps/odb-pluggable-housekeeping (2026-07-12) 12 commits
- odb: make optimizations pluggable
- builtin/gc: fix signedness issues in ODB-related functionality
- builtin/gc: refactor ODB optimizations to operate on "files" source
@ -308,17 +482,18 @@ Release tarballs are available at:
- 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,
been refactored to be pluggable. The files-backend specific logic,
including incremental and geometric repacking as well as object
pruning, has been moved out of the command implementation and into the
files object database source, enabling future alternative object
database backends to implement their own housekeeping services.

Expecting a reroll.
cf. <ak4CHGpIhVIT9sd2@pks.im>
source: <20260707-b4-pks-odb-optimize-v1-0-aae607667be4@pks.im>
Needs review.
cf. <xmqqwluyyhv1.fsf@gitster.g>
source: <20260713-b4-pks-odb-optimize-v2-0-9c2c3ee94b38@pks.im>


* tc/bundle-uri-empty-fix (2026-07-08) 2 commits
@ -326,11 +501,11 @@ Release tarballs are available at:
+ bundle-uri: stop sending invalid bundle configuration
+ bundle-uri: drain remaining response on invalid bundle-uri lines

The client-side parser of server-advertised bundle-URI list has been
updated to drain the remaining response in order to avoid protocol
desynchronization when the server sends a misconfigured list. Also,
the server-side has been taught to omit empty configuration values
instead of sending invalid key-value lines.
The client-side parser of the server-advertised bundle-URI list has
been updated to drain the remaining response in order to avoid
protocol desynchronization when the server sends a misconfigured list.
Also, the server-side has been taught to omit empty configuration
values instead of sending invalid key-value lines.

Will merge to 'master'.
cf. <xmqqtsq9qj5k.fsf@gitster.g>
@ -374,27 +549,29 @@ Release tarballs are available at:
source: <pull.2174.v2.git.1783683577.gitgitgadget@gmail.com>


* ps/odb-for-each-object-filter (2026-07-10) 9 commits
* ps/odb-for-each-object-filter (2026-07-13) 10 commits
- builtin/cat-file: filter objects via object database
- odb: introduce object filters to `odb_for_each_object()`
- pack-bitmap: introduce function to open bitmap for a single source
- pack-bitmap: drop `_1` suffix from functions that open bitmaps
- pack-bitmap: iterate object sources when opening bitmaps
- pack-bitmap: allow aborting iteration of bitmapped objects
- pack-objects: drop unused return value from add_object_entry()
- pack-bitmap: mark object filter as `const`
- odb/source-packed: improve lookup when enumerating objects
- Merge branch 'ps/odb-drop-whence' into ps/odb-for-each-object-filter
(this branch uses ps/odb-drop-whence.)

The object database enumeration interface 'odb_for_each_object()' has
been taught to accept object filters, allowing the underlying backends
to optimize the traversal by using reachability bitmaps when
available. 'git cat-file --batch-all-objects' has been updated to
use this generic interface, simplifying its code and avoiding direct
access to ODB backend internals.
The object database enumeration interface 'odb_for_each_object()'
has been taught to accept object filters, allowing the underlying
backends to optimize the traversal by using reachability bitmaps
when available. 'git cat-file --batch-all-objects' has been updated
to use this generic interface, simplifying its code and avoiding
direct access to ODB backend internals.

Needs review.
source: <20260710-pks-odb-for-each-object-filter-v2-0-3710a9cc165a@pks.im>
Will merge to 'next'?
cf. <alW0KzSZuZnHmOZD@com-79390>
source: <20260713-pks-odb-for-each-object-filter-v3-0-b3c65c641073@pks.im>


* ps/refs-wo-the-repository (2026-07-09) 8 commits
@ -410,7 +587,7 @@ Release tarballs are available at:

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

@ -426,7 +603,7 @@ Release tarballs are available at:

The 'topo_levels' slab was propagated only to the topmost layer of a
split commit-graph chain, causing topological levels for commits in
base layers to be recomputed during incremental writes. This has been
base layers to be recomputed during incremental writes. This has been
corrected.

Will merge to 'master'.
@ -574,7 +751,8 @@ Release tarballs are available at:
modernized to use 'test_path_is_file' and 'test_path_is_missing'
instead of raw 'test -f' and '! test -f' calls.

Needs review.
Will merge to 'next'?
cf. <alTHrUEh4_O5ROeu@pks.im>
source: <20260711160447.99708-1-marcelomlage@usp.br>


@ -593,8 +771,8 @@ Release tarballs are available at:
Various test scripts have been updated to clean up large temporary
files and repositories, reducing peak disk usage during testing.
Also, expensive tests have been disabled on platforms that lack
sufficient resources (like 32-bit platforms and Windows CI
runners), and the long test suite has been enabled in GitLab CI.
sufficient resources (like 32-bit platforms and Windows CI runners),
and the long test suite has been enabled in GitLab CI.

Will merge to 'master'.
cf. <20260707043026.GB677056@coredump.intra.peff.net>
@ -624,7 +802,7 @@ Release tarballs are available at:
The build system has been updated to support building universal macOS
binaries when 'Rust' is enabled, by compiling separate static archives
for each target triple listed in 'RUST_TARGETS' and combining them
using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.

Will merge to 'master'.
@ -640,7 +818,8 @@ Release tarballs are available at:
configuration files has been taught to use the location of the
worktree in its condition.

Needs review.
Will merge to 'next'?
cf. <alTJCTKR9jOWfgbk@pks.im>
source: <20260710-includeif-worktree-v8-0-04686d8a616c@black-desk.cn>


@ -673,20 +852,6 @@ Release tarballs are available at:
source: <20260630020220.1559190-1-bblima@usp.br>


* jk/format-patch-leakfix (2026-06-29) 2 commits
(merged to 'next' on 2026-07-06 at 35aff0d609)
+ format-patch: fix leak of rev_info in prepare_bases()
+ t: move LSan errors from stdout to stderr

A memory leak in the '--base' handling of 'git format-patch' has been
plugged, and the leak-reporting of the test suite when running under a
TAP harness has been improved.

Will merge to 'master'.
cf. <akOZy-BygZS8fqPM@pks.im>
source: <20260630063944.GA3733670@coredump.intra.peff.net>


* ps/setup-split-discovery-and-setup (2026-07-07) 16 commits
(merged to 'next' on 2026-07-10 at 1691a942ab)
+ setup: mark `set_git_work_tree()` as file-local
@ -707,7 +872,7 @@ Release tarballs are available at:
+ Merge branch 'ps/refs-onbranch-fixes' into ps/setup-split-discovery-and-setup

The repository discovery and repository configuration phases, which
were previously intertwined in 'setup.c', have been split. Repository
were previously intertwined in 'setup.c', have been split. Repository
discovery has been updated to populate a 'struct repo_discovery'
without modifying the repository state, which is then taken by
repository configuration to initialize the repository, paving the way
@ -718,14 +883,9 @@ Release tarballs are available at:
source: <20260707-pks-setup-split-discovery-and-setup-v2-0-aab372cd227c@pks.im>


* pw/rebase-drop-notes-with-commit (2026-06-30) 15 commits
- amend! sequencer: simplify pick_one_commit()
- amend! sequencer: remove unnecessary "or" in pick_one_commit()
- fixup! sequencer: never reschedule on failed commit
- fixup! sequencer: be more careful with external merge
* pw/rebase-drop-notes-with-commit (2026-07-13) 10 commits
- sequencer: do not record dropped commits as rewritten
- sequencer: use an enum to represent result of picking a commit
- sequencer: return early from pick_one_commit() on success
- sequencer: simplify pick_one_commit()
- sequencer: remove unnecessary condition in pick_one_commit()
- sequencer: simplify handing of fixup with conflicts
@ -735,14 +895,14 @@ Release tarballs are available at:
- sequencer: move definition of is_final_fixup()
- t3400: restore coverage for note copying with apply backend

The rebase post-rewrite notes-copying logic has been corrected. When a
commit is dropped during rebase (e.g., because its changes are already
upstream), it is no longer recorded as rewritten, preventing its notes
from being copied to an unrelated commit.
The rebase post-rewrite notes-copying logic has been corrected. When
a commit is dropped during rebase (e.g., because its changes are
already upstream), it is no longer recorded as rewritten, preventing
its notes from being copied to an unrelated commit.

Expecting a reroll.
cf. <dce74d17-eefd-40bb-82f3-f6b3179cc2b6@gmail.com>
source: <cover.1782833268.git.phillip.wood@dunelm.org.uk>
Needs review.
cf. <alTxn7MmX3aH_7gp@ugly.lan>
source: <cover.1783948637.git.phillip.wood@dunelm.org.uk>


* jk/bloom-leak-fixes (2026-06-30) 3 commits
@ -811,7 +971,7 @@ Release tarballs are available at:
- 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
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.

@ -820,31 +980,6 @@ Release tarballs are available at:
source: <cover.1782500507.git.me@ttaylorr.com>


* jk/reftable-leakfix (2026-06-28) 1 commit
(merged to 'next' on 2026-07-06 at 55ce81f2d5)
+ reftable: fix unlikely leak on API error

A memory leak in the 'reftable_writer_new()' initialization function
has been fixed by delaying the allocation of 'struct reftable_writer'
until after input options are validated.

Will merge to 'master'.
cf. <akIPBJLtPqDjQt-A@pks.im>
source: <20260628090314.GA661068@coredump.intra.peff.net>


* ad/gpg-strip-cr-before-lf (2026-06-24) 1 commit
(merged to 'next' on 2026-07-06 at b099249efd)
+ gpg-interface: fix strip_cr_before_lf to only remove CR before LF

The GPG and SSH signature parsing code has been corrected to strip
carriage return characters only when they immediately precede line
feeds, instead of unconditionally stripping all carriage returns.

Will merge to 'master'.
source: <20260624093618.17456-1-antonio.destefani08@gmail.com>


* jt/receive-pack-use-odb-transactions (2026-07-10) 11 commits
- builtin/receive-pack: stage incoming objects via ODB transactions
- builtin/receive-pack: drop redundant tmpdir env
@ -862,7 +997,8 @@ Release tarballs are available at:
interfaces instead of directly managing 'tmp_objdir' for staging
incoming objects, bringing it closer to being ODB backend agnostic.

Needs review.
Will merge to 'next'.
cf. <alR1P-RGZNmjyiUE@pks.im>
source: <20260710163722.2962278-1-jltobler@gmail.com>


@ -877,7 +1013,7 @@ Release tarballs are available at:
+ Merge branch 'ps/odb-source-packed' into ps/odb-drop-whence
(this branch is used by ps/odb-for-each-object-filter.)

The 'whence' field in 'struct object_info' has been removed. The
The 'whence' field in 'struct object_info' has been removed. The
backend-specific object information retrieval has been refactored into
an opt-in 'struct object_info_source' structure.

@ -910,20 +1046,6 @@ Release tarballs are available at:
source: <20260703-pks-reftable-hardening-v3-0-b87c555b9920@pks.im>


* hn/branch-push-slip-advice (2026-06-27) 2 commits
(merged to 'next' on 2026-07-06 at acdff65ac5)
+ push: suggest <remote> <branch> for a slash slip
+ branch: suggest <remote>/<branch> on upstream slip

When 'git push origin/main' or 'git branch origin main' is run, the
command is now recognized as a potential typo, and advice has been
added to offer a typo fix.

Will merge to 'master'.
cf. <xmqqfr272lq7.fsf@gitster.g>
source: <pull.2331.v3.git.git.1782583345.gitgitgadget@gmail.com>


* jc/history-message-prep-fix (2026-06-29) 1 commit
(merged to 'next' on 2026-07-06 at 00534a21ce)
+ history: streamline message preparation and plug file stream leak
@ -936,7 +1058,8 @@ Release tarballs are available at:
source: <xmqqmrwdxrat.fsf@gitster.g>


* ty/migrate-excludes-file (2026-07-12) 9 commits
* ty/migrate-excludes-file (2026-07-13) 10 commits
- repository: adjust the comment of config_values_private_
- environment: move object_creation_mode into repo_config_values
- environment: move autorebase into repo_config_values
- environment: move push_default into repo_config_values
@ -951,9 +1074,8 @@ Release tarballs are available at:
(including 'editor_program', 'pager_program', 'askpass_program', and
'push_default') have been migrated into the per-repository structure.

Expecting a reroll.
cf. <2a39cee9-1082-48aa-b42e-e12c34fa0e29@malon.dev>
source: <20260712111734.1073514-1-cat@malon.dev>
Needs review.
source: <20260714032525.1611141-1-cat@malon.dev>


* dk/meson-enable-use-nsec-build (2026-06-20) 1 commit
@ -963,12 +1085,11 @@ Release tarballs are available at:
timestamp resolution, has been wired up to the Meson build system.

Will discard.
cf. <xmqqa4rx9mb5.fsf@gitster.g>
cf. <45F2C180-1DE1-4371-869B-BF605B64E01A@gmail.com>
source: <c4c5ade901ff95b0f95939ea818870e4f3d59da1.1781971201.git.ben.knoble+github@gmail.com>


* ps/libgit-in-subdir (2026-07-10) 4 commits
- fixup! Move libgit.a sources into separate "lib/" directory
* 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
@ -977,25 +1098,9 @@ Release tarballs are available at:
directory to clean up the top-level directory and clearly separate
library code.

Waiting for response(s) to review comment(s).
cf. <0c94331b-7eb1-4116-afa5-811082ad5854@ramsayjones.plus.com>
source: <20260701-pks-libgit-in-subdir-v3-0-5e4860056094@pks.im>


* ps/odb-generalize-prepare (2026-06-22) 3 commits
(merged to 'next' on 2026-07-06 at 6132517517)
+ odb: introduce `odb_prepare()`
+ odb/source: generalize `reprepare()` callback
+ Merge branch 'ps/odb-source-packed' into ps/odb-generalize-prepare

The 'reprepare()' callback for object database sources has been
generalized into a 'prepare()' callback with an optional flush cache
flag, and a new 'odb_prepare()' wrapper has been introduced to allow
pre-opening object database sources.

Will merge to 'master'.
cf. <87ik704f1j.fsf@emacs.iotcl.com>
source: <20260622-b4-pks-odb-generalize-prepare-v1-0-d2a5c5d13144@pks.im>
Needs review.
cf. <alR9GDNTbdjWB4dq@szeder.dev>
source: <20260713-pks-libgit-in-subdir-v4-0-696240876eb1@pks.im>


* ty/migrate-ignorecase (2026-06-19) 2 commits
@ -1040,7 +1145,8 @@ Release tarballs are available at:
subcommand to fold a range of commits into a single commit, with any
descendants replayed on top.

Needs review.
Expecting a reroll.
cf. <CAHwyqnVYQ6Sk=4ot6=5AbUdqxCrwS15xt_+wX3DB1h369CSqsA@mail.gmail.com>
source: <pull.2337.v8.git.git.1783674396.gitgitgadget@gmail.com>


@ -1080,7 +1186,7 @@ Release tarballs are available at:
- 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
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.
@ -1100,7 +1206,7 @@ Release tarballs are available at:

The test suite has been updated to use the 'test_grep' helper instead
of bare 'grep' for test assertions, allowing file contents to be
printed on failure for easier debugging. A new 'greplint' linter has
printed on failure for easier debugging. A new 'greplint' linter has
been introduced to detect and prevent new bare 'grep' assertions from
being added to the test suite.

@ -1109,22 +1215,6 @@ Release tarballs are available at:
source: <pull.2135.v4.git.1783314119.gitgitgadget@gmail.com>


* kk/prio-queue-get-put-fusion (2026-06-08) 2 commits
(merged to 'next' on 2026-07-06 at aa748c4564)
+ prio-queue: fold lazy_queue into prio_queue for automatic get+put fusion
+ prio-queue: rename .nr to .nr_ and add accessor helpers
(this branch is used by kk/prio-queue-cascade-sift.)

The lazy priority queue optimization pattern (deferring actual removal
in 'prio_queue_get()' to allow get+put fusion) has been folded
directly into 'prio_queue' itself, speeding up commit traversal
workflows and simplifying callers.

Will merge to 'master'.
cf. <xmqqh5mjrbgq.fsf@gitster.g>
source: <pull.2140.v4.git.1780945851.gitgitgadget@gmail.com>


* td/ref-filter-memoize-contains (2026-06-12) 3 commits
- commit-reach: die on contains walk errors
- ref-filter: memoize --contains with generations
@ -1150,12 +1240,13 @@ Release tarballs are available at:
drop merge commits and linearize the replayed history, mimicking 'git
rebase --no-rebase-merges'.

Will merge to 'master'.
Will merge to 'master'?
cf. <xmqq5x2qz42z.fsf@gitster.g>
cf. <CABPp-BGzU9KHGF1nipi2HZaa1AiikMKGGaapQzHVH06wO4V1ww@mail.gmail.com>
source: <20260707-toon-git-replay-drop-merges-v7-0-808ab9b4afa6@iotcl.com>


* ps/cat-file-remote-object-info (2026-07-10) 13 commits
* ps/cat-file-remote-object-info (2026-07-14) 13 commits
- cat-file: make remote-object-info allow-list dynamic
- cat-file: validate remote atoms with an allow-list
- cat-file: add remote-object-info to batch-command
@ -1173,13 +1264,13 @@ Release tarballs are available at:
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
downloading the entire object. Format placeholders are dynamically
filtered on the client based on server-advertised capabilities,
returning empty strings for inapplicable or unsupported fields.

Will merge to 'next'?
cf. <CA+J6zkSo3ZqLe7HLEXRAs+hOq2FuOVokMQWbABcW95wihNtCgA@mail.gmail.com>
source: <20260710-ps-eric-work-rebase-v16-0-66e07b58a8fe@gmail.com>
Needs review.
cf. <xmqq8q7dto8d.fsf@gitster.g>
source: <20260714-ps-eric-work-rebase-v17-0-afabfc83260e@gmail.com>


* mm/diff-process-hunks (2026-06-14) 6 commits
@ -1192,7 +1283,7 @@ Release tarballs are available at:

A new 'diff.<driver>.process' configuration has been introduced to
allow a long-running external process to act as a hunk provider,
allowing external tools to control which lines Git considers changed
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.

@ -1278,7 +1369,7 @@ Release tarballs are available at:
source: <V3_CV_doc_replay_config.780@msgid.xyz>


* hn/branch-delete-merged (2026-06-24) 7 commits
* hn/branch-delete-merged (2026-07-14) 7 commits
- branch: add --dry-run for --delete-merged
- branch: add branch.<name>.deleteMerged opt-out
- branch: add --delete-merged <branch>
@ -1291,9 +1382,8 @@ Release tarballs are available at:
to remove local branches that are already merged to their tracked
remote-tracking branches.

Expecting a reroll.
cf. <CAHwyqnWspUTSnqmkMyXtWuAnENDSzrRLhhUR=Ljtt1xer3tphA@mail.gmail.com>
source: <pull.2285.v18.git.git.1782338106.gitgitgadget@gmail.com>
Needs review.
source: <pull.2285.v19.git.git.1784053493.gitgitgadget@gmail.com>


* hn/checkout-track-fetch (2026-06-24) 2 commits
@ -1304,11 +1394,14 @@ Release tarballs are available at:
fetch the branch from the remote the new branch will work with.

Waiting for response(s) to review comment(s).
cf. <xmqq5x37h6fj.fsf@gitster.g>
cf. <CAL71e4MiijEiM26TKJcOYT7L4pfQeMM_F2oT3U3igP-wOZm2Ag@mail.gmail.com>
source: <pull.2281.v15.git.git.1782338098.gitgitgadget@gmail.com>


* ps/shift-root-in-graph (2026-07-11) 4 commits
* ps/shift-root-in-graph (2026-07-14) 7 commits
- graph: add --[no-]graph-indent and log.graphIndent
- graph: move config reading into graph_read_config()
- graph: wrap cascading commits after 4 columns
- graph: indent visual root in graph
- graph: add a 2 commit buffer for lookahead
- revision: add next_commit_to_show()
@ -1320,7 +1413,7 @@ Release tarballs are available at:
falsely related to unrelated commits rendered immediately above them.

Needs review.
source: <20260711-ps-pre-commit-indent-v9-0-eab6676e82f7@gmail.com>
source: <20260714-ps-pre-commit-indent-v12-0-d50938e006df@gmail.com>


* kk/merge-base-exhaustion (2026-07-11) 11 commits
@ -1351,7 +1444,6 @@ Release tarballs are available at:
. prio-queue: use cascade for unfused gets
. prio-queue: extract sift_up() from prio_queue_put()
. Merge branch 'kk/prio-queue-get-put-fusion' into kk/prio-queue-cascade-sift
(this branch uses kk/prio-queue-get-put-fusion.)

'prio_queue_get()' has been optimized by using a cascade-down approach
(promoting the smaller child at each level and sifting up the last