2022-05-26 23:46:59 +02:00
|
|
|
#include "cache.h"
|
|
|
|
#include "config.h"
|
|
|
|
#include "repository.h"
|
2022-05-26 23:47:03 +02:00
|
|
|
#include "fsmonitor.h"
|
2022-10-04 19:32:26 +02:00
|
|
|
#include "fsmonitor-settings.h"
|
|
|
|
#include "fsmonitor-path-utils.h"
|
2022-05-26 23:46:59 +02:00
|
|
|
|
2022-05-26 23:47:00 +02:00
|
|
|
/*
|
|
|
|
* VFS for Git is incompatible with FSMonitor.
|
|
|
|
*
|
|
|
|
* Granted, core Git does not know anything about VFS for Git and we
|
|
|
|
* shouldn't make assumptions about a downstream feature, but users
|
|
|
|
* can install both versions. And this can lead to incorrect results
|
|
|
|
* from core Git commands. So, without bringing in any of the VFS for
|
|
|
|
* Git code, do a simple config test for a published config setting.
|
|
|
|
* (We do not look at the various *_TEST_* environment variables.)
|
|
|
|
*/
|
|
|
|
static enum fsmonitor_reason check_vfs4git(struct repository *r)
|
|
|
|
{
|
|
|
|
const char *const_str;
|
|
|
|
|
|
|
|
if (!repo_config_get_value(r, "core.virtualfilesystem", &const_str))
|
|
|
|
return FSMONITOR_REASON_VFS4GIT;
|
|
|
|
|
|
|
|
return FSMONITOR_REASON_OK;
|
|
|
|
}
|
|
|
|
|
2022-10-04 19:32:28 +02:00
|
|
|
enum fsmonitor_reason fsm_os__incompatible(struct repository *r, int ipc)
|
2022-05-26 23:46:59 +02:00
|
|
|
{
|
2022-05-26 23:47:00 +02:00
|
|
|
enum fsmonitor_reason reason;
|
|
|
|
|
|
|
|
reason = check_vfs4git(r);
|
|
|
|
if (reason != FSMONITOR_REASON_OK)
|
|
|
|
return reason;
|
|
|
|
|
2022-05-26 23:46:59 +02:00
|
|
|
return FSMONITOR_REASON_OK;
|
|
|
|
}
|