All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jeff Hostetler via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "Jeff Hostetler" <git@jeffhostetler.com>,
	"Derrick Stolee" <derrickstolee@github.com>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
	Torsten =?unknown-8bit?Q?B=C3=B6gershausen?= <tboegi@web.de>,
	rsbecker@nexbridge.com, "Bagas Sanjaya" <bagasdotme@gmail.com>,
	"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
	"Jeff Hostetler" <jeffhost@microsoft.com>
Subject: [PATCH v7 00/30] Builtin FSMonitor Part 3
Date: Mon, 23 May 2022 20:12:15 +0000	[thread overview]
Message-ID: <pull.1143.v7.git.1653336765.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1143.v6.git.1650662994.gitgitgadget@gmail.com>

Here is version 7 of part 3 of FSMonitor.

This version mainly addresses comments received on V6.

 1. A few typos.
 2. Cleanup of some wide-char string manipulations in Windows code.
 3. Fix some coding-style issues in the unit tests: don't capitalize test
    case description and single-quote the descriptions when possible.
 4. Add t/helper/test-hexdump.c and use that in t7527 rather than
    /usr/bin/od in the Unicode/UTF8 compatibility tests for macOS.
 5. Refactor the implicit daemon shutdown tests to retry a few times rather
    than a fixed sleep. This helps avoid races in the CI build runs.

Here is a range-diff against V6:

 1:  8b7c5f4e23 !  1:  26144c5865 fsm-listen-win32: handle shortnames
    @@ compat/fsmonitor/fsm-listen-win32.c: struct one_watch
     +   * clients.)
     +   */
     +  BOOL has_shortnames;
    -+  BOOL has_tilda;
    ++  BOOL has_tilde;
     +  wchar_t dotgit_shortname[16]; /* for 8.3 name */
      };
      
    @@ compat/fsmonitor/fsm-listen-win32.c: static int normalize_path_in_utf8(FILE_NOTI
     +{
     +  wchar_t buf_in[MAX_PATH + 1];
     +  wchar_t buf_out[MAX_PATH + 1];
    -+  wchar_t *last_slash = NULL;
    -+  wchar_t *last_bslash = NULL;
     +  wchar_t *last;
    ++  wchar_t *p;
     +
     +  /* build L"<wt-root-path>/.git" */
    -+  wcscpy(buf_in, watch->wpath_longname);
    -+  wcscpy(buf_in + watch->wpath_longname_len, L".git");
    ++  swprintf(buf_in, ARRAY_SIZE(buf_in) - 1, L"%s.git",
    ++           watch->wpath_longname);
     +
    -+  if (!GetShortPathNameW(buf_in, buf_out, MAX_PATH))
    ++  if (!GetShortPathNameW(buf_in, buf_out, ARRAY_SIZE(buf_out)))
     +          return;
     +
    -+  last_slash = wcsrchr(buf_out, L'/');
    -+  last_bslash = wcsrchr(buf_out, L'\\');
    -+  if (last_slash > last_bslash)
    -+          last = last_slash + 1;
    -+  else if (last_bslash)
    -+          last = last_bslash + 1;
    -+  else
    -+          last = buf_out;
    ++  /*
    ++   * Get the final filename component of the shortpath.
    ++   * We know that the path does not have a final slash.
    ++   */
    ++  for (last = p = buf_out; *p; p++)
    ++          if (*p == L'/' || *p == '\\')
    ++                  last = p + 1;
     +
     +  if (!wcscmp(last, L".git"))
     +          return;
    @@ compat/fsmonitor/fsm-listen-win32.c: static int normalize_path_in_utf8(FILE_NOTI
     +   * Lets test this.
     +   */
     +  if (wcschr(watch->dotgit_shortname, L'~'))
    -+          watch->has_tilda = 1;
    ++          watch->has_tilde = 1;
     +}
     +
     +enum get_relative_result {
    @@ compat/fsmonitor/fsm-listen-win32.c: static int normalize_path_in_utf8(FILE_NOTI
     +static enum get_relative_result get_relative_longname(
     +  struct one_watch *watch,
     +  const wchar_t *wpath, DWORD wpath_len,
    -+  wchar_t *wpath_longname)
    ++  wchar_t *wpath_longname, size_t bufsize_wpath_longname)
     +{
     +  wchar_t buf_in[2 * MAX_PATH + 1];
     +  wchar_t buf_out[MAX_PATH + 1];
     +  DWORD root_len;
    ++  DWORD out_len;
     +
    -+  /* Build L"<wt-root-path>/<event-rel-path>" */
    ++  /*
    ++   * Build L"<wt-root-path>/<event-rel-path>"
    ++   * Note that the <event-rel-path> might not be null terminated
    ++   * so we avoid swprintf() constructions.
    ++   */
     +  root_len = watch->wpath_longname_len;
    ++  if (root_len + wpath_len >= ARRAY_SIZE(buf_in)) {
    ++          /*
    ++           * This should not happen.  We cannot append the observed
    ++           * relative path onto the end of the worktree root path
    ++           * without overflowing the buffer.  Just give up.
    ++           */
    ++          return GRR_SHUTDOWN;
    ++  }
     +  wcsncpy(buf_in, watch->wpath_longname, root_len);
     +  wcsncpy(buf_in + root_len, wpath, wpath_len);
     +  buf_in[root_len + wpath_len] = 0;
     +
     +  /*
     +   * We don't actually know if the source pathname is a
    -+   * shortname or a longname.  This routine allows either to be
    -+   * given as input.
    ++   * shortname or a longname.  This Windows routine allows
    ++   * either to be given as input.
     +   */
    -+  if (!GetLongPathNameW(buf_in, buf_out, MAX_PATH)) {
    ++  out_len = GetLongPathNameW(buf_in, buf_out, ARRAY_SIZE(buf_out));
    ++  if (!out_len) {
     +          /*
     +           * The shortname to longname conversion can fail for
     +           * various reasons, for example if the file has been
    @@ compat/fsmonitor/fsm-listen-win32.c: static int normalize_path_in_utf8(FILE_NOTI
     +          return GRR_SHUTDOWN;
     +  }
     +
    ++  if (out_len - root_len >= bufsize_wpath_longname) {
    ++          /*
    ++           * This should not happen.  We cannot copy the root-relative
    ++           * portion of the path into the provided buffer without an
    ++           * overrun.  Just give up.
    ++           */
    ++          return GRR_SHUTDOWN;
    ++  }
    ++
     +  /* Return the worktree root-relative portion of the longname. */
     +
     +  wcscpy(wpath_longname, buf_out + root_len);
    @@ compat/fsmonitor/fsm-listen-win32.c: static struct one_watch *create_watch(struc
                return NULL;
        }
      
    -+  if (!GetLongPathNameW(wpath, wpath_longname, MAX_PATH)) {
    ++  len_longname = GetLongPathNameW(wpath, wpath_longname,
    ++                                  ARRAY_SIZE(wpath_longname));
    ++  if (!len_longname) {
     +          error(_("[GLE %ld] could not get longname of '%s'"),
     +                GetLastError(), path);
     +          CloseHandle(hDir);
     +          return NULL;
     +  }
     +
    -+  len_longname = wcslen(wpath_longname);
     +  if (wpath_longname[len_longname - 1] != L'/' &&
     +      wpath_longname[len_longname - 1] != L'\\') {
     +          wpath_longname[len_longname++] = L'/';
    @@ compat/fsmonitor/fsm-listen-win32.c: static int process_worktree_events(struct f
     -          case IS_INSIDE_DOT_GIT:
     -                  /* ignore everything inside of "<worktree>/.git/" */
     -                  break;
    -+                  if (watch->has_tilda && !wcschr(wpath, L'~')) {
    ++                  if (watch->has_tilde && !wcschr(wpath, L'~')) {
     +                          /*
    -+                           * Shortnames on this filesystem have tildas
    ++                           * Shortnames on this filesystem have tildes
     +                           * and the notification path does not have
     +                           * one, so we assume that it is a longname.
     +                           */
    @@ compat/fsmonitor/fsm-listen-win32.c: static int process_worktree_events(struct f
     -                                             "fsm-listen/dotgit",
     -                                             "removed");
     +                  grr = get_relative_longname(watch, wpath, wpath_len,
    -+                                              wpath_longname);
    ++                                              wpath_longname,
    ++                                              ARRAY_SIZE(wpath_longname));
     +                  switch (grr) {
     +                  case GRR_NO_CONVERSION_NEEDED: /* use info buffer as is */
     +                          break;
 2:  5b246bec24 !  2:  1bf2e36b6a t7527: test FSMonitor on repos with Unicode root paths
    @@ t/t7527-builtin-fsmonitor.sh: do
     +u_values="$u1 $u2"
     +for u in $u_values
     +do
    -+  test_expect_success "Unicode in repo root path: $u" '
    ++  test_expect_success "unicode in repo root path: $u" '
     +          test_when_finished "stop_daemon_delete_repo $u" &&
     +
     +          git init "$u" &&
 3:  8a474d6999 =  3:  4bca494bb2 t/helper/fsmonitor-client: create stress test
 4:  72b94acd5f !  4:  663deabc3f fsmonitor-settings: bare repos are incompatible with FSMonitor
    @@ fsmonitor-settings.h
     + */
     +enum fsmonitor_reason {
     +  FSMONITOR_REASON_UNTESTED = 0,
    -+  FSMONITOR_REASON_OK, /* no incompatibility or when disbled */
    ++  FSMONITOR_REASON_OK, /* no incompatibility or when disabled */
     +  FSMONITOR_REASON_BARE,
     +};
     +
 5:  2e225c3f4f =  5:  7cb0180a1e fsmonitor-settings: stub in Win32-specific incompatibility checking
 6:  e0d3bdf755 !  6:  9774faddc4 fsmonitor-settings: VFS for Git virtual repos are incompatible
    @@ fsmonitor-settings.c: char *fsm_settings__get_incompatible_msg(const struct repo
      ## fsmonitor-settings.h ##
     @@ fsmonitor-settings.h: enum fsmonitor_reason {
        FSMONITOR_REASON_UNTESTED = 0,
    -   FSMONITOR_REASON_OK, /* no incompatibility or when disbled */
    +   FSMONITOR_REASON_OK, /* no incompatibility or when disabled */
        FSMONITOR_REASON_BARE,
     +  FSMONITOR_REASON_VFS4GIT, /* VFS for Git virtualization */
      };
 7:  c50ed29a31 =  7:  f7ef7dcffc fsmonitor-settings: stub in macOS-specific incompatibility checking
 8:  1f5b772d42 !  8:  dc2dfd6793 fsmonitor-settings: remote repos on macOS are incompatible
    @@ fsmonitor-settings.c: char *fsm_settings__get_incompatible_msg(const struct repo
      ## fsmonitor-settings.h ##
     @@ fsmonitor-settings.h: enum fsmonitor_reason {
        FSMONITOR_REASON_UNTESTED = 0,
    -   FSMONITOR_REASON_OK, /* no incompatibility or when disbled */
    +   FSMONITOR_REASON_OK, /* no incompatibility or when disabled */
        FSMONITOR_REASON_BARE,
     +  FSMONITOR_REASON_ERROR, /* FS error probing for compatibility */
     +  FSMONITOR_REASON_REMOTE,
 9:  495e54049b =  9:  5627038aaa fsmonitor-settings: remote repos on Windows are incompatible
10:  4b52083698 = 10:  9a12cc78b5 fsmonitor-settings: NTFS and FAT32 on MacOS are incompatible
11:  d4a4263d37 = 11:  aaff000cec unpack-trees: initialize fsmonitor_has_run_once in o->result
12:  f4feb00ec2 = 12:  4f2b15d3d1 fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS
13:  dbb983fd9d = 13:  427dec412a fsmonitor--daemon: cd out of worktree root
14:  ae90b99ea9 = 14:  51b266b06e fsmonitor--daemon: prepare for adding health thread
15:  b6c5800095 = 15:  594e0ae243 fsmonitor--daemon: rename listener thread related variables
16:  32fc6ba743 = 16:  c2b5c02ed3 fsmonitor--daemon: stub in health thread
17:  77bc037481 = 17:  46a5ae2a63 fsm-health-win32: add polling framework to monitor daemon health
18:  b06edd995e = 18:  7cf1be5f8e fsm-health-win32: force shutdown daemon if worktree root moves
19:  1bd5f34624 = 19:  95cf1299d4 fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed
20:  48af0813de = 20:  b020bfb456 fsmonitor: optimize processing of directory events
21:  a9b35e770f = 21:  d058d7e0c0 t7527: FSMonitor tests for directory moves
22:  26308936af = 22:  f5dac28681 t/perf/p7527: add perf test for builtin FSMonitor
23:  d0e25f6bac ! 23:  92f5c0d2c8 fsmonitor: never set CE_FSMONITOR_VALID on submodules
    @@ t/t7527-builtin-fsmonitor.sh: do
     +  git -C super/dir_1/dir_2/sub clean -d -f
     +}
     +
    -+test_expect_success "Submodule always visited" '
    ++test_expect_success 'submodule always visited' '
     +  test_when_finished "git -C super fsmonitor--daemon stop; \
     +                      rm -rf super; \
     +                      rm -rf sub" &&
24:  410dd2d292 ! 24:  40b80adbb3 t7527: test FSMonitor on case insensitive+preserving file system
    @@ Commit message
         Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
     
      ## t/t7527-builtin-fsmonitor.sh ##
    -@@ t/t7527-builtin-fsmonitor.sh: test_expect_success "Submodule always visited" '
    +@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'submodule always visited' '
        my_match_and_clean
      '
      
25:  cd7c55b0d3 = 25:  b93f064269 fsmonitor: on macOS also emit NFC spelling for NFD pathname
 -:  ---------- > 26:  6f2e935f14 t/helper/hexdump: add helper to print hexdump of stdin
26:  8278f32c4d ! 27:  6a83086995 t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd
    @@ t/lib-unicode-nfc-nfd.sh (new)
     +# and on APFS, NFC paths are preserved.  As we have established
     +# above, this is independent of "composition sensitivity".
     +#
    -+# 0000000 63 5f c3 a9
    -+#
    -+# (/usr/bin/od output contains different amount of whitespace
    -+# on different platforms, so we need the wildcards here.)
    -+#
     +test_lazy_prereq UNICODE_NFC_PRESERVED '
     +  mkdir c_${utf8_nfc} &&
    -+  ls | od -t x1 | grep "63 *5f *c3 *a9"
    ++  ls | test-tool hexdump | grep "63 5f c3 a9"
     +'
     +
     +# Is the spelling of an NFD pathname preserved on disk?
     +#
    -+# 0000000 64 5f 65 cc 81
    -+#
     +test_lazy_prereq UNICODE_NFD_PRESERVED '
     +  mkdir d_${utf8_nfd} &&
    -+  ls | od -t x1 | grep "64 *5f *65 *cc *81"
    ++  ls | test-tool hexdump | grep "64 5f 65 cc 81"
     +'
    -+  mkdir c_${utf8_nfc} &&
    -+  mkdir d_${utf8_nfd} &&
     +
     +# The following _DOUBLE_ forms are more for my curiosity,
     +# but there may be quirks lurking when there are multiple
    @@ t/lib-unicode-nfc-nfd.sh (new)
     +#
     +test_lazy_prereq UNICODE_DOUBLE_NFC_PRESERVED '
     +  mkdir c_${greek_nfc} &&
    -+  ls | od -t x1 | grep "63 *5f *e1 *bd *a7"
    ++  ls | test-tool hexdump | grep "63 5f e1 bd a7"
     +'
     +
     +# See if the NFD spelling appears on the disk.
     +#
     +test_lazy_prereq UNICODE_DOUBLE_NFD_PRESERVED '
     +  mkdir d_${greek_nfd2} &&
    -+  ls | od -t x1 | grep "64 *5f *cf *89 *cc *94 *cd *82"
    ++  ls | test-tool hexdump | grep "64 5f cf 89 cc 94 cd 82"
     +'
     +
     +# The following is for debugging. I found it useful when
27:  4efb3a4383 = 28:  f9a7869d20 t7527: test Unicode NFC/NFD handling on MacOS
28:  df1b4f3a80 ! 29:  9fc7c97092 fsmonitor--daemon: allow --super-prefix argument
    @@ git.c: static struct cmd_struct commands[] = {
        { "grep", cmd_grep, RUN_SETUP_GENTLY },
     
      ## t/t7527-builtin-fsmonitor.sh ##
    -@@ t/t7527-builtin-fsmonitor.sh: test_expect_success "Submodule always visited" '
    +@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'submodule always visited' '
        my_match_and_clean
      '
      
    @@ t/t7527-builtin-fsmonitor.sh: test_expect_success "Submodule always visited" '
     +  tr '\047' Q <$1 | grep -e "$msg"
     +}
     +
    -+test_expect_success "Stray Submodule super-prefix warning" '
    ++test_expect_success "stray submodule super-prefix warning" '
     +  test_when_finished "rm -rf super; \
     +                      rm -rf sub;   \
     +                      rm super-sub.trace" &&
 -:  ---------- > 30:  ca833ecc7a t7527: improve implicit shutdown testing in fsmonitor--daemon


Jeff Hostetler (30):
  fsm-listen-win32: handle shortnames
  t7527: test FSMonitor on repos with Unicode root paths
  t/helper/fsmonitor-client: create stress test
  fsmonitor-settings: bare repos are incompatible with FSMonitor
  fsmonitor-settings: stub in Win32-specific incompatibility checking
  fsmonitor-settings: VFS for Git virtual repos are incompatible
  fsmonitor-settings: stub in macOS-specific incompatibility checking
  fsmonitor-settings: remote repos on macOS are incompatible
  fsmonitor-settings: remote repos on Windows are incompatible
  fsmonitor-settings: NTFS and FAT32 on MacOS are incompatible
  unpack-trees: initialize fsmonitor_has_run_once in o->result
  fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS
  fsmonitor--daemon: cd out of worktree root
  fsmonitor--daemon: prepare for adding health thread
  fsmonitor--daemon: rename listener thread related variables
  fsmonitor--daemon: stub in health thread
  fsm-health-win32: add polling framework to monitor daemon health
  fsm-health-win32: force shutdown daemon if worktree root moves
  fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed
  fsmonitor: optimize processing of directory events
  t7527: FSMonitor tests for directory moves
  t/perf/p7527: add perf test for builtin FSMonitor
  fsmonitor: never set CE_FSMONITOR_VALID on submodules
  t7527: test FSMonitor on case insensitive+preserving file system
  fsmonitor: on macOS also emit NFC spelling for NFD pathname
  t/helper/hexdump: add helper to print hexdump of stdin
  t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd
  t7527: test Unicode NFC/NFD handling on MacOS
  fsmonitor--daemon: allow --super-prefix argument
  t7527: improve implicit shutdown testing in fsmonitor--daemon

 Makefile                               |  20 +-
 builtin/fsmonitor--daemon.c            | 116 ++++++-
 builtin/update-index.c                 |  16 +
 compat/fsmonitor/fsm-health-darwin.c   |  24 ++
 compat/fsmonitor/fsm-health-win32.c    | 278 ++++++++++++++++
 compat/fsmonitor/fsm-health.h          |  47 +++
 compat/fsmonitor/fsm-listen-darwin.c   | 122 ++++++-
 compat/fsmonitor/fsm-listen-win32.c    | 436 ++++++++++++++++++++-----
 compat/fsmonitor/fsm-listen.h          |   2 +-
 compat/fsmonitor/fsm-settings-darwin.c |  89 +++++
 compat/fsmonitor/fsm-settings-win32.c  | 137 ++++++++
 config.mak.uname                       |   5 +
 contrib/buildsystems/CMakeLists.txt    |   8 +
 fsmonitor--daemon.h                    |  11 +-
 fsmonitor-settings.c                   | 167 ++++++++--
 fsmonitor-settings.h                   |  33 ++
 fsmonitor.c                            |  73 ++++-
 fsmonitor.h                            |  11 +
 git.c                                  |   2 +-
 t/helper/test-fsmonitor-client.c       | 106 ++++++
 t/helper/test-hexdump.c                |  24 ++
 t/helper/test-tool.c                   |   1 +
 t/helper/test-tool.h                   |   1 +
 t/lib-unicode-nfc-nfd.sh               | 158 +++++++++
 t/perf/p7527-builtin-fsmonitor.sh      | 257 +++++++++++++++
 t/t7519-status-fsmonitor.sh            |  32 ++
 t/t7527-builtin-fsmonitor.sh           | 401 ++++++++++++++++++++++-
 unpack-trees.c                         |   1 +
 28 files changed, 2429 insertions(+), 149 deletions(-)
 create mode 100644 compat/fsmonitor/fsm-health-darwin.c
 create mode 100644 compat/fsmonitor/fsm-health-win32.c
 create mode 100644 compat/fsmonitor/fsm-health.h
 create mode 100644 compat/fsmonitor/fsm-settings-darwin.c
 create mode 100644 compat/fsmonitor/fsm-settings-win32.c
 create mode 100644 t/helper/test-hexdump.c
 create mode 100755 t/lib-unicode-nfc-nfd.sh
 create mode 100755 t/perf/p7527-builtin-fsmonitor.sh


base-commit: 5eb696daba2fe108d4d9ba2ccf4b357447ef9946
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1143%2Fjeffhostetler%2Fbuiltin-fsmonitor-part3-v7
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1143/jeffhostetler/builtin-fsmonitor-part3-v7
Pull-Request: https://github.com/gitgitgadget/git/pull/1143

Range-diff vs v6:

  1:  8b7c5f4e234 !  1:  26144c58659 fsm-listen-win32: handle shortnames
     @@ compat/fsmonitor/fsm-listen-win32.c: struct one_watch
      +	 * clients.)
      +	 */
      +	BOOL has_shortnames;
     -+	BOOL has_tilda;
     ++	BOOL has_tilde;
      +	wchar_t dotgit_shortname[16]; /* for 8.3 name */
       };
       
     @@ compat/fsmonitor/fsm-listen-win32.c: normalize:
      +{
      +	wchar_t buf_in[MAX_PATH + 1];
      +	wchar_t buf_out[MAX_PATH + 1];
     -+	wchar_t *last_slash = NULL;
     -+	wchar_t *last_bslash = NULL;
      +	wchar_t *last;
     ++	wchar_t *p;
      +
      +	/* build L"<wt-root-path>/.git" */
     -+	wcscpy(buf_in, watch->wpath_longname);
     -+	wcscpy(buf_in + watch->wpath_longname_len, L".git");
     ++	swprintf(buf_in, ARRAY_SIZE(buf_in) - 1, L"%s.git",
     ++		 watch->wpath_longname);
      +
     -+	if (!GetShortPathNameW(buf_in, buf_out, MAX_PATH))
     ++	if (!GetShortPathNameW(buf_in, buf_out, ARRAY_SIZE(buf_out)))
      +		return;
      +
     -+	last_slash = wcsrchr(buf_out, L'/');
     -+	last_bslash = wcsrchr(buf_out, L'\\');
     -+	if (last_slash > last_bslash)
     -+		last = last_slash + 1;
     -+	else if (last_bslash)
     -+		last = last_bslash + 1;
     -+	else
     -+		last = buf_out;
     ++	/*
     ++	 * Get the final filename component of the shortpath.
     ++	 * We know that the path does not have a final slash.
     ++	 */
     ++	for (last = p = buf_out; *p; p++)
     ++		if (*p == L'/' || *p == '\\')
     ++			last = p + 1;
      +
      +	if (!wcscmp(last, L".git"))
      +		return;
     @@ compat/fsmonitor/fsm-listen-win32.c: normalize:
      +	 * Lets test this.
      +	 */
      +	if (wcschr(watch->dotgit_shortname, L'~'))
     -+		watch->has_tilda = 1;
     ++		watch->has_tilde = 1;
      +}
      +
      +enum get_relative_result {
     @@ compat/fsmonitor/fsm-listen-win32.c: normalize:
      +static enum get_relative_result get_relative_longname(
      +	struct one_watch *watch,
      +	const wchar_t *wpath, DWORD wpath_len,
     -+	wchar_t *wpath_longname)
     ++	wchar_t *wpath_longname, size_t bufsize_wpath_longname)
      +{
      +	wchar_t buf_in[2 * MAX_PATH + 1];
      +	wchar_t buf_out[MAX_PATH + 1];
      +	DWORD root_len;
     ++	DWORD out_len;
      +
     -+	/* Build L"<wt-root-path>/<event-rel-path>" */
     ++	/*
     ++	 * Build L"<wt-root-path>/<event-rel-path>"
     ++	 * Note that the <event-rel-path> might not be null terminated
     ++	 * so we avoid swprintf() constructions.
     ++	 */
      +	root_len = watch->wpath_longname_len;
     ++	if (root_len + wpath_len >= ARRAY_SIZE(buf_in)) {
     ++		/*
     ++		 * This should not happen.  We cannot append the observed
     ++		 * relative path onto the end of the worktree root path
     ++		 * without overflowing the buffer.  Just give up.
     ++		 */
     ++		return GRR_SHUTDOWN;
     ++	}
      +	wcsncpy(buf_in, watch->wpath_longname, root_len);
      +	wcsncpy(buf_in + root_len, wpath, wpath_len);
      +	buf_in[root_len + wpath_len] = 0;
      +
      +	/*
      +	 * We don't actually know if the source pathname is a
     -+	 * shortname or a longname.  This routine allows either to be
     -+	 * given as input.
     ++	 * shortname or a longname.  This Windows routine allows
     ++	 * either to be given as input.
      +	 */
     -+	if (!GetLongPathNameW(buf_in, buf_out, MAX_PATH)) {
     ++	out_len = GetLongPathNameW(buf_in, buf_out, ARRAY_SIZE(buf_out));
     ++	if (!out_len) {
      +		/*
      +		 * The shortname to longname conversion can fail for
      +		 * various reasons, for example if the file has been
     @@ compat/fsmonitor/fsm-listen-win32.c: normalize:
      +		return GRR_SHUTDOWN;
      +	}
      +
     ++	if (out_len - root_len >= bufsize_wpath_longname) {
     ++		/*
     ++		 * This should not happen.  We cannot copy the root-relative
     ++		 * portion of the path into the provided buffer without an
     ++		 * overrun.  Just give up.
     ++		 */
     ++		return GRR_SHUTDOWN;
     ++	}
     ++
      +	/* Return the worktree root-relative portion of the longname. */
      +
      +	wcscpy(wpath_longname, buf_out + root_len);
     @@ compat/fsmonitor/fsm-listen-win32.c: static struct one_watch *create_watch(struc
       		return NULL;
       	}
       
     -+	if (!GetLongPathNameW(wpath, wpath_longname, MAX_PATH)) {
     ++	len_longname = GetLongPathNameW(wpath, wpath_longname,
     ++					ARRAY_SIZE(wpath_longname));
     ++	if (!len_longname) {
      +		error(_("[GLE %ld] could not get longname of '%s'"),
      +		      GetLastError(), path);
      +		CloseHandle(hDir);
      +		return NULL;
      +	}
      +
     -+	len_longname = wcslen(wpath_longname);
      +	if (wpath_longname[len_longname - 1] != L'/' &&
      +	    wpath_longname[len_longname - 1] != L'\\') {
      +		wpath_longname[len_longname++] = L'/';
     @@ compat/fsmonitor/fsm-listen-win32.c: static int process_worktree_events(struct f
      -		case IS_INSIDE_DOT_GIT:
      -			/* ignore everything inside of "<worktree>/.git/" */
      -			break;
     -+			if (watch->has_tilda && !wcschr(wpath, L'~')) {
     ++			if (watch->has_tilde && !wcschr(wpath, L'~')) {
      +				/*
     -+				 * Shortnames on this filesystem have tildas
     ++				 * Shortnames on this filesystem have tildes
      +				 * and the notification path does not have
      +				 * one, so we assume that it is a longname.
      +				 */
     @@ compat/fsmonitor/fsm-listen-win32.c: static int process_worktree_events(struct f
      -						   "fsm-listen/dotgit",
      -						   "removed");
      +			grr = get_relative_longname(watch, wpath, wpath_len,
     -+						    wpath_longname);
     ++						    wpath_longname,
     ++						    ARRAY_SIZE(wpath_longname));
      +			switch (grr) {
      +			case GRR_NO_CONVERSION_NEEDED: /* use info buffer as is */
      +				break;
  2:  5b246bec247 !  2:  1bf2e36b6ad t7527: test FSMonitor on repos with Unicode root paths
     @@ t/t7527-builtin-fsmonitor.sh: do
      +u_values="$u1 $u2"
      +for u in $u_values
      +do
     -+	test_expect_success "Unicode in repo root path: $u" '
     ++	test_expect_success "unicode in repo root path: $u" '
      +		test_when_finished "stop_daemon_delete_repo $u" &&
      +
      +		git init "$u" &&
  3:  8a474d69999 =  3:  4bca494bb22 t/helper/fsmonitor-client: create stress test
  4:  72b94acd5fe !  4:  663deabc3f6 fsmonitor-settings: bare repos are incompatible with FSMonitor
     @@ fsmonitor-settings.h
      + */
      +enum fsmonitor_reason {
      +	FSMONITOR_REASON_UNTESTED = 0,
     -+	FSMONITOR_REASON_OK, /* no incompatibility or when disbled */
     ++	FSMONITOR_REASON_OK, /* no incompatibility or when disabled */
      +	FSMONITOR_REASON_BARE,
      +};
      +
  5:  2e225c3f4f2 =  5:  7cb0180a1ed fsmonitor-settings: stub in Win32-specific incompatibility checking
  6:  e0d3bdf7556 !  6:  9774faddc45 fsmonitor-settings: VFS for Git virtual repos are incompatible
     @@ fsmonitor-settings.c: char *fsm_settings__get_incompatible_msg(const struct repo
       ## fsmonitor-settings.h ##
      @@ fsmonitor-settings.h: enum fsmonitor_reason {
       	FSMONITOR_REASON_UNTESTED = 0,
     - 	FSMONITOR_REASON_OK, /* no incompatibility or when disbled */
     + 	FSMONITOR_REASON_OK, /* no incompatibility or when disabled */
       	FSMONITOR_REASON_BARE,
      +	FSMONITOR_REASON_VFS4GIT, /* VFS for Git virtualization */
       };
  7:  c50ed29a310 =  7:  f7ef7dcffc8 fsmonitor-settings: stub in macOS-specific incompatibility checking
  8:  1f5b772d42a !  8:  dc2dfd67931 fsmonitor-settings: remote repos on macOS are incompatible
     @@ fsmonitor-settings.c: char *fsm_settings__get_incompatible_msg(const struct repo
       ## fsmonitor-settings.h ##
      @@ fsmonitor-settings.h: enum fsmonitor_reason {
       	FSMONITOR_REASON_UNTESTED = 0,
     - 	FSMONITOR_REASON_OK, /* no incompatibility or when disbled */
     + 	FSMONITOR_REASON_OK, /* no incompatibility or when disabled */
       	FSMONITOR_REASON_BARE,
      +	FSMONITOR_REASON_ERROR, /* FS error probing for compatibility */
      +	FSMONITOR_REASON_REMOTE,
  9:  495e54049b4 =  9:  5627038aaa3 fsmonitor-settings: remote repos on Windows are incompatible
 10:  4b52083698c = 10:  9a12cc78b5d fsmonitor-settings: NTFS and FAT32 on MacOS are incompatible
 11:  d4a4263d379 = 11:  aaff000cecb unpack-trees: initialize fsmonitor_has_run_once in o->result
 12:  f4feb00ec2b = 12:  4f2b15d3d1f fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS
 13:  dbb983fd9d0 = 13:  427dec412a5 fsmonitor--daemon: cd out of worktree root
 14:  ae90b99ea9b = 14:  51b266b06e1 fsmonitor--daemon: prepare for adding health thread
 15:  b6c5800095f = 15:  594e0ae243d fsmonitor--daemon: rename listener thread related variables
 16:  32fc6ba7437 = 16:  c2b5c02ed38 fsmonitor--daemon: stub in health thread
 17:  77bc037481a = 17:  46a5ae2a635 fsm-health-win32: add polling framework to monitor daemon health
 18:  b06edd995ea = 18:  7cf1be5f8e2 fsm-health-win32: force shutdown daemon if worktree root moves
 19:  1bd5f346248 = 19:  95cf1299d44 fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed
 20:  48af0813dec = 20:  b020bfb4568 fsmonitor: optimize processing of directory events
 21:  a9b35e770f3 = 21:  d058d7e0c08 t7527: FSMonitor tests for directory moves
 22:  26308936af9 = 22:  f5dac286812 t/perf/p7527: add perf test for builtin FSMonitor
 23:  d0e25f6bac6 ! 23:  92f5c0d2c8b fsmonitor: never set CE_FSMONITOR_VALID on submodules
     @@ t/t7527-builtin-fsmonitor.sh: do
      +	git -C super/dir_1/dir_2/sub clean -d -f
      +}
      +
     -+test_expect_success "Submodule always visited" '
     ++test_expect_success 'submodule always visited' '
      +	test_when_finished "git -C super fsmonitor--daemon stop; \
      +			    rm -rf super; \
      +			    rm -rf sub" &&
 24:  410dd2d2920 ! 24:  40b80adbb31 t7527: test FSMonitor on case insensitive+preserving file system
     @@ Commit message
          Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
      
       ## t/t7527-builtin-fsmonitor.sh ##
     -@@ t/t7527-builtin-fsmonitor.sh: test_expect_success "Submodule always visited" '
     +@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'submodule always visited' '
       	my_match_and_clean
       '
       
 25:  cd7c55b0d38 = 25:  b93f0642699 fsmonitor: on macOS also emit NFC spelling for NFD pathname
  -:  ----------- > 26:  6f2e935f148 t/helper/hexdump: add helper to print hexdump of stdin
 26:  8278f32c4d8 ! 27:  6a830869954 t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd
     @@ t/lib-unicode-nfc-nfd.sh (new)
      +# and on APFS, NFC paths are preserved.  As we have established
      +# above, this is independent of "composition sensitivity".
      +#
     -+# 0000000 63 5f c3 a9
     -+#
     -+# (/usr/bin/od output contains different amount of whitespace
     -+# on different platforms, so we need the wildcards here.)
     -+#
      +test_lazy_prereq UNICODE_NFC_PRESERVED '
      +	mkdir c_${utf8_nfc} &&
     -+	ls | od -t x1 | grep "63 *5f *c3 *a9"
     ++	ls | test-tool hexdump | grep "63 5f c3 a9"
      +'
      +
      +# Is the spelling of an NFD pathname preserved on disk?
      +#
     -+# 0000000 64 5f 65 cc 81
     -+#
      +test_lazy_prereq UNICODE_NFD_PRESERVED '
      +	mkdir d_${utf8_nfd} &&
     -+	ls | od -t x1 | grep "64 *5f *65 *cc *81"
     ++	ls | test-tool hexdump | grep "64 5f 65 cc 81"
      +'
     -+	mkdir c_${utf8_nfc} &&
     -+	mkdir d_${utf8_nfd} &&
      +
      +# The following _DOUBLE_ forms are more for my curiosity,
      +# but there may be quirks lurking when there are multiple
     @@ t/lib-unicode-nfc-nfd.sh (new)
      +#
      +test_lazy_prereq UNICODE_DOUBLE_NFC_PRESERVED '
      +	mkdir c_${greek_nfc} &&
     -+	ls | od -t x1 | grep "63 *5f *e1 *bd *a7"
     ++	ls | test-tool hexdump | grep "63 5f e1 bd a7"
      +'
      +
      +# See if the NFD spelling appears on the disk.
      +#
      +test_lazy_prereq UNICODE_DOUBLE_NFD_PRESERVED '
      +	mkdir d_${greek_nfd2} &&
     -+	ls | od -t x1 | grep "64 *5f *cf *89 *cc *94 *cd *82"
     ++	ls | test-tool hexdump | grep "64 5f cf 89 cc 94 cd 82"
      +'
      +
      +# The following is for debugging. I found it useful when
 27:  4efb3a43838 = 28:  f9a7869d202 t7527: test Unicode NFC/NFD handling on MacOS
 28:  df1b4f3a80f ! 29:  9fc7c970929 fsmonitor--daemon: allow --super-prefix argument
     @@ git.c: static struct cmd_struct commands[] = {
       	{ "grep", cmd_grep, RUN_SETUP_GENTLY },
      
       ## t/t7527-builtin-fsmonitor.sh ##
     -@@ t/t7527-builtin-fsmonitor.sh: test_expect_success "Submodule always visited" '
     +@@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'submodule always visited' '
       	my_match_and_clean
       '
       
     @@ t/t7527-builtin-fsmonitor.sh: test_expect_success "Submodule always visited" '
      +	tr '\047' Q <$1 | grep -e "$msg"
      +}
      +
     -+test_expect_success "Stray Submodule super-prefix warning" '
     ++test_expect_success "stray submodule super-prefix warning" '
      +	test_when_finished "rm -rf super; \
      +			    rm -rf sub;   \
      +			    rm super-sub.trace" &&
  -:  ----------- > 30:  ca833ecc7a1 t7527: improve implicit shutdown testing in fsmonitor--daemon

-- 
gitgitgadget

  parent reply	other threads:[~2022-05-23 20:13 UTC|newest]

Thread overview: 345+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-15 15:59 [PATCH 00/23] Builtin FSMonitor Part 3 Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 01/23] fsm-listen-win32: handle shortnames Jeff Hostetler via GitGitGadget
2022-02-24 14:48   ` Derrick Stolee
2022-02-15 15:59 ` [PATCH 02/23] t7527: test FS event reporing on macOS WRT case and Unicode Jeff Hostetler via GitGitGadget
2022-02-24 14:52   ` Derrick Stolee
2022-02-24 17:33     ` Torsten =?unknown-8bit?Q?B=C3=B6gershausen?=
2022-03-04 23:40       ` Jeff Hostetler
2022-03-05  8:59         ` Torsten =?unknown-8bit?Q?B=C3=B6gershausen?=
2022-03-07 20:45           ` Jeff Hostetler
2022-03-04 23:47       ` Jeff Hostetler
2022-02-15 15:59 ` [PATCH 03/23] t7527: test builtin FSMonitor watching repos with unicode paths Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 04/23] t/helper/fsmonitor-client: create stress test Jeff Hostetler via GitGitGadget
2022-02-24 14:58   ` Derrick Stolee
2022-03-01 19:37     ` Jeff Hostetler
2022-02-15 15:59 ` [PATCH 05/23] fsmonitor-settings: bare repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-02-25 20:42   ` Ævar Arnfjörð Bjarmason
2022-03-02 21:09     ` Jeff Hostetler
2022-02-15 15:59 ` [PATCH 06/23] fsmonitor-settings: stub in platform-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-02-24 15:05   ` Derrick Stolee
2022-02-15 15:59 ` [PATCH 07/23] fsmonitor-settings: virtual repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-02-24 15:11   ` Derrick Stolee
2022-03-01 21:01     ` Jeff Hostetler
2022-02-15 15:59 ` [PATCH 08/23] fsmonitor-settings: stub in macOS-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 09/23] fsmonitor-settings: remote repos on macOS are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-02-24 15:26   ` Derrick Stolee
2022-03-01 21:30     ` Jeff Hostetler
2022-02-15 15:59 ` [PATCH 10/23] fsmonitor-settings: remote repos on Windows " Jeff Hostetler via GitGitGadget
2022-02-24 15:56   ` Derrick Stolee
2022-02-15 15:59 ` [PATCH 11/23] unpack-trees: initialize fsmonitor_has_run_once in o->result Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 12/23] fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 13/23] fsmonitor--daemon: print start message only if fsmonitor.announceStartup Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 14/23] fsmonitor--daemon: cd out of worktree root Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 15/23] fsmonitor--daemon: prepare for adding health thread Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 16/23] fsmonitor--daemon: rename listener thread related variables Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 17/23] fsmonitor--daemon: stub in health thread Jeff Hostetler via GitGitGadget
2022-02-24 16:04   ` Derrick Stolee
2022-02-24 16:15     ` Derrick Stolee
2022-03-03 16:40       ` Jeff Hostetler
2022-03-03 16:50       ` Jeff Hostetler
2022-03-03 16:16     ` Jeff Hostetler
2022-02-15 15:59 ` [PATCH 18/23] fsm-health-win32: add framework to monitor daemon health Jeff Hostetler via GitGitGadget
2022-02-24 16:05   ` Derrick Stolee
2022-02-15 15:59 ` [PATCH 19/23] fsm-health-win32: force shutdown daemon if worktree root moves Jeff Hostetler via GitGitGadget
2022-02-24 16:09   ` Derrick Stolee
2022-03-03 18:00     ` Jeff Hostetler
2022-02-15 15:59 ` [PATCH 20/23] fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed Jeff Hostetler via GitGitGadget
2022-02-24 16:10   ` Derrick Stolee
2022-02-15 15:59 ` [PATCH 21/23] fsmonitor: optimize processing of directory events Jeff Hostetler via GitGitGadget
2022-02-24 16:13   ` Derrick Stolee
2022-02-15 15:59 ` [PATCH 22/23] t7527: FSMonitor tests for directory moves Jeff Hostetler via GitGitGadget
2022-02-15 15:59 ` [PATCH 23/23] t/perf/p7527: add perf test for builtin FSMonitor Jeff Hostetler via GitGitGadget
2022-02-16  1:00 ` [PATCH 00/23] Builtin FSMonitor Part 3 Junio C Hamano
2022-02-16 14:04   ` Jeff Hostetler
2022-02-24 16:21 ` Derrick Stolee
2022-03-07 21:23   ` Jeff Hostetler
2022-03-09 15:34     ` Derrick Stolee
2022-03-08 22:15 ` [PATCH v2 00/27] " Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 01/27] fsm-listen-win32: handle shortnames Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 02/27] t7527: test FSMonitor on repos with Unicode root paths Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 03/27] t/helper/fsmonitor-client: create stress test Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 04/27] fsmonitor-settings: bare repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-03-11  1:31     ` Ævar Arnfjörð Bjarmason
2022-03-11 22:25       ` Jeff Hostetler
2022-03-08 22:15   ` [PATCH v2 05/27] fsmonitor-settings: stub in platform-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 06/27] fsmonitor-settings: VFS for Git virtual repos are incompatible Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 07/27] fsmonitor-settings: stub in macOS-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 08/27] fsmonitor-settings: remote repos on macOS are incompatible Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 09/27] fsmonitor-settings: remote repos on Windows " Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 10/27] unpack-trees: initialize fsmonitor_has_run_once in o->result Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 11/27] fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 12/27] fsmonitor--daemon: cd out of worktree root Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 13/27] fsmonitor--daemon: prepare for adding health thread Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 14/27] fsmonitor--daemon: rename listener thread related variables Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 15/27] fsmonitor--daemon: stub in health thread Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 16/27] fsm-health-win32: add polling framework to monitor daemon health Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 17/27] fsm-health-win32: force shutdown daemon if worktree root moves Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 18/27] fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 19/27] fsmonitor: optimize processing of directory events Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 20/27] t7527: FSMonitor tests for directory moves Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 21/27] t/perf/p7527: add perf test for builtin FSMonitor Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 22/27] fsmonitor: never set CE_FSMONITOR_VALID on submodules Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 23/27] t7527: test FSMonitor on case insensitive+preserving file system Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 24/27] fsmonitor: on macOS also emit NFC spelling for NFD pathname Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 25/27] t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd Jeff Hostetler via GitGitGadget
2022-03-09 18:40     ` Derrick Stolee
2022-03-09 18:42       ` Derrick Stolee
2022-03-10 14:28         ` Jeff Hostetler
2022-03-10 14:23       ` Jeff Hostetler
2022-03-08 22:15   ` [PATCH v2 26/27] t7527: test Unicode NFC/NFD handling on MacOS Jeff Hostetler via GitGitGadget
2022-03-08 22:15   ` [PATCH v2 27/27] fsmonitor-settings: NTFS and FAT32 on MacOS are incompatible Jeff Hostetler via GitGitGadget
2022-03-09 18:48   ` [PATCH v2 00/27] Builtin FSMonitor Part 3 Derrick Stolee
2022-03-10  5:31   ` Torsten =?unknown-8bit?Q?B=C3=B6gershausen?=
2022-03-13 10:42   ` Torsten Bögershausen
2022-03-21 22:06     ` Jeff Hostetler
2022-03-21 23:18       ` rsbecker
2022-03-22 14:10         ` Jeff Hostetler
2022-03-22 14:25           ` rsbecker
2022-03-22 15:01             ` Jeff Hostetler
2022-03-21 22:59     ` Jeff Hostetler
2022-03-22 18:22   ` [PATCH v3 " Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 01/27] fsm-listen-win32: handle shortnames Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 02/27] t7527: test FSMonitor on repos with Unicode root paths Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 03/27] t/helper/fsmonitor-client: create stress test Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 04/27] fsmonitor-settings: bare repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 05/27] fsmonitor-settings: stub in Win32-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 06/27] fsmonitor-settings: VFS for Git virtual repos are incompatible Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 07/27] fsmonitor-settings: stub in macOS-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 08/27] fsmonitor-settings: remote repos on macOS are incompatible Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 09/27] fsmonitor-settings: remote repos on Windows " Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 10/27] fsmonitor-settings: NTFS and FAT32 on MacOS " Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 11/27] unpack-trees: initialize fsmonitor_has_run_once in o->result Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 12/27] fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 13/27] fsmonitor--daemon: cd out of worktree root Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 14/27] fsmonitor--daemon: prepare for adding health thread Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 15/27] fsmonitor--daemon: rename listener thread related variables Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 16/27] fsmonitor--daemon: stub in health thread Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 17/27] fsm-health-win32: add polling framework to monitor daemon health Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 18/27] fsm-health-win32: force shutdown daemon if worktree root moves Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 19/27] fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 20/27] fsmonitor: optimize processing of directory events Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 21/27] t7527: FSMonitor tests for directory moves Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 22/27] t/perf/p7527: add perf test for builtin FSMonitor Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 23/27] fsmonitor: never set CE_FSMONITOR_VALID on submodules Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 24/27] t7527: test FSMonitor on case insensitive+preserving file system Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 25/27] fsmonitor: on macOS also emit NFC spelling for NFD pathname Jeff Hostetler via GitGitGadget
2022-03-22 18:22     ` [PATCH v3 26/27] t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd Jeff Hostetler via GitGitGadget
2022-03-22 18:23     ` [PATCH v3 27/27] t7527: test Unicode NFC/NFD handling on MacOS Jeff Hostetler via GitGitGadget
2022-03-24 16:50     ` [PATCH v4 00/27] Builtin FSMonitor Part 3 Jeff Hostetler via GitGitGadget
2022-03-24 16:50       ` [PATCH v4 01/27] fsm-listen-win32: handle shortnames Jeff Hostetler via GitGitGadget
2022-03-24 16:50       ` [PATCH v4 02/27] t7527: test FSMonitor on repos with Unicode root paths Jeff Hostetler via GitGitGadget
2022-03-24 16:50       ` [PATCH v4 03/27] t/helper/fsmonitor-client: create stress test Jeff Hostetler via GitGitGadget
2022-03-24 16:50       ` [PATCH v4 04/27] fsmonitor-settings: bare repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-04-19  9:44         ` Ævar Arnfjörð Bjarmason
2022-04-22 14:47           ` Jeff Hostetler
2022-03-24 16:50       ` [PATCH v4 05/27] fsmonitor-settings: stub in Win32-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-03-24 16:50       ` [PATCH v4 06/27] fsmonitor-settings: VFS for Git virtual repos are incompatible Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 07/27] fsmonitor-settings: stub in macOS-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 08/27] fsmonitor-settings: remote repos on macOS are incompatible Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 09/27] fsmonitor-settings: remote repos on Windows " Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 10/27] fsmonitor-settings: NTFS and FAT32 on MacOS " Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 11/27] unpack-trees: initialize fsmonitor_has_run_once in o->result Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 12/27] fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 13/27] fsmonitor--daemon: cd out of worktree root Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 14/27] fsmonitor--daemon: prepare for adding health thread Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 15/27] fsmonitor--daemon: rename listener thread related variables Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 16/27] fsmonitor--daemon: stub in health thread Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 17/27] fsm-health-win32: add polling framework to monitor daemon health Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 18/27] fsm-health-win32: force shutdown daemon if worktree root moves Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 19/27] fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 20/27] fsmonitor: optimize processing of directory events Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 21/27] t7527: FSMonitor tests for directory moves Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 22/27] t/perf/p7527: add perf test for builtin FSMonitor Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 23/27] fsmonitor: never set CE_FSMONITOR_VALID on submodules Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 24/27] t7527: test FSMonitor on case insensitive+preserving file system Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 25/27] fsmonitor: on macOS also emit NFC spelling for NFD pathname Jeff Hostetler via GitGitGadget
2022-03-24 16:51       ` [PATCH v4 26/27] t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd Jeff Hostetler via GitGitGadget
2022-03-25  8:59         ` Bagas Sanjaya
2022-03-25 14:21           ` Derrick Stolee
2022-03-25 14:38           ` Jeff Hostetler
2022-03-24 16:51       ` [PATCH v4 27/27] t7527: test Unicode NFC/NFD handling on MacOS Jeff Hostetler via GitGitGadget
2022-03-24 21:50       ` [PATCH v4 00/27] Builtin FSMonitor Part 3 Junio C Hamano
2022-04-20 20:42       ` [PATCH v5 00/28] " Jeff Hostetler via GitGitGadget
2022-04-20 20:42         ` [PATCH v5 01/28] fsm-listen-win32: handle shortnames Jeff Hostetler via GitGitGadget
2022-04-20 20:42         ` [PATCH v5 02/28] t7527: test FSMonitor on repos with Unicode root paths Jeff Hostetler via GitGitGadget
2022-04-20 20:42         ` [PATCH v5 03/28] t/helper/fsmonitor-client: create stress test Jeff Hostetler via GitGitGadget
2022-04-20 20:42         ` [PATCH v5 04/28] fsmonitor-settings: bare repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-04-20 20:42         ` [PATCH v5 05/28] fsmonitor-settings: stub in Win32-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-04-20 20:42         ` [PATCH v5 06/28] fsmonitor-settings: VFS for Git virtual repos are incompatible Jeff Hostetler via GitGitGadget
2022-04-20 20:42         ` [PATCH v5 07/28] fsmonitor-settings: stub in macOS-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-04-20 20:42         ` [PATCH v5 08/28] fsmonitor-settings: remote repos on macOS are incompatible Jeff Hostetler via GitGitGadget
2022-04-20 20:42         ` [PATCH v5 09/28] fsmonitor-settings: remote repos on Windows " Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 10/28] fsmonitor-settings: NTFS and FAT32 on MacOS " Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 11/28] unpack-trees: initialize fsmonitor_has_run_once in o->result Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 12/28] fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 13/28] fsmonitor--daemon: cd out of worktree root Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 14/28] fsmonitor--daemon: prepare for adding health thread Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 15/28] fsmonitor--daemon: rename listener thread related variables Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 16/28] fsmonitor--daemon: stub in health thread Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 17/28] fsm-health-win32: add polling framework to monitor daemon health Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 18/28] fsm-health-win32: force shutdown daemon if worktree root moves Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 19/28] fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 20/28] fsmonitor: optimize processing of directory events Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 21/28] t7527: FSMonitor tests for directory moves Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 22/28] t/perf/p7527: add perf test for builtin FSMonitor Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 23/28] fsmonitor: never set CE_FSMONITOR_VALID on submodules Jeff Hostetler via GitGitGadget
2022-04-20 23:41           ` Junio C Hamano
2022-04-22 20:47             ` Jeff Hostetler
2022-04-20 20:43         ` [PATCH v5 24/28] t7527: test FSMonitor on case insensitive+preserving file system Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 25/28] fsmonitor: on macOS also emit NFC spelling for NFD pathname Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 26/28] t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 27/28] t7527: test Unicode NFC/NFD handling on MacOS Jeff Hostetler via GitGitGadget
2022-04-20 20:43         ` [PATCH v5 28/28] fsmonitor--daemon: allow --super-prefix argument Jeff Hostetler via GitGitGadget
2022-04-21  0:02         ` [PATCH v5 00/28] Builtin FSMonitor Part 3 Junio C Hamano
2022-04-22 21:29         ` [PATCH v6 " Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 01/28] fsm-listen-win32: handle shortnames Jeff Hostetler via GitGitGadget
2022-05-12 14:20             ` Johannes Schindelin
2022-05-17 19:26               ` Jeff Hostetler
2022-04-22 21:29           ` [PATCH v6 02/28] t7527: test FSMonitor on repos with Unicode root paths Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 03/28] t/helper/fsmonitor-client: create stress test Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 04/28] fsmonitor-settings: bare repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-05-12 14:21             ` Johannes Schindelin
2022-04-22 21:29           ` [PATCH v6 05/28] fsmonitor-settings: stub in Win32-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 06/28] fsmonitor-settings: VFS for Git virtual repos are incompatible Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 07/28] fsmonitor-settings: stub in macOS-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 08/28] fsmonitor-settings: remote repos on macOS are incompatible Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 09/28] fsmonitor-settings: remote repos on Windows " Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 10/28] fsmonitor-settings: NTFS and FAT32 on MacOS " Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 11/28] unpack-trees: initialize fsmonitor_has_run_once in o->result Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 12/28] fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 13/28] fsmonitor--daemon: cd out of worktree root Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 14/28] fsmonitor--daemon: prepare for adding health thread Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 15/28] fsmonitor--daemon: rename listener thread related variables Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 16/28] fsmonitor--daemon: stub in health thread Jeff Hostetler via GitGitGadget
2022-05-12 15:05             ` Johannes Schindelin
2022-05-17 19:48               ` Jeff Hostetler
2022-05-24 11:52                 ` Johannes Schindelin
2022-04-22 21:29           ` [PATCH v6 17/28] fsm-health-win32: add polling framework to monitor daemon health Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 18/28] fsm-health-win32: force shutdown daemon if worktree root moves Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 19/28] fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 20/28] fsmonitor: optimize processing of directory events Jeff Hostetler via GitGitGadget
2022-05-12 15:08             ` Johannes Schindelin
2022-05-17 20:17               ` Jeff Hostetler
2022-05-24 11:53                 ` Johannes Schindelin
2022-04-22 21:29           ` [PATCH v6 21/28] t7527: FSMonitor tests for directory moves Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 22/28] t/perf/p7527: add perf test for builtin FSMonitor Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 23/28] fsmonitor: never set CE_FSMONITOR_VALID on submodules Jeff Hostetler via GitGitGadget
2022-05-12 15:11             ` Johannes Schindelin
2022-04-22 21:29           ` [PATCH v6 24/28] t7527: test FSMonitor on case insensitive+preserving file system Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 25/28] fsmonitor: on macOS also emit NFC spelling for NFD pathname Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 26/28] t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd Jeff Hostetler via GitGitGadget
2022-05-12 15:26             ` Johannes Schindelin
2022-05-17 21:14               ` Jeff Hostetler
2022-04-22 21:29           ` [PATCH v6 27/28] t7527: test Unicode NFC/NFD handling on MacOS Jeff Hostetler via GitGitGadget
2022-04-22 21:29           ` [PATCH v6 28/28] fsmonitor--daemon: allow --super-prefix argument Jeff Hostetler via GitGitGadget
2022-05-12 15:35           ` [PATCH v6 00/28] Builtin FSMonitor Part 3 Johannes Schindelin
2022-05-23 20:12           ` Jeff Hostetler via GitGitGadget [this message]
2022-05-23 20:12             ` [PATCH v7 01/30] fsm-listen-win32: handle shortnames Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 02/30] t7527: test FSMonitor on repos with Unicode root paths Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 03/30] t/helper/fsmonitor-client: create stress test Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 04/30] fsmonitor-settings: bare repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 05/30] fsmonitor-settings: stub in Win32-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 06/30] fsmonitor-settings: VFS for Git virtual repos are incompatible Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 07/30] fsmonitor-settings: stub in macOS-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 08/30] fsmonitor-settings: remote repos on macOS are incompatible Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 09/30] fsmonitor-settings: remote repos on Windows " Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 10/30] fsmonitor-settings: NTFS and FAT32 on MacOS " Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 11/30] unpack-trees: initialize fsmonitor_has_run_once in o->result Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 12/30] fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 13/30] fsmonitor--daemon: cd out of worktree root Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 14/30] fsmonitor--daemon: prepare for adding health thread Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 15/30] fsmonitor--daemon: rename listener thread related variables Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 16/30] fsmonitor--daemon: stub in health thread Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 17/30] fsm-health-win32: add polling framework to monitor daemon health Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 18/30] fsm-health-win32: force shutdown daemon if worktree root moves Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 19/30] fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 20/30] fsmonitor: optimize processing of directory events Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 21/30] t7527: FSMonitor tests for directory moves Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 22/30] t/perf/p7527: add perf test for builtin FSMonitor Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 23/30] fsmonitor: never set CE_FSMONITOR_VALID on submodules Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 24/30] t7527: test FSMonitor on case insensitive+preserving file system Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 25/30] fsmonitor: on macOS also emit NFC spelling for NFD pathname Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 26/30] t/helper/hexdump: add helper to print hexdump of stdin Jeff Hostetler via GitGitGadget
2022-05-23 21:19               ` Junio C Hamano
2022-05-24 12:16                 ` Johannes Schindelin
2022-05-24 19:52                   ` Junio C Hamano
2022-05-25 10:21                     ` Johannes Schindelin
2022-05-24 14:44                 ` Jeff Hostetler
2022-05-24 19:54                   ` Junio C Hamano
2022-05-25 13:45                     ` Jeff Hostetler
2022-05-23 20:12             ` [PATCH v7 27/30] t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd Jeff Hostetler via GitGitGadget
2022-05-23 21:33               ` Junio C Hamano
2022-05-24 12:14                 ` Johannes Schindelin
2022-05-24 15:06                 ` Jeff Hostetler
2022-05-23 20:12             ` [PATCH v7 28/30] t7527: test Unicode NFC/NFD handling on MacOS Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 29/30] fsmonitor--daemon: allow --super-prefix argument Jeff Hostetler via GitGitGadget
2022-05-23 20:12             ` [PATCH v7 30/30] t7527: improve implicit shutdown testing in fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-05-24 12:00             ` [PATCH v7 00/30] Builtin FSMonitor Part 3 Johannes Schindelin
2022-05-24 15:07               ` Jeff Hostetler
2022-05-25 10:23                 ` Johannes Schindelin
2022-05-25 15:00             ` [PATCH v8 " Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 01/30] fsm-listen-win32: handle shortnames Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 02/30] t7527: test FSMonitor on repos with Unicode root paths Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 03/30] t/helper/fsmonitor-client: create stress test Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 04/30] fsmonitor-settings: bare repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 05/30] fsmonitor-settings: stub in Win32-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 06/30] fsmonitor-settings: VFS for Git virtual repos are incompatible Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 07/30] fsmonitor-settings: stub in macOS-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 08/30] fsmonitor-settings: remote repos on macOS are incompatible Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 09/30] fsmonitor-settings: remote repos on Windows " Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 10/30] fsmonitor-settings: NTFS and FAT32 on MacOS " Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 11/30] unpack-trees: initialize fsmonitor_has_run_once in o->result Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 12/30] fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 13/30] fsmonitor--daemon: cd out of worktree root Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 14/30] fsmonitor--daemon: prepare for adding health thread Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 15/30] fsmonitor--daemon: rename listener thread related variables Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 16/30] fsmonitor--daemon: stub in health thread Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 17/30] fsm-health-win32: add polling framework to monitor daemon health Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 18/30] fsm-health-win32: force shutdown daemon if worktree root moves Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 19/30] fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 20/30] fsmonitor: optimize processing of directory events Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 21/30] t7527: FSMonitor tests for directory moves Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 22/30] t/perf/p7527: add perf test for builtin FSMonitor Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 23/30] fsmonitor: never set CE_FSMONITOR_VALID on submodules Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 24/30] t7527: test FSMonitor on case insensitive+preserving file system Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 25/30] fsmonitor: on macOS also emit NFC spelling for NFD pathname Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 26/30] t/helper/hexdump: add helper to print hexdump of stdin Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 27/30] t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 28/30] t7527: test Unicode NFC/NFD handling on MacOS Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 29/30] fsmonitor--daemon: allow --super-prefix argument Jeff Hostetler via GitGitGadget
2022-05-25 15:00               ` [PATCH v8 30/30] t7527: improve implicit shutdown testing in fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-05-25 16:35               ` [PATCH v8 00/30] Builtin FSMonitor Part 3 Junio C Hamano
2022-05-25 17:29                 ` Jeff Hostetler
2022-05-26 21:46               ` [PATCH v9 " Jeff Hostetler via GitGitGadget
2022-05-26 21:46                 ` [PATCH v9 01/30] fsm-listen-win32: handle shortnames Jeff Hostetler via GitGitGadget
2022-05-26 21:46                 ` [PATCH v9 02/30] t7527: test FSMonitor on repos with Unicode root paths Jeff Hostetler via GitGitGadget
2022-05-26 21:46                 ` [PATCH v9 03/30] t/helper/fsmonitor-client: create stress test Jeff Hostetler via GitGitGadget
2022-05-26 21:46                 ` [PATCH v9 04/30] fsmonitor-settings: bare repos are incompatible with FSMonitor Jeff Hostetler via GitGitGadget
2022-05-26 21:46                 ` [PATCH v9 05/30] fsmonitor-settings: stub in Win32-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 06/30] fsmonitor-settings: VFS for Git virtual repos are incompatible Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 07/30] fsmonitor-settings: stub in macOS-specific incompatibility checking Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 08/30] fsmonitor-settings: remote repos on macOS are incompatible Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 09/30] fsmonitor-settings: remote repos on Windows " Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 10/30] fsmonitor-settings: NTFS and FAT32 on MacOS " Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 11/30] unpack-trees: initialize fsmonitor_has_run_once in o->result Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 12/30] fsm-listen-darwin: ignore FSEvents caused by xattr changes on macOS Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 13/30] fsmonitor--daemon: cd out of worktree root Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 14/30] fsmonitor--daemon: prepare for adding health thread Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 15/30] fsmonitor--daemon: rename listener thread related variables Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 16/30] fsmonitor--daemon: stub in health thread Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 17/30] fsm-health-win32: add polling framework to monitor daemon health Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 18/30] fsm-health-win32: force shutdown daemon if worktree root moves Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 19/30] fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 20/30] fsmonitor: optimize processing of directory events Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 21/30] t7527: FSMonitor tests for directory moves Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 22/30] t/perf/p7527: add perf test for builtin FSMonitor Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 23/30] fsmonitor: never set CE_FSMONITOR_VALID on submodules Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 24/30] t7527: test FSMonitor on case insensitive+preserving file system Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 25/30] fsmonitor: on macOS also emit NFC spelling for NFD pathname Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 26/30] t/helper/hexdump: add helper to print hexdump of stdin Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 27/30] t/lib-unicode-nfc-nfd: helper prereqs for testing unicode nfc/nfd Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 28/30] t7527: test Unicode NFC/NFD handling on MacOS Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 29/30] fsmonitor--daemon: allow --super-prefix argument Jeff Hostetler via GitGitGadget
2022-05-26 21:47                 ` [PATCH v9 30/30] t7527: improve implicit shutdown testing in fsmonitor--daemon Jeff Hostetler via GitGitGadget
2022-06-02  9:56                 ` [PATCH v9 00/30] Builtin FSMonitor Part 3 Johannes Schindelin
2022-03-28 14:37     ` [PATCH v3 00/27] " Torsten =?unknown-8bit?Q?B=C3=B6gershausen?=

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

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

  git send-email \
    --in-reply-to=pull.1143.v7.git.1653336765.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=avarab@gmail.com \
    --cc=bagasdotme@gmail.com \
    --cc=derrickstolee@github.com \
    --cc=git@jeffhostetler.com \
    --cc=git@vger.kernel.org \
    --cc=jeffhost@microsoft.com \
    --cc=rsbecker@nexbridge.com \
    --cc=tboegi@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.