]> git.ipfire.org Git - thirdparty/git.git/commitdiff
scalar unregister: stop FSMonitor daemon
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 18 Aug 2022 21:40:52 +0000 (21:40 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 19 Aug 2022 04:35:32 +0000 (21:35 -0700)
Especially on Windows, we will need to stop that daemon, just in case
that the directory needs to be removed (the daemon would otherwise hold
a handle to that directory, preventing it from being deleted).

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/scalar/scalar.c

index 73cd5b1fd0cee0cc48f5818a5ba4e98cf231a14b..07c3f7dd6b6672616a43df83b7324e69b4f83f71 100644 (file)
@@ -244,6 +244,16 @@ static int start_fsmonitor_daemon(void)
        return 0;
 }
 
+static int stop_fsmonitor_daemon(void)
+{
+       assert(have_fsmonitor_support());
+
+       if (fsmonitor_ipc__get_state() == IPC_STATE__LISTENING)
+               return run_git("fsmonitor--daemon", "stop", NULL);
+
+       return 0;
+}
+
 static int register_dir(void)
 {
        if (add_or_remove_enlistment(1))
@@ -468,6 +478,9 @@ static int delete_enlistment(struct strbuf *enlistment)
        strbuf_release(&parent);
 #endif
 
+       if (have_fsmonitor_support() && stop_fsmonitor_daemon())
+               return error(_("failed to stop the FSMonitor daemon"));
+
        if (remove_dir_recursively(enlistment, 0))
                return error(_("failed to delete enlistment directory"));