<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/compat, branch next</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=next</id>
<link rel='self' href='https://git.shady.money/git/atom?h=next'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2026-04-14T20:33:08Z</updated>
<entry>
<title>Revert "Merge branch 'pt/fsmonitor-linux' into next"</title>
<updated>2026-04-14T20:33:08Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-14T20:33:08Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1d1c64f7a3e08160d84ce25dcef5b94569b15fc1'/>
<id>urn:sha1:1d1c64f7a3e08160d84ce25dcef5b94569b15fc1</id>
<content type='text'>
This reverts commit 37fa47889d5763ec3876606fb475bb68af9fd90f,
reversing changes made to 289fcba08108603e2370294eeff384fb2090ed6a,
as the tests in the topic was pointed out to be seriously broken.

cf. &lt;ad6hovxCkwMTG11U@szeder.dev&gt;
</content>
</entry>
<entry>
<title>Merge branch 'pt/fsmonitor-linux' into next</title>
<updated>2026-04-13T20:58:18Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-13T20:58:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=37fa47889d5763ec3876606fb475bb68af9fd90f'/>
<id>urn:sha1:37fa47889d5763ec3876606fb475bb68af9fd90f</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>Revert "compat/posix: introduce writev(3p) wrapper"</title>
<updated>2026-04-09T21:48:24Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-09T21:48:24Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7798034171030be0909c56377a4e0e10e6d2df93'/>
<id>urn:sha1:7798034171030be0909c56377a4e0e10e6d2df93</id>
<content type='text'>
This reverts commit 3b9b2c2a29a1d529ca9884fa0a6529f6e2496abe; let's
not use writev() for now.
</content>
</entry>
<entry>
<title>fsmonitor: implement filesystem change listener for Linux</title>
<updated>2026-04-09T17:59:28Z</updated>
<author>
<name>Paul Tarjan</name>
<email>github@paulisageek.com</email>
</author>
<published>2026-04-09T04:59:30Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c9f60a68b82289f072ef6a1edc8aabc94a290f9e'/>
<id>urn:sha1:c9f60a68b82289f072ef6a1edc8aabc94a290f9e</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-09T17:59:28Z</updated>
<author>
<name>Paul Tarjan</name>
<email>github@paulisageek.com</email>
</author>
<published>2026-04-09T04:59:29Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=92efd36e55c5c5f36cec60984f6d2cea80109c36'/>
<id>urn:sha1:92efd36e55c5c5f36cec60984f6d2cea80109c36</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-09T17:59:28Z</updated>
<author>
<name>Paul Tarjan</name>
<email>github@paulisageek.com</email>
</author>
<published>2026-04-09T04:59:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=fed191168e19f84b22d650f7659059f461bd84d2'/>
<id>urn:sha1:fed191168e19f84b22d650f7659059f461bd84d2</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>compat/win32: add pthread_cond_timedwait</title>
<updated>2026-04-09T17:59:27Z</updated>
<author>
<name>Paul Tarjan</name>
<email>github@paulisageek.com</email>
</author>
<published>2026-04-09T04:59:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e6efea2affe798bfa8483e93b6aea9e6b7b1b708'/>
<id>urn:sha1:e6efea2affe798bfa8483e93b6aea9e6b7b1b708</id>
<content type='text'>
Add a pthread_cond_timedwait() implementation to the Windows pthread
compatibility layer using SleepConditionVariableCS() with a millisecond
timeout computed from the absolute deadline.

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>compat/winansi: drop pre-Vista workaround</title>
<updated>2026-04-06T17:06:22Z</updated>
<author>
<name>Matthias Aßhauer</name>
<email>mha1993@live.de</email>
</author>
<published>2026-04-06T05:45:30Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=2f8c3f6a5a6d6a3de205be709e1a598b9d4b0b3e'/>
<id>urn:sha1:2f8c3f6a5a6d6a3de205be709e1a598b9d4b0b3e</id>
<content type='text'>
1edeb9a (Win32: warn if the console font doesn't support Unicode,
2014-06-10) introduced both code to detect the current console font on
Windows Vista and newer and a fallback for older systems to detect the
default console font and issue a warning if that font doesn't support
unicode.

Since we haven't supported any Windows older than Vista in almost a
decade, we don't need to keep the workaround.

Signed-off-by: Matthias Aßhauer &lt;mha1993@live.de&gt;
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>unify and bump _WIN32_WINNT definition to Windows 8.1</title>
<updated>2026-04-06T17:06:20Z</updated>
<author>
<name>Matthias Aßhauer</name>
<email>mha1993@live.de</email>
</author>
<published>2026-04-06T05:45:29Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=66dd13f3f72e8cad1327b6b134dec079936c4b07'/>
<id>urn:sha1:66dd13f3f72e8cad1327b6b134dec079936c4b07</id>
<content type='text'>
Git for Windows doesn't support anything prior to Windows 8.1 since 2.47.0
and Git followed along with commits like ce6ccba (mingw: drop Windows
7-specific work-around, 2025-08-04).

There is no need to pretend to the compiler that we still support Windows
Vista, just to lock us out of easy access to newer APIs. There is also no
need to have conflicting and unused definitions claiming we support some
versions of Windows XP or even Windows NT 4.0.

Bump all definitions of _WIN32_WINNT to a realistic value of Windows 8.1.
This will also simplify code for a followup commit that will improve cpu
core detection on multi-socket systems.

Signed-off-by: Matthias Aßhauer &lt;mha1993@live.de&gt;
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>mingw: use strftime() directly in UCRT builds</title>
<updated>2026-04-03T17:36:48Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2026-04-03T09:56:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c664ee2001a1ea0ecbc6448b24303687e6caf1cb'/>
<id>urn:sha1:c664ee2001a1ea0ecbc6448b24303687e6caf1cb</id>
<content type='text'>
The `mingw_strftime()` wrapper exists to work around msvcrt.dll's
incomplete `strftime()` implementation by dynamically loading the
version from ucrtbase.dll at runtime via `LoadLibrary()` +
`GetProcAddress()`. When the binary is already linked against UCRT
(i.e. when building in the UCRT64 environment), the linked-in
`strftime()` is the ucrtbase.dll version, making the dynamic loading
needless churn: It's calling the very same code.

Simply guard both the declaration and implementation so that the
unnecessary work-around is skipped in UCRT builds.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
