git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Jeff Hostetler via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Jeff Hostetler <git@jeffhostetler.com>,
	Derrick Stolee <stolee@gmail.com>,
	Jeff Hostetler <jeffhost@microsoft.com>,
	Jeff Hostetler <jeffhost@microsoft.com>
Subject: Re: [PATCH v2 22/28] fsmonitor--daemon: use a cookie file to sync with file system
Date: Mon, 14 Jun 2021 23:42:50 +0200 (CEST)	[thread overview]
Message-ID: <nycvar.QRO.7.76.6.2106142330000.57@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <bb7b1912bb47331ac5fea0b4fd8259bb8964e807.1621691828.git.gitgitgadget@gmail.com>

Hi Jeff,

I've found an issue with this patch that I unfortunately failed to fix in
time for Git for Windows v2.32.0. It is a subtle issue, and it only reared
its head in the form of flakiness when running Scalar's Functional Tests
(which is the most comprehensive test suite we have in the absence of
proper integration tests for Git).

The issue is the change in behavior between the previous iteration and
this one when replying with the trivial response:

On Sat, 22 May 2021, Jeff Hostetler via GitGitGadget wrote:

> diff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c
> index e807aa8f6741..985a82cf39e0 100644
> --- a/builtin/fsmonitor--daemon.c
> +++ b/builtin/fsmonitor--daemon.c
> [...]
> @@ -522,6 +672,7 @@ static int do_handle_client(struct fsmonitor_daemon_state *state,
>  		 */
>  		do_flush = 1;
>  		do_trivial = 1;
> +		do_cookie = 1;
>
>  	} else if (!skip_prefix(command, "builtin:", &p)) {
>  		/* assume V1 timestamp or garbage */
> @@ -535,6 +686,7 @@ static int do_handle_client(struct fsmonitor_daemon_state *state,
>  				  "fsmonitor: unsupported V1 protocol '%s'"),
>  				 command);
>  		do_trivial = 1;
> +		do_cookie = 1;
>
>  	} else {
>  		/* We have "builtin:*" */
> @@ -544,12 +696,14 @@ static int do_handle_client(struct fsmonitor_daemon_state *state,
>  					 "fsmonitor: invalid V2 protocol token '%s'",
>  					 command);
>  			do_trivial = 1;
> +			do_cookie = 1;

In the first iteration of this patch series, these three trivial responses
were sent without first writing a cookie file and then waiting for the
event to arrive.

The symptom of the issue here is that some of Scalar's Functional Test
hung, ostensibly waiting for a cookie file that never arrived.

I am not 100% clear on why this only happened in Scalar's Functional Tests
and not in the regression test in Git's test suite, but here are my
thoughts on this:

- I _suspect_ that the .git/ directory gets deleted on the client side
  after receiving a trivial response and finishing the test case, and
  _before_ the daemon can receive the event. As the directory already got
  deleted, the event never arrives.

- I _think_ that running the test cases in parallel (10 concurrent test
  cases, if memory serves) exacerbates this problem.

- Simply _not_ writing that cookie file (i.e. removing those three
  `do_cookie = 1` assignments above is sufficient to let Scalar's
  Functional Tests pass.

- Those trivial responses do not _actually_ need to be guarded behind that
  cookie file. The worst that could happen is for the FSMonitor daemon to
  over-report paths that need to be `lstat()`ed.

Therefore, I would like to suggest this diff to be squashed into this
patch in a re-roll:

-- snip --
diff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c
index 985a82cf39e..4afbb36fe61 100644
--- a/builtin/fsmonitor--daemon.c
+++ b/builtin/fsmonitor--daemon.c
@@ -672,7 +672,6 @@ static int do_handle_client(struct fsmonitor_daemon_state *state,
 		 */
 		do_flush = 1;
 		do_trivial = 1;
-		do_cookie = 1;

 	} else if (!skip_prefix(command, "builtin:", &p)) {
 		/* assume V1 timestamp or garbage */
@@ -686,7 +685,6 @@ static int do_handle_client(struct fsmonitor_daemon_state *state,
 				  "fsmonitor: unsupported V1 protocol '%s'"),
 				 command);
 		do_trivial = 1;
-		do_cookie = 1;

 	} else {
 		/* We have "builtin:*" */
@@ -696,7 +694,6 @@ static int do_handle_client(struct fsmonitor_daemon_state *state,
 					 "fsmonitor: invalid V2 protocol token '%s'",
 					 command);
 			do_trivial = 1;
-			do_cookie = 1;

 		} else {
 			/*
-- snap --

For the record, the Windows installer and macOS/Linux packages available
at https://github.com/microsoft/git/releases/tag/v2.32.0.vfs.0.1 do come
with this fix.

Thanks,
Dscho

>
>  		} else {
>  			/*
>  			 * We have a V2 valid token:
>  			 *     "builtin:<token_id>:<seq_nr>"
>  			 */
> +			do_cookie = 1;
>  		}
>  	}
>
> @@ -558,6 +712,30 @@ static int do_handle_client(struct fsmonitor_daemon_state *state,
>  	if (!state->current_token_data)
>  		BUG("fsmonitor state does not have a current token");
>
> +	/*
> +	 * Write a cookie file inside the directory being watched in
> +	 * an effort to flush out existing filesystem events that we
> +	 * actually care about.  Suspend this client thread until we
> +	 * see the filesystem events for this cookie file.
> +	 *
> +	 * Creating the cookie lets us guarantee that our FS listener
> +	 * thread has drained the kernel queue and we are caught up
> +	 * with the kernel.
> +	 *
> +	 * If we cannot create the cookie (or otherwise guarantee that
> +	 * we are caught up), we send a trivial response.  We have to
> +	 * assume that there might be some very, very recent activity
> +	 * on the FS still in flight.
> +	 */
> +	if (do_cookie) {
> +		cookie_result = with_lock__wait_for_cookie(state);
> +		if (cookie_result != FCIR_SEEN) {
> +			error(_("fsmonitor: cookie_result '%d' != SEEN"),
> +			      cookie_result);
> +			do_trivial = 1;
> +		}
> +	}
> +
>  	if (do_flush)
>  		with_lock__do_force_resync(state);
>
> @@ -769,7 +947,9 @@ static int handle_client(void *data,
>  	return result;
>  }
>
> -#define FSMONITOR_COOKIE_PREFIX ".fsmonitor-daemon-"
> +#define FSMONITOR_DIR           "fsmonitor--daemon"
> +#define FSMONITOR_COOKIE_DIR    "cookies"
> +#define FSMONITOR_COOKIE_PREFIX (FSMONITOR_DIR "/" FSMONITOR_COOKIE_DIR "/")
>
>  enum fsmonitor_path_type fsmonitor_classify_path_workdir_relative(
>  	const char *rel)
> @@ -922,6 +1102,9 @@ void fsmonitor_publish(struct fsmonitor_daemon_state *state,
>  		}
>  	}
>
> +	if (cookie_names->nr)
> +		with_lock__mark_cookies_seen(state, cookie_names);
> +
>  	pthread_mutex_unlock(&state->main_lock);
>  }
>
> @@ -1011,7 +1194,9 @@ static int fsmonitor_run_daemon(void)
>
>  	memset(&state, 0, sizeof(state));
>
> +	hashmap_init(&state.cookies, cookies_cmp, NULL, 0);
>  	pthread_mutex_init(&state.main_lock, NULL);
> +	pthread_cond_init(&state.cookies_cond, NULL);
>  	state.error_code = 0;
>  	state.current_token_data = fsmonitor_new_token_data();
>
> @@ -1035,6 +1220,23 @@ static int fsmonitor_run_daemon(void)
>  		state.nr_paths_watching = 2;
>  	}
>
> +	/*
> +	 * We will write filesystem syncing cookie files into
> +	 * <gitdir>/<fsmonitor-dir>/<cookie-dir>/<pid>-<seq>.
> +	 */
> +	strbuf_init(&state.path_cookie_prefix, 0);
> +	strbuf_addbuf(&state.path_cookie_prefix, &state.path_gitdir_watch);
> +
> +	strbuf_addch(&state.path_cookie_prefix, '/');
> +	strbuf_addstr(&state.path_cookie_prefix, FSMONITOR_DIR);
> +	mkdir(state.path_cookie_prefix.buf, 0777);
> +
> +	strbuf_addch(&state.path_cookie_prefix, '/');
> +	strbuf_addstr(&state.path_cookie_prefix, FSMONITOR_COOKIE_DIR);
> +	mkdir(state.path_cookie_prefix.buf, 0777);
> +
> +	strbuf_addch(&state.path_cookie_prefix, '/');
> +
>  	/*
>  	 * Confirm that we can create platform-specific resources for the
>  	 * filesystem listener before we bother starting all the threads.
> @@ -1047,6 +1249,7 @@ static int fsmonitor_run_daemon(void)
>  	err = fsmonitor_run_daemon_1(&state);
>
>  done:
> +	pthread_cond_destroy(&state.cookies_cond);
>  	pthread_mutex_destroy(&state.main_lock);
>  	fsmonitor_fs_listen__dtor(&state);
>
> @@ -1054,6 +1257,11 @@ static int fsmonitor_run_daemon(void)
>
>  	strbuf_release(&state.path_worktree_watch);
>  	strbuf_release(&state.path_gitdir_watch);
> +	strbuf_release(&state.path_cookie_prefix);
> +
> +	/*
> +	 * NEEDSWORK: Consider "rm -rf <gitdir>/<fsmonitor-dir>"
> +	 */
>
>  	return err;
>  }
> diff --git a/fsmonitor--daemon.h b/fsmonitor--daemon.h
> index 89a9ef20b24b..e9fc099bae9c 100644
> --- a/fsmonitor--daemon.h
> +++ b/fsmonitor--daemon.h
> @@ -45,6 +45,11 @@ struct fsmonitor_daemon_state {
>
>  	struct fsmonitor_token_data *current_token_data;
>
> +	struct strbuf path_cookie_prefix;
> +	pthread_cond_t cookies_cond;
> +	int cookie_seq;
> +	struct hashmap cookies;
> +
>  	int error_code;
>  	struct fsmonitor_daemon_backend_data *backend_data;
>
> --
> gitgitgadget
>
>

  reply	other threads:[~2021-06-14 21:43 UTC|newest]

Thread overview: 237+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-01 15:40 [PATCH 00/23] [RFC] Builtin FSMonitor Feature Jeff Hostetler via GitGitGadget
2021-04-01 15:40 ` [PATCH 01/23] fsmonitor--daemon: man page and documentation Jeff Hostetler via GitGitGadget
2021-04-26 14:13   ` Derrick Stolee
2021-04-28 13:54     ` Jeff Hostetler
2021-04-01 15:40 ` [PATCH 02/23] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-04-26 14:31   ` Derrick Stolee
2021-04-26 20:20     ` Eric Sunshine
2021-04-26 21:02       ` Derrick Stolee
2021-04-28 19:26     ` Jeff Hostetler
2021-04-01 15:40 ` [PATCH 03/23] config: FSMonitor is repository-specific Johannes Schindelin via GitGitGadget
2021-04-01 15:40 ` [PATCH 04/23] fsmonitor: introduce `core.useBuiltinFSMonitor` to call the daemon via IPC Johannes Schindelin via GitGitGadget
2021-04-26 14:56   ` Derrick Stolee
2021-04-27  9:20     ` Ævar Arnfjörð Bjarmason
2021-04-27 12:42       ` Derrick Stolee
2021-04-28  7:59         ` Ævar Arnfjörð Bjarmason
2021-04-28 16:26           ` [PATCH] repo-settings.c: simplify the setup Ævar Arnfjörð Bjarmason
2021-04-28 19:09             ` Nesting topics within other threads (was: [PATCH] repo-settings.c: simplify the setup) Derrick Stolee
2021-04-28 23:01               ` Ævar Arnfjörð Bjarmason
2021-05-05 16:12                 ` Johannes Schindelin
2021-04-29  5:12               ` Nesting topics within other threads Junio C Hamano
2021-04-29 12:14                 ` Ævar Arnfjörð Bjarmason
2021-04-29 20:14                   ` Jeff King
2021-04-30  0:07                   ` Junio C Hamano
2021-04-30 14:23     ` [PATCH 04/23] fsmonitor: introduce `core.useBuiltinFSMonitor` to call the daemon via IPC Jeff Hostetler
2021-04-01 15:40 ` [PATCH 05/23] fsmonitor--daemon: add a built-in fsmonitor daemon Jeff Hostetler via GitGitGadget
2021-04-26 15:08   ` Derrick Stolee
2021-04-26 15:45     ` Derrick Stolee
2021-04-30 14:31       ` Jeff Hostetler
2021-04-01 15:40 ` [PATCH 06/23] fsmonitor--daemon: implement client command options Jeff Hostetler via GitGitGadget
2021-04-26 15:12   ` Derrick Stolee
2021-04-30 14:33     ` Jeff Hostetler
2021-04-01 15:40 ` [PATCH 07/23] fsmonitor-fs-listen-win32: stub in backend for Windows Jeff Hostetler via GitGitGadget
2021-04-26 15:23   ` Derrick Stolee
2021-04-01 15:40 ` [PATCH 08/23] fsmonitor-fs-listen-macos: stub in backend for MacOS Jeff Hostetler via GitGitGadget
2021-04-01 15:40 ` [PATCH 09/23] fsmonitor--daemon: implement daemon command options Jeff Hostetler via GitGitGadget
2021-04-26 15:47   ` Derrick Stolee
2021-04-26 16:12     ` Derrick Stolee
2021-04-30 15:18       ` Jeff Hostetler
2021-04-30 15:59     ` Jeff Hostetler
2021-04-01 15:40 ` [PATCH 10/23] fsmonitor--daemon: add pathname classification Jeff Hostetler via GitGitGadget
2021-04-26 19:17   ` Derrick Stolee
2021-04-26 20:11     ` Eric Sunshine
2021-04-26 20:24       ` Derrick Stolee
2021-04-01 15:40 ` [PATCH 11/23] fsmonitor--daemon: define token-ids Jeff Hostetler via GitGitGadget
2021-04-26 19:49   ` Derrick Stolee
2021-04-26 20:01     ` Eric Sunshine
2021-04-26 20:03       ` Derrick Stolee
2021-04-30 16:17     ` Jeff Hostetler
2021-04-01 15:40 ` [PATCH 12/23] fsmonitor--daemon: create token-based changed path cache Jeff Hostetler via GitGitGadget
2021-04-26 20:22   ` Derrick Stolee
2021-04-30 17:36     ` Jeff Hostetler
2021-04-01 15:40 ` [PATCH 13/23] fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows Jeff Hostetler via GitGitGadget
2021-04-27 17:22   ` Derrick Stolee
2021-04-27 17:41     ` Eric Sunshine
2021-04-30 19:32     ` Jeff Hostetler
2021-04-01 15:40 ` [PATCH 14/23] fsmonitor-fs-listen-macos: add macos header files for FSEvent Jeff Hostetler via GitGitGadget
2021-04-27 18:13   ` Derrick Stolee
2021-04-01 15:40 ` [PATCH 15/23] fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS Jeff Hostetler via GitGitGadget
2021-04-27 18:35   ` Derrick Stolee
2021-04-30 20:05     ` Jeff Hostetler
2021-04-01 15:40 ` [PATCH 16/23] fsmonitor--daemon: implement handle_client callback Jeff Hostetler via GitGitGadget
2021-04-26 21:01   ` Derrick Stolee
2021-05-03 15:04     ` Jeff Hostetler
2021-05-13 18:52   ` Derrick Stolee
2021-04-01 15:40 ` [PATCH 17/23] fsmonitor--daemon: periodically truncate list of modified files Jeff Hostetler via GitGitGadget
2021-04-27 13:24   ` Derrick Stolee
2021-04-01 15:41 ` [PATCH 18/23] fsmonitor--daemon:: introduce client delay for testing Jeff Hostetler via GitGitGadget
2021-04-27 13:36   ` Derrick Stolee
2021-04-01 15:41 ` [PATCH 19/23] fsmonitor--daemon: use a cookie file to sync with file system Jeff Hostetler via GitGitGadget
2021-04-27 14:23   ` Derrick Stolee
2021-05-03 21:59     ` Jeff Hostetler
2021-04-01 15:41 ` [PATCH 20/23] fsmonitor: force update index when fsmonitor token advances Jeff Hostetler via GitGitGadget
2021-04-27 14:52   ` Derrick Stolee
2021-04-01 15:41 ` [PATCH 21/23] t7527: create test for fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-04-27 15:41   ` Derrick Stolee
2021-04-01 15:41 ` [PATCH 22/23] p7519: add fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-04-27 15:45   ` Derrick Stolee
2021-04-01 15:41 ` [PATCH 23/23] t7527: test status with untracked-cache and fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-04-27 15:51   ` Derrick Stolee
2021-04-16 22:44 ` [PATCH 00/23] [RFC] Builtin FSMonitor Feature Junio C Hamano
2021-04-20 15:27   ` Johannes Schindelin
2021-04-20 19:13     ` Jeff Hostetler
2021-04-21 13:17     ` Derrick Stolee
2021-04-27 18:49 ` FS Monitor Windows Performance (was [PATCH 00/23] [RFC] Builtin FSMonitor Feature) Derrick Stolee
2021-04-27 19:31 ` FS Monitor macOS " Derrick Stolee
2021-05-22 13:56 ` [PATCH v2 00/28] Builtin FSMonitor Feature Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 01/28] simple-ipc: preparations for supporting binary messages Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 02/28] fsmonitor--daemon: man page Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 03/28] fsmonitor--daemon: update fsmonitor documentation Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 04/28] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-06-02 11:24     ` Johannes Schindelin
2021-06-14 21:23       ` Johannes Schindelin
2021-05-22 13:56   ` [PATCH v2 05/28] help: include fsmonitor--daemon feature flag in version info Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 06/28] config: FSMonitor is repository-specific Johannes Schindelin via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 07/28] fsmonitor: introduce `core.useBuiltinFSMonitor` to call the daemon via IPC Johannes Schindelin via GitGitGadget
2021-06-14 21:28     ` Johannes Schindelin
2021-05-22 13:56   ` [PATCH v2 08/28] fsmonitor--daemon: add a built-in fsmonitor daemon Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 09/28] fsmonitor--daemon: implement client command options Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 10/28] t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon Jeff Hostetler via GitGitGadget
2021-06-11  6:32     ` Junio C Hamano
2021-05-22 13:56   ` [PATCH v2 11/28] fsmonitor-fs-listen-win32: stub in backend for Windows Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 12/28] fsmonitor-fs-listen-macos: stub in backend for MacOS Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 13/28] fsmonitor--daemon: implement daemon command options Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 14/28] fsmonitor--daemon: add pathname classification Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 15/28] fsmonitor--daemon: define token-ids Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 16/28] fsmonitor--daemon: create token-based changed path cache Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 17/28] fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 18/28] fsmonitor-fs-listen-macos: add macos header files for FSEvent Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 19/28] fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS Jeff Hostetler via GitGitGadget
2021-05-22 13:56   ` [PATCH v2 20/28] fsmonitor--daemon: implement handle_client callback Jeff Hostetler via GitGitGadget
2021-05-22 13:57   ` [PATCH v2 21/28] fsmonitor--daemon: periodically truncate list of modified files Jeff Hostetler via GitGitGadget
2021-05-22 13:57   ` [PATCH v2 22/28] fsmonitor--daemon: use a cookie file to sync with file system Jeff Hostetler via GitGitGadget
2021-06-14 21:42     ` Johannes Schindelin [this message]
2021-05-22 13:57   ` [PATCH v2 23/28] fsmonitor: enhance existing comments Jeff Hostetler via GitGitGadget
2021-05-22 13:57   ` [PATCH v2 24/28] fsmonitor: force update index after large responses Jeff Hostetler via GitGitGadget
2021-05-22 13:57   ` [PATCH v2 25/28] t7527: create test for fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-05-22 13:57   ` [PATCH v2 26/28] p7519: add fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-05-22 13:57   ` [PATCH v2 27/28] t7527: test status with untracked-cache and fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-05-22 13:57   ` [PATCH v2 28/28] t/perf: avoid copying builtin fsmonitor files into test repo Jeff Hostetler via GitGitGadget
2021-05-27  2:06   ` [PATCH v2 00/28] Builtin FSMonitor Feature Junio C Hamano
2021-06-02 11:28     ` Johannes Schindelin
2021-06-22 15:45     ` Jeff Hostetler
2021-07-01 14:47   ` [PATCH v3 00/34] " Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 01/34] simple-ipc: preparations for supporting binary messages Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 02/34] fsmonitor--daemon: man page Jeff Hostetler via GitGitGadget
2021-07-01 22:29       ` Ævar Arnfjörð Bjarmason
2021-07-05 22:00         ` Johannes Schindelin
2021-07-12 19:23         ` Jeff Hostetler
2021-07-13 17:46           ` Ævar Arnfjörð Bjarmason
2021-07-16 15:45             ` Johannes Schindelin
2021-07-16 17:04               ` Felipe Contreras
2021-07-01 14:47     ` [PATCH v3 03/34] fsmonitor--daemon: update fsmonitor documentation Jeff Hostetler via GitGitGadget
2021-07-01 22:31       ` Ævar Arnfjörð Bjarmason
2021-07-01 14:47     ` [PATCH v3 04/34] fsmonitor-ipc: create client routines for git-fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 05/34] help: include fsmonitor--daemon feature flag in version info Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 06/34] fsmonitor: config settings are repository-specific Jeff Hostetler via GitGitGadget
2021-07-01 16:46       ` Ævar Arnfjörð Bjarmason
2021-07-19 20:36         ` Jeff Hostetler
2021-07-01 14:47     ` [PATCH v3 07/34] fsmonitor: use IPC to query the builtin FSMonitor daemon Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 08/34] fsmonitor--daemon: add a built-in fsmonitor daemon Jeff Hostetler via GitGitGadget
2021-07-01 22:36       ` Ævar Arnfjörð Bjarmason
2021-07-19 20:56         ` Jeff Hostetler
2021-07-01 14:47     ` [PATCH v3 09/34] fsmonitor--daemon: implement 'stop' and 'status' commands Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 10/34] t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon Jeff Hostetler via GitGitGadget
2021-07-01 22:41       ` Ævar Arnfjörð Bjarmason
2021-07-01 14:47     ` [PATCH v3 11/34] fsmonitor-fs-listen-win32: stub in backend for Windows Jeff Hostetler via GitGitGadget
2021-07-01 22:45       ` Ævar Arnfjörð Bjarmason
2021-07-16 15:47         ` Johannes Schindelin
2021-07-16 16:55           ` Ævar Arnfjörð Bjarmason
2021-07-17  5:13             ` Junio C Hamano
2021-07-17  5:21               ` Junio C Hamano
2021-07-17 21:43               ` Ævar Arnfjörð Bjarmason
2021-07-19 19:58                 ` Junio C Hamano
2021-07-16 16:59           ` Felipe Contreras
2021-07-19 16:54         ` Jeff Hostetler
2021-07-20 20:32           ` Ævar Arnfjörð Bjarmason
2021-07-01 14:47     ` [PATCH v3 12/34] fsmonitor-fs-listen-macos: stub in backend for MacOS Jeff Hostetler via GitGitGadget
2021-07-01 22:49       ` Ævar Arnfjörð Bjarmason
2021-07-16 15:51         ` Johannes Schindelin
2021-07-16 16:52           ` Ævar Arnfjörð Bjarmason
2021-07-26 21:40             ` Johannes Schindelin
2021-07-26 23:26               ` Junio C Hamano
2021-07-27 12:46                 ` Jeff Hostetler
2021-07-27 15:56                   ` Ævar Arnfjörð Bjarmason
2021-07-27 17:25                   ` Junio C Hamano
2021-07-27 17:45                     ` Felipe Contreras
2021-07-01 14:47     ` [PATCH v3 13/34] fsmonitor--daemon: implement 'run' command Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 14/34] fsmonitor--daemon: implement 'start' command Jeff Hostetler via GitGitGadget
2021-07-01 22:18       ` Ævar Arnfjörð Bjarmason
2021-07-05 21:52         ` Johannes Schindelin
2021-07-13 14:39         ` Jeff Hostetler
2021-07-13 17:54           ` Ævar Arnfjörð Bjarmason
2021-07-13 18:44             ` Jeff Hostetler
2021-07-20 19:38               ` Ævar Arnfjörð Bjarmason
2021-07-01 14:47     ` [PATCH v3 15/34] fsmonitor: do not try to operate on bare repos Jeff Hostetler via GitGitGadget
2021-07-01 22:53       ` Ævar Arnfjörð Bjarmason
2021-07-01 14:47     ` [PATCH v3 16/34] fsmonitor--daemon: add pathname classification Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 17/34] fsmonitor--daemon: define token-ids Jeff Hostetler via GitGitGadget
2021-07-01 22:58       ` Ævar Arnfjörð Bjarmason
2021-07-13 15:15         ` Jeff Hostetler
2021-07-13 18:11           ` Ævar Arnfjörð Bjarmason
2021-07-01 14:47     ` [PATCH v3 18/34] fsmonitor--daemon: create token-based changed path cache Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 19/34] fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows Jeff Hostetler via GitGitGadget
2021-07-01 23:02       ` Ævar Arnfjörð Bjarmason
2021-07-13 15:46         ` Jeff Hostetler
2021-07-13 18:15           ` Ævar Arnfjörð Bjarmason
2021-07-16 15:55             ` Johannes Schindelin
2021-07-16 16:27               ` Ævar Arnfjörð Bjarmason
2021-07-17 12:45                 ` Eric Wong
2021-07-19 22:35                   ` Jeff Hostetler
2021-07-16 16:55               ` Felipe Contreras
2021-07-06 19:09       ` Johannes Schindelin
2021-07-13 15:18         ` Jeff Hostetler
2021-07-01 14:47     ` [PATCH v3 20/34] fsmonitor-fs-listen-macos: add macos header files for FSEvent Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 21/34] fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 22/34] fsmonitor--daemon: implement handle_client callback Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 23/34] t/helper/test-touch: add helper to touch a series of files Jeff Hostetler via GitGitGadget
2021-07-01 20:00       ` Junio C Hamano
2021-07-13 16:45         ` Jeff Hostetler
2021-07-01 14:47     ` [PATCH v3 24/34] t/perf/p7519: speed up test using "test-tool touch" Jeff Hostetler via GitGitGadget
2021-07-01 23:09       ` Ævar Arnfjörð Bjarmason
2021-07-13 17:06         ` Jeff Hostetler
2021-07-13 17:36           ` Elijah Newren
2021-07-13 17:47             ` Junio C Hamano
2021-07-13 17:50               ` Elijah Newren
2021-07-13 17:58             ` Jeff Hostetler
2021-07-13 18:07               ` Junio C Hamano
2021-07-13 18:19                 ` Jeff Hostetler
2021-07-13 18:18           ` Ævar Arnfjörð Bjarmason
2021-07-13 19:05             ` Jeff Hostetler
2021-07-20 19:18               ` Ævar Arnfjörð Bjarmason
2021-07-13 18:04       ` Jeff Hostetler
2021-07-01 14:47     ` [PATCH v3 25/34] t/perf: avoid copying builtin fsmonitor files into test repo Jeff Hostetler via GitGitGadget
2021-07-01 23:11       ` Ævar Arnfjörð Bjarmason
2021-07-01 14:47     ` [PATCH v3 26/34] t/perf/p7519: add fsmonitor--daemon test cases Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 27/34] t7527: create test for fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-07-01 23:15       ` Ævar Arnfjörð Bjarmason
2021-07-01 14:47     ` [PATCH v3 28/34] fsmonitor--daemon: periodically truncate list of modified files Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 29/34] fsmonitor--daemon: use a cookie file to sync with file system Jeff Hostetler via GitGitGadget
2021-07-01 23:17       ` Ævar Arnfjörð Bjarmason
2021-07-21 14:40         ` Jeff Hostetler
2021-07-01 14:47     ` [PATCH v3 30/34] fsmonitor: enhance existing comments Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 31/34] fsmonitor: force update index after large responses Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 32/34] t7527: test status with untracked-cache and fsmonitor--daemon Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 33/34] fsmonitor: handle shortname for .git Jeff Hostetler via GitGitGadget
2021-07-01 14:47     ` [PATCH v3 34/34] t7527: test FS event reporing on MacOS WRT case and Unicode Jeff Hostetler via GitGitGadget
2021-07-01 23:39       ` Ævar Arnfjörð Bjarmason
2021-07-01 17:40     ` [PATCH v3 00/34] Builtin FSMonitor Feature Ævar Arnfjörð Bjarmason
2021-07-01 18:29       ` Jeff Hostetler
2021-07-01 21:26         ` Ævar Arnfjörð Bjarmason
2021-07-02 19:06           ` Jeff Hostetler
2021-07-05 22:52             ` Ævar Arnfjörð Bjarmason
2021-07-05 21:35           ` Johannes Schindelin
2021-07-05 22:02             ` Ævar Arnfjörð Bjarmason
2021-07-06 13:12               ` Johannes Schindelin
2021-07-07  2:14                 ` Felipe Contreras
2021-07-07  1:53             ` Felipe Contreras

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=nycvar.QRO.7.76.6.2106142330000.57@tvgsbejvaqbjf.bet \
    --to=johannes.schindelin@gmx.de \
    --cc=git@jeffhostetler.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=jeffhost@microsoft.com \
    --cc=stolee@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).