What's cooking in git.git (Mar 2025, #03; Wed, 12)
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']
* ma/clone-doc-markup-fix (2025-03-10) 1 commit
(merged to 'next' on 2025-03-10 at f6994c5077)
+ git-clone doc: fix indentation
Doc markup fix.
source: <[email protected]>
* pb/doc-follow-remote-head (2025-02-14) 2 commits
(merged to 'next' on 2025-03-11 at 67ce5e4795)
+ config/remote.txt: improve wording for 'remote.<name>.followRemoteHEAD'
+ config/remote.txt: reunite 'severOption' description paragraphs
Doc updates.
source: <[email protected]>
* tb/fetch-follow-tags-fix (2025-03-07) 1 commit (merged to 'next' on 2025-03-07 at 9432ccae14)
+ fetch: fix following tags when fetching specific OID
"git fetch --follow-tags" was broken with recent updates, which has been corrected.
source: <61147be4b9a0ee76f1fe0f3376d7316205da350c.1741389941.git.me@ttaylorr.com>
* tc/zlib-ng-fix (2025-03-07) 2 commits
(merged to 'next' on 2025-03-07 at e13861b9f1)
+ help: print zlib-ng version number
+ help: include git-zlib.h to print zlib version
"git version --build-options" stopped showing zlib version by mistake due to recent refactoring, which has been corrected.
source: <[email protected]>
--------------------------------------------------
[New Topics]
* en/merge-ort-prepare-to-remove-recursive (2025-03-07) 3 commits
- merge-ort: support having merge verbosity be set to 0
- merge-ort: allow rename detection to be disabled
- merge-ort: add new merge_ort_generic() function
First step of deprecating and removing merge-recursive.
Will merge to 'next'.
source: <[email protected]>
* jk/use-wunreachable-code-for-devs (2025-03-07) 1 commit (merged to 'next' on 2025-03-07 at b5c54fea6a)
+ config.mak.dev: enable -Wunreachable-code
Enable -Wunreachable-code for developer builds.
Reverted out of 'next', as macOS CI job stops with a false positive. cf. <[email protected]>
source: <[email protected]>
* ab/decorate-code-cleanup (2025-03-10) 1 commit
- decorate: fix sign comparison warnings
Code clean-up.
Will merge to 'next'.
source: <[email protected]>
* ds/path-walk-2 (2025-03-10) 13 commits
- pack-objects: allow --shallow and --path-walk
- path-walk: add new 'edge_aggressive' option
- pack-objects: thread the path-based compression
- pack-objects: refactor path-walk delta phase
- scalar: enable path-walk during push via config
- pack-objects: enable --path-walk via config
- repack: add --path-walk option
- t5538: add tests to confirm deltas in shallow pushes
- pack-objects: introduce GIT_TEST_PACK_PATH_WALK
- p5313: add performance tests for --path-walk
- pack-objects: update usage to match docs
- pack-objects: add --path-walk option
- pack-objects: extract should_attempt_deltas()
"git pack-objects" learns to find delta bases from blobs at the same path, using the --path-walk API.
source: <[email protected]>
* ja/doc-block-delimiter-markup-fix (2025-03-10) 1 commit (merged to 'next' on 2025-03-11 at 8d6641a77e)
+ doc: add a blank line around block delimiters
Doc markup updates.
Will cook in 'next'.
source: <[email protected]>
* jc/name-rev-stdin (2025-03-12) 6 commits
- name-rev: remove "--stdin" support
- t6120: further modernize
- t6120: avoid hiding "git" exit status
- t: introduce WITH_BREAKING_CHANGES prerequisite
- t: extend test_lazy_prereq
- t: document test_lazy_prereq
Using "git name-rev --stdin" as an example, improve the framework to prepare tests to pretend to be in the future where the breaking changes have already happened.
Will merge to 'next'.
source: <[email protected]>
* jk/fetch-ref-prefix-cleanup (2025-03-10) 9 commits
- fetch: use ref prefix list to skip ls-refs
- fetch: avoid ls-refs only to ask for HEAD symref update
- fetch: stop protecting additions to ref-prefix list
- fetch: ask server to advertise HEAD for config-less fetch
- refspec_ref_prefixes(): clean up refspec_item logic
- t5516: beef up exact-oid ref prefixes test
- t5516: drop NEEDSWORK about v2 reachability behavior
- t5516: prefer "oid" to "sha1" in some test titles
- t5702: fix typo in test name
In protocol v2 where the refs advertisement is constrained, we try to tell the server side not to limit the advertisement when there is no specific need to, which has been the source of confusion and recent bugs. Revamp the logic to simplify.
Will merge to 'next'.
source: <[email protected]>
* jt/rev-list-z (2025-03-10) 4 commits
- rev-list: support NUL-delimited --missing option
- rev-list: support delimiting objects with NUL bytes
- rev-list: refactor early option parsing
- rev-list: inline show_object_with_name() in show_object()
"git rev-list" learns machine-parsable output format that delimits each field with NUL.
Will merge to 'next'?
source: <[email protected]>
* kn/reflog-drop (2025-03-10) 1 commit
- reflog: implement subcommand to drop reflogs
"git reflog" learns "drop" subcommand, that discards the entire reflog data for a ref.
Will merge to 'next'?
source: <20250310-493-add-command-to-purge-reflog-entries-v2-1-05caa92e0bfa@gmail.com>
* am/dir-dedup-decl-of-repository (2025-03-11) 1 commit
- dir.h: remove duplicate forward declaration of struct repository
Code cleanup.
Will merge to 'next'.
source: <[email protected]>
* cc/lop-remote (2025-03-12) 1 commit
- promisor-remote: fix segfault when remote URL is missing
Bugfix in newly introduced large-object-promisor remote support.
source: <[email protected]>
* ps/ci-meson-check-build-docs (2025-03-12) 1 commit
- ci: perform build and smoke tests for Meson docs
CI update.
Will merge to 'next'.
source: <[email protected]>
* ps/meson-with-breaking-changes (2025-03-12) 3 commits
- meson: don't install git-pack-redundant(1) docs with breaking changes
- meson: don't compile git-pack-redundant(1) with breaking changes
- meson: define WITH_BREAKING_CHANGES when enabling breaking changes
Update meson based build procedure for breaking changes support.
Will merge to 'next'.
source: <[email protected]>
--------------------------------------------------
[Cooking]
* md/t1403-path-is-file (2025-03-04) 1 commit
- t1403: verify that path exists and is a file
Test tweak.
source: <[email protected]>
* sk/clar-trailer-urlmatch-norm-test (2025-03-04) 2 commits
- t/unit-tests: convert urlmatch-normalization test to clar
- t/unit-tests: convert trailer test to use clar
A few traditional unit tests have been rewritten to use the clar framework.
Comments?
source: <[email protected]>
* dm/completion-remote-names-fix (2025-03-05) 2 commits
- completion: fix bugs with slashes in remote names
- completion: add helper to count path components
The bash command line completion script (in contrib/) has been updated to cope with remote repository nicknames with slashes in them.
Comments?
source: <[email protected]>
* tb/refs-exclude-fixes (2025-03-06) 2 commits
(merged to 'next' on 2025-03-06 at 50707f29db)
+ refs.c: stop matching non-directory prefixes in exclude patterns
+ refs.c: remove empty '--exclude' patterns
The refname exclusion logic in the packed-ref backend has been broken for some time, which confused upload-pack to advertise different set of refs. This has been corrected.
Will cook in 'next'.
source: <[email protected]>
* en/merge-process-renames-crash-fix (2025-03-06) 2 commits (merged to 'next' on 2025-03-06 at 8f38331e32)
+ merge-ort: fix slightly overzealous assertion for rename-to-self
+ t6423: add a testcase causing a failed assertion in process_renames
The merge-recursive and merge-ort machinery crashed in corner cases when certain renames are involved.
Will cook in 'next'.
source: <[email protected]>
* kn/non-transactional-batch-updates (2025-03-12) 9 commits
. update-ref: add --allow-partial flag for stdin mode
. refs: support partial update rejections during F/D checks
. refs: implement partial reference transaction support
. refs: introduce enum-based transaction error types
. refs/reftable: extract code from the transaction preparation
. refs/files: remove duplicate duplicates check
. refs: move duplicate refname update check to generic layer
. refs/files: remove redundant check in split_symref_update()
. Merge branch 'ps/refname-avail-check-optim' into kn/non-transactional-batch-updates (this branch uses ps/refname-avail-check-optim.)
Updating multiple references have only been possible in all-or-none fashion with transactions, but it can be more efficient to batch multiple updates even when some of them are allowed to fail in a best-effort manner. A new "best effort batches of updates" mode has been introduced.
Trips up -Wunreachable-code checker.
source: <20250305-245-partially-atomic-ref-updates-v3-0-0c64e3052354@gmail.com>
* ps/object-wo-the-repository (2025-03-10) 12 commits
- hash: stop depending on the_repository in null_oid()
- hash: fix "-Wsign-compare" warnings
- object-file: split out logic regarding hash algorithms
- delta-islands: stop depending on the_repository
- object-file-convert: stop depending on the_repository
- pack-bitmap-write: stop depending on the_repository
- pack-revindex: stop depending on the_repository
- pack-check: stop depending on the_repository
- environment: move access to "core.bigFileThreshold" into repo settings
- pack-write: stop depending on the_repository and the_hash_algo
- object: stop depending on the_repository
- csum-file: stop depending on the_repository
The object layer has been updated to take an explicit repository instance as a parameter in more code paths.
Looking good.
source: <20250310-b4-pks-objects-without-the-repository-v4-0-f201b8ec57ba@pks.im>
* ua/some-builtins-wo-the-repository (2025-03-07) 8 commits (merged to 'next' on 2025-03-07 at 01f2b84529)
+ builtin/checkout-index: stop using the_repository
+ builtin/for-each-ref: stop using the_repository
+ builtin/ls-files: stop using the_repository
+ builtin/pack-refs: stop using the_repository
+ builtin/send-pack: stop using the_repository
+ builtin/verify-commit: stop using the_repository
+ builtin/verify-tag: stop using the_repository
+ config: teach repo_config to allow repo to be NULL
A handful of built-in command implementations have been rewritten to use the repository instance supplied by git.c:run_builtin(), its caller.
Will cook in 'next'.
source: <[email protected]>
* ps/maintenance-reflog-expire (2025-02-26) 6 commits
- builtin/maintenance: introduce "reflog-expire" task
- builtin/gc: split out function to expire reflog entries
- builtin/reflog: make functions regarding reflog_expire_options public
- builtin/reflog: stop storing per-reflog expiry dates globally
- builtin/reflog: stop storing default reflog expiry dates globally
- reflog: rename cmd_reflog_expire_cb to reflog_expire_options
"git maintenance" learns a new task to expire reflog entries.
Needs (real) review.
source: <[email protected]>
* ps/refname-avail-check-optim (2025-03-12) 16 commits
- refs: reuse iterators when determining refname availability
- refs/iterator: implement seeking for files iterators
- refs/iterator: implement seeking for packed-ref iterators
- refs/iterator: implement seeking for ref-cache iterators
- refs/iterator: implement seeking for reftable iterators
- refs/iterator: implement seeking for merged iterators
- refs/iterator: provide infrastructure to re-seek iterators
- refs/iterator: separate lifecycle from iteration
- refs: stop re-verifying common prefixes for availability
- refs/files: batch refname availability checks for initial transactions
- refs/files: batch refname availability checks for normal transactions
- refs/reftable: batch refname availability checks
- refs: introduce function to batch refname availability checks
- builtin/update-ref: skip ambiguity checks when parsing object IDs
- object-name: allow skipping ambiguity checks in get_oid() family
- object-name: introduce repo_get_oid_with_flags()
(this branch is used by kn/non-transactional-batch-updates.)
The code paths to check whether a refname X is available (by seeing if another ref X/Y exists, etc.) have been optimized.
Will merge to 'next'.
source: <[email protected]>
* tb/multi-cruft-pack-refresh-fix (2025-03-11) 6 commits
- builtin/pack-objects.c: freshen objects from existing cruft packs
- builtin/repack.c: simplify cruft pack aggregation
- pack-objects: generate cruft packs at most one object over threshold
- t/lib-cruft.sh: extract some cruft-related helpers
- t7704-repack-cruft.sh: consolidate write_blob()
- t/t5329-pack-objects-cruft.sh: evict 'repack'-related tests
Certain "cruft" objects would have never been refreshed when there are multiple cruft packs in the repository, which has been corrected.
source: <[email protected]>
* jk/zlib-inflate-fixes (2025-02-25) 10 commits
- unpack_loose_rest(): rewrite return handling for clarity
- unpack_loose_rest(): simplify error handling
- unpack_loose_rest(): never clean up zstream
- unpack_loose_rest(): avoid numeric comparison of zlib status
- unpack_loose_header(): avoid numeric comparison of zlib status
- git_inflate(): skip zlib_post_call() sanity check on Z_NEED_DICT
- unpack_loose_header(): fix infinite loop on broken zlib input
- unpack_loose_header(): report headers without NUL as "bad"
- unpack_loose_header(): simplify next_out assignment
- loose_object_info(): BUG() on inflating content with unknown type
Fix our use of zlib corner cases.
Still being discussed.
cf. <[email protected]>
source: <[email protected]>
* cc/signed-fast-export-import (2025-03-10) 6 commits
- fast-export, fast-import: add support for signed-commits
- fast-export: do not modify memory from get_commit_buffer
- git-fast-export.adoc: clarify why 'verbatim' may not be a good idea
- fast-export: rename --signed-tags='warn' to 'warn-verbatim'
- fast-export: fix missing whitespace after switch
- git-fast-import.adoc: add missing LF in the BNF
"git fast-export | git fast-import" learns to deal with commit and tag objects with embedded signatures a bit better.
Will merge to 'next'.
cf. <CABPp-BGyA8iBA0BFO8FcpZAMca94aVu2vHHRi4Oz=nCWxJSDPg@mail.gmail.com>
source: <[email protected]>
* jt/diff-pairs (2025-03-03) 4 commits (merged to 'next' on 2025-03-03 at 32346e0c3b)
+ builtin/diff-pairs: allow explicit diff queue flush
+ builtin: introduce diff-pairs command
+ diff: add option to skip resolving diff statuses
+ diff: return diff_filepair from diff queue helpers
A post-processing filter for "diff --raw" output has been introduced.
Will cook in 'next'.
source: <[email protected]>
* ib/diff-S-G-with-longhand (2025-02-12) 10 commits
- diff: docs: Use --patch-{grep,modifies} over -G/-S
- diff: --pickaxe-{all,regex} help: Add --patch-{grep,modifies}
- diff: test: Use --patch-{grep,modifies} over -G/-S
- completion: Support --patch-{grep,modifies}
- diff: --patch-{grep,modifies} arg names for -G and -S
- docs: gitdiffcore: -G and -S: Use regex/string placeholders
- diff: short help: Add -G and --pickaxe-grep
- diff: short help: Correct -S description
- diff: -G description: Correct copy/paste error
- t/t4209-log-pickaxe: Naming typo: -G takes a regex
The commands in the "diff" family learned longhands for "-S" and "-G" options.
The core part looked mostly good.
source: <[email protected]>
* ps/reftable-windows-unlink-fix (2025-02-18) 2 commits
- reftable: ignore file-in-use errors when unlink(3p) fails on Windows
- Merge branch 'ps/reftable-sans-compat-util' into ps/reftable-windows-unlink-fix (this branch uses ps/reftable-sans-compat-util.)
Portability fix.
Waiting for the base topic to settle.
source: <20250206-b4-pks-reftable-win32-in-use-errors-v2-1-56985a4f6186@pks.im>
* ps/reftable-sans-compat-util (2025-02-18) 18 commits
- Makefile: skip reftable library for Coccinelle
- reftable: decouple from Git codebase by pulling in "compat/posix.h"
- git-compat-util.h: split out POSIX-emulating bits
- compat/mingw: split out POSIX-related bits
- reftable/basics: introduce REFTABLE_UNUSED annotation
- reftable/basics: stop using SWAP() macro
- reftable/stack: stop using sleep_millisec()
- reftable/system: introduce reftable_rand()
- reftable/reader: stop using ARRAY_SIZE() macro
- reftable/basics: provide wrappers for big endian conversion
- reftable/basics: stop using st_mult() in array allocators
- reftable: stop using BUG() in trivial cases
- reftable/record: don't BUG() in reftable_record_cmp()
- reftable/record: stop using BUG() in reftable_record_init()
- reftable/record: stop using COPY_ARRAY()
- reftable/blocksource: stop using xmmap()
- reftable/stack: stop using write_in_full()
- reftable/stack: stop using read_in_full()
(this branch is used by ps/reftable-windows-unlink-fix.)
Make the code in reftable library less reliant on the service routines it used to borrow from Git proper, to make it easier to use by external users of the library.
Waiting for Acks, especially for Windows bits?
source: <20250218-pks-reftable-drop-git-compat-util-v6-0-8c1f39fb4c02@pks.im>
* sj/ref-consistency-checks-more (2025-02-27) 9 commits (merged to 'next' on 2025-03-05 at 6bea9376c4)
+ builtin/fsck: add git refs verify child process
+ packed-backend: check whether the "packed-refs" is sorted
+ packed-backend: add "packed-refs" entry consistency check
+ packed-backend: check whether the refname contains NUL characters
+ packed-backend: add "packed-refs" header consistency check
+ packed-backend: check if header starts with "# pack-refs with: "
+ packed-backend: check whether the "packed-refs" is regular file
+ builtin/refs: get worktrees without reading head information
+ t0602: use subshell to ensure working directory unchanged
"git fsck" becomes more careful when checking the refs.
Will cook in 'next'.
source: <Z8CMx7O19PMs9sVY@ArchLinux>
* jc/doc-attr-tree (2024-12-14) 1 commit
- doc: give attr.tree a bit more visibility
Make sure that "git --attr-source=X", GIT_ATTR_SOURCE, and attr.tree configuration variables appear at the same places in the documentation.
On hold.
cf. <[email protected]>
source: <[email protected]>
* tb/incremental-midx-part-2 (2024-11-20) 15 commits
- midx: implement writing incremental MIDX bitmaps
- pack-bitmap.c: use ewah_or_iterator for type bitmap iterators
- pack-bitmap.c: keep track of each layer's type bitmaps
- ewah: implement struct ewah_or_iterator
- pack-bitmap.c: apply pseudo-merge commits with incremental MIDXs
- pack-bitmap.c: compute disk-usage with incremental MIDXs
- pack-bitmap.c: teach rev-list --test-bitmap about incremental MIDXs
- pack-bitmap.c: support bitmap pack-reuse with incremental MIDXs
- pack-bitmap.c: teach show_objects_for_type() about incremental MIDXs
- pack-bitmap.c: teach bitmap_for_commit() about incremental MIDXs
- pack-bitmap.c: open and store incremental bitmap layers
- pack-revindex: prepare for incremental MIDX bitmaps
- Documentation: describe incremental MIDX bitmaps
- Merge branch 'tb/pseudo-merge-bitmap-fixes' into tb/incremental-midx-part-2
- Merge branch 'tb/incremental-midx-part-1' into tb/incremental-midx-part-2
Incrementally updating multi-pack index files.
Expecting a (hopefully minor and final) reroll.
cf. <[email protected]> <[email protected]>
source: <[email protected]>
* ej/cat-file-remote-object-info (2025-02-24) 8 commits
- cat-file: add remote-object-info to batch-command
- transport: add client support for object-info
- serve: advertise object-info feature
- fetch-pack: move fetch initialization
- fetch-pack: refactor packet writing
- t1006: split test utility functions into new "lib-cat-file.sh"
- cat-file: add declaration of variable i inside its for loop
- git-compat-util: add strtoul_ul() with error handling
"git cat-file --batch" and friends can optionally ask a remote server about objects it does not have.
source: <[email protected]>
en/merge-ort-prepare-to-remove-recursive (Was: Re: What's cooking in git.git (Mar 2025, #03; Wed, 12))
Quoted 9 lines · Junio C Hamano
* en/merge-ort-prepare-to-remove-recursive (2025-03-07) 3 commits
- merge-ort: support having merge verbosity be set to 0
- merge-ort: allow rename detection to be disabled
- merge-ort: add newmerge_ort_generic()functionFirst step of deprecating and removing merge-recursive.
Will merge to 'next'.
source: <[email protected]>
Can you hold off? Patrick and Taylor requested some changes, and I'm about to submit v2.
Quoted 350 lines · Junio C Hamano
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']* ma/clone-doc-markup-fix (2025-03-10) 1 commit
(merged to 'next' on 2025-03-10 atf6994c5077)
+ git-clone doc: fix indentationDoc markup fix.
source: <[email protected]>
* pb/doc-follow-remote-head (2025-02-14) 2 commits
(merged to 'next' on 2025-03-11 at67ce5e4795)
+config/remote.txt: improve wording for 'remote.<name>.followRemoteHEAD'
+config/remote.txt: reunite 'severOption' description paragraphsDoc updates.
source: <[email protected]>
* tb/fetch-follow-tags-fix (2025-03-07) 1 commit (merged to 'next' on 2025-03-07 at
9432ccae14)
+ fetch: fix following tags when fetching specific OID"git fetch --follow-tags" was broken with recent updates, which has been corrected.
source: <61147be4b9a0ee76f1fe0f3376d7316205da350c.1741389941.git.me@ttaylorr.com>* tc/zlib-ng-fix (2025-03-07) 2 commits
(merged to 'next' on 2025-03-07 ate13861b9f1)
+ help: print zlib-ng version number
+ help: includegit-zlib.hto print zlib version"git version --build-options" stopped showing zlib version by mistake due to recent refactoring, which has been corrected.
source: <[email protected]>
--------------------------------------------------
[New Topics]* en/merge-ort-prepare-to-remove-recursive (2025-03-07) 3 commits
- merge-ort: support having merge verbosity be set to 0
- merge-ort: allow rename detection to be disabled
- merge-ort: add newmerge_ort_generic()functionFirst step of deprecating and removing merge-recursive.
Will merge to 'next'.
source: <[email protected]>* jk/use-wunreachable-code-for-devs (2025-03-07) 1 commit (merged to 'next' on 2025-03-07 at
b5c54fea6a)
+ config.mak.dev: enable -Wunreachable-codeEnable -Wunreachable-code for developer builds.
Reverted out of 'next', as macOS CI job stops with a false positive. cf. <[email protected]>
source: <[email protected]>* ab/decorate-code-cleanup (2025-03-10) 1 commit
- decorate: fix sign comparison warningsCode clean-up.
Will merge to 'next'.
source: <[email protected]>* ds/path-walk-2 (2025-03-10) 13 commits
- pack-objects: allow --shallow and --path-walk
- path-walk: add new 'edge_aggressive' option
- pack-objects: thread the path-based compression
- pack-objects: refactor path-walk delta phase
- scalar: enable path-walk during push via config
- pack-objects: enable --path-walk via config
- repack: add --path-walk option
- t5538: add tests to confirm deltas in shallow pushes
- pack-objects: introduceGIT_TEST_PACK_PATH_WALK
- p5313: add performance tests for --path-walk
- pack-objects: update usage to match docs
- pack-objects: add --path-walk option
- pack-objects: extractshould_attempt_deltas()"git pack-objects" learns to find delta bases from blobs at the same path, using the --path-walk API.
source: <[email protected]>* ja/doc-block-delimiter-markup-fix (2025-03-10) 1 commit (merged to 'next' on 2025-03-11 at
8d6641a77e)
+ doc: add a blank line around block delimitersDoc markup updates.
Will cook in 'next'.
source: <[email protected]>* jc/name-rev-stdin (2025-03-12) 6 commits
- name-rev: remove "--stdin" support
- t6120: further modernize
- t6120: avoid hiding "git" exit status
- t: introduceWITH_BREAKING_CHANGESprerequisite
- t: extendtest_lazy_prereq
- t: documenttest_lazy_prereqUsing "git name-rev --stdin" as an example, improve the framework to prepare tests to pretend to be in the future where the breaking changes have already happened.
Will merge to 'next'.
source: <[email protected]>* jk/fetch-ref-prefix-cleanup (2025-03-10) 9 commits
- fetch: use ref prefix list to skip ls-refs
- fetch: avoid ls-refs only to ask for HEAD symref update
- fetch: stop protecting additions to ref-prefix list
- fetch: ask server to advertise HEAD for config-less fetch
-refspec_ref_prefixes(): clean uprefspec_itemlogic
- t5516: beef up exact-oid ref prefixes test
- t5516: drop NEEDSWORK about v2 reachability behavior
- t5516: prefer "oid" to "sha1" in some test titles
- t5702: fix typo in test nameIn protocol v2 where the refs advertisement is constrained, we try to tell the server side not to limit the advertisement when there is no specific need to, which has been the source of confusion and recent bugs. Revamp the logic to simplify.
Will merge to 'next'.
source: <[email protected]>* jt/rev-list-z (2025-03-10) 4 commits
- rev-list: support NUL-delimited --missing option
- rev-list: support delimiting objects with NUL bytes
- rev-list: refactor early option parsing
- rev-list: inlineshow_object_with_name()inshow_object()"git rev-list" learns machine-parsable output format that delimits each field with NUL.
Will merge to 'next'?
source: <[email protected]>* kn/reflog-drop (2025-03-10) 1 commit
- reflog: implement subcommand to drop reflogs"git reflog" learns "drop" subcommand, that discards the entire reflog data for a ref.
Will merge to 'next'?
source: <20250310-493-add-command-to-purge-reflog-entries-v2-1-05caa92e0bfa@gmail.com>* am/dir-dedup-decl-of-repository (2025-03-11) 1 commit
-dir.h: remove duplicate forward declaration of struct repositoryCode cleanup.
Will merge to 'next'.
source: <[email protected]>* cc/lop-remote (2025-03-12) 1 commit
- promisor-remote: fix segfault when remote URL is missingBugfix in newly introduced large-object-promisor remote support.
source: <[email protected]>* ps/ci-meson-check-build-docs (2025-03-12) 1 commit
- ci: perform build and smoke tests for Meson docsCI update.
Will merge to 'next'.
source: <[email protected]>* ps/meson-with-breaking-changes (2025-03-12) 3 commits
- meson: don't install git-pack-redundant(1) docs with breaking changes
- meson: don't compile git-pack-redundant(1) with breaking changes
- meson: defineWITH_BREAKING_CHANGESwhen enabling breaking changesUpdate meson based build procedure for breaking changes support.
Will merge to 'next'.
source: <[email protected]>--------------------------------------------------
[Cooking]* md/t1403-path-is-file (2025-03-04) 1 commit
- t1403: verify that path exists and is a fileTest tweak.
source: <[email protected]>* sk/clar-trailer-urlmatch-norm-test (2025-03-04) 2 commits
- t/unit-tests: convert urlmatch-normalization test to clar
- t/unit-tests: convert trailer test to use clarA few traditional unit tests have been rewritten to use the clar framework.
Comments?
source: <[email protected]>* dm/completion-remote-names-fix (2025-03-05) 2 commits
- completion: fix bugs with slashes in remote names
- completion: add helper to count path componentsThe bash command line completion script (in contrib/) has been updated to cope with remote repository nicknames with slashes in them.
Comments?
source: <[email protected]>* tb/refs-exclude-fixes (2025-03-06) 2 commits
(merged to 'next' on 2025-03-06 at50707f29db)
+refs.c: stop matching non-directory prefixes in exclude patterns
+refs.c: remove empty '--exclude' patternsThe refname exclusion logic in the packed-ref backend has been broken for some time, which confused upload-pack to advertise different set of refs. This has been corrected.
Will cook in 'next'.
source: <[email protected]>* en/merge-process-renames-crash-fix (2025-03-06) 2 commits (merged to 'next' on 2025-03-06 at
8f38331e32)
+ merge-ort: fix slightly overzealous assertion for rename-to-self
+ t6423: add a testcase causing a failed assertion inprocess_renamesThe merge-recursive and merge-ort machinery crashed in corner cases when certain renames are involved.
Will cook in 'next'.
source: <[email protected]>* kn/non-transactional-batch-updates (2025-03-12) 9 commits
. update-ref: add --allow-partial flag for stdin mode
. refs: support partial update rejections during F/D checks
. refs: implement partial reference transaction support
. refs: introduce enum-based transaction error types
. refs/reftable: extract code from the transaction preparation
. refs/files: remove duplicate duplicates check
. refs: move duplicate refname update check to generic layer
. refs/files: remove redundant check insplit_symref_update()
. Merge branch 'ps/refname-avail-check-optim' into kn/non-transactional-batch-updates (this branch uses ps/refname-avail-check-optim.)Updating multiple references have only been possible in all-or-none fashion with transactions, but it can be more efficient to batch multiple updates even when some of them are allowed to fail in a best-effort manner. A new "best effort batches of updates" mode has been introduced.
Trips up -Wunreachable-code checker.
source: <20250305-245-partially-atomic-ref-updates-v3-0-0c64e3052354@gmail.com>* ps/object-wo-the-repository (2025-03-10) 12 commits
- hash: stop depending onthe_repositoryinnull_oid()
- hash: fix "-Wsign-compare" warnings
- object-file: split out logic regarding hash algorithms
- delta-islands: stop depending onthe_repository
- object-file-convert: stop depending onthe_repository
- pack-bitmap-write: stop depending onthe_repository
- pack-revindex: stop depending onthe_repository
- pack-check: stop depending onthe_repository
- environment: move access to "core.bigFileThreshold" into repo settings
- pack-write: stop depending onthe_repositoryandthe_hash_algo
- object: stop depending onthe_repository
- csum-file: stop depending onthe_repositoryThe object layer has been updated to take an explicit repository instance as a parameter in more code paths.
Looking good.
source: <20250310-b4-pks-objects-without-the-repository-v4-0-f201b8ec57ba@pks.im>* ua/some-builtins-wo-the-repository (2025-03-07) 8 commits (merged to 'next' on 2025-03-07 at
01f2b84529)
+ builtin/checkout-index: stop usingthe_repository
+ builtin/for-each-ref: stop usingthe_repository
+ builtin/ls-files: stop usingthe_repository
+ builtin/pack-refs: stop usingthe_repository
+ builtin/send-pack: stop usingthe_repository
+ builtin/verify-commit: stop usingthe_repository
+ builtin/verify-tag: stop usingthe_repository
+ config: teachrepo_configto allowrepoto be NULL
Quoted 6 lines
A handful of built-in command implementations have been rewritten to use the repository instance supplied by git.c:run_builtin(), its caller.
Will cook in 'next'.
source: <[email protected]>
Hello,
I just want to say, I submitted an update patches for this a few days ago and it has not gotten a review yet.
https://public-inbox.org/git/[email protected]/
Thank you.
Quoted 232 lines
* ps/maintenance-reflog-expire (2025-02-26) 6 commits
- builtin/maintenance: introduce "reflog-expire" task
- builtin/gc: split out function to expire reflog entries
- builtin/reflog: make functions regardingreflog_expire_optionspublic
- builtin/reflog: stop storing per-reflog expiry dates globally
- builtin/reflog: stop storing default reflog expiry dates globally
- reflog: renamecmd_reflog_expire_cbtoreflog_expire_options"git maintenance" learns a new task to expire reflog entries.
Needs (real) review.
source: <[email protected]>* ps/refname-avail-check-optim (2025-03-12) 16 commits
- refs: reuse iterators when determining refname availability
- refs/iterator: implement seeking for files iterators
- refs/iterator: implement seeking for packed-ref iterators
- refs/iterator: implement seeking for ref-cache iterators
- refs/iterator: implement seeking for reftable iterators
- refs/iterator: implement seeking for merged iterators
- refs/iterator: provide infrastructure to re-seek iterators
- refs/iterator: separate lifecycle from iteration
- refs: stop re-verifying common prefixes for availability
- refs/files: batch refname availability checks for initial transactions
- refs/files: batch refname availability checks for normal transactions
- refs/reftable: batch refname availability checks
- refs: introduce function to batch refname availability checks
- builtin/update-ref: skip ambiguity checks when parsing object IDs
- object-name: allow skipping ambiguity checks inget_oid()family
- object-name: introducerepo_get_oid_with_flags()
(this branch is used by kn/non-transactional-batch-updates.)The code paths to check whether a refname X is available (by seeing if another ref X/Y exists, etc.) have been optimized.
Will merge to 'next'.
source: <[email protected]>* tb/multi-cruft-pack-refresh-fix (2025-03-11) 6 commits
-builtin/pack-objects.c: freshen objects from existing cruft packs
-builtin/repack.c: simplify cruft pack aggregation
- pack-objects: generate cruft packs at most one object over threshold
-t/lib-cruft.sh: extract some cruft-related helpers
-t7704-repack-cruft.sh: consolidatewrite_blob()
-t/t5329-pack-objects-cruft.sh: evict 'repack'-related testsCertain "cruft" objects would have never been refreshed when there are multiple cruft packs in the repository, which has been corrected.
source: <[email protected]>* jk/zlib-inflate-fixes (2025-02-25) 10 commits
-unpack_loose_rest(): rewrite return handling for clarity
-unpack_loose_rest(): simplify error handling
-unpack_loose_rest(): never clean up zstream
-unpack_loose_rest(): avoid numeric comparison of zlib status
-unpack_loose_header(): avoid numeric comparison of zlib status
-git_inflate(): skipzlib_post_call()sanity check onZ_NEED_DICT
-unpack_loose_header(): fix infinite loop on broken zlib input
-unpack_loose_header(): report headers without NUL as "bad"
-unpack_loose_header(): simplifynext_outassignment
-loose_object_info():BUG()on inflating content with unknown typeFix our use of zlib corner cases.
Still being discussed.
cf. <[email protected]>
source: <[email protected]>* cc/signed-fast-export-import (2025-03-10) 6 commits
- fast-export, fast-import: add support for signed-commits
- fast-export: do not modify memory fromget_commit_buffer
- git-fast-export.adoc: clarify why 'verbatim' may not be a good idea
- fast-export: rename --signed-tags='warn' to 'warn-verbatim'
- fast-export: fix missing whitespace after switch
- git-fast-import.adoc: add missing LF in the BNF"git fast-export | git fast-import" learns to deal with commit and tag objects with embedded signatures a bit better.
Will merge to 'next'.
cf. <CABPp-BGyA8iBA0BFO8FcpZAMca94aVu2vHHRi4Oz=nCWxJSDPg@mail.gmail.com>
source: <[email protected]>* jt/diff-pairs (2025-03-03) 4 commits (merged to 'next' on 2025-03-03 at
32346e0c3b)
+ builtin/diff-pairs: allow explicit diff queue flush
+ builtin: introduce diff-pairs command
+ diff: add option to skip resolving diff statuses
+ diff: returndiff_filepairfrom diff queue helpersA post-processing filter for "diff --raw" output has been introduced.
Will cook in 'next'.
source: <[email protected]>* ib/diff-S-G-with-longhand (2025-02-12) 10 commits
- diff: docs: Use --patch-{grep,modifies} over -G/-S
- diff: --pickaxe-{all,regex} help: Add --patch-{grep,modifies}
- diff: test: Use --patch-{grep,modifies} over -G/-S
- completion: Support --patch-{grep,modifies}
- diff: --patch-{grep,modifies} arg names for -G and -S
- docs: gitdiffcore: -G and -S: Use regex/string placeholders
- diff: short help: Add -G and --pickaxe-grep
- diff: short help: Correct -S description
- diff: -G description: Correct copy/paste error
- t/t4209-log-pickaxe: Naming typo: -G takes a regexThe commands in the "diff" family learned longhands for "-S" and "-G" options.
The core part looked mostly good.
source: <[email protected]>* ps/reftable-windows-unlink-fix (2025-02-18) 2 commits
- reftable: ignore file-in-use errors when unlink(3p) fails on Windows
- Merge branch 'ps/reftable-sans-compat-util' into ps/reftable-windows-unlink-fix (this branch uses ps/reftable-sans-compat-util.)Portability fix.
Waiting for the base topic to settle.
source: <20250206-b4-pks-reftable-win32-in-use-errors-v2-1-56985a4f6186@pks.im>* ps/reftable-sans-compat-util (2025-02-18) 18 commits
-Makefile: skip reftable library for Coccinelle
- reftable: decouple from Git codebase by pulling in "compat/posix.h"
-git-compat-util.h: split out POSIX-emulating bits
- compat/mingw: split out POSIX-related bits
- reftable/basics: introduceREFTABLE_UNUSEDannotation
- reftable/basics: stop usingSWAP()macro
- reftable/stack: stop usingsleep_millisec()
- reftable/system: introducereftable_rand()
- reftable/reader: stop usingARRAY_SIZE()macro
- reftable/basics: provide wrappers for big endian conversion
- reftable/basics: stop usingst_mult()in array allocators
- reftable: stop usingBUG()in trivial cases
- reftable/record: don'tBUG()inreftable_record_cmp()
- reftable/record: stop usingBUG()inreftable_record_init()
- reftable/record: stop usingCOPY_ARRAY()
- reftable/blocksource: stop usingxmmap()
- reftable/stack: stop usingwrite_in_full()
- reftable/stack: stop usingread_in_full()
(this branch is used by ps/reftable-windows-unlink-fix.)Make the code in reftable library less reliant on the service routines it used to borrow from Git proper, to make it easier to use by external users of the library.
Waiting for Acks, especially for Windows bits?
source: <20250218-pks-reftable-drop-git-compat-util-v6-0-8c1f39fb4c02@pks.im>* sj/ref-consistency-checks-more (2025-02-27) 9 commits (merged to 'next' on 2025-03-05 at
6bea9376c4)
+ builtin/fsck: addgit refs verifychild process
+ packed-backend: check whether the "packed-refs" is sorted
+ packed-backend: add "packed-refs" entry consistency check
+ packed-backend: check whether the refname contains NUL characters
+ packed-backend: add "packed-refs" header consistency check
+ packed-backend: check if header starts with "# pack-refs with: "
+ packed-backend: check whether the "packed-refs" is regular file
+ builtin/refs: get worktrees without reading head information
+ t0602: use subshell to ensure working directory unchanged"git fsck" becomes more careful when checking the refs.
Will cook in 'next'.
source: <Z8CMx7O19PMs9sVY@ArchLinux>* jc/doc-attr-tree (2024-12-14) 1 commit
- doc: give attr.tree a bit more visibilityMake sure that "git --attr-source=X",
GIT_ATTR_SOURCE, and attr.tree configuration variables appear at the same places in the documentation.On hold.
cf. <[email protected]>
source: <[email protected]>* tb/incremental-midx-part-2 (2024-11-20) 15 commits
- midx: implement writing incremental MIDX bitmaps
-pack-bitmap.c: useewah_or_iteratorfor type bitmap iterators
-pack-bitmap.c: keep track of each layer's type bitmaps
- ewah: implementstruct ewah_or_iterator
-pack-bitmap.c: apply pseudo-merge commits with incremental MIDXs
-pack-bitmap.c: compute disk-usage with incremental MIDXs
-pack-bitmap.c: teachrev-list --test-bitmapabout incremental MIDXs
-pack-bitmap.c: support bitmap pack-reuse with incremental MIDXs
-pack-bitmap.c: teachshow_objects_for_type()about incremental MIDXs
-pack-bitmap.c: teachbitmap_for_commit()about incremental MIDXs
-pack-bitmap.c: open and store incremental bitmap layers
- pack-revindex: prepare for incremental MIDX bitmaps
- Documentation: describe incremental MIDX bitmaps
- Merge branch 'tb/pseudo-merge-bitmap-fixes' into tb/incremental-midx-part-2
- Merge branch 'tb/incremental-midx-part-1' into tb/incremental-midx-part-2Incrementally updating multi-pack index files.
Expecting a (hopefully minor and final) reroll.
cf. <[email protected]> <[email protected]>
source: <[email protected]>* ej/cat-file-remote-object-info (2025-02-24) 8 commits
- cat-file: add remote-object-info to batch-command
- transport: add client support for object-info
- serve: advertise object-info feature
- fetch-pack: move fetch initialization
- fetch-pack: refactor packet writing
- t1006: split test utility functions into new "lib-cat-file.sh"
- cat-file: add declaration of variable i inside its for loop
- git-compat-util: addstrtoul_ul()with error handling"git cat-file --batch" and friends can optionally ask a remote server about objects it does not have.
source: <[email protected]>
Quoted 8 lines · Junio C Hamano
* tb/multi-cruft-pack-refresh-fix (2025-03-11) 6 commits
-builtin/pack-objects.c: freshen objects from existing cruft packs
-builtin/repack.c: simplify cruft pack aggregation
- pack-objects: generate cruft packs at most one object over threshold
-t/lib-cruft.sh: extract some cruft-related helpers
-t7704-repack-cruft.sh: consolidatewrite_blob()
-t/t5329-pack-objects-cruft.sh: evict 'repack'-related tests
Quoted 4 lines
Certain "cruft" objects would have never been refreshed when there are multiple cruft packs in the repository, which has been corrected.
source: <[email protected]>
This one can be replaced with "v5" of this topic, which only fixes the freshening bug, and punts on the --max-pack-size versus --combine-cruft-below-size debacle.
I'll send a separate series to address the latter shortly.
Quoted 17 lines
* tb/incremental-midx-part-2 (2024-11-20) 15 commits
- midx: implement writing incremental MIDX bitmaps
-pack-bitmap.c: useewah_or_iteratorfor type bitmap iterators
-pack-bitmap.c: keep track of each layer's type bitmaps
- ewah: implementstruct ewah_or_iterator
-pack-bitmap.c: apply pseudo-merge commits with incremental MIDXs
-pack-bitmap.c: compute disk-usage with incremental MIDXs
-pack-bitmap.c: teachrev-list --test-bitmapabout incremental MIDXs
-pack-bitmap.c: support bitmap pack-reuse with incremental MIDXs
-pack-bitmap.c: teachshow_objects_for_type()about incremental MIDXs
-pack-bitmap.c: teachbitmap_for_commit()about incremental MIDXs
-pack-bitmap.c: open and store incremental bitmap layers
- pack-revindex: prepare for incremental MIDX bitmaps
- Documentation: describe incremental MIDX bitmaps
- Merge branch 'tb/pseudo-merge-bitmap-fixes' into tb/incremental-midx-part-2
- Merge branch 'tb/incremental-midx-part-1' into tb/incremental-midx-part-2
Quoted 5 lines
Incrementally updating multi-pack index files.
Expecting a (hopefully minor and final) reroll.
cf. <[email protected]> <[email protected]>
source: <[email protected]>
Thanks. This is rerolled, but it would be good to get some review from others that are familiar with bitmaps before merging. It's not a very long series by lines of code, but it is rather subtle, so the more careful reviews it gets the better.
Thanks,
Taylor
Quoted 9 lines · Junio C Hamano
* kn/reflog-drop (2025-03-10) 1 commit
- reflog: implement subcommand to drop reflogs"git reflog" learns "drop" subcommand, that discards the entire reflog data for a ref.
Will merge to 'next'?
source: <20250310-493-add-command-to-purge-reflog-entries-v2-1-05caa92e0bfa@gmail.com>
I did a re-roll here, with some fixes based on Patrick's review. I will try and get another review before we move this forward. Thanks!
Quoted 9 lines · Karthik Nayak
Quoted 6 lines · Junio C Hamano
* kn/reflog-drop (2025-03-10) 1 commit
- reflog: implement subcommand to drop reflogs"git reflog" learns "drop" subcommand, that discards the entire reflog data for a ref.
Quoted 6 lines
Quoted 3 lines
Will merge to 'next'?
source: <20250310-493-add-command-to-purge-reflog-entries-v2-1-05caa92e0bfa@gmail.com>I did a re-roll here, with some fixes based on Patrick's review. I will try and get another review before we move this forward. Thanks!
I have the v3 queued; haven't caught up with the reviews with today's timestamp yet, though.
Thanks.