From: "Jeff Hostetler via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Bagas Sanjaya" <bagasdotme@gmail.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Jeff Hostetler" <git@jeffhostetler.com>,
"Eric Sunshine" <sunshine@sunshineco.com>,
"Jeff Hostetler" <jeffhost@microsoft.com>,
"Jeff Hostetler" <jeffhost@microsoft.com>
Subject: [PATCH v5 17/30] compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
Date: Fri, 11 Feb 2022 20:56:06 +0000 [thread overview]
Message-ID: <162e357db7211e72c8a39e722e8432baf710c70d.1644612979.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1041.v5.git.1644612979.gitgitgadget@gmail.com>
From: Jeff Hostetler <jeffhost@microsoft.com>
Implement file system event listener on MacOS using FSEvent,
CoreFoundation, and CoreServices.
Co-authored-by: Kevin Willford <Kevin.Willford@microsoft.com>
Co-authored-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
---
compat/fsmonitor/fsm-listen-darwin.c | 382 ++++++++++++++++++++++++++-
1 file changed, 381 insertions(+), 1 deletion(-)
diff --git a/compat/fsmonitor/fsm-listen-darwin.c b/compat/fsmonitor/fsm-listen-darwin.c
index f424253d3eb..2aefdc14d89 100644
--- a/compat/fsmonitor/fsm-listen-darwin.c
+++ b/compat/fsmonitor/fsm-listen-darwin.c
@@ -1,4 +1,4 @@
-#if defined(__GNUC__)
+#ifndef __clang__
/*
* It is possible to #include CoreFoundation/CoreFoundation.h when compiling
* with clang, but not with GCC as of time of writing.
@@ -97,20 +97,400 @@ void FSEventStreamRelease(FSEventStreamRef stream);
#include "cache.h"
#include "fsmonitor.h"
#include "fsm-listen.h"
+#include "fsmonitor--daemon.h"
+
+struct fsmonitor_daemon_backend_data
+{
+ CFStringRef cfsr_worktree_path;
+ CFStringRef cfsr_gitdir_path;
+
+ CFArrayRef cfar_paths_to_watch;
+ int nr_paths_watching;
+
+ FSEventStreamRef stream;
+
+ CFRunLoopRef rl;
+
+ enum shutdown_style {
+ SHUTDOWN_EVENT = 0,
+ FORCE_SHUTDOWN,
+ FORCE_ERROR_STOP,
+ } shutdown_style;
+
+ unsigned int stream_scheduled:1;
+ unsigned int stream_started:1;
+};
+
+static void log_flags_set(const char *path, const FSEventStreamEventFlags flag)
+{
+ struct strbuf msg = STRBUF_INIT;
+
+ if (flag & kFSEventStreamEventFlagMustScanSubDirs)
+ strbuf_addstr(&msg, "MustScanSubDirs|");
+ if (flag & kFSEventStreamEventFlagUserDropped)
+ strbuf_addstr(&msg, "UserDropped|");
+ if (flag & kFSEventStreamEventFlagKernelDropped)
+ strbuf_addstr(&msg, "KernelDropped|");
+ if (flag & kFSEventStreamEventFlagEventIdsWrapped)
+ strbuf_addstr(&msg, "EventIdsWrapped|");
+ if (flag & kFSEventStreamEventFlagHistoryDone)
+ strbuf_addstr(&msg, "HistoryDone|");
+ if (flag & kFSEventStreamEventFlagRootChanged)
+ strbuf_addstr(&msg, "RootChanged|");
+ if (flag & kFSEventStreamEventFlagMount)
+ strbuf_addstr(&msg, "Mount|");
+ if (flag & kFSEventStreamEventFlagUnmount)
+ strbuf_addstr(&msg, "Unmount|");
+ if (flag & kFSEventStreamEventFlagItemChangeOwner)
+ strbuf_addstr(&msg, "ItemChangeOwner|");
+ if (flag & kFSEventStreamEventFlagItemCreated)
+ strbuf_addstr(&msg, "ItemCreated|");
+ if (flag & kFSEventStreamEventFlagItemFinderInfoMod)
+ strbuf_addstr(&msg, "ItemFinderInfoMod|");
+ if (flag & kFSEventStreamEventFlagItemInodeMetaMod)
+ strbuf_addstr(&msg, "ItemInodeMetaMod|");
+ if (flag & kFSEventStreamEventFlagItemIsDir)
+ strbuf_addstr(&msg, "ItemIsDir|");
+ if (flag & kFSEventStreamEventFlagItemIsFile)
+ strbuf_addstr(&msg, "ItemIsFile|");
+ if (flag & kFSEventStreamEventFlagItemIsHardlink)
+ strbuf_addstr(&msg, "ItemIsHardlink|");
+ if (flag & kFSEventStreamEventFlagItemIsLastHardlink)
+ strbuf_addstr(&msg, "ItemIsLastHardlink|");
+ if (flag & kFSEventStreamEventFlagItemIsSymlink)
+ strbuf_addstr(&msg, "ItemIsSymlink|");
+ if (flag & kFSEventStreamEventFlagItemModified)
+ strbuf_addstr(&msg, "ItemModified|");
+ if (flag & kFSEventStreamEventFlagItemRemoved)
+ strbuf_addstr(&msg, "ItemRemoved|");
+ if (flag & kFSEventStreamEventFlagItemRenamed)
+ strbuf_addstr(&msg, "ItemRenamed|");
+ if (flag & kFSEventStreamEventFlagItemXattrMod)
+ strbuf_addstr(&msg, "ItemXattrMod|");
+ if (flag & kFSEventStreamEventFlagOwnEvent)
+ strbuf_addstr(&msg, "OwnEvent|");
+ if (flag & kFSEventStreamEventFlagItemCloned)
+ strbuf_addstr(&msg, "ItemCloned|");
+
+ trace_printf_key(&trace_fsmonitor, "fsevent: '%s', flags=%u %s",
+ path, flag, msg.buf);
+
+ strbuf_release(&msg);
+}
+
+static int ef_is_root_delete(const FSEventStreamEventFlags ef)
+{
+ return (ef & kFSEventStreamEventFlagItemIsDir &&
+ ef & kFSEventStreamEventFlagItemRemoved);
+}
+
+static int ef_is_root_renamed(const FSEventStreamEventFlags ef)
+{
+ return (ef & kFSEventStreamEventFlagItemIsDir &&
+ ef & kFSEventStreamEventFlagItemRenamed);
+}
+
+static int ef_is_dropped(const FSEventStreamEventFlags ef)
+{
+ return (ef & kFSEventStreamEventFlagMustScanSubDirs ||
+ ef & kFSEventStreamEventFlagKernelDropped ||
+ ef & kFSEventStreamEventFlagUserDropped);
+}
+
+static void fsevent_callback(ConstFSEventStreamRef streamRef,
+ void *ctx,
+ size_t num_of_events,
+ void *event_paths,
+ const FSEventStreamEventFlags event_flags[],
+ const FSEventStreamEventId event_ids[])
+{
+ struct fsmonitor_daemon_state *state = ctx;
+ struct fsmonitor_daemon_backend_data *data = state->backend_data;
+ char **paths = (char **)event_paths;
+ struct fsmonitor_batch *batch = NULL;
+ struct string_list cookie_list = STRING_LIST_INIT_DUP;
+ const char *path_k;
+ const char *slash;
+ int k;
+ struct strbuf tmp = STRBUF_INIT;
+
+ /*
+ * Build a list of all filesystem changes into a private/local
+ * list and without holding any locks.
+ */
+ for (k = 0; k < num_of_events; k++) {
+ /*
+ * On Mac, we receive an array of absolute paths.
+ */
+ path_k = paths[k];
+
+ /*
+ * If you want to debug FSEvents, log them to GIT_TRACE_FSMONITOR.
+ * Please don't log them to Trace2.
+ *
+ * trace_printf_key(&trace_fsmonitor, "Path: '%s'", path_k);
+ */
+
+ /*
+ * If event[k] is marked as dropped, we assume that we have
+ * lost sync with the filesystem and should flush our cached
+ * data. We need to:
+ *
+ * [1] Abort/wake any client threads waiting for a cookie and
+ * flush the cached state data (the current token), and
+ * create a new token.
+ *
+ * [2] Discard the batch that we were locally building (since
+ * they are conceptually relative to the just flushed
+ * token).
+ */
+ if (ef_is_dropped(event_flags[k])) {
+ if (trace_pass_fl(&trace_fsmonitor))
+ log_flags_set(path_k, event_flags[k]);
+
+ fsmonitor_force_resync(state);
+ fsmonitor_batch__free_list(batch);
+ string_list_clear(&cookie_list, 0);
+
+ /*
+ * We assume that any events that we received
+ * in this callback after this dropped event
+ * may still be valid, so we continue rather
+ * than break. (And just in case there is a
+ * delete of ".git" hiding in there.)
+ */
+ continue;
+ }
+
+ switch (fsmonitor_classify_path_absolute(state, path_k)) {
+
+ case IS_INSIDE_DOT_GIT_WITH_COOKIE_PREFIX:
+ case IS_INSIDE_GITDIR_WITH_COOKIE_PREFIX:
+ /* special case cookie files within .git or gitdir */
+
+ /* Use just the filename of the cookie file. */
+ slash = find_last_dir_sep(path_k);
+ string_list_append(&cookie_list,
+ slash ? slash + 1 : path_k);
+ break;
+
+ case IS_INSIDE_DOT_GIT:
+ case IS_INSIDE_GITDIR:
+ /* ignore all other paths inside of .git or gitdir */
+ break;
+
+ case IS_DOT_GIT:
+ case IS_GITDIR:
+ /*
+ * If .git directory is deleted or renamed away,
+ * we have to quit.
+ */
+ if (ef_is_root_delete(event_flags[k])) {
+ trace_printf_key(&trace_fsmonitor,
+ "event: gitdir removed");
+ goto force_shutdown;
+ }
+ if (ef_is_root_renamed(event_flags[k])) {
+ trace_printf_key(&trace_fsmonitor,
+ "event: gitdir renamed");
+ goto force_shutdown;
+ }
+ break;
+
+ case IS_WORKDIR_PATH:
+ /* try to queue normal pathnames */
+
+ if (trace_pass_fl(&trace_fsmonitor))
+ log_flags_set(path_k, event_flags[k]);
+
+ /*
+ * Because of the implicit "binning" (the
+ * kernel calls us at a given frequency) and
+ * de-duping (the kernel is free to combine
+ * multiple events for a given pathname), an
+ * individual fsevent could be marked as both
+ * a file and directory. Add it to the queue
+ * with both spellings so that the client will
+ * know how much to invalidate/refresh.
+ */
+
+ if (event_flags[k] & kFSEventStreamEventFlagItemIsFile) {
+ const char *rel = path_k +
+ state->path_worktree_watch.len + 1;
+
+ if (!batch)
+ batch = fsmonitor_batch__new();
+ fsmonitor_batch__add_path(batch, rel);
+ }
+
+ if (event_flags[k] & kFSEventStreamEventFlagItemIsDir) {
+ const char *rel = path_k +
+ state->path_worktree_watch.len + 1;
+
+ strbuf_reset(&tmp);
+ strbuf_addstr(&tmp, rel);
+ strbuf_addch(&tmp, '/');
+
+ if (!batch)
+ batch = fsmonitor_batch__new();
+ fsmonitor_batch__add_path(batch, tmp.buf);
+ }
+
+ break;
+
+ case IS_OUTSIDE_CONE:
+ default:
+ trace_printf_key(&trace_fsmonitor,
+ "ignoring '%s'", path_k);
+ break;
+ }
+ }
+
+ fsmonitor_publish(state, batch, &cookie_list);
+ string_list_clear(&cookie_list, 0);
+ strbuf_release(&tmp);
+ return;
+
+force_shutdown:
+ fsmonitor_batch__free_list(batch);
+ string_list_clear(&cookie_list, 0);
+
+ data->shutdown_style = FORCE_SHUTDOWN;
+ CFRunLoopStop(data->rl);
+ strbuf_release(&tmp);
+ return;
+}
+
+/*
+ * NEEDSWORK: Investigate the proper value for the `latency` argument
+ * in the call to `FSEventStreamCreate()`. I'm not sure that this
+ * needs to be a config setting or just something that we tune after
+ * some testing.
+ *
+ * With a latency of 0.1, I was seeing lots of dropped events during
+ * the "touch 100000" files test within t/perf/p7519, but with a
+ * latency of 0.001 I did not see any dropped events. So the
+ * "correct" value may be somewhere in between.
+ *
+ * https://developer.apple.com/documentation/coreservices/1443980-fseventstreamcreate
+ */
int fsm_listen__ctor(struct fsmonitor_daemon_state *state)
{
+ FSEventStreamCreateFlags flags = kFSEventStreamCreateFlagNoDefer |
+ kFSEventStreamCreateFlagWatchRoot |
+ kFSEventStreamCreateFlagFileEvents;
+ FSEventStreamContext ctx = {
+ 0,
+ state,
+ NULL,
+ NULL,
+ NULL
+ };
+ struct fsmonitor_daemon_backend_data *data;
+ const void *dir_array[2];
+
+ CALLOC_ARRAY(data, 1);
+ state->backend_data = data;
+
+ data->cfsr_worktree_path = CFStringCreateWithCString(
+ NULL, state->path_worktree_watch.buf, kCFStringEncodingUTF8);
+ dir_array[data->nr_paths_watching++] = data->cfsr_worktree_path;
+
+ if (state->nr_paths_watching > 1) {
+ data->cfsr_gitdir_path = CFStringCreateWithCString(
+ NULL, state->path_gitdir_watch.buf,
+ kCFStringEncodingUTF8);
+ dir_array[data->nr_paths_watching++] = data->cfsr_gitdir_path;
+ }
+
+ data->cfar_paths_to_watch = CFArrayCreate(NULL, dir_array,
+ data->nr_paths_watching,
+ NULL);
+ data->stream = FSEventStreamCreate(NULL, fsevent_callback, &ctx,
+ data->cfar_paths_to_watch,
+ kFSEventStreamEventIdSinceNow,
+ 0.001, flags);
+ if (data->stream == NULL)
+ goto failed;
+
+ /*
+ * `data->rl` needs to be set inside the listener thread.
+ */
+
+ return 0;
+
+failed:
+ error("Unable to create FSEventStream.");
+
+ FREE_AND_NULL(state->backend_data);
return -1;
}
void fsm_listen__dtor(struct fsmonitor_daemon_state *state)
{
+ struct fsmonitor_daemon_backend_data *data;
+
+ if (!state || !state->backend_data)
+ return;
+
+ data = state->backend_data;
+
+ if (data->stream) {
+ if (data->stream_started)
+ FSEventStreamStop(data->stream);
+ if (data->stream_scheduled)
+ FSEventStreamInvalidate(data->stream);
+ FSEventStreamRelease(data->stream);
+ }
+
+ FREE_AND_NULL(state->backend_data);
}
void fsm_listen__stop_async(struct fsmonitor_daemon_state *state)
{
+ struct fsmonitor_daemon_backend_data *data;
+
+ data = state->backend_data;
+ data->shutdown_style = SHUTDOWN_EVENT;
+
+ CFRunLoopStop(data->rl);
}
void fsm_listen__loop(struct fsmonitor_daemon_state *state)
{
+ struct fsmonitor_daemon_backend_data *data;
+
+ data = state->backend_data;
+
+ data->rl = CFRunLoopGetCurrent();
+
+ FSEventStreamScheduleWithRunLoop(data->stream, data->rl, kCFRunLoopDefaultMode);
+ data->stream_scheduled = 1;
+
+ if (!FSEventStreamStart(data->stream)) {
+ error("Failed to start the FSEventStream");
+ goto force_error_stop_without_loop;
+ }
+ data->stream_started = 1;
+
+ CFRunLoopRun();
+
+ switch (data->shutdown_style) {
+ case FORCE_ERROR_STOP:
+ state->error_code = -1;
+ /* fall thru */
+ case FORCE_SHUTDOWN:
+ ipc_server_stop_async(state->ipc_server_data);
+ /* fall thru */
+ case SHUTDOWN_EVENT:
+ default:
+ break;
+ }
+ return;
+
+force_error_stop_without_loop:
+ state->error_code = -1;
+ ipc_server_stop_async(state->ipc_server_data);
+ return;
}
--
gitgitgadget
next prev parent reply other threads:[~2022-02-11 20:57 UTC|newest]
Thread overview: 298+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-16 19:54 [PATCH 0/5] Builtin FSMonitor Part 2 Jeff Hostetler via GitGitGadget
2021-09-16 19:54 ` [PATCH 1/5] fsmonitor: enhance existing comments Jeff Hostetler via GitGitGadget
2021-09-17 6:31 ` Bagas Sanjaya
2021-09-17 6:44 ` Junio C Hamano
2021-09-23 14:11 ` Jeff Hostetler
2021-09-16 19:54 ` [PATCH 2/5] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-09-16 19:54 ` [PATCH 3/5] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2021-09-16 19:54 ` [PATCH 4/5] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2021-09-16 19:54 ` [PATCH 5/5] fsmonitor: update fsmonitor config documentation Jeff Hostetler via GitGitGadget
2021-10-07 13:52 ` [PATCH v2 0/5] Builtin FSMonitor Part 2 Jeff Hostetler via GitGitGadget
2021-10-07 13:52 ` [PATCH v2 1/5] fsmonitor: enhance existing comments Jeff Hostetler via GitGitGadget
2021-10-07 13:52 ` [PATCH v2 2/5] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-10-07 13:52 ` [PATCH v2 3/5] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2021-10-07 16:59 ` Ævar Arnfjörð Bjarmason
2021-10-08 20:36 ` Jeff Hostetler
2021-10-07 13:52 ` [PATCH v2 4/5] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2021-10-07 13:52 ` [PATCH v2 5/5] fsmonitor: update fsmonitor config documentation Jeff Hostetler via GitGitGadget
2021-10-13 20:31 ` [PATCH v3 0/5] Builtin FSMonitor Part 2 Jeff Hostetler via GitGitGadget
2021-10-13 20:31 ` [PATCH v3 1/5] fsmonitor: enhance existing comments Jeff Hostetler via GitGitGadget
2021-10-13 20:31 ` [PATCH v3 2/5] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-10-13 20:31 ` [PATCH v3 3/5] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2021-10-13 20:31 ` [PATCH v3 4/5] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2021-10-13 20:31 ` [PATCH v3 5/5] fsmonitor: update fsmonitor config documentation Jeff Hostetler via GitGitGadget
2021-10-15 12:03 ` [PATCH v3 0/5] Builtin FSMonitor Part 2 Ævar Arnfjörð Bjarmason
2021-10-20 21:43 ` Jeff Hostetler
2021-10-21 14:24 ` [PATCH v4 00/29] " Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 01/29] fsmonitor: enhance existing comments Jeff Hostetler via GitGitGadget
2021-10-21 20:40 ` Junio C Hamano
2021-10-27 18:46 ` Jeff Hostetler
2021-10-21 14:24 ` [PATCH v4 02/29] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 03/29] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2021-10-21 21:05 ` Junio C Hamano
2021-10-21 21:16 ` Junio C Hamano
2021-10-27 19:53 ` Jeff Hostetler
2021-10-27 19:03 ` Jeff Hostetler
2021-10-21 14:24 ` [PATCH v4 04/29] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 05/29] fsmonitor: document builtin fsmonitor Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 06/29] fsmonitor--daemon: add a built-in fsmonitor daemon Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 07/29] fsmonitor--daemon: implement 'stop' and 'status' commands Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 08/29] compat/fsmonitor/fsm-listen-win32: stub in backend for Windows Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 09/29] compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 10/29] fsmonitor--daemon: implement 'run' command Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 11/29] fsmonitor--daemon: implement 'start' command Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 12/29] fsmonitor--daemon: add pathname classification Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 13/29] fsmonitor--daemon: define token-ids Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 14/29] fsmonitor--daemon: create token-based changed path cache Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 15/29] compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 16/29] compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 17/29] compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 18/29] fsmonitor--daemon: implement handle_client callback Jeff Hostetler via GitGitGadget
2021-10-21 14:24 ` [PATCH v4 19/29] help: include fsmonitor--daemon feature flag in version info Jeff Hostetler via GitGitGadget
2021-10-21 14:25 ` [PATCH v4 20/29] t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon Jeff Hostetler via GitGitGadget
2021-10-21 14:25 ` [PATCH v4 21/29] t7527: create test for fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-12-26 3:59 ` Junio C Hamano
2021-10-21 14:25 ` [PATCH v4 22/29] t/perf: avoid copying builtin fsmonitor files into test repo Jeff Hostetler via GitGitGadget
2021-10-21 14:25 ` [PATCH v4 23/29] t/helper/test-chmtime: skip directories on Windows Jeff Hostetler via GitGitGadget
2021-10-21 14:25 ` [PATCH v4 24/29] t/perf/p7519: speed up test " Jeff Hostetler via GitGitGadget
2021-12-26 4:09 ` Junio C Hamano
2021-10-21 14:25 ` [PATCH v4 25/29] t/perf/p7519: add fsmonitor--daemon test cases Jeff Hostetler via GitGitGadget
2021-10-21 14:25 ` [PATCH v4 26/29] fsmonitor--daemon: periodically truncate list of modified files Jeff Hostetler via GitGitGadget
2021-10-21 14:25 ` [PATCH v4 27/29] fsmonitor--daemon: use a cookie file to sync with file system Jeff Hostetler via GitGitGadget
2021-10-21 14:25 ` [PATCH v4 28/29] fsmonitor: force update index after large responses Jeff Hostetler via GitGitGadget
2021-10-21 14:25 ` [PATCH v4 29/29] t7527: test status with untracked-cache and fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-10-22 5:23 ` Eric Sunshine
2021-10-27 20:06 ` Jeff Hostetler
2022-02-11 20:55 ` [PATCH v5 00/30] Builtin FSMonitor Part 2 Jeff Hostetler via GitGitGadget
2022-02-11 20:55 ` [PATCH v5 01/30] fsmonitor: enhance existing comments, clarify trivial response handling Jeff Hostetler via GitGitGadget
2022-02-11 20:55 ` [PATCH v5 02/30] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-02-17 16:13 ` Johannes Schindelin
2022-02-11 20:55 ` [PATCH v5 03/30] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2022-02-17 16:27 ` Johannes Schindelin
2022-02-17 19:21 ` Jeff Hostetler
2022-02-24 15:50 ` Johannes Schindelin
2022-02-11 20:55 ` [PATCH v5 04/30] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2022-02-11 20:55 ` [PATCH v5 05/30] fsmonitor: document builtin fsmonitor Jeff Hostetler via GitGitGadget
2022-02-11 20:55 ` [PATCH v5 06/30] fsmonitor--daemon: add a built-in fsmonitor daemon Jeff Hostetler via GitGitGadget
2022-02-25 22:46 ` Ævar Arnfjörð Bjarmason
2022-03-01 14:58 ` Jeff Hostetler
2022-03-01 17:37 ` Junio C Hamano
2022-02-11 20:55 ` [PATCH v5 07/30] fsmonitor--daemon: implement 'stop' and 'status' commands Jeff Hostetler via GitGitGadget
2022-02-11 20:55 ` [PATCH v5 08/30] compat/fsmonitor/fsm-listen-win32: stub in backend for Windows Jeff Hostetler via GitGitGadget
2022-02-11 20:55 ` [PATCH v5 09/30] compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin Jeff Hostetler via GitGitGadget
2022-02-11 20:55 ` [PATCH v5 10/30] fsmonitor--daemon: implement 'run' command Jeff Hostetler via GitGitGadget
2022-02-17 16:46 ` Johannes Schindelin
2022-02-17 19:26 ` Jeff Hostetler
2022-02-24 15:31 ` Johannes Schindelin
2022-02-11 20:56 ` [PATCH v5 11/30] fsmonitor--daemon: implement 'start' command Jeff Hostetler via GitGitGadget
2022-02-17 16:50 ` Johannes Schindelin
2022-02-24 15:30 ` Johannes Schindelin
2022-02-11 20:56 ` [PATCH v5 12/30] fsmonitor--daemon: add pathname classification Jeff Hostetler via GitGitGadget
2022-02-24 14:36 ` Johannes Schindelin
2022-02-11 20:56 ` [PATCH v5 13/30] fsmonitor--daemon: define token-ids Jeff Hostetler via GitGitGadget
2022-02-11 20:56 ` [PATCH v5 14/30] fsmonitor--daemon: create token-based changed path cache Jeff Hostetler via GitGitGadget
2022-02-11 20:56 ` [PATCH v5 15/30] compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows Jeff Hostetler via GitGitGadget
2022-02-24 15:10 ` Johannes Schindelin
2022-02-11 20:56 ` [PATCH v5 16/30] compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent Jeff Hostetler via GitGitGadget
2022-02-24 15:13 ` Johannes Schindelin
2022-02-11 20:56 ` Jeff Hostetler via GitGitGadget [this message]
2022-02-24 15:21 ` [PATCH v5 17/30] compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS Johannes Schindelin
2022-02-11 20:56 ` [PATCH v5 18/30] fsmonitor--daemon: implement handle_client callback Jeff Hostetler via GitGitGadget
2022-02-11 20:56 ` [PATCH v5 19/30] help: include fsmonitor--daemon feature flag in version info Jeff Hostetler via GitGitGadget
2022-02-24 15:39 ` Johannes Schindelin
2022-02-11 20:56 ` [PATCH v5 20/30] t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon Jeff Hostetler via GitGitGadget
2022-02-11 20:56 ` [PATCH v5 21/30] t7527: create test for fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-02-11 20:56 ` [PATCH v5 22/30] t/perf: avoid copying builtin fsmonitor files into test repo Jeff Hostetler via GitGitGadget
2022-02-11 20:56 ` [PATCH v5 23/30] t/helper/test-chmtime: skip directories on Windows Jeff Hostetler via GitGitGadget
2022-02-28 9:43 ` Tao Klerks
2022-02-28 17:49 ` Jeff Hostetler
2022-02-28 18:39 ` Junio C Hamano
2022-02-11 20:56 ` [PATCH v5 24/30] t/perf/p7519: speed up test " Jeff Hostetler via GitGitGadget
2022-02-17 1:15 ` Junio C Hamano
2022-02-17 19:03 ` Jeff Hostetler
2022-02-11 20:56 ` [PATCH v5 25/30] t/perf/p7519: add fsmonitor--daemon test cases Jeff Hostetler via GitGitGadget
2022-02-11 20:56 ` [PATCH v5 26/30] fsmonitor--daemon: periodically truncate list of modified files Jeff Hostetler via GitGitGadget
2022-02-24 16:38 ` Johannes Schindelin
2022-02-11 20:56 ` [PATCH v5 27/30] fsmonitor--daemon: use a cookie file to sync with file system Jeff Hostetler via GitGitGadget
2022-02-24 16:45 ` Johannes Schindelin
2022-02-11 20:56 ` [PATCH v5 28/30] fsmonitor: force update index after large responses Jeff Hostetler via GitGitGadget
2022-02-24 16:51 ` Johannes Schindelin
2022-02-11 20:56 ` [PATCH v5 29/30] t7527: test status with untracked-cache and fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-02-11 20:56 ` [PATCH v5 30/30] update-index: convert fsmonitor warnings to advise Jeff Hostetler via GitGitGadget
2022-02-17 16:06 ` [PATCH v5 00/30] Builtin FSMonitor Part 2 Johannes Schindelin
2022-02-17 19:36 ` Junio C Hamano
2022-02-24 15:47 ` Johannes Schindelin
2022-02-24 17:16 ` Junio C Hamano
2022-02-22 18:53 ` Jeff Hostetler
2022-02-24 16:22 ` Johannes Schindelin
2022-02-24 18:13 ` Jeff Hostetler
2022-02-24 19:16 ` Johannes Schindelin
2022-03-01 18:43 ` [PATCH v6 " Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 01/30] fsmonitor: enhance existing comments, clarify trivial response handling Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 02/30] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 03/30] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2022-03-11 1:47 ` Ævar Arnfjörð Bjarmason
2022-03-11 14:07 ` Jeff Hostetler
2022-03-01 18:43 ` [PATCH v6 04/30] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 05/30] fsmonitor: document builtin fsmonitor Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 06/30] fsmonitor--daemon: add a built-in fsmonitor daemon Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 07/30] fsmonitor--daemon: implement 'stop' and 'status' commands Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 08/30] compat/fsmonitor/fsm-listen-win32: stub in backend for Windows Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 09/30] compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 10/30] fsmonitor--daemon: implement 'run' command Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 11/30] fsmonitor--daemon: implement 'start' command Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 12/30] fsmonitor--daemon: add pathname classification Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 13/30] fsmonitor--daemon: define token-ids Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 14/30] fsmonitor--daemon: create token-based changed path cache Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 15/30] compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 16/30] compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent Jeff Hostetler via GitGitGadget
2022-03-07 10:37 ` Ævar Arnfjörð Bjarmason
2022-03-08 20:26 ` Jeff Hostetler
2022-03-09 13:52 ` Ævar Arnfjörð Bjarmason
2022-03-08 21:09 ` Jeff Hostetler
2022-03-09 14:14 ` Ævar Arnfjörð Bjarmason
2022-03-10 14:32 ` Johannes Schindelin
2022-03-10 14:42 ` Ævar Arnfjörð Bjarmason
2022-03-10 15:42 ` Jeff Hostetler
2022-03-09 13:37 ` Jeff Hostetler
2022-03-09 18:57 ` Junio C Hamano
2022-03-09 19:37 ` Ævar Arnfjörð Bjarmason
2022-03-11 21:01 ` Jeff Hostetler
2022-03-01 18:43 ` [PATCH v6 17/30] compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 18/30] fsmonitor--daemon: implement handle_client callback Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 19/30] help: include fsmonitor--daemon feature flag in version info Jeff Hostetler via GitGitGadget
2022-03-07 10:51 ` Ævar Arnfjörð Bjarmason
2022-03-08 21:19 ` Jeff Hostetler
2022-03-01 18:43 ` [PATCH v6 20/30] t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon Jeff Hostetler via GitGitGadget
2022-03-07 10:53 ` Ævar Arnfjörð Bjarmason
2022-03-01 18:43 ` [PATCH v6 21/30] t7527: create test for fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-07 10:58 ` Ævar Arnfjörð Bjarmason
2022-03-01 18:43 ` [PATCH v6 22/30] t/perf: avoid copying builtin fsmonitor files into test repo Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 23/30] t/helper/test-chmtime: skip directories on Windows Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 24/30] t/perf/p7519: speed up test " Jeff Hostetler via GitGitGadget
2022-03-07 11:09 ` Ævar Arnfjörð Bjarmason
2022-03-01 18:43 ` [PATCH v6 25/30] t/perf/p7519: add fsmonitor--daemon test cases Jeff Hostetler via GitGitGadget
2022-03-07 11:12 ` Ævar Arnfjörð Bjarmason
2022-03-01 18:43 ` [PATCH v6 26/30] fsmonitor--daemon: periodically truncate list of modified files Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 27/30] fsmonitor--daemon: use a cookie file to sync with file system Jeff Hostetler via GitGitGadget
2022-03-07 11:15 ` Ævar Arnfjörð Bjarmason
2022-03-01 18:43 ` [PATCH v6 28/30] fsmonitor: force update index after large responses Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 29/30] t7527: test status with untracked-cache and fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-01 18:43 ` [PATCH v6 30/30] update-index: convert fsmonitor warnings to advise Jeff Hostetler via GitGitGadget
2022-03-07 11:29 ` Ævar Arnfjörð Bjarmason
2022-03-01 19:05 ` [PATCH v6 00/30] Builtin FSMonitor Part 2 Junio C Hamano
2022-03-01 19:20 ` Johannes Schindelin
2022-03-22 17:59 ` [PATCH v7 00/29] " Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 01/29] fsmonitor: enhance existing comments, clarify trivial response handling Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 02/29] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 03/29] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 04/29] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 05/29] fsmonitor: document builtin fsmonitor Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 06/29] fsmonitor--daemon: add a built-in fsmonitor daemon Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 07/29] fsmonitor--daemon: implement 'stop' and 'status' commands Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 08/29] compat/fsmonitor/fsm-listen-win32: stub in backend for Windows Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 09/29] compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 10/29] fsmonitor--daemon: implement 'run' command Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 11/29] fsmonitor--daemon: implement 'start' command Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 12/29] fsmonitor--daemon: add pathname classification Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 13/29] fsmonitor--daemon: define token-ids Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 14/29] fsmonitor--daemon: create token-based changed path cache Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 15/29] compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 16/29] compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent Jeff Hostetler via GitGitGadget
2022-03-22 18:19 ` Ævar Arnfjörð Bjarmason
2022-03-23 14:32 ` Jeff Hostetler
2022-03-22 17:59 ` [PATCH v7 17/29] compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS Jeff Hostetler via GitGitGadget
2022-03-22 17:59 ` [PATCH v7 18/29] fsmonitor--daemon: implement handle_client callback Jeff Hostetler via GitGitGadget
2022-03-22 18:30 ` Ævar Arnfjörð Bjarmason
2022-03-23 14:45 ` Jeff Hostetler
2022-03-22 18:00 ` [PATCH v7 19/29] help: include fsmonitor--daemon feature flag in version info Jeff Hostetler via GitGitGadget
2022-03-22 18:00 ` [PATCH v7 20/29] t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon Jeff Hostetler via GitGitGadget
2022-03-22 18:00 ` [PATCH v7 21/29] t7527: create test for fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-22 18:35 ` Ævar Arnfjörð Bjarmason
2022-03-23 16:22 ` Jeff Hostetler
2022-03-22 18:00 ` [PATCH v7 22/29] t/perf: avoid copying builtin fsmonitor files into test repo Jeff Hostetler via GitGitGadget
2022-03-22 18:00 ` [PATCH v7 23/29] t/helper/test-chmtime: skip directories on Windows Jeff Hostetler via GitGitGadget
2022-03-22 18:00 ` [PATCH v7 24/29] t/perf/p7519: speed up test " Jeff Hostetler via GitGitGadget
2022-03-22 18:43 ` Ævar Arnfjörð Bjarmason
2022-03-23 16:33 ` Jeff Hostetler
2022-03-22 18:00 ` [PATCH v7 25/29] t/perf/p7519: add fsmonitor--daemon test cases Jeff Hostetler via GitGitGadget
2022-03-22 18:00 ` [PATCH v7 26/29] fsmonitor--daemon: periodically truncate list of modified files Jeff Hostetler via GitGitGadget
2022-03-22 18:00 ` [PATCH v7 27/29] fsmonitor--daemon: use a cookie file to sync with file system Jeff Hostetler via GitGitGadget
2022-03-22 18:00 ` [PATCH v7 28/29] fsmonitor: force update index after large responses Jeff Hostetler via GitGitGadget
2022-03-22 18:00 ` [PATCH v7 29/29] t7527: test status with untracked-cache and fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 00/30] Builtin FSMonitor Part 2 Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 01/30] fsmonitor: enhance existing comments, clarify trivial response handling Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 02/30] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 03/30] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 04/30] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 05/30] fsmonitor: document builtin fsmonitor Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 06/30] fsmonitor--daemon: add a built-in fsmonitor daemon Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 07/30] fsmonitor--daemon: implement 'stop' and 'status' commands Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 08/30] compat/fsmonitor/fsm-listen-win32: stub in backend for Windows Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 09/30] compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 10/30] fsmonitor--daemon: implement 'run' command Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 11/30] fsmonitor--daemon: implement 'start' command Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 12/30] fsmonitor--daemon: add pathname classification Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 13/30] fsmonitor--daemon: define token-ids Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 14/30] fsmonitor--daemon: create token-based changed path cache Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 15/30] compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 16/30] compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 17/30] compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 18/30] fsmonitor--daemon: implement handle_client callback Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 19/30] help: include fsmonitor--daemon feature flag in version info Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 20/30] t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 21/30] t7527: create test for fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-24 18:59 ` Junio C Hamano
2022-03-24 19:05 ` rsbecker
2022-03-24 20:27 ` Jeff Hostetler
2022-03-24 20:36 ` rsbecker
2022-03-24 20:42 ` Jeff Hostetler
2022-03-24 20:46 ` rsbecker
2022-03-24 20:51 ` Jeff Hostetler
2022-03-24 20:45 ` Jeff Hostetler
2022-03-24 16:49 ` [PATCH v8 22/30] t/perf: avoid copying builtin fsmonitor files into test repo Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 23/30] t/helper/test-chmtime: skip directories on Windows Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 24/30] t/perf/p7519: fix coding style Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 25/30] t/perf/p7519: speed up test on Windows Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 26/30] t/perf/p7519: add fsmonitor--daemon test cases Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 27/30] fsmonitor--daemon: periodically truncate list of modified files Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 28/30] fsmonitor--daemon: use a cookie file to sync with file system Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 29/30] fsmonitor: force update index after large responses Jeff Hostetler via GitGitGadget
2022-03-24 16:49 ` [PATCH v8 30/30] t7527: test status with untracked-cache and fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 00/30] Builtin FSMonitor Part 2 Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 01/30] fsmonitor: enhance existing comments, clarify trivial response handling Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 02/30] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 03/30] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 04/30] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 05/30] fsmonitor: document builtin fsmonitor Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 06/30] fsmonitor--daemon: add a built-in fsmonitor daemon Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 07/30] fsmonitor--daemon: implement 'stop' and 'status' commands Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 08/30] compat/fsmonitor/fsm-listen-win32: stub in backend for Windows Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 09/30] compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 10/30] fsmonitor--daemon: implement 'run' command Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 11/30] fsmonitor--daemon: implement 'start' command Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 12/30] fsmonitor--daemon: add pathname classification Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 13/30] fsmonitor--daemon: define token-ids Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 14/30] fsmonitor--daemon: create token-based changed path cache Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 15/30] compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows Jeff Hostetler via GitGitGadget
2022-03-25 18:02 ` [PATCH v9 16/30] compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 17/30] compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 18/30] fsmonitor--daemon: implement handle_client callback Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 19/30] help: include fsmonitor--daemon feature flag in version info Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 20/30] t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 21/30] t7527: create test for fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 22/30] t/perf: avoid copying builtin fsmonitor files into test repo Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 23/30] t/helper/test-chmtime: skip directories on Windows Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 24/30] t/perf/p7519: fix coding style Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 25/30] t/perf/p7519: speed up test on Windows Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 26/30] t/perf/p7519: add fsmonitor--daemon test cases Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 27/30] fsmonitor--daemon: periodically truncate list of modified files Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 28/30] fsmonitor--daemon: use a cookie file to sync with file system Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 29/30] fsmonitor: force update index after large responses Jeff Hostetler via GitGitGadget
2022-03-25 18:03 ` [PATCH v9 30/30] t7527: test status with untracked-cache and fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-03-25 19:02 ` [PATCH v9 00/30] Builtin FSMonitor Part 2 rsbecker
2022-03-25 20:12 ` Jeff Hostetler
2022-03-26 0:48 ` Ævar Arnfjörð Bjarmason
2022-03-28 16:27 ` Jeff Hostetler
2022-03-25 23:09 ` Junio C Hamano
2022-03-28 15:17 ` Jeff Hostetler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=162e357db7211e72c8a39e722e8432baf710c70d.1644612979.git.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=avarab@gmail.com \
--cc=bagasdotme@gmail.com \
--cc=git@jeffhostetler.com \
--cc=git@vger.kernel.org \
--cc=jeffhost@microsoft.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).