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>
Subject: [PATCH v5 00/30] Builtin FSMonitor Part 2
Date: Fri, 11 Feb 2022 20:55:49 +0000 [thread overview]
Message-ID: <pull.1041.v5.git.1644612979.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>
Here is V5 of Part 2 of my Builtin FSMonitor series. I apologize for the
delay since V4 that I submitted back in October. (Insert the usual $DayJob
excuse...)
I have rebased this branch onto the current "master" branch.
In this version I removed the core.useBuiltinFSMonitor config setting and
instead extended the existing core.fsmonitor. Previously it was defined as
containing the pathname to the FSMonitor hook script/application. Now it can
also have a boolean value to select the builtin FSMonitor daemon. This does
simplify a few things in the documentation and in the code.
There were other changes, but they are mostly just general cleanup and
coding style items. I also squashed in Junio's Dec 25 commits related to
coding style in the test scripts.
This version contains the client code and a MVP version of the daemon. It
can be be tested using t/t7527 and t/perf/p7519.
A followup Part 3 will contain additional refinements to the daemon and
additional tests. I drew the line here between Part 2 and 3 to make it
easier to review.
Jeff Hostetler (30):
fsmonitor: enhance existing comments, clarify trivial response
handling
fsmonitor-ipc: create client routines for git-fsmonitor--daemon
fsmonitor: config settings are repository-specific
fsmonitor: use IPC to query the builtin FSMonitor daemon
fsmonitor: document builtin fsmonitor
fsmonitor--daemon: add a built-in fsmonitor daemon
fsmonitor--daemon: implement 'stop' and 'status' commands
compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
fsmonitor--daemon: implement 'run' command
fsmonitor--daemon: implement 'start' command
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: define token-ids
fsmonitor--daemon: create token-based changed path cache
compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on
Windows
compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on
MacOS
fsmonitor--daemon: implement handle_client callback
help: include fsmonitor--daemon feature flag in version info
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor
Daemon
t7527: create test for fsmonitor--daemon
t/perf: avoid copying builtin fsmonitor files into test repo
t/helper/test-chmtime: skip directories on Windows
t/perf/p7519: speed up test on Windows
t/perf/p7519: add fsmonitor--daemon test cases
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor: force update index after large responses
t7527: test status with untracked-cache and fsmonitor--daemon
update-index: convert fsmonitor warnings to advise
.gitignore | 1 +
Documentation/config/core.txt | 46 +-
Documentation/git-fsmonitor--daemon.txt | 75 ++
Documentation/git-update-index.txt | 8 +-
Makefile | 17 +
builtin.h | 1 +
builtin/fsmonitor--daemon.c | 1454 +++++++++++++++++++++++
builtin/update-index.c | 19 +-
cache.h | 1 -
compat/fsmonitor/fsm-listen-darwin.c | 496 ++++++++
compat/fsmonitor/fsm-listen-win32.c | 586 +++++++++
compat/fsmonitor/fsm-listen.h | 49 +
config.c | 14 -
config.h | 1 -
config.mak.uname | 20 +
contrib/buildsystems/CMakeLists.txt | 10 +
environment.c | 1 -
fsmonitor--daemon.h | 140 +++
fsmonitor-ipc.c | 171 +++
fsmonitor-ipc.h | 48 +
fsmonitor-settings.c | 100 ++
fsmonitor-settings.h | 21 +
fsmonitor.c | 218 +++-
fsmonitor.h | 18 +-
git.c | 1 +
help.c | 4 +
repo-settings.c | 1 +
repository.h | 3 +
t/README | 4 +-
t/helper/test-chmtime.c | 15 +
t/helper/test-fsmonitor-client.c | 121 ++
t/helper/test-tool.c | 1 +
t/helper/test-tool.h | 1 +
t/perf/p7519-fsmonitor.sh | 61 +-
t/perf/perf-lib.sh | 2 +-
t/t7527-builtin-fsmonitor.sh | 604 ++++++++++
t/test-lib.sh | 6 +
37 files changed, 4229 insertions(+), 110 deletions(-)
create mode 100644 Documentation/git-fsmonitor--daemon.txt
create mode 100644 builtin/fsmonitor--daemon.c
create mode 100644 compat/fsmonitor/fsm-listen-darwin.c
create mode 100644 compat/fsmonitor/fsm-listen-win32.c
create mode 100644 compat/fsmonitor/fsm-listen.h
create mode 100644 fsmonitor--daemon.h
create mode 100644 fsmonitor-ipc.c
create mode 100644 fsmonitor-ipc.h
create mode 100644 fsmonitor-settings.c
create mode 100644 fsmonitor-settings.h
create mode 100644 t/helper/test-fsmonitor-client.c
create mode 100755 t/t7527-builtin-fsmonitor.sh
base-commit: 2b9c1209706bc2ef0ab09fb0bdc7d405e225ce8b
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1041%2Fjeffhostetler%2Fbuiltin-fsmonitor-part2-v5
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1041/jeffhostetler/builtin-fsmonitor-part2-v5
Pull-Request: https://github.com/gitgitgadget/git/pull/1041
Range-diff vs v4:
1: ecc40795fa2 ! 1: a5ecabb4d02 fsmonitor: enhance existing comments
@@ Metadata
Author: Jeff Hostetler <jeffhost@microsoft.com>
## Commit message ##
- fsmonitor: enhance existing comments
+ fsmonitor: enhance existing comments, clarify trivial response handling
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
## fsmonitor.c ##
+@@ fsmonitor.c: static int query_fsmonitor(int version, const char *last_update, struct strbuf *
+
+ if (result)
+ trace2_data_intmax("fsm_hook", NULL, "query/failed", result);
+- else {
++ else
+ trace2_data_intmax("fsm_hook", NULL, "query/response-length",
+ query_result->len);
+
+- if (fsmonitor_is_trivial_response(query_result))
+- trace2_data_intmax("fsm_hook", NULL,
+- "query/trivial-response", 1);
+- }
+-
+ trace2_region_leave("fsm_hook", "query", NULL);
+
+ return result;
+ }
+
+-int fsmonitor_is_trivial_response(const struct strbuf *query_result)
+-{
+- static char trivial_response[3] = { '\0', '/', '\0' };
+-
+- return query_result->len >= 3 &&
+- !memcmp(trivial_response,
+- &query_result->buf[query_result->len - 3], 3);
+-}
+-
+ static void fsmonitor_refresh_callback(struct index_state *istate, char *name)
+ {
+ int i, len = strlen(name);
@@ fsmonitor.c: void refresh_fsmonitor(struct index_state *istate)
+ struct strbuf last_update_token = STRBUF_INIT;
+ char *buf;
+ unsigned int i;
++ int is_trivial = 0;
+
+ if (!core_fsmonitor || istate->fsmonitor_has_run_once)
+ return;
+@@ fsmonitor.c: void refresh_fsmonitor(struct index_state *istate)
+ query_success = 0;
+ } else {
+ bol = last_update_token.len + 1;
++ is_trivial = query_result.buf[bol] == '/';
+ }
+ } else if (hook_version < 0) {
+ hook_version = HOOK_INTERFACE_VERSION1;
+@@ fsmonitor.c: void refresh_fsmonitor(struct index_state *istate)
+ if (hook_version == HOOK_INTERFACE_VERSION1) {
+ query_success = !query_fsmonitor(HOOK_INTERFACE_VERSION1,
+ istate->fsmonitor_last_update, &query_result);
++ if (query_success)
++ is_trivial = query_result.buf[0] == '/';
+ }
+
++ if (is_trivial)
++ trace2_data_intmax("fsm_hook", NULL,
++ "query/trivial-response", 1);
++
+ 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");
}
- /* a fsmonitor process can return '/' to indicate all entries are invalid */
+- if (query_success && query_result.buf[bol] != '/') {
+- /* Mark all entries returned by the monitor as dirty */
+ /*
+ * The response from FSMonitor (excluding the header token) is
+ * either:
@@ fsmonitor.c: void refresh_fsmonitor(struct index_state *istate)
+ * information and that we should consider everything
+ * invalid. We call this a trivial response.
+ */
- if (query_success && query_result.buf[bol] != '/') {
-- /* Mark all entries returned by the monitor as dirty */
++ if (query_success && !is_trivial) {
+ /*
+ * Mark all pathnames returned by the monitor as dirty.
+ *
@@ fsmonitor.c: void refresh_fsmonitor(struct index_state *istate)
- /* We only want to run the post index changed hook if we've actually changed entries, so keep track
- * if we actually changed entries or not */
+ /*
-+ * We received a trivial response, so invalidate everything.
++ * We failed to get a response or received a trivial response,
++ * so invalidate everything.
+ *
+ * We only want to run the post index changed hook if
+ * we've actually changed entries, so keep track if we
2: 82f17692128 ! 2: 365964b7664 fsmonitor-ipc: create client routines for git-fsmonitor--daemon
@@ fsmonitor-ipc.c (new)
+
+ trace2_data_intmax("fsm_client", NULL,
+ "query/response-length", answer->len);
-+
-+ if (fsmonitor_is_trivial_response(answer))
-+ trace2_data_intmax("fsm_client", NULL,
-+ "query/trivial-response", 1);
-+
+ goto done;
+
+ case IPC_STATE__NOT_LISTENING:
3: 882789b4dfe ! 3: 384516ce1a1 fsmonitor: config settings are repository-specific
@@ Commit message
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.
@@ Commit message
Create a hook pathname variable in `struct fsmonitor-settings` and
only set it when in hook mode.
+ Extend the definition of `core.fsmonitor` to be either a boolean
+ or a hook pathname. When true, the builtin FSMonitor is used.
+ When false or unset, no FSMonitor (neither builtin nor hook) is
+ used.
+
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
@@ builtin/update-index.c: int cmd_update_index(int argc, const char **argv, const
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"));
+ "set it if you really want to "
+ "enable 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)
++ if (fsm_mode > FSMONITOR_MODE_DISABLED)
warning(_("core.fsmonitor is set; "
"remove it if you really want to "
"disable fsmonitor"));
@@ fsmonitor-settings.c (new)
+ char *hook_path;
+};
+
-+void fsm_settings__set_ipc(struct repository *r)
++static void lookup_fsmonitor_settings(struct repository *r)
+{
-+ struct fsmonitor_settings *s = r->settings.fsmonitor;
++ struct fsmonitor_settings *s;
++ const char *const_str;
++ int bool_value;
+
-+ s->mode = FSMONITOR_MODE_IPC;
-+}
++ if (r->settings.fsmonitor)
++ return;
+
-+void fsm_settings__set_hook(struct repository *r, const char *path)
-+{
-+ struct fsmonitor_settings *s = r->settings.fsmonitor;
++ CALLOC_ARRAY(s, 1);
+
-+ s->mode = FSMONITOR_MODE_HOOK;
-+ s->hook_path = strdup(path);
-+}
++ r->settings.fsmonitor = s;
+
-+void fsm_settings__set_disabled(struct repository *r)
-+{
-+ struct fsmonitor_settings *s = r->settings.fsmonitor;
++ fsm_settings__set_disabled(r);
+
-+ s->mode = FSMONITOR_MODE_DISABLED;
-+ FREE_AND_NULL(s->hook_path);
-+}
++ /*
++ * Overload the existing "core.fsmonitor" config setting (which
++ * has historically been either unset or a hook pathname) to
++ * now allow a boolean value to enable the builtin FSMonitor
++ * or to turn everything off. (This does imply that you can't
++ * use a hook script named "true" or "false", but that's OK.)
++ */
++ switch (repo_config_get_maybe_bool(r, "core.fsmonitor", &bool_value)) {
++
++ case 0: /* config value was set to <bool> */
++ if (bool_value)
++ fsm_settings__set_ipc(r);
++ return;
+
-+static int check_for_ipc(struct repository *r)
-+{
-+ int value;
++ case 1: /* config value was unset */
++ const_str = getenv("GIT_TEST_FSMONITOR");
++ break;
+
-+ if (!repo_config_get_bool(r, "core.usebuiltinfsmonitor", &value) &&
-+ value) {
-+ fsm_settings__set_ipc(r);
-+ return 1;
++ case -1: /* config value set to an arbitrary string */
++ if (repo_config_get_pathname(r, "core.fsmonitor", &const_str))
++ return; /* should not happen */
++ break;
++
++ default: /* should not happen */
++ return;
+ }
+
-+ return 0;
++ if (!const_str || !*const_str)
++ return;
++
++ fsm_settings__set_hook(r, const_str);
+}
+
-+static int check_for_hook(struct repository *r)
++enum fsmonitor_mode fsm_settings__get_mode(struct repository *r)
+{
-+ const char *const_str;
++ lookup_fsmonitor_settings(r);
+
-+ 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;
++ return r->settings.fsmonitor->mode;
+}
+
-+static void lookup_fsmonitor_settings(struct repository *r)
++const char *fsm_settings__get_hook_path(struct repository *r)
+{
-+ struct fsmonitor_settings *s;
-+
-+ CALLOC_ARRAY(s, 1);
++ lookup_fsmonitor_settings(r);
+
-+ r->settings.fsmonitor = s;
-+
-+ if (check_for_ipc(r))
-+ return;
++ return r->settings.fsmonitor->hook_path;
++}
+
-+ if (check_for_hook(r))
-+ return;
++void fsm_settings__set_ipc(struct repository *r)
++{
++ lookup_fsmonitor_settings(r);
+
-+ fsm_settings__set_disabled(r);
++ r->settings.fsmonitor->mode = FSMONITOR_MODE_IPC;
++ FREE_AND_NULL(r->settings.fsmonitor->hook_path);
+}
+
-+enum fsmonitor_mode fsm_settings__get_mode(struct repository *r)
++void fsm_settings__set_hook(struct repository *r, const char *path)
+{
-+ if (!r->settings.fsmonitor)
-+ lookup_fsmonitor_settings(r);
++ lookup_fsmonitor_settings(r);
+
-+ return r->settings.fsmonitor->mode;
++ r->settings.fsmonitor->mode = FSMONITOR_MODE_HOOK;
++ FREE_AND_NULL(r->settings.fsmonitor->hook_path);
++ r->settings.fsmonitor->hook_path = strdup(path);
+}
+
-+const char *fsm_settings__get_hook_path(struct repository *r)
++void fsm_settings__set_disabled(struct repository *r)
+{
-+ if (!r->settings.fsmonitor)
-+ lookup_fsmonitor_settings(r);
++ lookup_fsmonitor_settings(r);
+
-+ return r->settings.fsmonitor->hook_path;
++ r->settings.fsmonitor->mode = FSMONITOR_MODE_DISABLED;
++ FREE_AND_NULL(r->settings.fsmonitor->hook_path);
+}
## fsmonitor-settings.h (new) ##
@@ fsmonitor-settings.h (new)
+
+enum fsmonitor_mode {
+ FSMONITOR_MODE_DISABLED = 0,
-+ FSMONITOR_MODE_HOOK = 1, /* core.fsmonitor */
-+ FSMONITOR_MODE_IPC = 2, /* core.useBuiltinFSMonitor */
++ FSMONITOR_MODE_HOOK = 1, /* core.fsmonitor=<hook_path> */
++ FSMONITOR_MODE_IPC = 2, /* core.fsmonitor=<true> */
+};
+
+void fsm_settings__set_ipc(struct repository *r);
@@ fsmonitor.c: void write_fsmonitor_extension(struct strbuf *sb, struct index_stat
strvec_pushf(&cp.args, "%s", last_update);
cp.use_shell = 1;
@@ fsmonitor.c: void refresh_fsmonitor(struct index_state *istate)
- struct strbuf last_update_token = STRBUF_INIT;
char *buf;
unsigned int i;
+ int is_trivial = 0;
+ struct repository *r = istate->repo ? istate->repo : the_repository;
+ enum fsmonitor_mode fsm_mode = fsm_settings__get_mode(r);
@@ fsmonitor.c: void refresh_fsmonitor(struct index_state *istate)
+ query_success = !query_fsmonitor_hook(
+ r, HOOK_INTERFACE_VERSION1,
istate->fsmonitor_last_update, &query_result);
- }
+ if (query_success)
+ is_trivial = query_result.buf[0] == '/';
+@@ fsmonitor.c: void refresh_fsmonitor(struct index_state *istate)
+ trace2_data_intmax("fsm_hook", NULL,
+ "query/trivial-response", 1);
- trace_performance_since(last_update, "fsmonitor process '%s'", core_fsmonitor);
- trace_printf_key(&trace_fsmonitor, "fsmonitor process '%s' returned %s",
@@ repository.h: struct repo_settings {
int command_requires_full_index;
int sparse_index;
-+ struct fsmonitor_settings *fsmonitor; /* lazy loaded */
++ struct fsmonitor_settings *fsmonitor; /* lazily loaded */
+
int index_version;
enum untracked_cache_setting core_untracked_cache;
@@ t/README: every 'git commit-graph write', as if the `--changed-paths` option was
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
++code paths 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
4: de82c726182 ! 4: 8e738a83bc5 fsmonitor: use IPC to query the builtin FSMonitor daemon
@@ Commit message
fsmonitor: use IPC to query the builtin FSMonitor daemon
Use simple IPC to directly communicate with the new builtin file
- system monitor daemon when `core.useBuiltinFSMonitor` is set.
-
- The `core.fsmonitor` setting has already been defined as a HOOK
- pathname. Historically, this has been set to a HOOK script that will
- talk with Watchman. For compatibility reasons, we do not want to
- overload that definition (and cause problems if users have multiple
- versions of Git installed).
+ system monitor daemon when `core.fsmonitor` is set to true.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
@@ fsmonitor.c: void refresh_fsmonitor(struct index_state *istate)
+ buf = query_result.buf;
+ strbuf_addstr(&last_update_token, buf);
+ bol = last_update_token.len + 1;
++ is_trivial = query_result.buf[bol] == '/';
++ if (is_trivial)
++ trace2_data_intmax("fsm_client", NULL,
++ "query/trivial-response", 1);
+ } else {
+ /*
+ * The builtin daemon is not available on this
5: d365704d551 ! 5: 49e4c146e02 fsmonitor: document builtin fsmonitor
@@ Metadata
## Commit message ##
fsmonitor: document builtin fsmonitor
- Document the new `core.useBuiltinFSMonitor` config value.
+ Document how `core.fsmonitor` can be set to a boolean to enable
+ or disable the builtin FSMonitor.
Update references to `core.fsmonitor` and `core.fsmonitorHookVersion` and
pointers to `Watchman` to refer to it.
@@ Documentation/config/core.txt: core.protectNTFS::
- requested date/time. This information is used to speed up git by
- avoiding unnecessary processing of files that have not changed.
- See the "fsmonitor-watchman" section of linkgit:githooks[5].
-+ If set, this variable contains the pathname of the "fsmonitor"
++ If set to true, enable the built-in file system monitor
++ daemon for this working directory (linkgit:git-fsmonitor--daemon[1]).
+++
++Like hook-based file system monitors, the built-in file system monitor
++can speed up Git commands that need to refresh the Git index
++(e.g. `git status`) in a working directory with many files. The
++built-in monitor eliminates the need to install and maintain an
++external third-party tool.
+++
++The built-in file system monitor is currently available only on a
++limited set of supported platforms. Currently, this includes Windows
++and MacOS.
+++
++ Otherwise, this variable contains the pathname of the "fsmonitor"
+ hook command.
++
+This hook command is used to identify all files that may have changed
@@ Documentation/config/core.txt: core.protectNTFS::
+git by avoiding unnecessary scanning of files that have not changed.
++
+See the "fsmonitor-watchman" section of linkgit:githooks[5].
-++
-+Note: The value of this config setting is ignored if the
-+built-in file system monitor is enabled (see `core.useBuiltinFSMonitor`).
core.fsmonitorHookVersion::
- Sets the version of hook that is to be used when calling fsmonitor.
@@ Documentation/config/core.txt: core.protectNTFS::
+Version 2 uses an opaque string so that the monitor can return
+something that can be used to determine what files have changed
+without race conditions.
-++
-+Note: The value of this config setting is ignored if the
-+built-in file system monitor is enabled (see `core.useBuiltinFSMonitor`).
-+
-+core.useBuiltinFSMonitor::
-+ If set to true, enable the built-in file system monitor
-+ daemon for this working directory (linkgit:git-fsmonitor--daemon[1]).
-++
-+Like hook-based file system monitors, the built-in file system monitor
-+can speed up Git commands that need to refresh the Git index
-+(e.g. `git status`) in a working directory with many files. The
-+built-in monitor eliminates the need to install and maintain an
-+external third-party tool.
-++
-+The built-in file system monitor is currently available only on a
-+limited set of supported platforms. Currently, this includes Windows
-+and MacOS.
-++
-+Note: if this config setting is set to `true`, the values of
-+`core.fsmonitor` and `core.fsmonitorHookVersion` are ignored.
core.trustctime::
If false, the ctime differences between the index and the
@@ Documentation/git-fsmonitor--daemon.txt (new)
+increased if they just ask for a summary of changes to the working
+directory and can avoid scanning the disk.
+
-+When `core.useBuiltinFSMonitor` is set to `true` (see
-+linkgit:git-config[1]) commands, such as `git status`, will ask the
-+daemon for changes and automatically start it (if necessary).
++When `core.fsmonitor` is set to `true` (see linkgit:git-config[1])
++commands, such as `git status`, will ask the daemon for changes and
++automatically start it (if necessary).
+
+For more information see the "File System Monitor" section in
+linkgit:git-update-index[1].
@@ Documentation/git-update-index.txt: FILE SYSTEM MONITOR
"fsmonitor-watchman" section of linkgit:githooks[5]) that can
inform it as to what files have been modified. This enables git to avoid
having to lstat() every file to find modified files.
-@@ Documentation/git-update-index.txt: performance by avoiding the cost of scanning the entire working directory
- looking for new files.
+@@ Documentation/git-update-index.txt: looking for new files.
If you want to enable (or disable) this feature, it is easier to use
--the `core.fsmonitor` configuration variable (see
+ the `core.fsmonitor` configuration variable (see
-linkgit:git-config[1]) than using the `--fsmonitor` option to
-`git update-index` in each repository, especially if you want to do so
--across all repositories you use, because you can set the configuration
--variable in your `$HOME/.gitconfig` just once and have it affect all
--repositories you touch.
--
--When the `core.fsmonitor` configuration variable is changed, the
--file system monitor is added to or removed from the index the next time
--a command reads the index. When `--[no-]fsmonitor` are used, the file
--system monitor is immediately added to or removed from the index.
-+the `core.fsmonitor` or `core.useBuiltinFSMonitor` configuration
-+variable (see linkgit:git-config[1]) than using the `--fsmonitor`
-+option to `git update-index` in each repository, especially if you
-+want to do so across all repositories you use, because you can set the
-+configuration variable in your `$HOME/.gitconfig` just once and have
-+it affect all repositories you touch.
-+
-+When the `core.fsmonitor` or `core.useBuiltinFSMonitor` configuration
-+variable is changed, the file system monitor is added to or removed
-+from the index the next time a command reads the index. When
-+`--[no-]fsmonitor` are used, the file system monitor is immediately
-+added to or removed from the index.
-
- CONFIGURATION
- -------------
-
- ## Documentation/githooks.txt ##
-@@ Documentation/githooks.txt: fsmonitor-watchman
-
- This hook is invoked when the configuration option `core.fsmonitor` is
- set to `.git/hooks/fsmonitor-watchman` or `.git/hooks/fsmonitor-watchmanv2`
--depending on the version of the hook to use.
-+depending on the version of the hook to use, unless overridden via
-+`core.useBuiltinFSMonitor` (see linkgit:git-config[1]).
-
- Version 1 takes two arguments, a version (1) and the time in elapsed
- nanoseconds since midnight, January 1, 1970.
++linkgit:git-config[1]) than using the `--fsmonitor` option to `git
++update-index` in each repository, especially if you want to do so
+ across all repositories you use, because you can set the configuration
+ variable in your `$HOME/.gitconfig` just once and have it affect all
+ repositories you touch.
6: 78e682fc530 = 6: bdd7334da31 fsmonitor--daemon: add a built-in fsmonitor daemon
7: ea64b5c9753 = 7: 9f00ada3dd3 fsmonitor--daemon: implement 'stop' and 'status' commands
8: 5a40b33a00c = 8: d6819bdad66 compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
9: ed5819e29f8 = 9: 7de3d01cccc compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
10: d3ac973a5f1 = 10: 6fe5a2bc79e fsmonitor--daemon: implement 'run' command
11: d08c28b549c = 11: 69fc0998286 fsmonitor--daemon: implement 'start' command
12: 6fa71fdc825 = 12: 21c099c5197 fsmonitor--daemon: add pathname classification
13: 65821da5b03 = 13: 72979c35ceb fsmonitor--daemon: define token-ids
14: 429c48a5bad ! 14: 8d1db644409 fsmonitor--daemon: create token-based changed path cache
@@ Commit message
backends to accumulate changed paths in response to filesystem events.
The platform-specific file system listener thread receives file system
- events containing one or more changed pathnames (with whatever bucketing
- or grouping that is convenient for the file system). These paths are
- accumulated (without locking) by the file system layer into a `fsmonitor_batch`.
+ events containing one or more changed pathnames (with whatever
+ bucketing or grouping that is convenient for the file system). These
+ paths are accumulated (without locking) by the file system layer into
+ a `fsmonitor_batch`.
When the file system layer has drained the kernel event queue, it will
"publish" them to our token queue and make them visible to concurrent
15: b04c460c619 = 15: 98c5adf8ca0 compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
16: 862bbfcc32e ! 16: a3b881315fa compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
@@ Commit message
currently fails with this error:
In file included
- from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Security.framework/Headers/AuthSession.h:32,
- from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Security.framework/Headers/Security.h:42,
- from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/CSIdentity.h:43,
- from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/OSServices.framework/Headers/OSServices.h:29,
- from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/IconsCore.h:23,
- from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LaunchServices.h:23,
- from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:45,
- /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Security.framework/Headers/Authorization.h:193:7: error: variably modified 'bytes' at file scope
+ from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/...
+ ...Library/Frameworks/Security.framework/Headers/AuthSession.h:32,
+ from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/...
+ ...Library/Frameworks/Security.framework/Headers/Security.h:42,
+ from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/...
+ ...Library/Frameworks/CoreServices.framework/Frameworks/...
+ ...OSServices.framework/Headers/CSIdentity.h:43,
+ from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/...
+ ...Library/Frameworks/CoreServices.framework/Frameworks/...
+ ...OSServices.framework/Headers/OSServices.h:29,
+ from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/...
+ ...Library/Frameworks/CoreServices.framework/Frameworks/...
+ ...LaunchServices.framework/Headers/IconsCore.h:23,
+ from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/...
+ ...Library/Frameworks/CoreServices.framework/Frameworks/...
+ ...LaunchServices.framework/Headers/LaunchServices.h:23,
+ from /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/...
+ ...Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:45,
+
+ /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/...
+ ...Library/Frameworks/Security.framework/Headers/Authorization.h:193:7:
+ error: variably modified 'bytes' at file scope
193 | char bytes[kAuthorizationExternalFormLength];
| ^~~~~
17: 40d9a816b52 = 17: 162e357db72 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
18: 241962894f1 = 18: 3de1c43beaf fsmonitor--daemon: implement handle_client callback
19: 704d37d2033 = 19: 3517c4a3c13 help: include fsmonitor--daemon feature flag in version info
20: de6c72a9ce0 ! 20: 4ffc2ddf516 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
@@ t/helper/test-tool.c: static struct test_cmd cmds[] = {
{ "getcwd", cmd__getcwd },
## t/helper/test-tool.h ##
-@@ t/helper/test-tool.h: int cmd__dump_split_index(int argc, const char **argv);
- int cmd__dump_untracked_cache(int argc, const char **argv);
+@@ t/helper/test-tool.h: int cmd__dump_untracked_cache(int argc, const char **argv);
+ int cmd__dump_reftable(int argc, const char **argv);
int cmd__example_decorate(int argc, const char **argv);
int cmd__fast_rebase(int argc, const char **argv);
+int cmd__fsmonitor_client(int argc, const char **argv);
21: eedaa787c2e ! 21: d93310a7c64 t7527: create test for fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh (new)
+ actual*
+ EOF
+
-+ git -c core.useBuiltinFSMonitor= add . &&
++ git -c core.fsmonitor=false add . &&
+ test_tick &&
-+ git -c core.useBuiltinFSMonitor= commit -m initial &&
++ git -c core.fsmonitor=false commit -m initial &&
+
-+ git config core.useBuiltinFSMonitor true
++ git config core.fsmonitor true
+'
+
+# The test already explicitly stopped (or tried to stop) the daemon.
@@ t/t7527-builtin-fsmonitor.sh (new)
+ test_subcommand git fsmonitor--daemon start <.git/trace_implicit_2
+'
+
-+edit_files() {
++edit_files () {
+ echo 1 >modified
+ echo 2 >dir1/modified
+ echo 3 >dir2/modified
+ >dir1/untracked
+}
+
-+delete_files() {
++delete_files () {
+ rm -f delete
+ rm -f dir1/delete
+ rm -f dir2/delete
+}
+
-+create_files() {
++create_files () {
+ echo 1 >new
+ echo 2 >dir1/new
+ echo 3 >dir2/new
+}
+
-+rename_files() {
++rename_files () {
+ mv rename renamed
+ mv dir1/rename dir1/renamed
+ mv dir2/rename dir2/renamed
+}
+
-+file_to_directory() {
++file_to_directory () {
+ rm -f delete
+ mkdir delete
+ echo 1 >delete/new
+}
+
-+directory_to_file() {
++directory_to_file () {
+ rm -rf dir1
+ echo 1 >dir1
+}
+
-+verify_status() {
++verify_status () {
+ git status >actual &&
+ GIT_INDEX_FILE=.git/fresh-index git read-tree master &&
-+ GIT_INDEX_FILE=.git/fresh-index git -c core.useBuiltinFSMonitor= status >expect &&
++ GIT_INDEX_FILE=.git/fresh-index git -c core.fsmonitor=false status >expect &&
+ test_cmp expect actual &&
+ echo HELLO AFTER &&
+ cat .git/trace &&
22: 4e96e0667ba = 22: 27e47108908 t/perf: avoid copying builtin fsmonitor files into test repo
23: de9c015d78c = 23: 6cba1d950b0 t/helper/test-chmtime: skip directories on Windows
24: 1c2eccacff6 ! 24: fcf843a0d42 t/perf/p7519: speed up test on Windows
@@ Commit message
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
## t/perf/p7519-fsmonitor.sh ##
-@@ t/perf/p7519-fsmonitor.sh: trace_stop() {
+@@ t/perf/p7519-fsmonitor.sh: then
+ fi
+ fi
+
+-trace_start() {
++trace_start () {
+ if test -n "$GIT_PERF_7519_TRACE"
+ then
+ name="$1"
+@@ t/perf/p7519-fsmonitor.sh: trace_start() {
+ fi
+ }
+
+-trace_stop() {
++trace_stop () {
+ if test -n "$GIT_PERF_7519_TRACE"
+ then
+ unset GIT_TRACE2_PERF
fi
}
-+touch_files() {
++touch_files () {
+ n=$1
+ d="$n"_files
+
@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
fi &&
mkdir 1_file 10_files 100_files 1000_files 10000_files &&
-- for i in $(test_seq 1 10); do touch 10_files/$i; done &&
-- for i in $(test_seq 1 100); do touch 100_files/$i; done &&
-- for i in $(test_seq 1 1000); do touch 1000_files/$i; done &&
-- for i in $(test_seq 1 10000); do touch 10000_files/$i; done &&
+- for i in $(test_seq 1 10); do touch 10_files/$i || return 1; done &&
+- for i in $(test_seq 1 100); do touch 100_files/$i || return 1; done &&
+- for i in $(test_seq 1 1000); do touch 1000_files/$i || return 1; done &&
+- for i in $(test_seq 1 10000); do touch 10000_files/$i || return 1; done &&
+ touch_files 1 &&
+ touch_files 10 &&
+ touch_files 100 &&
@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
git add 1_file 10_files 100_files 1000_files 10000_files &&
git commit -qm "Add files" &&
+@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
+ fi
+ '
+
+-setup_for_fsmonitor() {
++setup_for_fsmonitor () {
+ # set INTEGRATION_SCRIPT depending on the environment
+ if test -n "$INTEGRATION_PATH"
+ then
+@@ t/perf/p7519-fsmonitor.sh: test_perf_w_drop_caches () {
+ test_perf "$@"
+ }
+
+-test_fsmonitor_suite() {
++test_fsmonitor_suite () {
+ if test -n "$INTEGRATION_SCRIPT"; then
+ DESC="fsmonitor=$(basename $INTEGRATION_SCRIPT)"
+ else
@@ t/perf/p7519-fsmonitor.sh: test_fsmonitor_suite() {
# Update the mtimes on upto 100k files to make status think
25: 236b5966257 ! 25: 198f47bda5a t/perf/p7519: add fsmonitor--daemon test cases
@@ Commit message
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
## t/perf/p7519-fsmonitor.sh ##
-@@ t/perf/p7519-fsmonitor.sh: test_description="Test core.fsmonitor"
- # GIT_PERF_7519_SPLIT_INDEX: used to configure core.splitIndex
- # GIT_PERF_7519_FSMONITOR: used to configure core.fsMonitor. May be an
- # absolute path to an integration. May be a space delimited list of
--# absolute paths to integrations.
-+# absolute paths to integrations. (This hook or list of hooks does not
-+# include the built-in fsmonitor--daemon.)
- #
- # The big win for using fsmonitor is the elimination of the need to scan the
- # working directory looking for changed and untracked files. If the file
-@@ t/perf/p7519-fsmonitor.sh: test_expect_success "one time repo setup" '
-
- setup_for_fsmonitor() {
- # set INTEGRATION_SCRIPT depending on the environment
-- if test -n "$INTEGRATION_PATH"
-+ if test -n "$USE_FSMONITOR_DAEMON"
- then
-+ git config core.useBuiltinFSMonitor true &&
-+ INTEGRATION_SCRIPT=false
-+ elif test -n "$INTEGRATION_PATH"
-+ then
-+ git config core.useBuiltinFSMonitor false &&
- INTEGRATION_SCRIPT="$INTEGRATION_PATH"
- else
-+ git config core.useBuiltinFSMonitor false &&
- #
- # Choose integration script based on existence of Watchman.
- # Fall back to an empty integration script.
@@ t/perf/p7519-fsmonitor.sh: test_perf_w_drop_caches () {
}
- test_fsmonitor_suite() {
+ test_fsmonitor_suite () {
- if test -n "$INTEGRATION_SCRIPT"; then
+ if test -n "$USE_FSMONITOR_DAEMON"
+ then
@@ t/perf/p7519-fsmonitor.sh: test_expect_success "setup without fsmonitor" '
+ git fsmonitor--daemon start
+
+ trace_start fsmonitor--daemon--client
-+ test_expect_success "setup for fsmonitor--daemon" 'setup_for_fsmonitor'
++
++ git config core.fsmonitor true
++ git update-index --fsmonitor
++
+ test_fsmonitor_suite
+
+ git fsmonitor--daemon stop
26: 54710a4830d = 26: 19993c130d2 fsmonitor--daemon: periodically truncate list of modified files
27: 1e2bd77fcea = 27: f47a763dc26 fsmonitor--daemon: use a cookie file to sync with file system
28: 30e61b6d1ad ! 28: aec44a21afd fsmonitor: force update index after large responses
@@ fsmonitor.c: apply_results:
*/
+ trace2_region_enter("fsmonitor", "apply_results", istate->repo);
+
- if (query_success && query_result.buf[bol] != '/') {
+ if (query_success && !is_trivial) {
/*
* Mark all pathnames returned by the monitor as dirty.
*
@@ fsmonitor.c: apply_results:
+
} else {
/*
- * We received a trivial response, so invalidate everything.
+ * We failed to get a response or received a trivial response,
@@ fsmonitor.c: apply_results:
if (istate->untracked)
istate->untracked->use_fsmonitor = 0;
29: 507020bbef0 ! 29: d6039987df8 t7527: test status with untracked-cache and fsmonitor--daemon
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'setup' '
+ trace*
EOF
- git -c core.useBuiltinFSMonitor= add . &&
+ git -c core.fsmonitor=false add . &&
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
stop_daemon_delete_repo wt-base
'
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
+# cause incorrect results when the untracked-cache is enabled.
+
+test_lazy_prereq UNTRACKED_CACHE '
-+ { git update-index --test-untracked-cache; ret=$?; } &&
-+ test $ret -ne 1
++ git update-index --test-untracked-cache
+'
+
+test_expect_success 'Matrix: setup for untracked-cache,fsmonitor matrix' '
-+ test_might_fail git config --unset core.useBuiltinFSMonitor &&
++ test_unconfig core.fsmonitor &&
+ git update-index --no-fsmonitor &&
+ test_might_fail git fsmonitor--daemon stop
+'
+
+matrix_clean_up_repo () {
-+ git reset --hard HEAD
++ git reset --hard HEAD &&
+ git clean -fd
+}
+
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
+ test_expect_success "Matrix[uc:$uc][fsm:$fsm] $fn" '
+ matrix_clean_up_repo &&
+ $fn &&
-+ if test $uc = false -a $fsm = false
++ if test $uc = false && test $fsm = false
+ then
+ git status --porcelain=v1 >.git/expect.$fn
+ else
-+ git status --porcelain=v1 >.git/actual.$fn
++ git status --porcelain=v1 >.git/actual.$fn &&
+ test_cmp .git/expect.$fn .git/actual.$fn
+ fi
+ '
-+
-+ return $?
+}
+
+uc_values="false"
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
+ if test $fsm_val = false
+ then
+ test_expect_success "Matrix[uc:$uc_val][fsm:$fsm_val] disable fsmonitor" '
-+ test_might_fail git config --unset core.useBuiltinFSMonitor &&
++ test_unconfig core.fsmonitor &&
+ git update-index --no-fsmonitor &&
-+ test_might_fail git fsmonitor--daemon stop 2>/dev/null
++ test_might_fail git fsmonitor--daemon stop
+ '
+ else
+ test_expect_success "Matrix[uc:$uc_val][fsm:$fsm_val] enable fsmonitor" '
-+ git config core.useBuiltinFSMonitor true &&
++ git config core.fsmonitor true &&
+ git fsmonitor--daemon start &&
+ git update-index --fsmonitor
+ '
@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
+ if test $fsm_val = true
+ then
+ test_expect_success "Matrix[uc:$uc_val][fsm:$fsm_val] disable fsmonitor at end" '
-+ test_might_fail git config --unset core.useBuiltinFSMonitor &&
++ test_unconfig core.fsmonitor &&
+ git update-index --no-fsmonitor &&
-+ test_might_fail git fsmonitor--daemon stop 2>/dev/null
++ test_might_fail git fsmonitor--daemon stop
+ '
+ fi
+ done
-: ----------- > 30: 5117fbdfc63 update-index: convert fsmonitor warnings to advise
--
gitgitgadget
next prev parent reply other threads:[~2022-02-11 20:59 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 ` Jeff Hostetler via GitGitGadget [this message]
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 ` [PATCH v5 17/30] compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS Jeff Hostetler via GitGitGadget
2022-02-24 15:21 ` 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
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=pull.1041.v5.git.1644612979.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.
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).