fsmonitor: relocate socket file if .git directory is remote

If the .git directory is on a remote filesystem, create the socket
file in 'fsmonitor.socketDir' if it is defined, else create it in $HOME.

Signed-off-by: Eric DeCosta <edecosta@mathworks.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Eric DeCosta
2022-10-04 17:32:27 +00:00
committed by Junio C Hamano
parent 508c1a572d
commit 6beb2688d3
8 changed files with 78 additions and 13 deletions

View File

@@ -18,7 +18,7 @@ int fsmonitor_ipc__is_supported(void)
return 0;
}
const char *fsmonitor_ipc__get_path(void)
const char *fsmonitor_ipc__get_path(struct repository *r)
{
return NULL;
}
@@ -47,11 +47,9 @@ int fsmonitor_ipc__is_supported(void)
return 1;
}
GIT_PATH_FUNC(fsmonitor_ipc__get_path, "fsmonitor--daemon.ipc")
enum ipc_active_state fsmonitor_ipc__get_state(void)
{
return ipc_get_active_state(fsmonitor_ipc__get_path());
return ipc_get_active_state(fsmonitor_ipc__get_path(the_repository));
}
static int spawn_daemon(void)
@@ -81,8 +79,8 @@ int fsmonitor_ipc__send_query(const char *since_token,
trace2_data_string("fsm_client", NULL, "query/command", tok);
try_again:
state = ipc_client_try_connect(fsmonitor_ipc__get_path(), &options,
&connection);
state = ipc_client_try_connect(fsmonitor_ipc__get_path(the_repository),
&options, &connection);
switch (state) {
case IPC_STATE__LISTENING:
@@ -117,13 +115,13 @@ try_again:
case IPC_STATE__INVALID_PATH:
ret = error(_("fsmonitor_ipc__send_query: invalid path '%s'"),
fsmonitor_ipc__get_path());
fsmonitor_ipc__get_path(the_repository));
goto done;
case IPC_STATE__OTHER_ERROR:
default:
ret = error(_("fsmonitor_ipc__send_query: unspecified error on '%s'"),
fsmonitor_ipc__get_path());
fsmonitor_ipc__get_path(the_repository));
goto done;
}
@@ -149,8 +147,8 @@ int fsmonitor_ipc__send_command(const char *command,
options.wait_if_busy = 1;
options.wait_if_not_found = 0;
state = ipc_client_try_connect(fsmonitor_ipc__get_path(), &options,
&connection);
state = ipc_client_try_connect(fsmonitor_ipc__get_path(the_repository),
&options, &connection);
if (state != IPC_STATE__LISTENING) {
die(_("fsmonitor--daemon is not running"));
return -1;