Skip to contentSkip to conversation

What's cooking in git.git (Aug 2025, #03; Fri, 8)

DISCUSSION Junio C Hamano 2 participants 3 messages Aug 9, 2025 – Aug 11, 2025

lore
Share & tools
lore
#0 lore raw

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

* dl/squelch-maybe-uninitialized (2025-08-04) 2 commits (merged to 'next' on 2025-08-05 at fa3c3830ee)
+ t/unit-tests/clar: fix -Wmaybe-uninitialized with -Og
+ remote: bail early from set_head() if missing remote name

Squelch false-positive compiler warning.
source: <[email protected]>

* jk/revert-squelch-compiler-warning (2025-08-04) 1 commit (merged to 'next' on 2025-08-05 at 344a6a715b)
+ revert: initialize const value

Squelch false-positive compiler warning.
source: <[email protected]>

* jt/archive-zip-deflate-fix (2025-08-02) 1 commit (merged to 'next' on 2025-08-06 at 1a5c1ccec3)
+ archive: flush deflate stream until Z_STREAM_END

The deflate codepath in "git archive --format=zip" had a longstanding bug coming from misuse of zlib API, which has been corrected.
source: <[email protected]>

* kj/renamed-submodule (2025-07-24) 4 commits
(merged to 'next' on 2025-08-03 at c341b36545)
+ fixup! submodule: skip redundant active entries when pattern covers path
+ fixup! submodule: prevent overwriting .gitmodules on path reuse
+ submodule: skip redundant active entries when pattern covers path
+ submodule: prevent overwriting .gitmodules on path reuse

The case where a new submodule takes a path where used to be a completely different subproject is now dealt a bit better than before.
source: <[email protected]>

* ps/object-file-wo-the-repository (2025-07-16) 17 commits (merged to 'next' on 2025-08-01 at 0c1253014e)
+ object-file: get rid of the_repository in index-related functions
+ object-file: get rid of the_repository in force_object_loose()
+ object-file: get rid of the_repository in read_loose_object()
+ object-file: get rid of the_repository in loose object iterators
+ object-file: remove declaration for for_each_file_in_obj_subdir()
+ object-file: inline for_each_loose_file_in_objdir_buf()
+ object-file: get rid of the_repository when writing objects
+ odb: introduce odb_write_object()
+ loose: write loose objects map via their source
+ object-file: get rid of the_repository in finalize_object_file()
+ object-file: get rid of the_repository in loose_object_info()
+ object-file: get rid of the_repository when freshening objects
+ object-file: inline check_and_freshen() functions
+ object-file: get rid of the_repository in has_loose_object()
+ object-file: stop using the_hash_algo
+ object-file: fix -Wsign-compare warnings
+ Merge branch 'ps/object-store' into ps/object-file-wo-the-repository

Reduce implicit assumption and dependence on the_repository in the object-file subsystem.
cf. <[email protected]>
cf. <[email protected]>
source: <20250717-pks-object-file-wo-the-repository-v2-0-36d2cd6c700e@pks.im>

* rs/tighten-alias-help (2025-07-25) 1 commit
(merged to 'next' on 2025-08-01 at a0fb0696cd)
+ git: show alias info only with lone -h

"git -c alias.foo=bar foo -h baz" reported "'foo' is aliased to 'bar'" and then went on to run "git foo -h baz", which was unexpected. Tighten the rule so that alias expansion is reported only when "-h" is the sole option.
source: <[email protected]>

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

* dl/push-missing-object-error (2025-08-08) 3 commits
- remote.c: convert if-else ladder to switch
- remote.c: remove BUG in show_push_unqualified_ref_name_error()
- t5516: remove surrounding empty lines in test bodies

"git push" had a code path that led to BUG() but it should have been a die(), as it is a response to a usual but invalid end-user action to attempt pushing an object that does not exist.

Will merge to 'next'.
cf. <[email protected]>
source: <[email protected]>

* ja/doc-lint-sections-and-synopsis (2025-08-05) 7 commits
. fixup! doc: check for absence of multiple terms in each entry of desc list . doc lint: check that synopsis manpages have synopsis inlines
. doc:git-for-each-ref: fix styling and typos
. doc: check for absence of the form --[no-]parameter
. doc: check for absence of multiple terms in each entry of desc list . doc: check well-formedness of delimited sections
. doc: test linkgit macros for well-formedness

Doc lint updates to encourage the newer and easier-to-use synopsis format, with fixes to a handful of existing uses.

Comments?
source: <[email protected]>

* js/rebase-i-allow-drop-on-a-merge (2025-08-06) 1 commit (merged to 'next' on 2025-08-07 at bc44e9dc1b)
+ rebase -i: permit 'drop' of a merge commit

During interactive rebase, using 'drop' on a merge commit lead to an error, which was incorrect.

Will cook in 'next'.
source: <[email protected]>

* ms/refs-list (2025-08-05) 6 commits
- t: add test for git refs list subcommand
- t6300: refactor tests to be shareable
- builtin/refs: add list subcommand
- builtin/for-each-ref: factor out core logic into a helper
- builtin/for-each-ref: align usage string with the man page
- doc: factor out common option

The "list" subcommand of "git refs" acts as a front-end for "git for-each-ref".

Comments?
source: <[email protected]>

* kh/doc-git-log-markup-fix (2025-08-08) 1 commit
- doc: git-log: fix description list

Doc update.

Will merge to 'next'.
source: <aaa1734189ec8bab7cfa0965132e3d8e5909b1af.1754660514.git.code@khaugsbakk.name>

* ly/changed-path-traversal-with-magic-pathspec (2025-08-08) 2 commits
- fixup! bloom: enable bloom filter with wildcard pathspec in revision traversal
- bloom: enable bloom filter with wildcard pathspec in revision traversal

Revision traversal limited with pathspec, like "git log dir/*", used to ignore changed-paths Bloom filter when the pathspec contained wildcards; now they take advantage of the filter when they can.

Will merge to 'next'?
source: <[email protected]>

* ps/commit-graph-wo-globals (2025-08-07) 10 commits
- commit-graph: stop passing in redundant repository
- commit-graph: stop using the_repository
- commit-graph: stop using the_hash_algo
- commit-graph: refactor parse_commit_graph() to take a repository
- commit-graph: store the hash algorithm instead of its length
- commit-graph: stop using the_hash_algo via macros
- commit-graph: fix sign comparison warnings
- commit-graph: fix type for some write options
- commit-graph: stop using signed integers to count Bloom filters
- trace2: introduce function to trace unsigned integers

Remove dependency on the_repository and other globals from the commit-graph code, and other changes unrelated to de-globaling.

Will merge to 'next'?
source: <20250807-b4-pks-commit-graph-wo-the-repository-v3-0-82edef830a1e@pks.im>

* tc/t0450-harden (2025-08-08) 2 commits
. t0450: add allowlist for builtins with missing .adoc . t0450: fix test for out-of-tree builds

Test updates.

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

* gh/git-jump-pathname-with-sp (2025-08-08) 1 commit
- git-jump: make diff work with filenames containing spaces

source: <[email protected]>

* jc/diff-no-index-in-subdir (2025-08-07) 1 commit
- diff: --no-index should ignore the worktree

source: <[email protected]>

* je/doc-rebase (2025-08-08) 5 commits
- doc: git-rebase: update discussion of internals
- doc: git-rebase: move --onto explanation down
- doc: git rebase: clarify arguments syntax
- doc: git rebase: dedup merge conflict discussion
- doc: git-rebase: start with an example

source: <[email protected]>

* rj/t6137-cygwin-fix (2025-08-08) 2 commits
- git-jump: make diff work with filenames containing spaces
- t6137-*.sh: fix test failure on cygwin

source: <[email protected]>

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

* ps/reftable-libgit2-cleanup (2025-08-04) 6 commits
- reftable/stack: handle outdated stacks when compacting
- reftable/stack: allow passing flags to reftable_stack_add()
- reftable/stack: reorder code to avoid forward declarations
- reftable/stack: fix compiler warning due to missing braces
- reftable/writer: drop Git-specific QSORT() macro
- reftable/writer: fix type used for number of records

Code clean-ups.

Comments?
source: <[email protected]>

* tc/diff-tree-max-depth (2025-08-07) 3 commits
- diff: teach tree-diff a max-depth parameter
- within_depth: fix return for empty path
- combine-diff: zero memory used for callback filepairs

"git diff-tree" learned "--max-depth" option.

Comments?
source: <[email protected]>

* dk/help-all (2025-08-03) 3 commits
- builtin: also setup gently for --help-all
- parse-options: refactor flags for usage_with_options_internal
- Merge branch 'ua/t1517-short-help-tests' into dk/help-all (this branch uses ua/t1517-short-help-tests.)

"git cmd --help-all" outside repository.

Comments?
source: <[email protected]>

* lc/rebase-trailer (2025-08-03) 2 commits
- rebase: support --trailer
- trailer: append trailers in-process and drop the fork to interpret-trailers

Expecting a reroll.
cf. <[email protected]>
source: <[email protected]>

* ly/diff-name-only-with-diff-from-content (2025-08-07) 1 commit
- diff: ensure consistent diff behavior with ignore options

Various options to "git diff" that makes comparison ignore certain aspects of the differences (like "space changes are ignored", "differences in lines that match these regular expressions are ignored") did not work well with "--name-only" and friends.

Will merge to 'next'?
source: <[email protected]>

* rs/describe-with-prio-queue (2025-08-03) 2 commits (merged to 'next' on 2025-08-07 at 5ebcaaf8b8)
+ describe: use prio_queue_replace()
+ describe: use prio_queue

"git describe" has been optimized by using better data structure.

Will cook in 'next'.
source: <[email protected]>

* ps/object-store-midx-dedup-info (2025-08-07) 10 commits
- midx: compute paths via their source
- midx: stop duplicating info redundant with its owning source
- midx: write multi-pack indices via their source
- midx: load multi-pack indices via their source
- midx: drop redundant struct repository parameter
- odb: simplify calling link_alt_odb_entry()
- odb: return newly created in-memory sources
- odb: allow odb_find_source() to fail
- odb: store locality in object database sources
- Merge branch 'ps/object-store-midx' into ps/object-store-midx-dedup-info

Further code clean-up for multi-pack-index code paths.

Comments?
source: <20250807-b4-pks-midx-deduplicate-source-info-v2-0-bcffb8fc119c@pks.im>

* jc/strbuf-split (2025-07-31) 13 commits
- trace2: do not use strbuf_split*()
- trace2: trim_trailing_newline followed by trim is a no-op
- sub-process: do not use strbuf_split*()
- environment: do not use strbuf_split*()
- config: do not use strbuf_split()
- notes: do not use strbuf_split*()
- merge-tree: do not use strbuf_split*()
- clean: do not use strbuf_split*() [part 2]
- clean: do not pass the whole structure when it is not necessary
- clean: do not use strbuf_split*() [part 1]
- clean: do not pass strbuf by value
- wt-status: avoid strbuf_split*()
- Merge branch 'jc/string-list-split' into jc/strbuf-split (this branch uses jc/string-list-split.)

Arrays of strbuf is often a wrong data structure to use, and strbuf_split*() family of functions that create them often have better alternatives.

Update several code paths and replace strbuf_split*().

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

* jc/string-list-split (2025-08-01) 7 commits
- string-list: split-then-remove-empty can be done while splitting
- string-list: optionally omit empty string pieces in string_list_split*()
- diff: simplify parsing of diff.colormovedws
- string-list: optionally trim string pieces split by string_list_split*()
- string-list: unify string_list_split* functions
- string-list: align string_list_split() with its _in_place() counterpart
- string-list: report programming error with BUG
(this branch is used by jc/strbuf-split.)

string_list_split*() family of functions have been extended to simplify common use cases.

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

* am/xdiff-hash-tweak (2025-07-28) 3 commits
- fixup! xdiff: optimize xdl_hash_record_verbatim
- xdiff: optimize xdl_hash_record_verbatim
- xdiff: refactor xdl_hash_record()

Inspired by Ezekiel's recent effort to showcase Rust interface, the hash function implementation used to hash lines have been updated to the one used for ELF symbol lookup by Glibc.

Comments?
source: <[email protected]>

* ps/remote-rename-fix (2025-07-31) 7 commits
(merged to 'next' on 2025-08-07 at 227d2faf29)
+ builtin/remote: only iterate through refs that are to be renamed
+ builtin/remote: rework how remote refs get renamed
+ builtin/remote: determine whether refs need renaming early on
+ builtin/remote: fix sign comparison warnings
+ refs: simplify logic when migrating reflog entries
+ refs: pass refname when invoking reflog entry callback
+ Merge branch 'ps/reflog-migrate-fixes' into ps/remote-rename-fix (this branch uses ps/reflog-migrate-fixes.)

"git remote rename origin upstream" failed to move origin/HEAD to upstream/HEAD when origin/HEAD is unborn and performed other renames extremely inefficiently, which has been corrected.

Will cook in 'next'.
source: <[email protected]>

* ag/send-email-imap-sent (2025-07-23) 2 commits
- send-email: enable copying emails to IMAP folder without actually sending them
- send-email: add ability to send a copy of sent emails to an IMAP folder

"git send-email" learned to drive "git imap-send" to store already sent e-mails in an IMAP folder.

Comments?
source: <PN3PR01MB9597EC4C5DF97943587AEEB4B85FA@PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM>

* en/ort-rename-fixes (2025-08-06) 7 commits
- merge-ort: fix directory rename on top of source of other rename/delete
- merge-ort: fix incorrect file handling
- merge-ort: clarify the interning of strings in opt->priv->path
- t6423: fix missed staging of file in testcases 12i,12j,12k
- t6423: document two bugs with rename-to-self testcases
- merge-ort: drop unnecessary temporary in check_for_directory_rename()
- merge-ort: update comments to modern testfile location

Various bugs about rename handling in "ort" merge strategy have been fixed.

Will merge to 'next'?
source: <[email protected]>

* ps/reflog-migrate-fixes (2025-08-05) 9 commits (merged to 'next' on 2025-08-07 at 8068e2ad68)
+ refs: fix invalid old object IDs when migrating reflogs
+ refs: stop unsetting REF_HAVE_OLD for log-only updates
+ refs/files: detect race when generating reflog entry for HEAD
+ refs: fix identity for migrated reflogs
+ ident: fix type of string length parameter
+ builtin/reflog: implement subcommand to write new entries
+ refs: export ref_transaction_update_reflog()
+ builtin/reflog: improve grouping of subcommands
+ Documentation/git-reflog: convert to use synopsis type (this branch is used by ps/remote-rename-fix.)

"git refs migrate" to migrate the reflog entries from a refs backend to another had a handful of bugs squashed.

Will cook in 'next'.
source: <[email protected]>

* ds/sparse-checkout-clean (2025-07-16) 9 commits
- sparse-checkout: make 'clean' clear more files
- 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
- Merge branch 'ac/deglobal-sparse-variables' into ds/sparse-checkout-clean (this branch uses ac/deglobal-sparse-variables.)

"git sparse-checkout" subcommand learned a new "clean" action to prune otherwise unused working-tree files that are outside the areas of interest.

Needs to wait for the base topic to solidify.
source: <[email protected]>

* pw/3.0-commentchar-auto-deprecation (2025-07-31) 4 commits
- commit: print advice when core.commentString=auto
- config: warn on core.commentString=auto
- breaking-changes: deprecate support for core.commentString=auto
- Merge branch 'ps/config-wo-the-repository' into pw/3.0-commentchar-auto-deprecation

Proposes to deprecate "core.commentChar=auto" that attempts to dynamically pick a suitable comment character, as it is too much trouble to support for little benefit.

Comments?
source: <[email protected]>

* ua/t1517-short-help-tests (2025-08-07) 3 commits
- t5304: move prune -h test from t1517
- t5200: move update-server-info -h test from t1517
- t/t1517: automate git subcmd -h tests outside a repository (this branch is used by dk/help-all.)

Test shuffling.

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

* tc/last-modified (2025-08-05) 4 commits
- fixup! last-modified: new subcommand to show when files were last modified
- last-modified: use Bloom filters when available
- t/perf: add last-modified perf script
- last-modified: new subcommand to show when files were last modified

A new command "git last-modified" is proposed to show the closest ancestor commit that touched each path.
source: <[email protected]>

* lo/repo-info (2025-08-07) 5 commits
- repo: add the --format flag
- repo: add the field layout.shallow
- repo: add the field layout.bare
- repo: add the field references.format
- repo: declare the repo command

A new subcommand "git repo" gives users a way to grab various repository characteristics.

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

* 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 (this branch is used by ds/sparse-checkout-clean.)

Two global variables related to sparse checkout have been moved to the repository settings structure.

Expecting a reroll.
cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com>
source: <[email protected]>

* tb/prepare-midx-pack-cleanup (2025-05-28) 5 commits
- midx: return a packed_git pointer from prepare_midx_pack()
- midx-write.c: extract inner loop from fill_packs_from_midx()
- midx-write.c: guard against incremental MIDXs in want_included_pack()
- midx: access pack names through nth_midxed_pack_name()
- Merge branch 'ps/midx-negative-packfile-cache' into tb/prepare-midx-pack-cleanup

Improvement on Multi-pack-index API.

Expecting a reroll.
cf. <[email protected]>
source: <[email protected]>

* cc/promisor-remote-capability (2025-07-31) 5 commits
- promisor-remote: use string constants for 'name' and 'url' too
- promisor-remote: allow a client to check fields
- promisor-remote: refactor how we parse advertised fields
- promisor-remote: allow a server to advertise more fields
- promisor-remote: refactor to get rid of 'struct strvec'

The "promisor-remote" capability mechanism has been updated to allow the "partialCloneFilter" settings and the "token" value to be communicated from the server side.

Expecting a reroll.
source: <[email protected]>

#1 lore raw
Quoted 7 lines · Junio C Hamano

* lo/repo-info (2025-08-07) 5 commits
- repo: add the --format flag
- repo: add the field layout.shallow
- repo: add the field layout.bare
- repo: add the field references.format
- repo: declare the repo command

Quoted 5 lines

A new subcommand "git repo" gives users a way to grab various repository characteristics.

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

I think this topic may deserve one more reroll before being merged to 'next' since two or three comments from my previous review were not fully addressed[*]. (I also identified several nits in the latest version but they need not hold up the topic.)

[*]: https://lore.kernel.org/git/CAPig+cTA=UKbHd+BdCQUdTjvz1AzCNHi2XTREPhfUJfz_2Ny_A@mail.gmail.com/

#2 lore raw
Quoted 11 lines · Eric Sunshine
Quoted 10 lines · Junio C Hamano

* lo/repo-info (2025-08-07) 5 commits
- repo: add the --format flag
- repo: add the field layout.shallow
- repo: add the field layout.bare
- repo: add the field references.format
- repo: declare the repo command

A new subcommand "git repo" gives users a way to grab various repository characteristics.

Quoted 7 lines
Quoted 2 lines

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

I think this topic may deserve one more reroll before being merged to 'next' since two or three comments from my previous review were not fully addressed[*]. (I also identified several nits in the latest version but they need not hold up the topic.)

Thanks for stopping me.