<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/contrib, branch seen</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=seen</id>
<link rel='self' href='https://git.shady.money/git/atom?h=seen'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2026-04-17T21:26:37Z</updated>
<entry>
<title>Merge branch 'pt/fsmonitor-linux' into seen</title>
<updated>2026-04-17T21:26:37Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-17T21:26:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=41a92761a28293b45a2aff5123f006a5e1c538dd'/>
<id>urn:sha1:41a92761a28293b45a2aff5123f006a5e1c538dd</id>
<content type='text'>
The fsmonitor daemon has been implemented for Linux.

* pt/fsmonitor-linux:
  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
</content>
</entry>
<entry>
<title>Merge branch 'cs/subtree-split-recursion' into seen</title>
<updated>2026-04-17T21:26:32Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-17T21:26:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0363623f5be397ddeac650d2473ff2fddee1b273'/>
<id>urn:sha1:0363623f5be397ddeac650d2473ff2fddee1b273</id>
<content type='text'>
When processing large history graphs on Debian or Ubuntu, "git
subtree" can die with a "recursion depth reached" error.

Comments?

* cs/subtree-split-recursion:
  contrib/subtree: reduce recursion during split
  contrib/subtree: functionalize split traversal
  contrib/subtree: reduce function side-effects
</content>
</entry>
<entry>
<title>fsmonitor: implement filesystem change listener for Linux</title>
<updated>2026-04-15T15:44:33Z</updated>
<author>
<name>Paul Tarjan</name>
<email>github@paulisageek.com</email>
</author>
<published>2026-04-15T13:27:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ce48de8b2c85a4e5cbeb5dd1f2cfe042dd5392e4'/>
<id>urn:sha1:ce48de8b2c85a4e5cbeb5dd1f2cfe042dd5392e4</id>
<content type='text'>
Implement the built-in fsmonitor daemon for Linux using the inotify
API, bringing it to feature parity with the existing Windows and macOS
implementations.

The implementation uses inotify rather than fanotify because fanotify
requires either CAP_SYS_ADMIN or CAP_PERFMON capabilities, making it
unsuitable for an unprivileged user-space daemon.  While inotify has
the limitation of requiring a separate watch on every directory (unlike
macOS's FSEvents, which can monitor an entire directory tree with a
single watch), it operates without elevated privileges and provides
the per-file event granularity needed for fsmonitor.

The listener uses inotify_init1(O_NONBLOCK) with a poll loop that
checks for events with a 50-millisecond timeout, keeping the inotify
queue well-drained to minimize the risk of overflows.  Bidirectional
hashmaps map between watch descriptors and directory paths for efficient
event resolution.  Directory renames are tracked using inotify's cookie
mechanism to correlate IN_MOVED_FROM and IN_MOVED_TO event pairs; a
periodic check detects stale renames where the matching IN_MOVED_TO
never arrived, forcing a resync.

New directory creation triggers recursive watch registration to ensure
all subdirectories are monitored.  The IN_MASK_CREATE flag is used
where available to prevent modifying existing watches, with a fallback
for older kernels.  When IN_MASK_CREATE is available and
inotify_add_watch returns EEXIST, it means another thread or recursive
scan has already registered the watch, so it is safe to ignore.

Remote filesystem detection uses statfs() to identify network-mounted
filesystems (NFS, CIFS, SMB, FUSE, etc.) via their magic numbers.
Mount point information is read from /proc/mounts and matched against
the statfs f_fsid to get accurate, human-readable filesystem type names
for logging.  When the .git directory is on a remote filesystem, the
IPC socket falls back to $HOME or a user-configured directory via the
fsmonitor.socketDir setting.

Based-on-patch-by: Eric DeCosta &lt;edecosta@mathworks.com&gt;
Based-on-patch-by: Marziyeh Esipreh &lt;marziyeh.esipreh@gmail.com&gt;
Signed-off-by: Paul Tarjan &lt;github@paulisageek.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>fsmonitor: rename fsm-settings-darwin.c to fsm-settings-unix.c</title>
<updated>2026-04-15T15:44:33Z</updated>
<author>
<name>Paul Tarjan</name>
<email>github@paulisageek.com</email>
</author>
<published>2026-04-15T13:27:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7422200bfa1728139962cbf7481f8945add9689e'/>
<id>urn:sha1:7422200bfa1728139962cbf7481f8945add9689e</id>
<content type='text'>
The fsmonitor settings logic in fsm-settings-darwin.c is not
Darwin-specific and will be reused by the upcoming Linux
implementation.  Rename it to fsm-settings-unix.c to reflect that it
is shared by all Unix platforms.

Update the build files (meson.build and CMakeLists.txt) to use
FSMONITOR_OS_SETTINGS for fsm-settings, matching the approach already
used for fsm-ipc.

Based-on-patch-by: Eric DeCosta &lt;edecosta@mathworks.com&gt;
Based-on-patch-by: Marziyeh Esipreh &lt;marziyeh.esipreh@gmail.com&gt;
Signed-off-by: Paul Tarjan &lt;github@paulisageek.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>fsmonitor: rename fsm-ipc-darwin.c to fsm-ipc-unix.c</title>
<updated>2026-04-15T15:44:33Z</updated>
<author>
<name>Paul Tarjan</name>
<email>github@paulisageek.com</email>
</author>
<published>2026-04-15T13:27:30Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ff384ebfad074321e22b2fb310a8f35df19576d6'/>
<id>urn:sha1:ff384ebfad074321e22b2fb310a8f35df19576d6</id>
<content type='text'>
The fsmonitor IPC path logic in fsm-ipc-darwin.c is not
Darwin-specific and will be reused by the upcoming Linux
implementation.  Rename it to fsm-ipc-unix.c to reflect that it
is shared by all Unix platforms.

Introduce FSMONITOR_OS_SETTINGS (set to "unix" for non-Windows, "win32"
for Windows) as a separate variable from FSMONITOR_DAEMON_BACKEND so
that the build files can distinguish between platform-specific files
(listen, health, path-utils) and shared Unix files (ipc, settings).

Move fsm-ipc to the FSMONITOR_OS_SETTINGS section in the Makefile, and
switch fsm-path-utils to use FSMONITOR_DAEMON_BACKEND since path-utils
is platform-specific (there will be separate darwin and linux versions).

Based-on-patch-by: Eric DeCosta &lt;edecosta@mathworks.com&gt;
Based-on-patch-by: Marziyeh Esipreh &lt;marziyeh.esipreh@gmail.com&gt;
Signed-off-by: Paul Tarjan &lt;github@paulisageek.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Revert "cmake: use writev(3p) wrapper as needed"</title>
<updated>2026-04-09T21:47:28Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-09T21:47:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=9c30dddefdfe22329fdad84e80a4eca117df7bd7'/>
<id>urn:sha1:9c30dddefdfe22329fdad84e80a4eca117df7bd7</id>
<content type='text'>
This reverts commit 89152af176ea94ea8f3249115b6e00827fbbeb70; let's
not use writev() for now.
</content>
</entry>
<entry>
<title>Merge branch 'js/cmake-needs-writev-compat-too'</title>
<updated>2026-04-03T22:24:45Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-03T22:24:45Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ac340a635dc8f338ee4ad6a6f74c974cdcda7217'/>
<id>urn:sha1:ac340a635dc8f338ee4ad6a6f74c974cdcda7217</id>
<content type='text'>
Build instruction for recently added writev() compatibility wrapper
has been also added to cmake.

* js/cmake-needs-writev-compat-too:
  cmake: use writev(3p) wrapper as needed
</content>
</entry>
<entry>
<title>cmake: use writev(3p) wrapper as needed</title>
<updated>2026-04-03T17:34:01Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2026-04-03T08:55:02Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=89152af176ea94ea8f3249115b6e00827fbbeb70'/>
<id>urn:sha1:89152af176ea94ea8f3249115b6e00827fbbeb70</id>
<content type='text'>
This is a companion patch of 3b9b2c2a29a (compat/posix: introduce
writev(3p) wrapper, 2026-03-13) where support for using the `writev()`
wrapper was introduced in the `Makefile` and the Meson-based build, but
the CMake build still needs that treatment, too.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'jk/diff-highlight-more'</title>
<updated>2026-04-01T17:28:18Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-01T17:28:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=8744cef3242e3bcace5f86a24365154a4405544a'/>
<id>urn:sha1:8744cef3242e3bcace5f86a24365154a4405544a</id>
<content type='text'>
Various updates to contrib/diff-highlight, including documentation
updates, test improvements, and color configuration handling.

* jk/diff-highlight-more:
  diff-highlight: fetch all config with one process
  diff-highlight: allow module callers to pass in color config
  diff-highlight: test color config
  diff-highlight: use test_decode_color in tests
  t: add matching negative attributes to test_decode_color
  diff-highlight: check diff-highlight exit status in tests
  diff-highlight: drop perl version dependency back to 5.8
  diff-highlight: mention build instructions
</content>
</entry>
<entry>
<title>Merge branch 'ps/build-tweaks'</title>
<updated>2026-03-27T18:00:01Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-03-27T18:00:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d1f07dd50087bef18246feffb963d73b23e2cdd6'/>
<id>urn:sha1:d1f07dd50087bef18246feffb963d73b23e2cdd6</id>
<content type='text'>
Tweak the build infrastructure by moving tools around.

* ps/build-tweaks:
  meson: precompile "git-compat-util.h"
  meson: compile compatibility sources separately
  git-compat-util.h: move warning infra to prepare for PCHs
  builds: move build scripts into "tools/"
  contrib: move "update-unicode.sh" script into "tools/"
  contrib: move "coverage-diff.sh" script into "tools/"
  contrib: move "coccinelle/" directory into "tools/"
  Introduce new "tools/" directory
</content>
</entry>
</feed>
