@@ -62,22 +62,54 @@ core.protectNTFS::
6262 Defaults to `true` on Windows, and `false` elsewhere.
6363
6464core.fsmonitor::
65- If set, the value of this variable is used as a command which
66- will identify all files that may have changed since the
67- requested date/time. This information is used to speed up git by
68- avoiding unnecessary processing of files that have not changed.
69- See the "fsmonitor-watchman" section of linkgit:githooks[5].
65+ If set to true, enable the built-in file system monitor
66+ daemon for this working directory (linkgit:git-fsmonitor--daemon[1]).
67+ +
68+ Like hook-based file system monitors, the built-in file system monitor
69+ can speed up Git commands that need to refresh the Git index
70+ (e.g. `git status`) in a working directory with many files. The
71+ built-in monitor eliminates the need to install and maintain an
72+ external third-party tool.
73+ +
74+ The built-in file system monitor is currently available only on a
75+ limited set of supported platforms. Currently, this includes Windows
76+ and MacOS.
77+ +
78+ Otherwise, this variable contains the pathname of the "fsmonitor"
79+ hook command.
80+ +
81+ This hook command is used to identify all files that may have changed
82+ since the requested date/time. This information is used to speed up
83+ git by avoiding unnecessary scanning of files that have not changed.
84+ +
85+ See the "fsmonitor-watchman" section of linkgit:githooks[5].
86+ +
87+ Note that if you concurrently use multiple versions of Git, such
88+ as one version on the command line and another version in an IDE
89+ tool, that the definition of `core.fsmonitor` was extended to
90+ allow boolean values in addition to hook pathnames. Git versions
91+ 2.35.1 and prior will not understand the boolean values and will
92+ consider the "true" or "false" values as hook pathnames to be
93+ invoked. Git versions 2.26 thru 2.35.1 default to hook protocol
94+ V2 and will fall back to no fsmonitor (full scan). Git versions
95+ prior to 2.26 default to hook protocol V1 and will silently
96+ assume there were no changes to report (no scan), so status
97+ commands may report incomplete results. For this reason, it is
98+ best to upgrade all of your Git versions before using the built-in
99+ file system monitor.
70100
71101core.fsmonitorHookVersion::
72- Sets the version of hook that is to be used when calling fsmonitor.
73- There are currently versions 1 and 2. When this is not set,
74- version 2 will be tried first and if it fails then version 1
75- will be tried. Version 1 uses a timestamp as input to determine
76- which files have changes since that time but some monitors
77- like watchman have race conditions when used with a timestamp.
78- Version 2 uses an opaque string so that the monitor can return
79- something that can be used to determine what files have changed
80- without race conditions.
102+ Sets the protocol version to be used when invoking the
103+ "fsmonitor" hook.
104+ +
105+ There are currently versions 1 and 2. When this is not set,
106+ version 2 will be tried first and if it fails then version 1
107+ will be tried. Version 1 uses a timestamp as input to determine
108+ which files have changes since that time but some monitors
109+ like Watchman have race conditions when used with a timestamp.
110+ Version 2 uses an opaque string so that the monitor can return
111+ something that can be used to determine what files have changed
112+ without race conditions.
81113
82114core.trustctime::
83115 If false, the ctime differences between the index and the
0 commit comments