Subject: Re: What's cooking in git.git (Apr 2026, #05)

From: Patrick Steinhardt <[email-masked]>
Date: Mon, 20 Apr 2026 09:19:13 +0200

On Fri, Apr 17, 2026 at 03:40:50PM -0700, Junio C Hamano wrote:
> * ss/t7004-unhide-git-failures (2026-04-14) 3 commits
>  - t7004: avoid subshells to capture git exit codes
>  - t7004: dynamically grab expected state in tests
>  - t7004: drop hardcoded tag count in invalid name test
> 
>  Test clean-up.
> 
>  Will merge to 'next'?
>  source: <[email-masked]>

I think overall this series is an improvement, but I think that the
first patch might warrant a reroll based on your suggestion.

> * ps/odb-in-memory (2026-04-10) 18 commits
>  - t/unit-tests: add tests for the in-memory object source
>  - odb: generic in-memory source
>  - odb/source-inmemory: stub out remaining functions
>  - odb/source-inmemory: implement `freshen_object()` callback
>  - odb/source-inmemory: implement `count_objects()` callback
>  - odb/source-inmemory: implement `find_abbrev_len()` callback
>  - odb/source-inmemory: implement `for_each_object()` callback
>  - odb/source-inmemory: convert to use oidtree
>  - oidtree: add ability to store data
>  - cbtree: allow using arbitrary wrapper structures for nodes
>  - odb/source-inmemory: implement `write_object_stream()` callback
>  - odb/source-inmemory: implement `write_object()` callback
>  - odb/source-inmemory: implement `read_object_stream()` callback
>  - odb/source-inmemory: implement `read_object_info()` callback
>  - odb: fix unnecessary call to `find_cached_object()`
>  - odb/source-inmemory: implement `free()` callback
>  - odb: introduce "in-memory" source
>  - Merge branch 'jt/odb-transaction-write' into ps/odb-in-memory
>  (this branch uses jt/odb-transaction-write.)
> 
>  Add a new odb "in-memory" source that is meant to only hold
>  tentative objects (like the virtual blob object that represents the
>  working tree file used by "git blame").
> 
>  Will merge to 'next'?
>  source: <[email-masked]>

I think this series is ready, yes.

> * ps/test-set-e-clean (2026-04-17) 12 commits
>  - t: detect errors outside of test cases
>  - t9902: fix use of `read` with `set -e`
>  - t6002: fix use of `expr` with `set -e`
>  - t1301: don't fail in case setfacl(1) doesn't exist or fails
>  - t0008: silence error in subshell when using `grep -v`
>  - t: prepare `test_when_finished ()`/`test_atexit()` for `set -e`
>  - t: prepare execution of potentially failing commands for `set -e`
>  - t: prepare conditional test execution for `set -e`
>  - t: prepare `git config --unset` calls for `set -e`
>  - t: prepare `stop_git_daemon ()` for `set -e`
>  - t: prepare `test_must_fail ()` for `set -e`
>  - t: prepare `test_match_signal ()` calls for `set -e`
> 
>  The test suite harness and many individual test scripts have been
>  updated to work correctly when 'set -e' is in effect, which helps
>  detect misspelled test commands.
> 
>  Will merge to 'next'?
>  source: <[email-masked]>

I'll send one more version today that will add an explicit opt-in for
this new infra, and make our CI use that opt-in.

> * sp/refs-with-less-the-repository (2026-04-04) 3 commits
>  - refs/reftable-backend: drop uses of the_repository
>  - refs: remove the_hash_algo global state
>  - refs: add struct repository parameter in get_files_ref_lock_timeout_ms()
> 
>  Reduce the reference to the_repository in the refs subsystem.
> 
>  Will merge to 'next'.
>  cf. <[email-masked]>
>  source: <[email-masked]>

> * sp/refs-reduce-the-repository (2026-04-04) 3 commits
>   (merged to 'next' on 2026-04-09 at bb1d626802)
>  + refs/reftable-backend: drop uses of the_repository
>  + refs: remove the_hash_algo global state
>  + refs: add struct repository parameter in get_files_ref_lock_timeout_ms()
> 
>  Code clean-up to use the right instance of a repository instance in
>  calls inside refs subsystem.
> 
>  Will cook in 'next'.
>  source: <[email-masked]>

(Shuffling things around a bit). I think these are both the same topic?
I guess you accidentally included them twice.

> * jt/odb-transaction-write (2026-04-02) 7 commits
>  - odb/transaction: make `write_object_stream()` pluggable
>  - object-file: generalize packfile writes to use odb_write_stream
>  - object-file: avoid fd seekback by checking object size upfront
>  - object-file: remove flags from transaction packfile writes
>  - odb: update `struct odb_write_stream` read() callback
>  - odb/transaction: use pluggable `begin_transaction()`
>  - odb: split `struct odb_transaction` into separate header
>  (this branch is used by ps/odb-in-memory.)
> 
>  ODB transaction interface is being reworked to explicitly handle
>  object writes.
> 
>  Comments?
>  source: <[email-masked]>

I'm happy with the status quo of this patch series.

> * pt/fsmonitor-linux (2026-04-15) 13 commits
>  - fsmonitor: convert shown khash to strset in do_handle_client
>  - fsmonitor: add tests for Linux
>  - fsmonitor: add timeout to daemon stop command
>  - fsmonitor: close inherited file descriptors and detach in daemon
>  - run-command: add close_fd_above_stderr option
>  - fsmonitor: implement filesystem change listener for Linux
>  - fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c
>  - fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c
>  - fsmonitor: use pthread_cond_timedwait for cookie wait
>  - compat/win32: add pthread_cond_timedwait
>  - fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon
>  - fsmonitor: fix khash memory leak in do_handle_client
>  - t9210, t9211: disable GIT_TEST_SPLIT_INDEX for scalar clone tests
> 
>  The fsmonitor daemon has been implemented for Linux.
> 
>  Will merge to 'next'?
>  source: <[email-masked]>

I'm still somewhat torn on this series, mostly as I still haven't seen
an in-depth review on later versions other than my own :/

Thanks!

Patrick