On Thu, Apr 29 2021, Johannes Schindelin via GitGitGadget wrote: > From: Johannes Schindelin <johannes.schindelin@xxxxxx> > > The entire point of the FSMonitor is to monitor the worktree changes in > a more efficient manner than `lstat()`ing all worktree files every time > we refresh the index. > > But if there is no worktree, FSMonitor has nothing to monitor. > > So let's ignore if an FSMonitor is configured (e.g. in `~/.gitconfig`) > and we're running in a repository without worktree. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > fsmonitor: only enable it in non-bare repositories > > Since I released Git for Windows v2.31.0, with brief interruption of two > weeks, I enabled the built-in FSMonitor via my user config, and today > was the first time I did anything in a bare repository. I was somewhat > surprised that FSMonitor gave me trouble there, as the FSMonitor does > not even make sense there... > > This patch applies on top of jh/rfc-builtin-fsmonitor (not because it > fixes a problem in the built-in FSMonitor, the bug existed for a long, > long time before those patches, but because it would otherwise cause > merge conflicts with that patch series). > > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-942%2Fdscho%2Fbare-repositories-need-no-fsmonitor-v1 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-942/dscho/bare-repositories-need-no-fsmonitor-v1 > Pull-Request: https://github.com/gitgitgadget/git/pull/942 > > config.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/config.c b/config.c > index 53e7dedc60de..fc5e744d81ca 100644 > --- a/config.c > +++ b/config.c > @@ -2515,6 +2515,12 @@ int git_config_get_max_percent_split_change(void) > > int repo_config_get_fsmonitor(struct repository *r) > { > + if (!r->worktree) { > + /* FSMonitor makes no sense in bare repositories */ > + core_fsmonitor = 0; > + return 1; > + } > + > if (r->settings.use_builtin_fsmonitor > 0) { > core_fsmonitor = "(built-in daemon)"; > return 1; > > base-commit: 14d50074ff19e68e7a8d718b22d138882087bbc9 This is surely a correct fix for now, but wouldn't it in the future also be useful to run it in bare repositories e.g. to be able cache lookups for non-existing loose objects?