Subject: Re: Issue when using the fsmonitor-watchman hook?

From: Derrick Stolee <[email-masked]>
Date: Mon, 11 Apr 2022 09:46:24 -0400

On 4/10/2022 2:21 PM, Kaartic Sivaraam wrote:
> Hi all,

Hi Kaartic,
 
> I recently installed v2.36.0-rc1 and started getting the warning about
> the deprecation of core.useBuiltinFSMonitor configuration. It appeared
> for each 'git' invocation which was a bit annoying. Fortunately, I had
> some spare time so I went the route of actually applying the suggested
> alternative rather than suppressing the warning.

So, the new alternative is to set core.fsmonitor=true, which continues
to use the builtin FS Monitor. What advice did you see that was
different?

(Also, this thread will only apply to Git for Windows, since core Git
did not include core.useBuiltinFSMonitor. Feel free to move this
discussion to [1] if you'd rather talk there.)

[1] https://github.com/git-for-windows/git/discussions/3251

Hopefully using core.fsmonitor=true solves your issue.

---

If you really want to use the Watchman-based hook solution, then
here's the rest of my response:

> According to the git-hooks documentation, I configured core.fsmonitor
> to '.git/hooks/fsmonitor-watchman' and after that for some reason all
> the styles in the terminal seems to have gone awry (I use Windows
> Terminal with PowerShell 7). A sample demonstration.

The hooks documentation will only discuss the external hook-based
FS Monitor, not the builtin one, so you are changing your behavior
here.
> Also, I got the following error messages when running 'git status'
> 
>> git status
> open2: exec of watchman -j --no-pretty failed: No such file or directory at .git/hooks/fsmonitor-watchman line 78.

> It's clear that I'm doing something wrong. I'm not sure what, though.
> The fact that I have no clear idea about what the fsmonitor-watchman
> hook does, does not help at all. It would be great if someone could
> help me understand what I got wrong :)

The .git/hooks/ directory is populated when your repository is
created. That hook might not have existed in your installed templates
when your repo was initialized.

Further, the default name is "fsmonitor-watchman.sample" and you need
to change the name (after inspecting the script to ensure it is not
malicious). You can also find the latest copy in a more protected
place: C:\Program Files\Git\mingw64\share\git-core\templates\hooks

The .NET version of Scalar used to update the hook from this
protected directory on upgrade. With the builtin mechanism, such
efforts are not necessary.

Thanks,
-Stolee