Here are the topics that have been cooking in my tree. Commits prefixed with '+' are in 'next' (being in 'next' is a sign that a topic is stable enough to be used and are candidate to be in a future release). Commits prefixed with '-' are only in 'seen', and aren't considered "accepted" at all and may be annotated with an URL to a message that raises issues but they are no means exhaustive. A topic without enough support may be discarded after a long period of no activity (of course they can be resubmit when new interests arise).
Copies of the source code to Git live in many repositories, and the following is a list of the ones I push into or their mirrors. Some repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/ git://repo.or.cz/alt-git.git/ https://kernel.googlesource.com/pub/scm/git/git/ https://github.com/git/git/ https://gitlab.com/git-scm/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format are not sources, they are published in these repositories for convenience (replace "htmldocs" with "manpages" for the manual pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/ https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
-------------------------------------------------- [New Topics]
* en/doc-merge-tree-describe-merge-base (2025-10-02) 1 commit (merged to 'next' on 2025-10-06 at 787ff6f08a) + Documentation/git-merge-tree.adoc: clarify the --merge-base option
Clarify the "--merge-base" command line option in "git merge-tree".
Will merge to 'master'. source: <pull.1980.git.1759444487406.gitgitgadget@gmail.com>
* je/doc-data-model (2025-10-03) 1 commit - doc: add a explanation of Git's data model
Add a new manual that describes the data model.
Comments? source: <pull.1981.git.1759512876284.gitgitgadget@gmail.com>
* rs/add-patch-options-fix (2025-10-06) 6 commits - add-patch: reset "permitted" at loop start - add-patch: let options a and d roll over like y and n - add-patch: let options k and K roll over like j and J - add-patch: let options y, n, j, and e roll over to next undecided - add-patch: document that option J rolls over - add-patch: improve help for options j, J, k, and K
The code in "git add -p" and friends to iterate over hunks was riddled with bugs, which has been corrected.
Will merge to 'next'? source: <fe8e8097-2b05-4dd2-a754-f59e4ba5f95a@web.de>
* jn/doc-help-translaing-pretty-options (2025-10-05) 1 commit - doc: do not break sentences into "lego" pieces
Documentation for "git log --pretty" options has been updated to make it easier to translate.
Will merge to 'next'. source: <pull.1982.git.1759698724134.gitgitgadget@gmail.com>
* jn/doc-synopsis (2025-10-05) 3 commits - doc: convert git worktree to synopsis style - doc: convert git tag to synopsis style - doc: convert git-stash.adoc to synopis style
Doc-mark-up modernization continues.
Will merge to 'next'. source: <pull.1969.git.1759698702.gitgitgadget@gmail.com>
-------------------------------------------------- [Cooking]
* tb/incremental-midx-part-3.1 (2025-09-29) 51 commits - SQUASH??? play well with other topics by preemptively including "repository.h" - builtin/repack.c: clean up unused `#include`s - repack: move `write_cruft_pack()` out of the builtin - repack: move `write_filtered_pack()` out of the builtin - repack: move `pack_kept_objects` to `struct pack_objects_args` - repack: move `finish_pack_objects_cmd()` out of the builtin - builtin/repack.c: pass `write_pack_opts` to `finish_pack_objects_cmd()` - repack: extract `write_pack_opts_is_local()` - repack: move `find_pack_prefix()` out of the builtin - builtin/repack.c: use `write_pack_opts` within `write_cruft_pack()` - builtin/repack.c: introduce `struct write_pack_opts` - repack: 'write_midx_included_packs' API from the builtin - builtin/repack.c: inline packs within `write_midx_included_packs()` - builtin/repack.c: pass `repack_write_midx_opts` to `midx_included_packs` - builtin/repack.c: inline `remove_redundant_bitmaps()` - builtin/repack.c: reorder `remove_redundant_bitmaps()` - repack: keep track of MIDX pack names using existing_packs - builtin/repack.c: use a string_list for 'midx_pack_names' - builtin/repack.c: extract opts struct for 'write_midx_included_packs()' - builtin/repack.c: remove ref snapshotting from builtin - repack: remove pack_geometry API from the builtin - builtin/repack.c: pass 'packdir' to `pack_geometry_remove_redundant()` - builtin/repack.c: pass 'pack_kept_objects' to `pack_geometry_init()` - builtin/repack.c: rename various pack_geometry functions - builtin/repack.c: remove "repack_promisor_objects()" from the builtin - builtin/repack.c: pass "packtmp" to `repack_promisor_objects()` - repack: remove 'generated_pack' API from the builtin - builtin/repack.c: provide pack locations to `generated_pack_install()` - builtin/repack.c: pass "packtmp" to `generated_pack_populate()` - builtin/repack.c: factor our "generated_pack_install" - builtin/repack.c: rename "struct generated_pack_data" - repack: remove 'existing_packs' API from the builtin - builtin/repack.c: avoid unnecessary numeric casts in existing_packs - builtin/repack.c: pass "packdir" when removing packs - repack: remove 'remove_redundant_pack' from the builtin - builtin/repack.c: rename many 'struct existing_packs' functions - repack: remove 'prepare_pack_objects' from the builtin - repack: move 'delta_base_offset' to 'struct pack_objects_args' - builtin/repack.c: pass both pack_objects args to repack_config - repack: introduce new compilation unit - builtin/repack.c: avoid using `hash_to_hex()` in pack geometry - builtin/repack.c: avoid "the_hash_algo" in `finish_pack_objects_cmd()` - builtin/repack: avoid "the_hash_algo" in `repack_promisor_objects()` - builtin/repack.c: avoid "the_hash_algo" in `write_oid()` - builtin/repack.c: avoid "the_hash_algo" when deleting packs - builtin/repack.c: avoid "the_repository" when repacking promisor objects - builtin/repack.c: avoid "the_repository" when removing packs - builtin/repack.c: avoid "the_repository" when taking a ref snapshot - builtin/repack.c: avoid "the_repository" in existing packs API - builtin/repack.c: avoid "the_repository" in `cmd_repack()` - Merge branch 'ps/packfile-store' into tb/incremental-midx-part-3.1 (this branch uses ps/packfile-store.)
Comments? source: <cover.1759097191.git.me@ttaylorr.com>
* cc/doc-submitting-patches-with-ai (2025-10-01) 1 commit - SubmittingPatches: add section about AI
AI guidelines.
Perhaps we should adopt what QEMU uses for simplicity? cf. <aOBMHqLxNd86vgjH@fruit.crustytoothpaste.net> source: <20251001140310.527097-1-christian.couder@gmail.com>
* kn/ref-cache-seek-fix (2025-10-01) 1 commit (merged to 'next' on 2025-10-02 at 5896b8c896) + refs/ref-cache: fix SEGFAULT when seeking in empty directories
Fix handling of an empty subdirectory of .git/refs/ in the ref-files backend.
Will merge to 'master'. source: <20251001-583-git-for-each-ref-start-after-v3-1-000f03837a92@gmail.com>
* mh/doc-credential-url-prefix (2025-10-01) 1 commit (merged to 'next' on 2025-10-02 at dd0d9a1c59) + docs/gitcredentials: describe URL prefix matching
Doc update to describe a feature that has already been implemented.
Will merge to 'master'. source: <pull.1979.git.1759352209657.gitgitgadget@gmail.com>
* ml/reflog-write-committer-info-fix (2025-09-30) 1 commit (merged to 'next' on 2025-10-02 at 9a61d07bac) + builtin/reflog: respect user config in "write" subcommand
"git reflog write" did not honor the configured user.name/email which has been corrected.
Will merge to 'master'. source: <20250930195320.23825-1-git@lohmann.sh>
* ps/history (2025-10-01) 13 commits - builtin/history: implement "split" subcommand - cache-tree: allow writing in-memory index as tree - add-patch: add support for in-memory index patching - add-patch: remove dependency on "add-interactive" subsystem - add-patch: split out `struct interactive_options` - add-patch: split out header from "add-interactive.h" - builtin/history: implement "reword" subcommand - builtin: add new "history" command - replay: parse commits before dereferencing them - replay: stop using `the_repository` - replay: extract logic to pick commits - wt-status: provide function to expose status for trees - Merge branch 'sa/replay-atomic-ref-updates' into ps/history (this branch uses sa/replay-atomic-ref-updates.)
"git history" history rewriting UI. source: <20251001-b4-pks-history-builtin-v4-0-8e61ddb86317@pks.im>
* en/make-libgit-a (2025-10-02) 2 commits - make: delete REFTABLE_LIB, add reftable to LIB_OBJS - make: delete XDIFF_LIB, add xdiff to LIB_OBJS
Instead of three library archives (one for git, one for reftable, and one for xdiff), roll everything into a single libgit.a archive. This would help later effort to FFI into Rust.
Will merge to 'next'? source: <pull.2065.v2.git.git.1759447647.gitgitgadget@gmail.com>
* ms/doc-worktree-side-by-side (2025-10-02) 4 commits - amend! doc: git-worktree: Add side by side branch checkout example - doc: git-worktree: Add side by side branch checkout example - amend! doc: git-worktree: Link to examples - doc: git-worktree: Link to examples
Document "git worktree add" and use of out-of-tree worktrees with examples.
Comments? source: <xmqqseg1xwc1.fsf@gitster.g>
* ps/gitlab-ci-windows-improvements (2025-10-02) 5 commits (merged to 'next' on 2025-10-03 at 6adb054d12) + t8020: fix test failure due to indeterministic tag sorting + gitlab-ci: upload Meson test logs as JUnit reports + gitlab-ci: drop workaround for Python certificate store on Windows + gitlab-ci: ignore failures to disable realtime monitoring + gitlab-ci: dedup instructions to disable realtime monitoring
GitLab CI improvements.
Will merge to 'master'. source: <20251002-pks-gitlab-ci-windows-improvements-v1-0-6a8b6b45d728@pks.im>
* rj/doc-missing-technical-docs (2025-10-02) 1 commit (merged to 'next' on 2025-10-06 at f639955fdc) + doc: add some missing technical documents (this branch is used by rj/doc-technical-fixes.)
Doc updates.
Will merge to 'master'. source: <20251002221233.541844-2-ramsay@ramsayjones.plus.com>
* rj/doc-technical-fixes (2025-10-02) 3 commits - doc: commit-graph.adoc: fix up some formatting - doc: sparse-checkout.adoc: fix asciidoc warnings - doc: remembering-renames.adoc: fix asciidoc warnings (this branch uses rj/doc-missing-technical-docs.)
Documenation mark-up fixes.
Comments? source: <20251002221233.541844-1-ramsay@ramsayjones.plus.com>
* ja/doc-markup-attached-paragraph-fix (2025-09-27) 1 commit (merged to 'next' on 2025-09-30 at a91ca5db03) + doc: change the markup of paragraphs following a nested list item
Documentation mark-up fix.
Expecting an incremental follow-up to avoid regerssion. cf. <2239952.irdbgypaU6@cayenne> source: <20250927195032.37223-1-jn.avila@free.fr>
* jc/optional-path (2025-09-28) 4 commits - parseopt: values of pathname type can be prefixed with :(optional) - config: values of pathname type can be prefixed with :(optional) - t7500: fix GIT_EDITOR shell snippet - t7500: make each piece more independent
Configuration variables that take a pathname as a value (e.g. blame.ignorerevsfile) can be marked as optional by prefixing ":(optoinal)" before its value.
Will merge to 'next'? source: <cover.1759094936.git.ben.knoble+github@gmail.com>
* jt/clang-format-foreach-wo-space-before-parenthesis (2025-09-27) 1 commit (merged to 'next' on 2025-09-30 at c32668ab36) + clang-format: exclude control macros from SpaceBeforeParens
Clang-format update to let our control macros formatted the way we had them traditionally, e.g., "for_each_string_list_item()" without space before the parentheses.
Will merge to 'master'. source: <20250927145049.723341-4-jltobler@gmail.com>
* kh/doc-patch-id-markup-fix (2025-09-29) 1 commit - doc: patch-id: fix accidental literal blocks
Documenaotin mark-up fix.
Will merge to 'next'? source: <v2-e5ad12cc3b3.1759178715.git.code@khaugsbakk.name>
* sa/replay-atomic-ref-updates (2025-09-26) 1 commit - replay: make atomic ref updates the default behavior (this branch is used by ps/history.)
"git replay" (experimental) learned to perform ref updates itself in a transaction by default, instead of emitting where each refs should point at and leaving the actual update to another command.
Comments? source: <20250926230838.35870-2-siddharthasthana31@gmail.com>
* kh/format-patch-range-diff-notes (2025-09-25) 3 commits - format-patch: handle range-diff on notes correctly for single patches - revision: add rdiff_log_arg to rev_info - range-diff: rename other_arg to log_arg
"git format-patch --range-diff=... --notes=..." did not drive the underlying range-diff with correct --notes parameter, ending up comparing with different set of notes from its main patch output you would get from "git format-patch --notes=..." for a singleton patch.
Will merge to 'next'? source: <v2-cover.1758819879.git.code@khaugsbakk.name>
* je/doc-pull (2025-09-23) 4 commits - doc: git-pull: clarify how to exit a conflicted merge - doc: git-pull: delete the example - doc: git-pull: clarify options for integrating remote branch - doc: git-pull: move <repository> and <refspec> params
Documentation updates. source: <pull.1976.git.1758656702.gitgitgadget@gmail.com>
* je/doc-push-upstream (2025-10-06) 5 commits - doc: git-push: add explanation of `git push origin main` - doc: git-push: clarify "what to push" - doc: git-push: clarify "where to push" - doc: add an UPSTREAM BRANCHES section to pull/push/fetch - doc: git-push: clarify intro
Documentation updates.
Will merge to 'next'? source: <pull.1964.v5.git.1759777131.gitgitgadget@gmail.com>
* jk/diff-no-index-with-pathspec-fix (2025-09-24) 1 commit - diff --no-index: fix logic for paths ending in '/'
An earlier addition to "git diff --no-index A B" to limit the output with pathspec after the two directories misbehaved when these directories were given with a trailing slash, which has been corrected. source: <20250924-jk-fix-no-index-path-with-slash-v1-1-6b2028c0de92@intel.com>
* jt/repo-stats (2025-09-27) 6 commits - builtin/repo: add progress meter for stats - builtin/repo: add keyvalue and nul format for stats - builtin/repo: add object counts in stats output - builtin/repo: introduce stats subcommand - ref-filter: allow NULL filter pattern - builtin/repo: rename repo_info() to cmd_repo_info()
"git repo stats", a new command.
Comments? source: <20250927145049.723341-1-jltobler@gmail.com>
* js/curl-off-t-fixes (2025-09-26) 3 commits (merged to 'next' on 2025-09-30 at 6d1e5fd288) + http-push: avoid new compile error + imap-send: be more careful when casting to `curl_off_t` + http: offer to cast `size_t` to `curl_off_t` safely
A few places where an size_t value was cast to curl_off_t without checking has been updated to use the existing helper function.
Will merge to 'master'. source: <pull.1974.v2.git.1758882772.gitgitgadget@gmail.com>
* kn/reftable-consistency-checks (2025-10-06) 7 commits - refs/reftable: add fsck check for checking the table name - reftable: add code to facilitate consistency checks - fsck: order 'fsck_msg_type' alphabetically - Documentation/fsck-msgids: remove duplicate msg id - reftable: check for trailing newline in 'tables.list' - refs: move consistency check msg to generic layer - refs: remove unused headers
The reftable backend learned to sanity check its on-disk data more carefully.
Comments? source: <20251006-228-reftable-introduce-consistency-checks-v5-0-f196d386214f@gmail.com>
* bc/sha1-256-interop-01 (2025-10-02) 9 commits - t1010: use BROKEN_OBJECTS prerequisite - t: allow specifying compatibility hash - fsck: consider gpgsig headers expected in tags - rev-parse: allow printing compatibility hash - docs: add documentation for loose objects - docs: improve ambiguous areas of pack format documentation - docs: reflect actual double signature for tags - docs: update offset order for pack index v3 - docs: update pack index v3 format
The beginning of SHA1-SHA256 interoperability work.
Will merge to 'next'? source: <20251002223855.1022847-1-sandals@crustytoothpaste.net>
* pw/add-p-hunk-splitting-fix (2025-09-25) 2 commits - add-patch: update hunk splitability after editing - add -p: mark split hunks as undecided
Marking a hunk 'selected' in "git add -p" and then splitting made all the split pieces 'selected'; this has been changed to make them all 'undecided', which gives better end-user experience.
Will merge to 'next'? source: <pull.1863.v3.git.1758813038.gitgitgadget@gmail.com>
* en/xdiff-cleanup (2025-09-26) 12 commits - xdiff: change type of xdfile_t.changed from char to bool - xdiff: add macros DISCARD(0), KEEP(1), INVESTIGATE(2) in xprepare.c - xdiff: rename rchg -> changed in xdfile_t - xdiff: delete chastore from xdfile_t - xdiff: delete fields ha, line, size in xdlclass_t in favor of an xrecord_t - xdiff: delete redundant array xdfile_t.ha - xdiff: delete struct diffdata_t - xdiff: delete local variables that alias fields in xrecord_t - xdiff: delete superfluous function xdl_get_rec() in xemit - xdiff: delete unnecessary fields from xrecord_t and xdfile_t - xdiff: delete local variables and initialize/free xdfile_t directly - xdiff: delete static forward declarations in xprepare
A lot of code clean-up of xdiff. Split out of a larger topic.
Will merge to 'next'? source: <pull.2048.v6.git.git.1758926520.gitgitgadget@gmail.com>
* ar/submodule-gitdir-tweak (2025-10-06) 5 commits - submodule: error out if gitdir name is too long - submodule: encode gitdir paths to avoid conflicts - strbuf: bring back is_rfc3986_unreserved - submodule: add gitdir path config override - submodule--helper: use submodule_name_to_gitdir in add_submodule
Avoid local submodule repository directory paths overlapping with each other by encoding submodule names before using them as path components.
Comments? source: <20251006112518.3764240-1-adrian.ratiu@collabora.com>
* je/doc-push (2025-09-23) 2 commits (merged to 'next' on 2025-09-29 at 4ff1b675ed) + doc: git-push: rewrite refspec specification + doc: git-push: create PUSH RULES section
Doc updates.
Will merge to 'master'. source: <pull.1973.v2.git.1758651049.gitgitgadget@gmail.com>
* ps/odb-clean-stale-wrappers (2025-09-10) 1 commit (merged to 'next' on 2025-09-30 at 90f1033b8c) + odb: drop deprecated wrapper functions
Code clean-up.
Will merge to 'master'. source: <20250910-b4-pks-odb-drop-wrappers-v1-1-6ed660cb1eec@pks.im>
* ps/commit-graph-per-object-source (2025-09-04) 5 commits - commit-graph: pass graphs that are to be merged as parameter - commit-graph: return commit graph from `repo_find_commit_pos_in_graph()` - commit-graph: return the prepared commit graph from `prepare_commit_graph()` - revision: drop explicit check for commit graph - blame: drop explicit check for commit graph
Declare commit-graph is per object_source, which may not be a good idea.
Will merge to 'next'. cf. <cf7aeda1-297a-4805-b0ae-e379ce11bbcf@gmail.com> cf. <aN5gPoPC4WEYw9CF@pks.im> source: <20250904-b4-pks-commit-graph-via-source-v1-0-d932c2481e1a@pks.im>
* ps/rust-balloon (2025-10-02) 9 commits (merged to 'next' on 2025-10-02 at fe4cdc2dfa) + ci: enable Rust for breaking-changes jobs + ci: convert "pedantic" job into full build with breaking changes + BreakingChanges: announce Rust becoming mandatory + varint: reimplement as test balloon for Rust + varint: use explicit width for integers + help: report on whether or not Rust is enabled + Makefile: introduce infrastructure to build internal Rust library + Makefile: reorder sources after includes + meson: add infrastructure to build internal Rust library
Dip our toes a bit to (optionally) use Rust implemented helper called from our C code.
Will merge to 'master'. cf. <aNsQ5UjjbqJr8_Ik@fruit.crustytoothpaste.net> source: <20251002-b4-pks-rust-breaking-change-v8-0-3a89fd5b1ce7@pks.im>
* sj/string-list (2025-10-05) 4 commits - refs: enable sign compare warnings check - string-list: change "string_list_find_insert_index" return type to "size_t" - string-list: replace negative index encoding with "exact_match" parameter - string-list: use bool instead of int for "exact_match"
The "string-list" API function to find where a given string would be inserted got updated so that it can use unrealistically huge array index that would only fit in size_t but not int or ssize_t to achieve unstated goal.
Will merge to 'next'? source: <aONhmrE0otiyZ16f@ArchLinux>
* ps/packfile-store (2025-09-23) 16 commits (merged to 'next' on 2025-09-29 at 342bb57fc2) + packfile: refactor `get_packed_git_mru()` to work on packfile store + packfile: refactor `get_all_packs()` to work on packfile store + packfile: refactor `get_packed_git()` to work on packfile store + packfile: move `get_multi_pack_index()` into "midx.c" + packfile: introduce function to load and add packfiles + packfile: refactor `install_packed_git()` to work on packfile store + packfile: split up responsibilities of `reprepare_packed_git()` + packfile: refactor `prepare_packed_git()` to work on packfile store + packfile: reorder functions to avoid function declaration + odb: move kept cache into `struct packfile_store` + odb: move MRU list of packfiles into `struct packfile_store` + odb: move packfile map into `struct packfile_store` + odb: move initialization bit into `struct packfile_store` + odb: move list of packfiles into `struct packfile_store` + packfile: introduce a new `struct packfile_store` + Merge branch 'ps/object-store-midx-dedup-info' into ps/packfile-store (this branch is used by tb/incremental-midx-part-3.1.)
Code clean-up around the in-core list of all the pack files and object database(s).
Will merge to 'master'. cf. <aNmxQqV3+1Ad12qC@nand.local> source: <20250923-b4-pks-packfiles-store-v6-0-b48f2a882759@pks.im>
* ds/sparse-checkout-clean (2025-09-12) 7 commits (merged to 'next' on 2025-09-25 at 00b296f153) + t: expand tests around sparse merges and clean + sparse-index: point users to new 'clean' action + sparse-checkout: add --verbose option to 'clean' + dir: add generic "walk all files" helper + sparse-checkout: match some 'clean' behavior + sparse-checkout: add basics of 'clean' command + sparse-checkout: remove use of the_repository
"git sparse-checkout" subcommand learned a new "clean" action to prune otherwise unused working-tree files that are outside the areas of interest.
On hold. cf. <3537e220-44b6-4e37-a568-cef34a2fddfd@gmail.com> source: <pull.1941.v3.git.1757673011.gitgitgadget@gmail.com>
-------------------------------------------------- [Discarded]
These have been kept outside 'seen' for some time, and were removed for now, until they get resubmit in a shape that plays well with other topics in 'seen'.
* lc/rebase-trailer (2025-08-03) 2 commits . rebase: support --trailer . trailer: append trailers in-process and drop the fork to `interpret-trailers`
Has been expecting a reroll for way too long. cf. <198826af571.62b85cb31711042.2415806544948206668@linux.beauty> cf. <xmqqiki7qasu.fsf@gitster.g> cf. <1995bf77c93.3eeb42b4972717.3783775021840050008@linux.beauty> source: <20250803150059.402017-1-me@linux.beauty>
* ac/deglobal-sparse-variables (2025-07-18) 3 commits . environment: remove the global variable 'sparse_expect_files_outside_of_patterns' . environment: move access to "core.sparsecheckoutcone" into repo_settings . environment: move access to "core.sparsecheckout" into repo_settings
Two global variables related to sparse checkout have been moved to the repository settings structure.
Has been expecting a reroll for way too long. cf. <CAE7as+bnG6KgA8X_n36pqP15bmyM6re+xEb1MOXKvZSUdJ8Arg@mail.gmail.com> Ejected out of 'seen' for now. source: <cover.1752882401.git.ayu.chandekar@gmail.com>