git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 03/29] fsmonitor: config settings are repository-specific

From
JGJeff Hostetler via GitGitGadget <gitgitgadget@gmail.com>
Date
Oct 21, 2021, 14:24 UTC
Message-ID
<882789b4dfebddb059f62b0b2edb95b92f3c69ee.1634826309.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>
From: Jeff Hostetler <jeffhost@microsoft.com>

Move fsmonitor config settings to a new and opaque `struct fsmonitor_settings` structure. Add a lazily-loaded pointer to this into `struct repo_settings`

Create an `enum fsmonitor_mode` type in `struct fsmonitor_settings` to represent the state of fsmonitor. This lets us represent which, if any, fsmonitor provider (hook or IPC) is enabled.

Create `fsm_settings__get_*()` getters to lazily look up fsmonitor- related config settings.

Add support for the new `core.useBuiltinFSMonitor` config setting.

Get rid of the `core_fsmonitor` global variable. Move the code to lookup the existing `core.fsmonitor` config value into the fsmonitor settings.

Create a hook pathname variable in `struct fsmonitor-settings` and only set it when in hook mode.

The existing `core_fsmonitor` global variable was used to store the pathname to the fsmonitor hook *and* it was used as a boolean to see if fsmonitor was enabled. This dual usage and global visibility leads to confusion when we add the IPC-based provider. So lets hide the details in fsmonitor-settings.c and let it decide which provider to use in the case of multiple settings. This avoids cluttering up repo-settings.c with these private details.

A future commit in builtin-fsmonitor series will add the ability to disqualify worktrees for various reasons, such as being mounted from a remote volume, where fsmonitor should not be started. Having the config settings hidden in fsmonitor-settings.c allows such worktree restrictions to override the config values used.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
---
 Makefile               |  1 +
 builtin/update-index.c | 19 +++++++--
 cache.h                |  1 -
 config.c               | 14 ------
 config.h               |  1 -
 environment.c          |  1 -
 fsmonitor-settings.c   | 97 ++++++++++++++++++++++++++++++++++++++++++
 fsmonitor-settings.h   | 21 +++++++++
 fsmonitor.c            | 63 ++++++++++++++++-----------
 fsmonitor.h            | 18 ++++++--
 repository.h           |  3 ++
 t/README               |  4 +-
 12 files changed, 192 insertions(+), 51 deletions(-)
 create mode 100644 fsmonitor-settings.c
 create mode 100644 fsmonitor-settings.h
diff --git a/Makefile b/Makefile
index d51fd8b33ce..29ed7c4aba6 100644
--- a/Makefile
+++ b/Makefile
@@ -898,6 +898,7 @@ LIB_OBJS += fmt-merge-msg.o
 LIB_OBJS += fsck.o
 LIB_OBJS += fsmonitor.o
 LIB_OBJS += fsmonitor-ipc.o
+LIB_OBJS += fsmonitor-settings.o
 LIB_OBJS += gettext.o
 LIB_OBJS += gpg-interface.o
 LIB_OBJS += graph.o
diff --git a/builtin/update-index.c b/builtin/update-index.c
index 187203e8bb5..79db3ff37e2 100644
--- a/builtin/update-index.c
+++ b/builtin/update-index.c
@@ -1214,14 +1214,25 @@ int cmd_update_index(int argc, const char **argv, const char *prefix)
 	}
 
 	if (fsmonitor > 0) {
-		if (git_config_get_fsmonitor() == 0)
+		enum fsmonitor_mode fsm_mode = fsm_settings__get_mode(r);
+
+		if (fsm_mode == FSMONITOR_MODE_DISABLED) {
+			warning(_("core.useBuiltinFSMonitor is unset; "
+				"set it if you really want to enable the "
+				"builtin fsmonitor"));
 			warning(_("core.fsmonitor is unset; "
-				"set it if you really want to "
-				"enable fsmonitor"));
+				"set it if you really want to enable the "
+				"hook-based fsmonitor"));
+		}
 		add_fsmonitor(&the_index);
 		report(_("fsmonitor enabled"));
 	} else if (!fsmonitor) {
-		if (git_config_get_fsmonitor() == 1)
+		enum fsmonitor_mode fsm_mode = fsm_settings__get_mode(r);
+		if (fsm_mode == FSMONITOR_MODE_IPC)
+			warning(_("core.useBuiltinFSMonitor is set; "
+				"remove it if you really want to "
+				"disable fsmonitor"));
+		if (fsm_mode == FSMONITOR_MODE_HOOK)
 			warning(_("core.fsmonitor is set; "
 				"remove it if you really want to "
 				"disable fsmonitor"));
diff --git a/cache.h b/cache.h
index d092820c943..8f4e3c8bd1d 100644
--- a/cache.h
+++ b/cache.h
@@ -989,7 +989,6 @@ extern int core_preload_index;
 extern int precomposed_unicode;
 extern int protect_hfs;
 extern int protect_ntfs;
-extern const char *core_fsmonitor;
 
 extern int core_apply_sparse_checkout;
 extern int core_sparse_checkout_cone;
diff --git a/config.c b/config.c
index 2dcbe901b6b..6b6e9cacac3 100644
--- a/config.c
+++ b/config.c
@@ -2502,20 +2502,6 @@ int git_config_get_max_percent_split_change(void)
 	return -1; /* default value */
 }
 
-int git_config_get_fsmonitor(void)
-{
-	if (git_config_get_pathname("core.fsmonitor", &core_fsmonitor))
-		core_fsmonitor = getenv("GIT_TEST_FSMONITOR");
-
-	if (core_fsmonitor && !*core_fsmonitor)
-		core_fsmonitor = NULL;
-
-	if (core_fsmonitor)
-		return 1;
-
-	return 0;
-}
-
 int git_config_get_index_threads(int *dest)
 {
 	int is_bool, val;
diff --git a/config.h b/config.h
index f119de01309..69d733824a0 100644
--- a/config.h
+++ b/config.h
@@ -610,7 +610,6 @@ int git_config_get_pathname(const char *key, const char **dest);
 int git_config_get_index_threads(int *dest);
 int git_config_get_split_index(void);
 int git_config_get_max_percent_split_change(void);
-int git_config_get_fsmonitor(void);
 
 /* This dies if the configured or default date is in the future */
 int git_config_get_expiry(const char *key, const char **output);
diff --git a/environment.c b/environment.c
index 9da7f3c1a19..68f90632245 100644
--- a/environment.c
+++ b/environment.c
@@ -82,7 +82,6 @@ int protect_hfs = PROTECT_HFS_DEFAULT;
 #define PROTECT_NTFS_DEFAULT 1
 #endif
 int protect_ntfs = PROTECT_NTFS_DEFAULT;
-const char *core_fsmonitor;
 
 /*
  * The character that begins a commented line in user-editable file
diff --git a/fsmonitor-settings.c b/fsmonitor-settings.c
new file mode 100644
index 00000000000..2770266f5ee
--- /dev/null
+++ b/fsmonitor-settings.c
@@ -0,0 +1,97 @@
+#include "cache.h"
+#include "config.h"
+#include "repository.h"
+#include "fsmonitor-settings.h"
+
+/*
+ * We keep this structure defintion private and have getters
+ * for all fields so that we can lazy load it as needed.
+ */
+struct fsmonitor_settings {
+	enum fsmonitor_mode mode;
+	char *hook_path;
+};
+
+void fsm_settings__set_ipc(struct repository *r)
+{
+	struct fsmonitor_settings *s = r->settings.fsmonitor;
+
+	s->mode = FSMONITOR_MODE_IPC;
+}
+
+void fsm_settings__set_hook(struct repository *r, const char *path)
+{
+	struct fsmonitor_settings *s = r->settings.fsmonitor;
+
+	s->mode = FSMONITOR_MODE_HOOK;
+	s->hook_path = strdup(path);
+}
+
+void fsm_settings__set_disabled(struct repository *r)
+{
+	struct fsmonitor_settings *s = r->settings.fsmonitor;
+
+	s->mode = FSMONITOR_MODE_DISABLED;
+	FREE_AND_NULL(s->hook_path);
+}
+
+static int check_for_ipc(struct repository *r)
+{
+	int value;
+
+	if (!repo_config_get_bool(r, "core.usebuiltinfsmonitor", &value) &&
+	    value) {
+		fsm_settings__set_ipc(r);
+		return 1;
+	}
+
+	return 0;
+}
+
+static int check_for_hook(struct repository *r)
+{
+	const char *const_str;
+
+	if (repo_config_get_pathname(r, "core.fsmonitor", &const_str))
+		const_str = getenv("GIT_TEST_FSMONITOR");
+
+	if (const_str && *const_str) {
+		fsm_settings__set_hook(r, const_str);
+		return 1;
+	}
+
+	return 0;
+}
+
+static void lookup_fsmonitor_settings(struct repository *r)
+{
+	struct fsmonitor_settings *s;
+
+	CALLOC_ARRAY(s, 1);
+
+	r->settings.fsmonitor = s;
+
+	if (check_for_ipc(r))
+		return;
+
+	if (check_for_hook(r))
+		return;
+
+	fsm_settings__set_disabled(r);
+}
+
+enum fsmonitor_mode fsm_settings__get_mode(struct repository *r)
+{
+	if (!r->settings.fsmonitor)
+		lookup_fsmonitor_settings(r);
+
+	return r->settings.fsmonitor->mode;
+}
+
+const char *fsm_settings__get_hook_path(struct repository *r)
+{
+	if (!r->settings.fsmonitor)
+		lookup_fsmonitor_settings(r);
+
+	return r->settings.fsmonitor->hook_path;
+}
diff --git a/fsmonitor-settings.h b/fsmonitor-settings.h
new file mode 100644
index 00000000000..50b29234616
--- /dev/null
+++ b/fsmonitor-settings.h
@@ -0,0 +1,21 @@
+#ifndef FSMONITOR_SETTINGS_H
+#define FSMONITOR_SETTINGS_H
+
+struct repository;
+
+enum fsmonitor_mode {
+	FSMONITOR_MODE_DISABLED = 0,
+	FSMONITOR_MODE_HOOK = 1, /* core.fsmonitor */
+	FSMONITOR_MODE_IPC = 2,  /* core.useBuiltinFSMonitor */
+};
+
+void fsm_settings__set_ipc(struct repository *r);
+void fsm_settings__set_hook(struct repository *r, const char *path);
+void fsm_settings__set_disabled(struct repository *r);
+
+enum fsmonitor_mode fsm_settings__get_mode(struct repository *r);
+const char *fsm_settings__get_hook_path(struct repository *r);
+
+struct fsmonitor_settings;
+
+#endif /* FSMONITOR_SETTINGS_H */
diff --git a/fsmonitor.c b/fsmonitor.c
index ec4c46407c5..63174630c0e 100644
--- a/fsmonitor.c
+++ b/fsmonitor.c
@@ -3,6 +3,7 @@
 #include "dir.h"
 #include "ewah/ewok.h"
 #include "fsmonitor.h"
+#include "fsmonitor-ipc.h"
 #include "run-command.h"
 #include "strbuf.h"
 
@@ -148,15 +149,18 @@ void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate)
 /*
  * Call the query-fsmonitor hook passing the last update token of the saved results.
  */
-static int query_fsmonitor(int version, const char *last_update, struct strbuf *query_result)
+static int query_fsmonitor_hook(struct repository *r,
+				int version,
+				const char *last_update,
+				struct strbuf *query_result)
 {
 	struct child_process cp = CHILD_PROCESS_INIT;
 	int result;
 
-	if (!core_fsmonitor)
+	if (fsm_settings__get_mode(r) != FSMONITOR_MODE_HOOK)
 		return -1;
 
-	strvec_push(&cp.args, core_fsmonitor);
+	strvec_push(&cp.args, fsm_settings__get_hook_path(r));
 	strvec_pushf(&cp.args, "%d", version);
 	strvec_pushf(&cp.args, "%s", last_update);
 	cp.use_shell = 1;
@@ -238,17 +242,28 @@ void refresh_fsmonitor(struct index_state *istate)
 	struct strbuf last_update_token = STRBUF_INIT;
 	char *buf;
 	unsigned int i;
+	struct repository *r = istate->repo ? istate->repo : the_repository;
+	enum fsmonitor_mode fsm_mode = fsm_settings__get_mode(r);
 
-	if (!core_fsmonitor || istate->fsmonitor_has_run_once)
+	if (fsm_mode <= FSMONITOR_MODE_DISABLED ||
+	    istate->fsmonitor_has_run_once)
 		return;
 
-	hook_version = fsmonitor_hook_version();
-
 	istate->fsmonitor_has_run_once = 1;
 
 	trace_printf_key(&trace_fsmonitor, "refresh fsmonitor");
+
+	if (fsm_mode == FSMONITOR_MODE_IPC) {
+		/* TODO */
+		return;
+	}
+
+	assert(fsm_mode == FSMONITOR_MODE_HOOK);
+
+	hook_version = fsmonitor_hook_version();
+
 	/*
-	 * This could be racy so save the date/time now and query_fsmonitor
+	 * This could be racy so save the date/time now and query_fsmonitor_hook
 	 * should be inclusive to ensure we don't miss potential changes.
 	 */
 	last_update = getnanotime();
@@ -256,13 +271,14 @@ void refresh_fsmonitor(struct index_state *istate)
 		strbuf_addf(&last_update_token, "%"PRIu64"", last_update);
 
 	/*
-	 * If we have a last update token, call query_fsmonitor for the set of
+	 * If we have a last update token, call query_fsmonitor_hook for the set of
 	 * changes since that token, else assume everything is possibly dirty
 	 * and check it all.
 	 */
 	if (istate->fsmonitor_last_update) {
 		if (hook_version == -1 || hook_version == HOOK_INTERFACE_VERSION2) {
-			query_success = !query_fsmonitor(HOOK_INTERFACE_VERSION2,
+			query_success = !query_fsmonitor_hook(
+				r, HOOK_INTERFACE_VERSION2,
 				istate->fsmonitor_last_update, &query_result);
 
 			if (query_success) {
@@ -292,13 +308,17 @@ void refresh_fsmonitor(struct index_state *istate)
 		}
 
 		if (hook_version == HOOK_INTERFACE_VERSION1) {
-			query_success = !query_fsmonitor(HOOK_INTERFACE_VERSION1,
+			query_success = !query_fsmonitor_hook(
+				r, HOOK_INTERFACE_VERSION1,
 				istate->fsmonitor_last_update, &query_result);
 		}
 
-		trace_performance_since(last_update, "fsmonitor process '%s'", core_fsmonitor);
-		trace_printf_key(&trace_fsmonitor, "fsmonitor process '%s' returned %s",
-			core_fsmonitor, query_success ? "success" : "failure");
+		trace_performance_since(last_update, "fsmonitor process '%s'",
+					fsm_settings__get_hook_path(r));
+		trace_printf_key(&trace_fsmonitor,
+				 "fsmonitor process '%s' returned %s",
+				 fsm_settings__get_hook_path(r),
+				 query_success ? "success" : "failure");
 	}
 
 	/*
@@ -434,7 +454,8 @@ void remove_fsmonitor(struct index_state *istate)
 void tweak_fsmonitor(struct index_state *istate)
 {
 	unsigned int i;
-	int fsmonitor_enabled = git_config_get_fsmonitor();
+	struct repository *r = istate->repo ? istate->repo : the_repository;
+	int fsmonitor_enabled = (fsm_settings__get_mode(r) > FSMONITOR_MODE_DISABLED);
 
 	if (istate->fsmonitor_dirty) {
 		if (fsmonitor_enabled) {
@@ -454,16 +475,8 @@ void tweak_fsmonitor(struct index_state *istate)
 		istate->fsmonitor_dirty = NULL;
 	}
 
-	switch (fsmonitor_enabled) {
-	case -1: /* keep: do nothing */
-		break;
-	case 0: /* false */
-		remove_fsmonitor(istate);
-		break;
-	case 1: /* true */
+	if (fsmonitor_enabled)
 		add_fsmonitor(istate);
-		break;
-	default: /* unknown value: do nothing */
-		break;
-	}
+	else
+		remove_fsmonitor(istate);
 }
diff --git a/fsmonitor.h b/fsmonitor.h
index f20d72631d7..f9201411aa7 100644
--- a/fsmonitor.h
+++ b/fsmonitor.h
@@ -3,6 +3,7 @@
 
 #include "cache.h"
 #include "dir.h"
+#include "fsmonitor-settings.h"
 
 extern struct trace_key trace_fsmonitor;
 
@@ -57,7 +58,11 @@ int fsmonitor_is_trivial_response(const struct strbuf *query_result);
  */
 static inline int is_fsmonitor_refreshed(const struct index_state *istate)
 {
-	return !core_fsmonitor || istate->fsmonitor_has_run_once;
+	struct repository *r = istate->repo ? istate->repo : the_repository;
+	enum fsmonitor_mode fsm_mode = fsm_settings__get_mode(r);
+
+	return fsm_mode <= FSMONITOR_MODE_DISABLED ||
+		istate->fsmonitor_has_run_once;
 }
 
 /*
@@ -67,7 +72,11 @@ static inline int is_fsmonitor_refreshed(const struct index_state *istate)
  */
 static inline void mark_fsmonitor_valid(struct index_state *istate, struct cache_entry *ce)
 {
-	if (core_fsmonitor && !(ce->ce_flags & CE_FSMONITOR_VALID)) {
+	struct repository *r = istate->repo ? istate->repo : the_repository;
+	enum fsmonitor_mode fsm_mode = fsm_settings__get_mode(r);
+
+	if (fsm_mode > FSMONITOR_MODE_DISABLED &&
+	    !(ce->ce_flags & CE_FSMONITOR_VALID)) {
 		istate->cache_changed = 1;
 		ce->ce_flags |= CE_FSMONITOR_VALID;
 		trace_printf_key(&trace_fsmonitor, "mark_fsmonitor_clean '%s'", ce->name);
@@ -83,7 +92,10 @@ static inline void mark_fsmonitor_valid(struct index_state *istate, struct cache
  */
 static inline void mark_fsmonitor_invalid(struct index_state *istate, struct cache_entry *ce)
 {
-	if (core_fsmonitor) {
+	struct repository *r = istate->repo ? istate->repo : the_repository;
+	enum fsmonitor_mode fsm_mode = fsm_settings__get_mode(r);
+
+	if (fsm_mode > FSMONITOR_MODE_DISABLED) {
 		ce->ce_flags &= ~CE_FSMONITOR_VALID;
 		untracked_cache_invalidate_path(istate, ce->name, 1);
 		trace_printf_key(&trace_fsmonitor, "mark_fsmonitor_invalid '%s'", ce->name);
diff --git a/repository.h b/repository.h
index a057653981c..89a1873ade7 100644
--- a/repository.h
+++ b/repository.h
@@ -4,6 +4,7 @@
 #include "path.h"
 
 struct config_set;
+struct fsmonitor_settings;
 struct git_hash_algo;
 struct index_state;
 struct lock_file;
@@ -34,6 +35,8 @@ struct repo_settings {
 	int command_requires_full_index;
 	int sparse_index;
 
+	struct fsmonitor_settings *fsmonitor; /* lazy loaded */
+
 	int index_version;
 	enum untracked_cache_setting core_untracked_cache;
 
diff --git a/t/README b/t/README
index b92155a822e..6dc4a1d10cf 100644
--- a/t/README
+++ b/t/README
@@ -405,8 +405,8 @@ every 'git commit-graph write', as if the `--changed-paths` option was
 passed in.
 
 GIT_TEST_FSMONITOR=$PWD/t7519/fsmonitor-all exercises the fsmonitor
-code path for utilizing a file system monitor to speed up detecting
-new or changed files.
+code path for utilizing a (hook based) file system monitor to speed up
+detecting new or changed files.
 
 GIT_TEST_INDEX_VERSION=<n> exercises the index read/write code path
 for the index version specified.  Can be set to any valid version
-- 
gitgitgadget
Previous: Jeff HostetlerNext: Junio C Hamano
Message 31 of 298 in “Builtin FSMonitor Part 2”
  1. 0/5 Builtin FSMonitor Part 2Jeff Hostetler via GitGitGadget, Sep 16, 2021
  2. 1/5 fsmonitor: enhance existing commentsJeff Hostetler via GitGitGadget, Sep 16, 2021
  3. Bagas SanjayaSep 17, 2021
  4. Junio C HamanoSep 17, 2021
  5. Jeff HostetlerSep 23, 2021
  6. 2/5 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Sep 16, 2021
  7. 3/5 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Sep 16, 2021
  8. 4/5 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Sep 16, 2021
  9. 5/5 fsmonitor: update fsmonitor config documentationJeff Hostetler via GitGitGadget, Sep 16, 2021
  10. 0/5 Builtin FSMonitor Part 2Jeff Hostetler via GitGitGadget, Oct 7, 2021
  11. 1/5 fsmonitor: enhance existing commentsJeff Hostetler via GitGitGadget, Oct 7, 2021
  12. 2/5 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Oct 7, 2021
  13. 3/5 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Oct 7, 2021
  14. Ævar Arnfjörð BjarmasonOct 7, 2021
  15. Jeff HostetlerOct 8, 2021
  16. 4/5 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Oct 7, 2021
  17. 5/5 fsmonitor: update fsmonitor config documentationJeff Hostetler via GitGitGadget, Oct 7, 2021
  18. 0/5 Builtin FSMonitor Part 2Jeff Hostetler via GitGitGadget, Oct 13, 2021
  19. 2/5 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Oct 13, 2021
  20. 1/5 fsmonitor: enhance existing commentsJeff Hostetler via GitGitGadget, Oct 13, 2021
  21. 3/5 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Oct 13, 2021
  22. 4/5 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Oct 13, 2021
  23. 5/5 fsmonitor: update fsmonitor config documentationJeff Hostetler via GitGitGadget, Oct 13, 2021
  24. Ævar Arnfjörð BjarmasonOct 15, 2021
  25. Jeff HostetlerOct 20, 2021
  26. 00/29 Builtin FSMonitor Part 2Jeff Hostetler via GitGitGadget, Oct 21, 2021
  27. 02/29 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Oct 21, 2021
  28. 01/29 fsmonitor: enhance existing commentsJeff Hostetler via GitGitGadget, Oct 21, 2021
  29. Junio C HamanoOct 21, 2021
  30. Jeff HostetlerOct 27, 2021
  31. 03/29 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Oct 21, 2021
  32. Junio C HamanoOct 21, 2021
  33. Junio C HamanoOct 21, 2021
  34. Jeff HostetlerOct 27, 2021
  35. Jeff HostetlerOct 27, 2021
  36. 04/29 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Oct 21, 2021
  37. 05/29 fsmonitor: document builtin fsmonitorJeff Hostetler via GitGitGadget, Oct 21, 2021
  38. 06/29 fsmonitor--daemon: add a built-in fsmonitor daemonJeff Hostetler via GitGitGadget, Oct 21, 2021
  39. 11/29 fsmonitor--daemon: implement 'start' commandJeff Hostetler via GitGitGadget, Oct 21, 2021
  40. 08/29 compat/fsmonitor/fsm-listen-win32: stub in backend for WindowsJeff Hostetler via GitGitGadget, Oct 21, 2021
  41. 07/29 fsmonitor--daemon: implement 'stop' and 'status' commandsJeff Hostetler via GitGitGadget, Oct 21, 2021
  42. 09/29 compat/fsmonitor/fsm-listen-darwin: stub in backend for DarwinJeff Hostetler via GitGitGadget, Oct 21, 2021
  43. 10/29 fsmonitor--daemon: implement 'run' commandJeff Hostetler via GitGitGadget, Oct 21, 2021
  44. 12/29 fsmonitor--daemon: add pathname classificationJeff Hostetler via GitGitGadget, Oct 21, 2021
  45. 14/29 fsmonitor--daemon: create token-based changed path cacheJeff Hostetler via GitGitGadget, Oct 21, 2021
  46. 15/29 compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on WindowsJeff Hostetler via GitGitGadget, Oct 21, 2021
  47. 13/29 fsmonitor--daemon: define token-idsJeff Hostetler via GitGitGadget, Oct 21, 2021
  48. 16/29 compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEventJeff Hostetler via GitGitGadget, Oct 21, 2021
  49. 17/29 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOSJeff Hostetler via GitGitGadget, Oct 21, 2021
  50. 18/29 fsmonitor--daemon: implement handle_client callbackJeff Hostetler via GitGitGadget, Oct 21, 2021
  51. 20/29 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor DaemonJeff Hostetler via GitGitGadget, Oct 21, 2021
  52. 22/29 t/perf: avoid copying builtin fsmonitor files into test repoJeff Hostetler via GitGitGadget, Oct 21, 2021
  53. 19/29 help: include fsmonitor--daemon feature flag in version infoJeff Hostetler via GitGitGadget, Oct 21, 2021
  54. 21/29 t7527: create test for fsmonitor--daemonJeff Hostetler via GitGitGadget, Oct 21, 2021
  55. Junio C HamanoDec 26, 2021
  56. 24/29 t/perf/p7519: speed up test on WindowsJeff Hostetler via GitGitGadget, Oct 21, 2021
  57. Junio C HamanoDec 26, 2021
  58. 23/29 t/helper/test-chmtime: skip directories on WindowsJeff Hostetler via GitGitGadget, Oct 21, 2021
  59. 25/29 t/perf/p7519: add fsmonitor--daemon test casesJeff Hostetler via GitGitGadget, Oct 21, 2021
  60. 26/29 fsmonitor--daemon: periodically truncate list of modified filesJeff Hostetler via GitGitGadget, Oct 21, 2021
  61. 27/29 fsmonitor--daemon: use a cookie file to sync with file systemJeff Hostetler via GitGitGadget, Oct 21, 2021
  62. 28/29 fsmonitor: force update index after large responsesJeff Hostetler via GitGitGadget, Oct 21, 2021
  63. 29/29 t7527: test status with untracked-cache and fsmonitor--daemonJeff Hostetler via GitGitGadget, Oct 21, 2021
  64. Eric SunshineOct 22, 2021
  65. Jeff HostetlerOct 27, 2021
  66. 00/30 Builtin FSMonitor Part 2Jeff Hostetler via GitGitGadget, Feb 11, 2022
  67. 01/30 fsmonitor: enhance existing comments, clarify trivial response handlingJeff Hostetler via GitGitGadget, Feb 11, 2022
  68. 02/30 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Feb 11, 2022
  69. Johannes SchindelinFeb 17, 2022
  70. 03/30 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Feb 11, 2022
  71. Johannes SchindelinFeb 17, 2022
  72. Jeff HostetlerFeb 17, 2022
  73. Johannes SchindelinFeb 24, 2022
  74. 04/30 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Feb 11, 2022
  75. 05/30 fsmonitor: document builtin fsmonitorJeff Hostetler via GitGitGadget, Feb 11, 2022
  76. 06/30 fsmonitor--daemon: add a built-in fsmonitor daemonJeff Hostetler via GitGitGadget, Feb 11, 2022
  77. Ævar Arnfjörð BjarmasonFeb 25, 2022
  78. Jeff HostetlerMar 1, 2022
  79. Junio C HamanoMar 1, 2022
  80. 08/30 compat/fsmonitor/fsm-listen-win32: stub in backend for WindowsJeff Hostetler via GitGitGadget, Feb 11, 2022
  81. 07/30 fsmonitor--daemon: implement 'stop' and 'status' commandsJeff Hostetler via GitGitGadget, Feb 11, 2022
  82. 09/30 compat/fsmonitor/fsm-listen-darwin: stub in backend for DarwinJeff Hostetler via GitGitGadget, Feb 11, 2022
  83. 10/30 fsmonitor--daemon: implement 'run' commandJeff Hostetler via GitGitGadget, Feb 11, 2022
  84. Johannes SchindelinFeb 17, 2022
  85. Jeff HostetlerFeb 17, 2022
  86. Johannes SchindelinFeb 24, 2022
  87. 12/30 fsmonitor--daemon: add pathname classificationJeff Hostetler via GitGitGadget, Feb 11, 2022
  88. Johannes SchindelinFeb 24, 2022
  89. 14/30 fsmonitor--daemon: create token-based changed path cacheJeff Hostetler via GitGitGadget, Feb 11, 2022
  90. 13/30 fsmonitor--daemon: define token-idsJeff Hostetler via GitGitGadget, Feb 11, 2022
  91. 11/30 fsmonitor--daemon: implement 'start' commandJeff Hostetler via GitGitGadget, Feb 11, 2022
  92. Johannes SchindelinFeb 17, 2022
  93. Johannes SchindelinFeb 24, 2022
  94. 19/30 help: include fsmonitor--daemon feature flag in version infoJeff Hostetler via GitGitGadget, Feb 11, 2022
  95. Johannes SchindelinFeb 24, 2022
  96. 18/30 fsmonitor--daemon: implement handle_client callbackJeff Hostetler via GitGitGadget, Feb 11, 2022
  97. 17/30 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOSJeff Hostetler via GitGitGadget, Feb 11, 2022
  98. Johannes SchindelinFeb 24, 2022
  99. 20/30 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor DaemonJeff Hostetler via GitGitGadget, Feb 11, 2022
  100. 22/30 t/perf: avoid copying builtin fsmonitor files into test repoJeff Hostetler via GitGitGadget, Feb 11, 2022
  101. 21/30 t7527: create test for fsmonitor--daemonJeff Hostetler via GitGitGadget, Feb 11, 2022
  102. 23/30 t/helper/test-chmtime: skip directories on WindowsJeff Hostetler via GitGitGadget, Feb 11, 2022
  103. Tao KlerksFeb 28, 2022
  104. Jeff HostetlerFeb 28, 2022
  105. Junio C HamanoFeb 28, 2022
  106. 26/30 fsmonitor--daemon: periodically truncate list of modified filesJeff Hostetler via GitGitGadget, Feb 11, 2022
  107. Johannes SchindelinFeb 24, 2022
  108. 27/30 fsmonitor--daemon: use a cookie file to sync with file systemJeff Hostetler via GitGitGadget, Feb 11, 2022
  109. Johannes SchindelinFeb 24, 2022
  110. 28/30 fsmonitor: force update index after large responsesJeff Hostetler via GitGitGadget, Feb 11, 2022
  111. Johannes SchindelinFeb 24, 2022
  112. 25/30 t/perf/p7519: add fsmonitor--daemon test casesJeff Hostetler via GitGitGadget, Feb 11, 2022
  113. 29/30 t7527: test status with untracked-cache and fsmonitor--daemonJeff Hostetler via GitGitGadget, Feb 11, 2022
  114. 30/30 update-index: convert fsmonitor warnings to adviseJeff Hostetler via GitGitGadget, Feb 11, 2022
  115. 24/30 t/perf/p7519: speed up test on WindowsJeff Hostetler via GitGitGadget, Feb 11, 2022
  116. Junio C HamanoFeb 17, 2022
  117. Jeff HostetlerFeb 17, 2022
  118. 16/30 compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEventJeff Hostetler via GitGitGadget, Feb 11, 2022
  119. Johannes SchindelinFeb 24, 2022
  120. 15/30 compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on WindowsJeff Hostetler via GitGitGadget, Feb 11, 2022
  121. Johannes SchindelinFeb 24, 2022
  122. Johannes SchindelinFeb 17, 2022
  123. Junio C HamanoFeb 17, 2022
  124. Johannes SchindelinFeb 24, 2022
  125. Junio C HamanoFeb 24, 2022
  126. Jeff HostetlerFeb 22, 2022
  127. Johannes SchindelinFeb 24, 2022
  128. Jeff HostetlerFeb 24, 2022
  129. Johannes SchindelinFeb 24, 2022
  130. 00/30 Builtin FSMonitor Part 2Jeff Hostetler via GitGitGadget, Mar 1, 2022
  131. 01/30 fsmonitor: enhance existing comments, clarify trivial response handlingJeff Hostetler via GitGitGadget, Mar 1, 2022
  132. 02/30 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 1, 2022
  133. 04/30 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Mar 1, 2022
  134. 03/30 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Mar 1, 2022
  135. Ævar Arnfjörð BjarmasonMar 11, 2022
  136. Jeff HostetlerMar 11, 2022
  137. 05/30 fsmonitor: document builtin fsmonitorJeff Hostetler via GitGitGadget, Mar 1, 2022
  138. 06/30 fsmonitor--daemon: add a built-in fsmonitor daemonJeff Hostetler via GitGitGadget, Mar 1, 2022
  139. 08/30 compat/fsmonitor/fsm-listen-win32: stub in backend for WindowsJeff Hostetler via GitGitGadget, Mar 1, 2022
  140. 07/30 fsmonitor--daemon: implement 'stop' and 'status' commandsJeff Hostetler via GitGitGadget, Mar 1, 2022
  141. 10/30 fsmonitor--daemon: implement 'run' commandJeff Hostetler via GitGitGadget, Mar 1, 2022
  142. 09/30 compat/fsmonitor/fsm-listen-darwin: stub in backend for DarwinJeff Hostetler via GitGitGadget, Mar 1, 2022
  143. 11/30 fsmonitor--daemon: implement 'start' commandJeff Hostetler via GitGitGadget, Mar 1, 2022
  144. 14/30 fsmonitor--daemon: create token-based changed path cacheJeff Hostetler via GitGitGadget, Mar 1, 2022
  145. 20/30 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor DaemonJeff Hostetler via GitGitGadget, Mar 1, 2022
  146. Ævar Arnfjörð BjarmasonMar 7, 2022
  147. 22/30 t/perf: avoid copying builtin fsmonitor files into test repoJeff Hostetler via GitGitGadget, Mar 1, 2022
  148. 23/30 t/helper/test-chmtime: skip directories on WindowsJeff Hostetler via GitGitGadget, Mar 1, 2022
  149. 26/30 fsmonitor--daemon: periodically truncate list of modified filesJeff Hostetler via GitGitGadget, Mar 1, 2022
  150. 24/30 t/perf/p7519: speed up test on WindowsJeff Hostetler via GitGitGadget, Mar 1, 2022
  151. Ævar Arnfjörð BjarmasonMar 7, 2022
  152. 21/30 t7527: create test for fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 1, 2022
  153. Ævar Arnfjörð BjarmasonMar 7, 2022
  154. 25/30 t/perf/p7519: add fsmonitor--daemon test casesJeff Hostetler via GitGitGadget, Mar 1, 2022
  155. Ævar Arnfjörð BjarmasonMar 7, 2022
  156. 19/30 help: include fsmonitor--daemon feature flag in version infoJeff Hostetler via GitGitGadget, Mar 1, 2022
  157. Ævar Arnfjörð BjarmasonMar 7, 2022
  158. Jeff HostetlerMar 8, 2022
  159. 18/30 fsmonitor--daemon: implement handle_client callbackJeff Hostetler via GitGitGadget, Mar 1, 2022
  160. 15/30 compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on WindowsJeff Hostetler via GitGitGadget, Mar 1, 2022
  161. 17/30 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOSJeff Hostetler via GitGitGadget, Mar 1, 2022
  162. 16/30 compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEventJeff Hostetler via GitGitGadget, Mar 1, 2022
  163. Ævar Arnfjörð BjarmasonMar 7, 2022
  164. Jeff HostetlerMar 8, 2022
  165. Ævar Arnfjörð BjarmasonMar 9, 2022
  166. Jeff HostetlerMar 8, 2022
  167. Ævar Arnfjörð BjarmasonMar 9, 2022
  168. Johannes SchindelinMar 10, 2022
  169. Ævar Arnfjörð BjarmasonMar 10, 2022
  170. Jeff HostetlerMar 10, 2022
  171. Jeff HostetlerMar 9, 2022
  172. Junio C HamanoMar 9, 2022
  173. Ævar Arnfjörð BjarmasonMar 9, 2022
  174. Jeff HostetlerMar 11, 2022
  175. 13/30 fsmonitor--daemon: define token-idsJeff Hostetler via GitGitGadget, Mar 1, 2022
  176. 12/30 fsmonitor--daemon: add pathname classificationJeff Hostetler via GitGitGadget, Mar 1, 2022
  177. 27/30 fsmonitor--daemon: use a cookie file to sync with file systemJeff Hostetler via GitGitGadget, Mar 1, 2022
  178. Ævar Arnfjörð BjarmasonMar 7, 2022
  179. 28/30 fsmonitor: force update index after large responsesJeff Hostetler via GitGitGadget, Mar 1, 2022
  180. 30/30 update-index: convert fsmonitor warnings to adviseJeff Hostetler via GitGitGadget, Mar 1, 2022
  181. Ævar Arnfjörð BjarmasonMar 7, 2022
  182. 29/30 t7527: test status with untracked-cache and fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 1, 2022
  183. Junio C HamanoMar 1, 2022
  184. Johannes SchindelinMar 1, 2022
  185. 00/29 Builtin FSMonitor Part 2Jeff Hostetler via GitGitGadget, Mar 22, 2022
  186. 01/29 fsmonitor: enhance existing comments, clarify trivial response handlingJeff Hostetler via GitGitGadget, Mar 22, 2022
  187. 02/29 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 22, 2022
  188. 03/29 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Mar 22, 2022
  189. 04/29 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Mar 22, 2022
  190. 05/29 fsmonitor: document builtin fsmonitorJeff Hostetler via GitGitGadget, Mar 22, 2022
  191. 06/29 fsmonitor--daemon: add a built-in fsmonitor daemonJeff Hostetler via GitGitGadget, Mar 22, 2022
  192. 07/29 fsmonitor--daemon: implement 'stop' and 'status' commandsJeff Hostetler via GitGitGadget, Mar 22, 2022
  193. 08/29 compat/fsmonitor/fsm-listen-win32: stub in backend for WindowsJeff Hostetler via GitGitGadget, Mar 22, 2022
  194. 11/29 fsmonitor--daemon: implement 'start' commandJeff Hostetler via GitGitGadget, Mar 22, 2022
  195. 10/29 fsmonitor--daemon: implement 'run' commandJeff Hostetler via GitGitGadget, Mar 22, 2022
  196. 09/29 compat/fsmonitor/fsm-listen-darwin: stub in backend for DarwinJeff Hostetler via GitGitGadget, Mar 22, 2022
  197. 12/29 fsmonitor--daemon: add pathname classificationJeff Hostetler via GitGitGadget, Mar 22, 2022
  198. 13/29 fsmonitor--daemon: define token-idsJeff Hostetler via GitGitGadget, Mar 22, 2022
  199. 14/29 fsmonitor--daemon: create token-based changed path cacheJeff Hostetler via GitGitGadget, Mar 22, 2022
  200. 15/29 compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on WindowsJeff Hostetler via GitGitGadget, Mar 22, 2022
  201. 16/29 compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEventJeff Hostetler via GitGitGadget, Mar 22, 2022
  202. Ævar Arnfjörð BjarmasonMar 22, 2022
  203. Jeff HostetlerMar 23, 2022
  204. 17/29 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOSJeff Hostetler via GitGitGadget, Mar 22, 2022
  205. 24/29 t/perf/p7519: speed up test on WindowsJeff Hostetler via GitGitGadget, Mar 22, 2022
  206. Ævar Arnfjörð BjarmasonMar 22, 2022
  207. Jeff HostetlerMar 23, 2022
  208. 19/29 help: include fsmonitor--daemon feature flag in version infoJeff Hostetler via GitGitGadget, Mar 22, 2022
  209. 18/29 fsmonitor--daemon: implement handle_client callbackJeff Hostetler via GitGitGadget, Mar 22, 2022
  210. Ævar Arnfjörð BjarmasonMar 22, 2022
  211. Jeff HostetlerMar 23, 2022
  212. 23/29 t/helper/test-chmtime: skip directories on WindowsJeff Hostetler via GitGitGadget, Mar 22, 2022
  213. 28/29 fsmonitor: force update index after large responsesJeff Hostetler via GitGitGadget, Mar 22, 2022
  214. 21/29 t7527: create test for fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 22, 2022
  215. Ævar Arnfjörð BjarmasonMar 22, 2022
  216. Jeff HostetlerMar 23, 2022
  217. 20/29 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor DaemonJeff Hostetler via GitGitGadget, Mar 22, 2022
  218. 22/29 t/perf: avoid copying builtin fsmonitor files into test repoJeff Hostetler via GitGitGadget, Mar 22, 2022
  219. 25/29 t/perf/p7519: add fsmonitor--daemon test casesJeff Hostetler via GitGitGadget, Mar 22, 2022
  220. 26/29 fsmonitor--daemon: periodically truncate list of modified filesJeff Hostetler via GitGitGadget, Mar 22, 2022
  221. 27/29 fsmonitor--daemon: use a cookie file to sync with file systemJeff Hostetler via GitGitGadget, Mar 22, 2022
  222. 29/29 t7527: test status with untracked-cache and fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 22, 2022
  223. 00/30 Builtin FSMonitor Part 2Jeff Hostetler via GitGitGadget, Mar 24, 2022
  224. 01/30 fsmonitor: enhance existing comments, clarify trivial response handlingJeff Hostetler via GitGitGadget, Mar 24, 2022
  225. 02/30 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 24, 2022
  226. 03/30 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Mar 24, 2022
  227. 04/30 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Mar 24, 2022
  228. 05/30 fsmonitor: document builtin fsmonitorJeff Hostetler via GitGitGadget, Mar 24, 2022
  229. 06/30 fsmonitor--daemon: add a built-in fsmonitor daemonJeff Hostetler via GitGitGadget, Mar 24, 2022
  230. 07/30 fsmonitor--daemon: implement 'stop' and 'status' commandsJeff Hostetler via GitGitGadget, Mar 24, 2022
  231. 08/30 compat/fsmonitor/fsm-listen-win32: stub in backend for WindowsJeff Hostetler via GitGitGadget, Mar 24, 2022
  232. 11/30 fsmonitor--daemon: implement 'start' commandJeff Hostetler via GitGitGadget, Mar 24, 2022
  233. 10/30 fsmonitor--daemon: implement 'run' commandJeff Hostetler via GitGitGadget, Mar 24, 2022
  234. 12/30 fsmonitor--daemon: add pathname classificationJeff Hostetler via GitGitGadget, Mar 24, 2022
  235. 13/30 fsmonitor--daemon: define token-idsJeff Hostetler via GitGitGadget, Mar 24, 2022
  236. 14/30 fsmonitor--daemon: create token-based changed path cacheJeff Hostetler via GitGitGadget, Mar 24, 2022
  237. 09/30 compat/fsmonitor/fsm-listen-darwin: stub in backend for DarwinJeff Hostetler via GitGitGadget, Mar 24, 2022
  238. 16/30 compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEventJeff Hostetler via GitGitGadget, Mar 24, 2022
  239. 15/30 compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on WindowsJeff Hostetler via GitGitGadget, Mar 24, 2022
  240. 17/30 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOSJeff Hostetler via GitGitGadget, Mar 24, 2022
  241. 18/30 fsmonitor--daemon: implement handle_client callbackJeff Hostetler via GitGitGadget, Mar 24, 2022
  242. 19/30 help: include fsmonitor--daemon feature flag in version infoJeff Hostetler via GitGitGadget, Mar 24, 2022
  243. 20/30 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor DaemonJeff Hostetler via GitGitGadget, Mar 24, 2022
  244. 22/30 t/perf: avoid copying builtin fsmonitor files into test repoJeff Hostetler via GitGitGadget, Mar 24, 2022
  245. 21/30 t7527: create test for fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 24, 2022
  246. Junio C HamanoMar 24, 2022
  247. rsbecker@nexbridge.comMar 24, 2022
  248. Jeff HostetlerMar 24, 2022
  249. rsbecker@nexbridge.comMar 24, 2022
  250. Jeff HostetlerMar 24, 2022
  251. rsbecker@nexbridge.comMar 24, 2022
  252. Jeff HostetlerMar 24, 2022
  253. Jeff HostetlerMar 24, 2022
  254. 23/30 t/helper/test-chmtime: skip directories on WindowsJeff Hostetler via GitGitGadget, Mar 24, 2022
  255. 26/30 t/perf/p7519: add fsmonitor--daemon test casesJeff Hostetler via GitGitGadget, Mar 24, 2022
  256. 24/30 t/perf/p7519: fix coding styleJeff Hostetler via GitGitGadget, Mar 24, 2022
  257. 25/30 t/perf/p7519: speed up test on WindowsJeff Hostetler via GitGitGadget, Mar 24, 2022
  258. 27/30 fsmonitor--daemon: periodically truncate list of modified filesJeff Hostetler via GitGitGadget, Mar 24, 2022
  259. 30/30 t7527: test status with untracked-cache and fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 24, 2022
  260. 28/30 fsmonitor--daemon: use a cookie file to sync with file systemJeff Hostetler via GitGitGadget, Mar 24, 2022
  261. 29/30 fsmonitor: force update index after large responsesJeff Hostetler via GitGitGadget, Mar 24, 2022
  262. 00/30 Builtin FSMonitor Part 2Jeff Hostetler via GitGitGadget, Mar 25, 2022
  263. 25/30 t/perf/p7519: speed up test on WindowsJeff Hostetler via GitGitGadget, Mar 25, 2022
  264. 03/30 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Mar 25, 2022
  265. 22/30 t/perf: avoid copying builtin fsmonitor files into test repoJeff Hostetler via GitGitGadget, Mar 25, 2022
  266. 18/30 fsmonitor--daemon: implement handle_client callbackJeff Hostetler via GitGitGadget, Mar 25, 2022
  267. 21/30 t7527: create test for fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 25, 2022
  268. rsbecker@nexbridge.comMar 25, 2022
  269. Jeff HostetlerMar 25, 2022
  270. Ævar Arnfjörð BjarmasonMar 26, 2022
  271. Jeff HostetlerMar 28, 2022
  272. 30/30 t7527: test status with untracked-cache and fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 25, 2022
  273. 12/30 fsmonitor--daemon: add pathname classificationJeff Hostetler via GitGitGadget, Mar 25, 2022
  274. 17/30 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOSJeff Hostetler via GitGitGadget, Mar 25, 2022
  275. 20/30 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor DaemonJeff Hostetler via GitGitGadget, Mar 25, 2022
  276. 27/30 fsmonitor--daemon: periodically truncate list of modified filesJeff Hostetler via GitGitGadget, Mar 25, 2022
  277. 13/30 fsmonitor--daemon: define token-idsJeff Hostetler via GitGitGadget, Mar 25, 2022
  278. 14/30 fsmonitor--daemon: create token-based changed path cacheJeff Hostetler via GitGitGadget, Mar 25, 2022
  279. 02/30 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Mar 25, 2022
  280. 01/30 fsmonitor: enhance existing comments, clarify trivial response handlingJeff Hostetler via GitGitGadget, Mar 25, 2022
  281. 04/30 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Mar 25, 2022
  282. 16/30 compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEventJeff Hostetler via GitGitGadget, Mar 25, 2022
  283. 09/30 compat/fsmonitor/fsm-listen-darwin: stub in backend for DarwinJeff Hostetler via GitGitGadget, Mar 25, 2022
  284. 06/30 fsmonitor--daemon: add a built-in fsmonitor daemonJeff Hostetler via GitGitGadget, Mar 25, 2022
  285. 07/30 fsmonitor--daemon: implement 'stop' and 'status' commandsJeff Hostetler via GitGitGadget, Mar 25, 2022
  286. 11/30 fsmonitor--daemon: implement 'start' commandJeff Hostetler via GitGitGadget, Mar 25, 2022
  287. 24/30 t/perf/p7519: fix coding styleJeff Hostetler via GitGitGadget, Mar 25, 2022
  288. 29/30 fsmonitor: force update index after large responsesJeff Hostetler via GitGitGadget, Mar 25, 2022
  289. 26/30 t/perf/p7519: add fsmonitor--daemon test casesJeff Hostetler via GitGitGadget, Mar 25, 2022
  290. 28/30 fsmonitor--daemon: use a cookie file to sync with file systemJeff Hostetler via GitGitGadget, Mar 25, 2022
  291. 08/30 compat/fsmonitor/fsm-listen-win32: stub in backend for WindowsJeff Hostetler via GitGitGadget, Mar 25, 2022
  292. 10/30 fsmonitor--daemon: implement 'run' commandJeff Hostetler via GitGitGadget, Mar 25, 2022
  293. 19/30 help: include fsmonitor--daemon feature flag in version infoJeff Hostetler via GitGitGadget, Mar 25, 2022
  294. 23/30 t/helper/test-chmtime: skip directories on WindowsJeff Hostetler via GitGitGadget, Mar 25, 2022
  295. 15/30 compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on WindowsJeff Hostetler via GitGitGadget, Mar 25, 2022
  296. 05/30 fsmonitor: document builtin fsmonitorJeff Hostetler via GitGitGadget, Mar 25, 2022
  297. Junio C HamanoMar 25, 2022
  298. Jeff HostetlerMar 28, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.