| From: |
| Junio C Hamano <gitster-AT-pobox.com> |
| To: |
| git-AT-vger.kernel.org |
| Subject: |
| What's cooking in git.git (Oct 2025, #06; Fri, 17) |
| Date: |
| Mon, 20 Oct 2025 14:02:52 -0700 |
| Message-ID: |
| <xmqq7bwpz3pf.fsf@gitster.g> |
| Archive-link: |
| Article |
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all and may be annotated with an URL
to a message that raises issues but they are no means exhaustive. A
topic without enough support may be discarded after a long period of
no activity (of course they can be resubmit when new interests
arise).
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-scm/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* en/make-libgit-a (2025-10-02) 2 commits
(merged to 'next' on 2025-10-10 at 913fc0337a)
+ make: delete REFTABLE_LIB, add reftable to LIB_OBJS
+ make: delete XDIFF_LIB, add xdiff to LIB_OBJS
Instead of three library archives (one for git, one for reftable,
and one for xdiff), roll everything into a single libgit.a archive.
This would help later effort to FFI into Rust.
source: <pull.2065.v2.git.git.1759447647.gitgitgadget@gmail.com>
* jk/diff-no-index-with-pathspec-fix (2025-09-24) 1 commit
(merged to 'next' on 2025-10-10 at 75721dbc16)
+ diff --no-index: fix logic for paths ending in '/'
An earlier addition to "git diff --no-index A B" to limit the
output with pathspec after the two directories misbehaved when
these directories were given with a trailing slash, which has been
corrected.
source: <20250924-jk-fix-no-index-path-with-slash-v1-1-6b2028c0de92@intel.com>
* rs/add-patch-options-fix (2025-10-06) 6 commits
(merged to 'next' on 2025-10-10 at ef52e0377e)
+ add-patch: reset "permitted" at loop start
+ add-patch: let options a and d roll over like y and n
+ add-patch: let options k and K roll over like j and J
+ add-patch: let options y, n, j, and e roll over to next undecided
+ add-patch: document that option J rolls over
+ add-patch: improve help for options j, J, k, and K
The code in "git add -p" and friends to iterate over hunks was
riddled with bugs, which has been corrected.
source: <fe8e8097-2b05-4dd2-a754-f59e4ba5f95a@web.de>
* tb/doc-submitting-patches (2025-10-07) 2 commits
(merged to 'next' on 2025-10-10 at b63283990d)
+ SubmittingPatches: guidance for multi-series efforts
+ SubmittingPatches: extend release-notes experiment to topic names
A few more things that patch authors can do to help maintainer to
keep track of their topics better.
source: <cover.1759873165.git.me@ttaylorr.com>
--------------------------------------------------
[New Topics]
* so/t2401-use-test-path-helpers (2025-10-15) 1 commit
(merged to 'next' on 2025-10-16 at b6fe4d2222)
+ t2401: update path checks using test_path helpers
Test modernization.
Will merge to 'master'.
source: <20251015140329.13691-2-solobarine@gmail.com>
* en/xdiff-cleanup-2 (2025-10-15) 9 commits
- xdiff: rename rindex -> reference_index
- xdiff: change rindex from long to size_t in xdfile_t
- xdiff: make xdfile_t.nreff a size_t instead of long
- xdiff: make xdfile_t.nrec a size_t instead of long
- xdiff: split xrecord_t.ha into line_hash and minimal_perfect_hash
- xdiff: use unambiguous types in xdl_hash_record()
- xdiff: use size_t for xrecord_t.size
- xdiff: make xrecord_t.ptr a uint8_t instead of char
- xdiff: use ssize_t for dstart/dend, make them last in xdfile_t
Code clean-up.
Comments?
source: <pull.2070.git.git.1760563101.gitgitgadget@gmail.com>
* js/ci-github-actions-update (2025-10-16) 4 commits
(merged to 'next' on 2025-10-17 at 6fa7439b70)
+ build(deps): bump actions/github-script from 7 to 8
+ build(deps): bump actions/setup-python from 5 to 6
+ build(deps): bump actions/checkout from 4 to 5
+ build(deps): bump actions/download-artifact from 4 to 5
CI update.
Will merge to 'master'.
source: <pull.1990.git.1760629692.gitgitgadget@gmail.com>
* ar/run-command-hook (2025-10-17) 10 commits
- receive-pack: convert receive hooks to hook API
- receive-pack: convert update hooks to new API
- hooks: allow callers to capture output
- run-command: allow capturing of collated output
- reference-transaction: use hook API instead of run-command
- hook: allow overriding the ungroup option
- transport: convert pre-push to hook API
- hook: convert 'post-rewrite' hook in sequencer.c to hook API
- hook: provide stdin via callback
- run-command: add stdin callback for parallelization
Use hook API to replace ad-hoc invocation of hook scripts with the
run_command() API.
Comments?
source: <20251017141544.1538542-1-adrian.ratiu@collabora.com>
* je/doc-reset (2025-10-17) 4 commits
- doc: git-reset: clarify `git reset <pathspec>`
- doc: git-reset: clarify `git reset [mode]`
- doc: git-reset: clarify intro
- doc: git-reset: reorder the forms
Documentation updates.
Comments?
source: <pull.1991.git.1760731558.gitgitgadget@gmail.com>
* jk/diff-from-contents-fix (2025-10-17) 2 commits
- diff: restore redirection to /dev/null for diff_from_contents
- Merge branch 'ly/diff-name-only-with-diff-from-content' into jk/diff-from-contents-fix
Recently we attempted to improve "git diff -w" and friends to
handle cases where patch output would be suppressed, but it
introduced a bug that emits unnecessary output, which has been
corrected.
Will merge to 'next' and then to 'master' and then to 'maint'.
source: <20251017083641.GB4073661@coredump.intra.peff.net>
* jk/status-z-short-fix (2025-10-17) 1 commit
- status: make coloring of "-z --short" consistent
The "--short" option of "git status" that meant output for humans
and "-z" option to show NUL delimited output format did not mix
well, and colored some but not all things. The command has been
updated to color all elements consistently in such a case.
Will merge to 'next'.
source: <20251017084455.GA4096702@coredump.intra.peff.net>
--------------------------------------------------
[Cooking]
* tu/credential-makefile-updates (2025-10-10) 1 commit
- contrib/credential: Amend and harmonize Makefiles
Build procedure for a few credential helpers (in contrib/) have
been updated.
Expecting a reroll.
source: <48d92664-41af-bb59-1844-7bb57f21924f@mailbox.tu-dresden.de>
* tb/cat-file-objectmode-update (2025-10-13) 1 commit
(merged to 'next' on 2025-10-13 at 4fd0f1b5b5)
+ builtin/cat-file.c: simplify calling `report_object_status()`
Code clean-up.
Will merge to 'master'.
source: <9236fa6e654a59337266430a2a8807da21210cd4.1760392502.git.me@ttaylorr.com>
* ps/symlink-symref-deprecation (2025-10-14) 1 commit
- refs/files: deprecate writing symrefs as symbolic links
"Symlink symref" has been added to the list of things that will
disappear at Git 3.0 boundary.
Comments?
source: <20251014-pks-ref-files-deprecate-symbolic-links-v1-1-4bcd6a4ef6f5@pks.im>
* dk/stash-apply-index (2025-10-06) 1 commit
(merged to 'next' on 2025-10-13 at 2187046f6c)
+ doc: explain the impact of stash.index on --autostash options
Doc update.
Will merge to 'master'.
source: <d4a277b6b0695d86636562f4c07efae17f9249f9.1759755379.git.ben.knoble+github@gmail.com>
* js/mingw-includes-cleanup (2025-10-09) 2 commits
(merged to 'next' on 2025-10-13 at b7144c1feb)
+ mingw: order `#include`s alphabetically
+ mingw: avoid relative `#include`s
Code clean-up.
Will merge to 'master'.
source: <pull.1985.git.1759995961.gitgitgadget@gmail.com>
* js/unreachable-workaround-for-no-symlink-head (2025-10-09) 1 commit
(merged to 'next' on 2025-10-13 at 0e970d5e4e)
+ refs: forbid clang to complain about unreachable code
Code clean-up.
Will merge to 'master'.
source: <pull.1984.git.1759995982220.gitgitgadget@gmail.com>
* kh/doc-patch-id-1 (2025-10-13) 2 commits
- doc: patch-id: convert to the modern synopsis style
- Merge branch 'kh/doc-patch-id-markup-fix' into kh/doc-patch-id-1
Will merge to 'next'?
source: <v2-38645ea253c.1760369708.git.code@khaugsbakk.name>
* tz/test-prepare-gnupghome (2024-07-03) 2 commits
- t/lib-gpg: call prepare_gnupghome() in GPG2 prereq
- t/lib-gpg: add prepare_gnupghome() to create GNUPGHOME dir
Tests did not set up GNUPGHOME correctly, which is fixed but some
bugs are exposed in t1016, which needs to be addressed before this
topic can move forward.
On hold.
cf. <ZoV8b2RvYxLOotSJ@teonanacatl.net>
source: <20240703153738.916469-1-tmz@pobox.com>
* jc/t1016-setup-fix (2025-10-10) 1 commit
- t1016: make sure to use specified GPG
GPG signing test set-up has been broken for a year, which has been
corrected.
Comments?
source: <xmqqsefq7947.fsf@gitster.g>
* kh/doc-continued-paragraph-fix (2025-10-08) 1 commit
(merged to 'next' on 2025-10-13 at e66316f041)
+ doc: fix accidental literal blocks
Doc mark-up fixes.
Will merge to 'master'.
source: <7a955ecb1b5.1759923933.git.code@khaugsbakk.name>
* cc/fast-import-strip-signed-tags (2025-10-13) 5 commits
- fast-import: add '--signed-tags=<mode>' option
- fast-export: handle all kinds of tag signatures
- t9350: properly count annotated tags
- lib-gpg: allow tests with GPGSM or GPGSSH prereq first
- doc: git-tag: stop focusing on GPG signed tags
"git fast-import" is taught to handle signed tags, just like it
recently learned to handle signed commits, in different ways.
Will merge to 'next'?
source: <20251013084857.1646783-1-christian.couder@gmail.com>
* ps/ci-rust (2025-10-14) 8 commits
- rust: support for Windows
- ci: verify minimum supported Rust version
- ci: check for common Rust mistakes via Clippy
- rust/varint: add safety comments
- ci: check formatting of our Rust code
- ci: deduplicate calls to `apt-get update`
- Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust
- Merge branch 'ps/rust-balloon' into ps/ci-rust
CI improvements to handle the recent Rust integration better.
Will merge to 'next'?
source: <20251015-b4-pks-ci-rust-v3-0-13810af33bd5@pks.im>
* ps/ref-peeled-tags (2025-10-08) 14 commits
- ref-filter: parse objects on demand
- ref-filter: detect broken tags when dereferencing them
- refs: don't store peeled object IDs for invalid tags
- object: add flag to `peel_object()` to verify object type
- refs: drop infrastructure to peel via iterators
- refs: drop `current_ref_iter` hack
- builtin/show-ref: convert to use `reference_get_peeled_oid()`
- ref-filter: propagate peeled object ID
- upload-pack: convert to use `reference_get_peeled_oid()`
- refs: expose peeled object ID via the iterator
- refs: refactor reference status flags
- refs: fully reset `struct ref_iterator::ref` on iteration
- refs: introduce `.ref` field for the base iterator
- refs: introduce wrapper struct for `each_ref_fn`
Some ref backend storage can hold not just the object name of an
annotated tag, but the object name of the object the tag points at.
The code to handle this information has been streamlined.
source: <20251008-b4-pks-ref-filter-skip-parsing-objects-v2-0-76e30d5c9542@pks.im>
* ps/remove-packfile-store-get-packs (2025-10-09) 7 commits
- packfile: rename `packfile_store_get_all_packs()`
- packfile: introduce macro to iterate through packs
- packfile: drop `packfile_store_get_packs()`
- builtin/grep: simplify how we preload packs
- builtin/gc: convert to use `packfile_store_get_all_packs()`
- object-name: convert to use `packfile_store_get_all_packs()`
- Merge branch 'tb/incremental-midx-part-3.1' into ps/remove-packfile-store-get-packs
(this branch uses tb/incremental-midx-part-3.1.)
Two slightly different ways to get at "all the packfiles" in API
has been cleaned up.
Comments?
source: <20251009-pks-packfiles-convert-get-all-v2-0-0d73b87ce711@pks.im>
* je/doc-data-model (2025-10-14) 1 commit
- doc: add a explanation of Git's data model
Add a new manual that describes the data model.
Comments?
source: <pull.1981.v3.git.1760476346040.gitgitgadget@gmail.com>
* tb/incremental-midx-part-3.1 (2025-10-15) 50 commits
- builtin/repack.c: clean up unused `#include`s
- repack: move `write_cruft_pack()` out of the builtin
- repack: move `write_filtered_pack()` out of the builtin
- repack: move `pack_kept_objects` to `struct pack_objects_args`
- repack: move `finish_pack_objects_cmd()` out of the builtin
- builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()`
- repack: extract `write_pack_opts_is_local()`
- repack: move `find_pack_prefix()` out of the builtin
- builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()`
- builtin/repack.c: introduce `struct write_pack_opts`
- repack: 'write_midx_included_packs' API from the builtin
- builtin/repack.c: inline packs within `write_midx_included_packs()`
- builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs`
- builtin/repack.c: inline `remove_redundant_bitmaps()`
- builtin/repack.c: reorder `remove_redundant_bitmaps()`
- repack: keep track of MIDX pack names using existing_packs
- builtin/repack.c: use a string_list for 'midx_pack_names'
- builtin/repack.c: extract opts struct for 'write_midx_included_packs()'
- builtin/repack.c: remove ref snapshotting from builtin
- repack: remove pack_geometry API from the builtin
- builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()`
- builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()`
- builtin/repack.c: rename various pack_geometry functions
- builtin/repack.c: remove "repack_promisor_objects()" from the builtin
- builtin/repack.c: pass "packtmp" to `repack_promisor_objects()`
- repack: remove 'generated_pack' API from the builtin
- builtin/repack.c: provide pack locations to `generated_pack_install()`
- builtin/repack.c: pass "packtmp" to `generated_pack_populate()`
- builtin/repack.c: factor out "generated_pack_install"
- builtin/repack.c: rename "struct generated_pack_data"
- repack: remove 'existing_packs' API from the builtin
- builtin/repack.c: avoid unnecessary numeric casts in existing_packs
- builtin/repack.c: pass "packdir" when removing packs
- repack: remove 'remove_redundant_pack' from the builtin
- builtin/repack.c: rename many 'struct existing_packs' functions
- repack: remove 'prepare_pack_objects' from the builtin
- repack: move 'delta_base_offset' to 'struct pack_objects_args'
- builtin/repack.c: pass both pack_objects args to repack_config
- repack: introduce new compilation unit
- builtin/repack.c: avoid using `hash_to_hex()` in pack geometry
- builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()`
- builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()`
- builtin/repack.c: avoid "the_hash_algo" in `write_oid()`
- builtin/repack.c: avoid "the_hash_algo" when deleting packs
- builtin/repack.c: avoid "the_repository" when repacking promisor objects
- builtin/repack.c: avoid "the_repository" when removing packs
- builtin/repack.c: avoid "the_repository" when taking a ref snapshot
- builtin/repack.c: avoid "the_repository" in existing packs API
- builtin/repack.c: avoid "the_repository" in `cmd_repack()`
- Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1
(this branch is used by ps/remove-packfile-store-get-packs.)
Clean-up "git repack" machinery to prepare for incremental update
of midx files.
Will merge to 'next'?
source: <cover.1760567210.git.me@ttaylorr.com>
* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit
- SubmittingPatches: add section about AI
AI guidelines.
Will merge to 'next'?
cf. <xmqqv7ki1xf1.fsf@gitster.g>
source: <20251001140310.527097-1-christian.couder@gmail.com>
* ps/history (2025-10-01) 13 commits
- builtin/history: implement "split" subcommand
- cache-tree: allow writing in-memory index as tree
- add-patch: add support for in-memory index patching
- add-patch: remove dependency on "add-interactive" subsystem
- add-patch: split out `struct interactive_options`
- add-patch: split out header from "add-interactive.h"
- builtin/history: implement "reword" subcommand
- builtin: add new "history" command
- replay: parse commits before dereferencing them
- replay: stop using `the_repository`
- replay: extract logic to pick commits
- wt-status: provide function to expose status for trees
- Merge branch 'sa/replay-atomic-ref-updates' into ps/history
(this branch uses sa/replay-atomic-ref-updates.)
"git history" history rewriting UI.
Stomps on each others toes with sa/replay-atomic-ref-updates topic.
source: <20251001-b4-pks-history-builtin-v4-0-8e61ddb86317@pks.im>
* ms/doc-worktree-side-by-side (2025-10-10) 2 commits
- doc: git-worktree: Add side by side branch checkout example
- doc: git-worktree: Link to examples
Document "git worktree add" and use of out-of-tree worktrees with
examples.
Under discussion.
cf. <CAPig+cSNesf0UwS4=Bxe-Qn+G9y3YYPyOK+7y3q8QJk+o7jaVg@mail.gmail.com>
source: <a203b35538847f3c9358a5ae26fb4ebea5734cfc.1759420102.git.msuchanek@suse.de>
* rj/doc-technical-fixes (2025-10-16) 4 commits
- doc: add large-object-promisors.adoc to the docs build
- doc: commit-graph.adoc: fix up some formatting
- doc: sparse-checkout.adoc: fix asciidoc warnings
- doc: remembering-renames.adoc: fix asciidoc warnings
Documentation mark-up fixes.
Will merge to 'next'?
source: <20251016200301.1595204-1-ramsay@ramsayjones.plus.com>
* sa/replay-atomic-ref-updates (2025-10-14) 4 commits
- SQAUASH??? t0450 band-aid
- replay: add replay.defaultAction config option
- replay: make atomic ref updates the default behavior
- replay: use die_for_incompatible_opt2() for option validation
(this branch is used by ps/history.)
"git replay" (experimental) learned to perform ref updates itself
in a transaction by default, instead of emitting where each refs
should point at and leaving the actual update to another command.
Expecting a reroll.
source: <20251013183311.33329-1-siddharthasthana31@gmail.com>
* je/doc-pull (2025-10-15) 4 commits
(merged to 'next' on 2025-10-16 at 71e7a0cac0)
+ doc: git-pull: clarify how to exit a conflicted merge
+ doc: git-pull: delete the example
+ doc: git-pull: clarify options for integrating remote branch
+ doc: git-pull: move <repository> and <refspec> params
Documentation updates.
Will merge to 'master'.
source: <pull.1976.v3.git.1760534011.gitgitgadget@gmail.com>
* jt/repo-stats (2025-10-15) 6 commits
- builtin/repo: add progress meter for structure stats
- builtin/repo: add keyvalue and nul format for structure stats
- builtin/repo: add object counts in structure output
- builtin/repo: introduce structure subcommand
- ref-filter: allow NULL filter pattern
- builtin/repo: rename repo_info() to cmd_repo_info()
"git repo stats", a new command.
Expecting a (hopefully small and final) reroll.
cf. <aPDPyEVOTSU6NuOH@pks.im>
source: <20251015211213.361797-1-jltobler@gmail.com>
* bc/sha1-256-interop-01 (2025-10-09) 9 commits
(merged to 'next' on 2025-10-14 at c571bab975)
+ t1010: use BROKEN_OBJECTS prerequisite
+ t: allow specifying compatibility hash
+ fsck: consider gpgsig headers expected in tags
+ rev-parse: allow printing compatibility hash
+ docs: add documentation for loose objects
+ docs: improve ambiguous areas of pack format documentation
+ docs: reflect actual double signature for tags
+ docs: update offset order for pack index v3
+ docs: update pack index v3 format
The beginning of SHA1-SHA256 interoperability work.
Will merge to 'master'.
source: <20251009215626.3089287-1-sandals@crustytoothpaste.net>
* ar/submodule-gitdir-tweak (2025-10-06) 5 commits
- submodule: error out if gitdir name is too long
- submodule: encode gitdir paths to avoid conflicts
- strbuf: bring back is_rfc3986_unreserved
- submodule: add gitdir path config override
- submodule--helper: use submodule_name_to_gitdir in add_submodule
Avoid local submodule repository directory paths overlapping with
each other by encoding submodule names before using them as path
components.
Expecting v4.
cf. <20251006112518.3764240-1-adrian.ratiu@collabora.com>
source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>
* ds/sparse-checkout-clean (2025-09-12) 7 commits
(merged to 'next' on 2025-09-25 at 00b296f153)
+ t: expand tests around sparse merges and clean
+ sparse-index: point users to new 'clean' action
+ sparse-checkout: add --verbose option to 'clean'
+ dir: add generic "walk all files" helper
+ sparse-checkout: match some 'clean' behavior
+ sparse-checkout: add basics of 'clean' command
+ sparse-checkout: remove use of the_repository
"git sparse-checkout" subcommand learned a new "clean" action to
prune otherwise unused working-tree files that are outside the
areas of interest.
Expecting a (hopefully small) incremental update.
cf. <3537e220-44b6-4e37-a568-cef34a2fddfd@gmail.com>
cf. <xmqq5xcpgy9t.fsf@gitster.g>
source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>
--------------------------------------------------
[Discarded]
These have been kept outside 'seen' for some time, and were removed
for now, until they get resubmit in a shape that plays well with
other topics in 'seen'.
* lc/rebase-trailer (2025-08-03) 2 commits
. rebase: support --trailer
. trailer: append trailers in-process and drop the fork to `interpret-trailers`
Has been expecting a reroll for way too long.
cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty>
cf. <xmqqiki7qasu.fsf@gitster.g>
cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty>
source: <20250803150059.402017-1-me@linux.beauty>
* ac/deglobal-sparse-variables (2025-07-18) 3 commits
. environment: remove the global variable 'sparse_expect_files_outside_of_patterns'
. environment: move access to "core.sparsecheckoutcone" into repo_settings
. environment: move access to "core.sparsecheckout" into repo_settings
Two global variables related to sparse checkout have been moved to
the repository settings structure.
Has been expecting a reroll for way too long.
cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
Ejected out of 'seen' for now.
source: <cover.1752882401.git.ayu.chandekar@gmail.com>