git/fsmonitor-settings.h

#ifndef FSMONITOR_SETTINGS_H
#define FSMONITOR_SETTINGS_H

struct repository;

enum fsmonitor_mode {};

/*
 * Incompatibility reasons.
 */
enum fsmonitor_reason {};

void fsm_settings__set_ipc(struct repository *r);
void fsm_settings__set_hook(struct repository *r, const char *path);
void fsm_settings__set_disabled(struct repository *r);
void fsm_settings__set_incompatible(struct repository *r,
				    enum fsmonitor_reason reason);

enum fsmonitor_mode fsm_settings__get_mode(struct repository *r);
const char *fsm_settings__get_hook_path(struct repository *r);

enum fsmonitor_reason fsm_settings__get_reason(struct repository *r);
char *fsm_settings__get_incompatible_msg(struct repository *r,
					 enum fsmonitor_reason reason);

struct fsmonitor_settings;

#ifdef HAVE_FSMONITOR_OS_SETTINGS
/*
 * Ask platform-specific code whether the repository is incompatible
 * with fsmonitor (both hook and ipc modes).  For example, if the working
 * directory is on a remote volume and mounted via a technology that does
 * not support notification events, then we should not pretend to watch it.
 *
 * fsm_os__* routines should considered private to fsm_settings__
 * routines.
 */
enum fsmonitor_reason fsm_os__incompatible(struct repository *r, int ipc);
#endif /* HAVE_FSMONITOR_OS_SETTINGS */

#endif /* FSMONITOR_SETTINGS_H */