]> git.ipfire.org Git - thirdparty/git.git/commitdiff
fsmonitor: avoid socket location check if using hook
authorEric DeCosta <edecosta@mathworks.com>
Tue, 4 Oct 2022 17:32:28 +0000 (17:32 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 5 Oct 2022 18:05:23 +0000 (11:05 -0700)
If monitoring is done via fsmonitor hook rather than IPC there is no
need to check if the location of 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>
compat/fsmonitor/fsm-settings-darwin.c
compat/fsmonitor/fsm-settings-win32.c
fsmonitor-settings.c
fsmonitor-settings.h

index 7241c4c22c9af7c24ab7c2ec6d8ce5cf462e8c72..6abbc7af3ab53cd4911edf93d91ebf18e2c5c152 100644 (file)
@@ -48,13 +48,15 @@ static enum fsmonitor_reason check_uds_volume(struct repository *r)
        return FSMONITOR_REASON_OK;
 }
 
-enum fsmonitor_reason fsm_os__incompatible(struct repository *r)
+enum fsmonitor_reason fsm_os__incompatible(struct repository *r, int ipc)
 {
        enum fsmonitor_reason reason;
 
-       reason = check_uds_volume(r);
-       if (reason != FSMONITOR_REASON_OK)
-               return reason;
+       if (ipc) {
+               reason = check_uds_volume(r);
+               if (reason != FSMONITOR_REASON_OK)
+                       return reason;
+       }
 
        return FSMONITOR_REASON_OK;
 }
index d88b06ae6101e23a823d4d7e91c21fb082ff93ab..a8af31b71de05cab939c1d8223194fa91d0cbd6a 100644 (file)
@@ -25,7 +25,7 @@ static enum fsmonitor_reason check_vfs4git(struct repository *r)
        return FSMONITOR_REASON_OK;
 }
 
-enum fsmonitor_reason fsm_os__incompatible(struct repository *r)
+enum fsmonitor_reason fsm_os__incompatible(struct repository *r, int ipc)
 {
        enum fsmonitor_reason reason;
 
index d288cbad479099d5d02fbc5f8ee5f9620d966b00..531a1b6f956fd9d7d15d1acfa386ad238e7848fd 100644 (file)
@@ -60,7 +60,7 @@ static enum fsmonitor_reason check_remote(struct repository *r)
 }
 #endif
 
-static enum fsmonitor_reason check_for_incompatible(struct repository *r)
+static enum fsmonitor_reason check_for_incompatible(struct repository *r, int ipc)
 {
        if (!r->worktree) {
                /*
@@ -77,7 +77,7 @@ static enum fsmonitor_reason check_for_incompatible(struct repository *r)
                reason = check_remote(r);
                if (reason != FSMONITOR_REASON_OK)
                        return reason;
-               reason = fsm_os__incompatible(r);
+               reason = fsm_os__incompatible(r, ipc);
                if (reason != FSMONITOR_REASON_OK)
                        return reason;
        }
@@ -162,7 +162,7 @@ const char *fsm_settings__get_hook_path(struct repository *r)
 
 void fsm_settings__set_ipc(struct repository *r)
 {
-       enum fsmonitor_reason reason = check_for_incompatible(r);
+       enum fsmonitor_reason reason = check_for_incompatible(r, 1);
 
        if (reason != FSMONITOR_REASON_OK) {
                fsm_settings__set_incompatible(r, reason);
@@ -185,7 +185,7 @@ void fsm_settings__set_ipc(struct repository *r)
 
 void fsm_settings__set_hook(struct repository *r, const char *path)
 {
-       enum fsmonitor_reason reason = check_for_incompatible(r);
+       enum fsmonitor_reason reason = check_for_incompatible(r, 0);
 
        if (reason != FSMONITOR_REASON_OK) {
                fsm_settings__set_incompatible(r, reason);
index d9c2605197ff8e957ffb0346dba78d85d3e1dab7..0721617b95a256030426ac9b9dc6eff6ee01c75d 100644 (file)
@@ -48,7 +48,7 @@ struct fsmonitor_settings;
  * fsm_os__* routines should considered private to fsm_settings__
  * routines.
  */
-enum fsmonitor_reason fsm_os__incompatible(struct repository *r);
+enum fsmonitor_reason fsm_os__incompatible(struct repository *r, int ipc);
 #endif /* HAVE_FSMONITOR_OS_SETTINGS */
 
 #endif /* FSMONITOR_SETTINGS_H */