diff --git a/fsmonitor-ipc.c b/fsmonitor-ipc.c index 417069725209b1..6cbfa1b282fbfc 100644 --- a/fsmonitor-ipc.c +++ b/fsmonitor-ipc.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "config.h" #include "fsmonitor.h" #include "simple-ipc.h" #include "fsmonitor-ipc.h" @@ -10,6 +11,8 @@ int fsmonitor_ipc__is_supported(void) { + if (git_config_get_virtualfilesystem()) + return 0; return 1; } diff --git a/fsmonitor-settings.c b/fsmonitor-settings.c index 1aa77b3193e1ff..c900199423029c 100644 --- a/fsmonitor-settings.c +++ b/fsmonitor-settings.c @@ -127,6 +127,9 @@ static void lookup_fsmonitor_settings(struct repository *r) enum fsmonitor_mode fsm_settings__get_mode(struct repository *r) { + if (git_config_get_virtualfilesystem()) + return FSMONITOR_MODE_INCOMPATIBLE; + if (!r->settings.fsmonitor) lookup_fsmonitor_settings(r); diff --git a/t/t1093-virtualfilesystem.sh b/t/t1093-virtualfilesystem.sh index 8ba9a2a75e093a..0f43fc06e01571 100755 --- a/t/t1093-virtualfilesystem.sh +++ b/t/t1093-virtualfilesystem.sh @@ -368,4 +368,15 @@ test_expect_success 'folder with same prefix as file' ' test_cmp expected actual ' +test_expect_success 'virtualfilsystem hook disables built-in FSMonitor ' ' + clean_repo && + test_config core.usebuiltinfsmonitor true && + write_script .git/hooks/virtualfilesystem <<-\EOF && + printf "dir1/\0" + EOF + git config core.virtualfilesystem .git/hooks/virtualfilesystem && + git status && + test_must_fail git fsmonitor--daemon status +' + test_done