Files
git/compat/fsmonitor/fsm-settings-win32.c
Eric DeCosta 508c1a572d fsmonitor: refactor filesystem checks to common interface
Provide a common interface for getting basic filesystem information
including filesystem type and whether the filesystem is remote.

Refactor existing code for getting basic filesystem info and detecting
remote file systems to the new interface.

Refactor filesystem checks to leverage new interface. For macOS,
error-out if the Unix Domain socket (UDS) file is on a remote
filesystem.

Signed-off-by: Eric DeCosta <edecosta@mathworks.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-10-05 11:05:22 -07:00

38 lines
1.0 KiB
C

#include "cache.h"
#include "config.h"
#include "repository.h"
#include "fsmonitor.h"
#include "fsmonitor-settings.h"
#include "fsmonitor-path-utils.h"
/*
* 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;
}
enum fsmonitor_reason fsm_os__incompatible(struct repository *r)
{
enum fsmonitor_reason reason;
reason = check_vfs4git(r);
if (reason != FSMONITOR_REASON_OK)
return reason;
return FSMONITOR_REASON_OK;
}