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

Re: [PATCH v3 06/34] fsmonitor: config settings are repository-specific

From
JHJeff Hostetler <git@jeffhostetler.com>
Date
Jul 19, 2021, 20:36 UTC
Message-ID
<40ab8cbc-a0fd-92a8-dd97-883c8752127d@jeffhostetler.com>
In-Reply-To
<87im1uc57c.fsf@evledraar.gmail.com>
On 7/1/21 12:46 PM, Ævar Arnfjörð Bjarmason wrote:
Show 16 quoted lines
> 
> On Thu, Jul 01 2021, Jeff Hostetler via GitGitGadget wrote:
> 
> In a reference to a discussion[1] about an earlier version of this patch
> you said:
> 
>      I'm going to ignore all of the thread responses to this patch
>      dealing with how we acquire config settings and macros and etc.
>      Those issues are completely independent of FSMonitor (which is
>      already way too big).
> 
> Since then the changes to repo-settings.c have become a lot larger, so
> let's take a look...
> 
> 1. https://lore.kernel.org/git/87mttkyrqq.fsf@evledraar.gmail.com/
> 2. https://lore.kernel.org/git/4552971c-0a23-c19a-6a23-cb5737e43b2a@jeffhostetler.com/

Yes, there was a large conversation about re-doing how config values are acquired or whatever and it was nested inside of the context of a completely unrelated topic. It still is.

I would like to focus on FSMonitor using the existing config API. I'm only looking up ~2 config values. And that code is fairly minor considering everything else in this patch series.

Yes, there's a bizarre initialization with memset(-1), but it can wait.

Later (in a clean context) we can address and focus on the config API and/or structure initialization that you're talking about here.

FWIW, in V4 I'll refactor the block of code that I added into the body of prepare_repo_settings() to address your later concerns. This version will hopefully be more readable.

Show 34 quoted lines
> 
> 
>> diff --git a/repo-settings.c b/repo-settings.c
>> index 0cfe8b787db..faf197ff60a 100644
>> --- a/repo-settings.c
>> +++ b/repo-settings.c
>> @@ -5,10 +5,42 @@
>>   
>>   #define UPDATE_DEFAULT_BOOL(s,v) do { if (s == -1) { s = v; } } while(0)
>>   
>> +/*
>> + * Return 1 if the repo/workdir is incompatible with FSMonitor.
>> + */
>> +static int is_repo_incompatible_with_fsmonitor(struct repository *r)
>> +{
>> +	const char *const_strval;
>> +
>> +	/*
>> +	 * Bare repositories don't have a working directory and
>> +	 * therefore, nothing to watch.
>> +	 */
>> +	if (!r->worktree)
>> +		return 1;
> 
> Looking ahead in this series you end up using
> FSMONITOR_MODE_INCOMPATIBLE in two places in the codebase. In
> builtin/update-index.c to throw a "repository is incompatible with
> fsmonitor" error.
> 
> Can't that case just be replaced with setup_work_tree()? Other sub-modes
> of update-index already die implicitly on that, e.g.:
> 
> 	$ git update-index test
> 	fatal: this operation must be run in a work tree

I will refactor that static function in V4, but I want it to return an indication of whether the repo is compatible only and let the command print the error/die as is appropriate for the daemon and/or update-index. The daemon should not start on an incompatible repo. Likewise, update-index should not enable the extension in the index.

We share some of that code with the client side code, like status, which wants to talk to the hook or daemon if supported/present/allowed. If the repo is incompatible, then status should just behave in the classic manner. So I don't want the detection code to print those error messages or die.

Show 12 quoted lines
> 
> The other case is:
> 	
> 	+       prepare_repo_settings(the_repository);
> 	+       if (!the_repository->worktree)
> 	+               return error(_("fsmonitor-daemon does not support bare repos '%s'"),
> 	+                            xgetcwd());
> 	+       if (the_repository->settings.fsmonitor_mode == FSMONITOR_MODE_INCOMPATIBLE)
> 	+               return error(_("fsmonitor-daemon is incompatible with this repo '%s'"),
> 	+                            the_repository->worktree);
> 
> I.e. we just checked the_repository->worktree, but it's not that, but....

yes, I currently have 2 types of repos that I want to disable both the hook and daemon version of FSMonitor. I'll update the error messages to specify the reason why we are incompatible.

Show 18 quoted lines
> 
>> +
>> +	/*
>> +	 * GVFS (aka VFS for Git) is incompatible with FSMonitor.
>> +	 *
>> +	 * Granted, core Git does not know anything about GVFS and
>> +	 * we shouldn't make assumptions about a downstream feature,
>> +	 * but users can install both versions.  And this can lead
>> +	 * to incorrect results from core Git commands.  So, without
>> +	 * bringing in any of the GVFS code, do a simple config test
>> +	 * for a published config setting.  (We do not look at the
>> +	 * various *_TEST_* environment variables.)
>> +	 */
>> +	if (!repo_config_get_value(r, "core.virtualfilesystem", &const_strval))
>> +		return 1;
> 
> I'm skeptical of us hardcoding a third-party software config
> variable. Can't GitVFS handle this somehow on its end?

Adding the test for a GVFS-specific config setting is questionable. And perhaps we should move it to our downstream fork.

The value in putting it here for now (at least) is that it makes clear the structure for supporting other types of incompatible repos.

For example, perhaps we want to disallow repos that are on remote file systems (since we might not be able to get FS events). It would be nice to be able to prevent the daemon from starting and/or from status from trying to connect to a daemon that will be a disappointment. The code I have here serves as a model for adding such additional restrictions. And keeps us from trying to prematurely collapse the code into a simple expression.

Show 7 quoted lines
> 
> But just in terms of implementation it seems the end result of that is
> to emit a very confusing error to the user. Sinc we already checked for
> bare repos we run into this and instead of sayingwhen we should really
> say "hey, maybe disable your core.virtualFileSystem setting", we say
> "your repo is incompatible".
> 
I'll update the error messages to make that clear.
Show 26 quoted lines
>> +
>> +	return 0;
>> +}
>> +
>>   void prepare_repo_settings(struct repository *r)
>>   {
>>   	int value;
>>   	char *strval;
>> +	const char *const_strval;
> 
> Can be declared in the "else" below.
> 
>>   
>>   	if (r->settings.initialized)
>>   		return;
>> @@ -26,6 +58,22 @@ void prepare_repo_settings(struct repository *r)
>>   	UPDATE_DEFAULT_BOOL(r->settings.commit_graph_read_changed_paths, 1);
>>   	UPDATE_DEFAULT_BOOL(r->settings.gc_write_commit_graph, 1);
>>   
>> +	r->settings.fsmonitor_hook_path = NULL;
>> +	r->settings.fsmonitor_mode = FSMONITOR_MODE_DISABLED;
> 
> With the memset earlier (b.t.w. I've got a patch to fix all this bizarre
> behavior in repo-settings.c, but have been waiting on this series we
> implicitly set it to FSMONITOR_MODE_UNSET (-1) with the memset, but then
> never use that ever.

I'm working around the bogus -1 value that the structure has been initialize with and that I'm inheriting. I'll completely set my `fsmonitor_mode` variable so that I don't care what it is initialized to.

I created the _UNSET value as a reminder that there is this memset(-1) there and that must be attended to.

In my V4 I'll add comments to that effect.
Show 20 quoted lines
> 
> Your code in update-index.c then for a check against
> "FSMONITOR_MODE_DISABLED" says "core.useBuiltinFSMonitor is unset;".
> 
>> +	if (is_repo_incompatible_with_fsmonitor(r))
>> +		r->settings.fsmonitor_mode = FSMONITOR_MODE_INCOMPATIBLE;
> 
> Style: should have {} braces on all arms.
> 
>> +	else if (!repo_config_get_bool(r, "core.usebuiltinfsmonitor", &value)
>> +		   && value)
>> +		r->settings.fsmonitor_mode = FSMONITOR_MODE_IPC;
> 
> Here you're conflating false with whether the variable is set at all. I
> guess that works out here since if it's false we want to fall through
> to...
> 
>> +	else {
> 
> ...ignoring it and looing at core.fsmonitor instead.

yes, if core.useBuiltinFSMonitor is true, we do not need to look at the hook pathname.

Show 7 quoted lines
> 
>> +		if (repo_config_get_pathname(r, "core.fsmonitor", &const_strval))
>> +			const_strval = getenv("GIT_TEST_FSMONITOR");
> 
> If it's not set we pay attention to GIT_TEST_FSMONITOR, so the behavior
> from the old git_config_get_fsmonitor(). So even if the env variable is
> set we want to take the config variable over it, correct?

GIT_TEST_FSMONITOR sets the hook path for testing and we're not using the hook API at all. So it is kind of ill-defined what that test env var should do if you have IPC turned on, so I'm ignoring it.

Show 10 quoted lines
> 
>> +		if (const_strval && *const_strval) {
>> +			r->settings.fsmonitor_hook_path = strdup(const_strval);
> 
> We had a strbuf_detach()'d string in the case of
> repo_config_get_pathname(), but here we strdup() it again in case we
> were in the getenv() codepath. This code probably leaks memory now
> anyway, but perhaps it's better to split up the two so we make it easier
> to deal with who owns/frees what in the future.
> 

repo_config_get_pathname() returns a const char** which implies that it is not a detached buffer. it is a deep trek thru the config code, but it eventually gets to git_configset_get_*() which is documented as returning a pointer into a configset cache and that the caller should not free it. so dup'ing it is appropriate.

Similarly, getenv() is also returning a pointer to a buffer that the caller does not own. so dup'ing it here is also appropriate.

Thanks, Jeff

Previous: Ævar Arnfjörð BjarmasonNext: Jeff Hostetler via GitGitGadget
Message 142 of 237 in “[RFC] Builtin FSMonitor Feature”
  1. 00/23 [RFC] Builtin FSMonitor FeatureJeff Hostetler via GitGitGadget, Apr 1, 2021
  2. 17/23 fsmonitor--daemon: periodically truncate list of modified filesJeff Hostetler via GitGitGadget, Apr 1, 2021
  3. Derrick StoleeApr 27, 2021
  4. 14/23 fsmonitor-fs-listen-macos: add macos header files for FSEventJeff Hostetler via GitGitGadget, Apr 1, 2021
  5. Derrick StoleeApr 27, 2021
  6. 06/23 fsmonitor--daemon: implement client command optionsJeff Hostetler via GitGitGadget, Apr 1, 2021
  7. Derrick StoleeApr 26, 2021
  8. Jeff HostetlerApr 30, 2021
  9. 20/23 fsmonitor: force update index when fsmonitor token advancesJeff Hostetler via GitGitGadget, Apr 1, 2021
  10. Derrick StoleeApr 27, 2021
  11. 19/23 fsmonitor--daemon: use a cookie file to sync with file systemJeff Hostetler via GitGitGadget, Apr 1, 2021
  12. Derrick StoleeApr 27, 2021
  13. Jeff HostetlerMay 3, 2021
  14. 02/23 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Apr 1, 2021
  15. Derrick StoleeApr 26, 2021
  16. Eric SunshineApr 26, 2021
  17. Derrick StoleeApr 26, 2021
  18. Jeff HostetlerApr 28, 2021
  19. 04/23 fsmonitor: introduce `core.useBuiltinFSMonitor` to call the daemon via IPCJohannes Schindelin via GitGitGadget, Apr 1, 2021
  20. Derrick StoleeApr 26, 2021
  21. Ævar Arnfjörð BjarmasonApr 27, 2021
  22. Derrick StoleeApr 27, 2021
  23. Ævar Arnfjörð BjarmasonApr 28, 2021
  24. repo-settings.c: simplify the setupÆvar Arnfjörð Bjarmason, Apr 28, 2021
  25. Nesting topics within other threads (was: [PATCH] repo-settings.c: simplify the setup)Derrick Stolee, Apr 28, 2021
  26. Ævar Arnfjörð BjarmasonApr 28, 2021
  27. Johannes SchindelinMay 5, 2021
  28. Junio C HamanoApr 29, 2021
  29. Ævar Arnfjörð BjarmasonApr 29, 2021
  30. Jeff KingApr 29, 2021
  31. Junio C HamanoApr 30, 2021
  32. Jeff HostetlerApr 30, 2021
  33. 15/23 fsmonitor-fs-listen-macos: implement FSEvent listener on MacOSJeff Hostetler via GitGitGadget, Apr 1, 2021
  34. Derrick StoleeApr 27, 2021
  35. Jeff HostetlerApr 30, 2021
  36. 12/23 fsmonitor--daemon: create token-based changed path cacheJeff Hostetler via GitGitGadget, Apr 1, 2021
  37. Derrick StoleeApr 26, 2021
  38. Jeff HostetlerApr 30, 2021
  39. 09/23 fsmonitor--daemon: implement daemon command optionsJeff Hostetler via GitGitGadget, Apr 1, 2021
  40. Derrick StoleeApr 26, 2021
  41. Derrick StoleeApr 26, 2021
  42. Jeff HostetlerApr 30, 2021
  43. Jeff HostetlerApr 30, 2021
  44. 11/23 fsmonitor--daemon: define token-idsJeff Hostetler via GitGitGadget, Apr 1, 2021
  45. Derrick StoleeApr 26, 2021
  46. Eric SunshineApr 26, 2021
  47. Derrick StoleeApr 26, 2021
  48. Jeff HostetlerApr 30, 2021
  49. 23/23 t7527: test status with untracked-cache and fsmonitor--daemonJeff Hostetler via GitGitGadget, Apr 1, 2021
  50. Derrick StoleeApr 27, 2021
  51. 21/23 t7527: create test for fsmonitor--daemonJeff Hostetler via GitGitGadget, Apr 1, 2021
  52. Derrick StoleeApr 27, 2021
  53. 16/23 fsmonitor--daemon: implement handle_client callbackJeff Hostetler via GitGitGadget, Apr 1, 2021
  54. Derrick StoleeApr 26, 2021
  55. Jeff HostetlerMay 3, 2021
  56. Derrick StoleeMay 13, 2021
  57. 05/23 fsmonitor--daemon: add a built-in fsmonitor daemonJeff Hostetler via GitGitGadget, Apr 1, 2021
  58. Derrick StoleeApr 26, 2021
  59. Derrick StoleeApr 26, 2021
  60. Jeff HostetlerApr 30, 2021
  61. 08/23 fsmonitor-fs-listen-macos: stub in backend for MacOSJeff Hostetler via GitGitGadget, Apr 1, 2021
  62. 18/23 fsmonitor--daemon:: introduce client delay for testingJeff Hostetler via GitGitGadget, Apr 1, 2021
  63. Derrick StoleeApr 27, 2021
  64. 13/23 fsmonitor-fs-listen-win32: implement FSMonitor backend on WindowsJeff Hostetler via GitGitGadget, Apr 1, 2021
  65. Derrick StoleeApr 27, 2021
  66. Eric SunshineApr 27, 2021
  67. Jeff HostetlerApr 30, 2021
  68. 22/23 p7519: add fsmonitor--daemonJeff Hostetler via GitGitGadget, Apr 1, 2021
  69. Derrick StoleeApr 27, 2021
  70. 10/23 fsmonitor--daemon: add pathname classificationJeff Hostetler via GitGitGadget, Apr 1, 2021
  71. Derrick StoleeApr 26, 2021
  72. Eric SunshineApr 26, 2021
  73. Derrick StoleeApr 26, 2021
  74. 03/23 config: FSMonitor is repository-specificJohannes Schindelin via GitGitGadget, Apr 1, 2021
  75. 07/23 fsmonitor-fs-listen-win32: stub in backend for WindowsJeff Hostetler via GitGitGadget, Apr 1, 2021
  76. Derrick StoleeApr 26, 2021
  77. 01/23 fsmonitor--daemon: man page and documentationJeff Hostetler via GitGitGadget, Apr 1, 2021
  78. Derrick StoleeApr 26, 2021
  79. Jeff HostetlerApr 28, 2021
  80. Junio C HamanoApr 16, 2021
  81. Johannes SchindelinApr 20, 2021
  82. Jeff HostetlerApr 20, 2021
  83. Derrick StoleeApr 21, 2021
  84. FS Monitor Windows Performance (was [PATCH 00/23] [RFC] Builtin FSMonitor Feature)Derrick Stolee, Apr 27, 2021
  85. FS Monitor macOS Performance (was [PATCH 00/23] [RFC] Builtin FSMonitor Feature)Derrick Stolee, Apr 27, 2021
  86. 00/28 Builtin FSMonitor FeatureJeff Hostetler via GitGitGadget, May 22, 2021
  87. 01/28 simple-ipc: preparations for supporting binary messages.Jeff Hostetler via GitGitGadget, May 22, 2021
  88. 05/28 help: include fsmonitor--daemon feature flag in version infoJeff Hostetler via GitGitGadget, May 22, 2021
  89. 03/28 fsmonitor--daemon: update fsmonitor documentationJeff Hostetler via GitGitGadget, May 22, 2021
  90. 02/28 fsmonitor--daemon: man pageJeff Hostetler via GitGitGadget, May 22, 2021
  91. 04/28 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, May 22, 2021
  92. Johannes SchindelinJun 2, 2021
  93. Johannes SchindelinJun 14, 2021
  94. 06/28 config: FSMonitor is repository-specificJohannes Schindelin via GitGitGadget, May 22, 2021
  95. 08/28 fsmonitor--daemon: add a built-in fsmonitor daemonJeff Hostetler via GitGitGadget, May 22, 2021
  96. 07/28 fsmonitor: introduce `core.useBuiltinFSMonitor` to call the daemon via IPCJohannes Schindelin via GitGitGadget, May 22, 2021
  97. Johannes SchindelinJun 14, 2021
  98. 09/28 fsmonitor--daemon: implement client command optionsJeff Hostetler via GitGitGadget, May 22, 2021
  99. 10/28 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor DaemonJeff Hostetler via GitGitGadget, May 22, 2021
  100. Junio C HamanoJun 11, 2021
  101. 12/28 fsmonitor-fs-listen-macos: stub in backend for MacOSJeff Hostetler via GitGitGadget, May 22, 2021
  102. 11/28 fsmonitor-fs-listen-win32: stub in backend for WindowsJeff Hostetler via GitGitGadget, May 22, 2021
  103. 13/28 fsmonitor--daemon: implement daemon command optionsJeff Hostetler via GitGitGadget, May 22, 2021
  104. 14/28 fsmonitor--daemon: add pathname classificationJeff Hostetler via GitGitGadget, May 22, 2021
  105. 17/28 fsmonitor-fs-listen-win32: implement FSMonitor backend on WindowsJeff Hostetler via GitGitGadget, May 22, 2021
  106. 16/28 fsmonitor--daemon: create token-based changed path cacheJeff Hostetler via GitGitGadget, May 22, 2021
  107. 15/28 fsmonitor--daemon: define token-idsJeff Hostetler via GitGitGadget, May 22, 2021
  108. 24/28 fsmonitor: force update index after large responsesJeff Hostetler via GitGitGadget, May 22, 2021
  109. 20/28 fsmonitor--daemon: implement handle_client callbackJeff Hostetler via GitGitGadget, May 22, 2021
  110. 21/28 fsmonitor--daemon: periodically truncate list of modified filesJeff Hostetler via GitGitGadget, May 22, 2021
  111. 19/28 fsmonitor-fs-listen-macos: implement FSEvent listener on MacOSJeff Hostetler via GitGitGadget, May 22, 2021
  112. 18/28 fsmonitor-fs-listen-macos: add macos header files for FSEventJeff Hostetler via GitGitGadget, May 22, 2021
  113. 23/28 fsmonitor: enhance existing commentsJeff Hostetler via GitGitGadget, May 22, 2021
  114. 22/28 fsmonitor--daemon: use a cookie file to sync with file systemJeff Hostetler via GitGitGadget, May 22, 2021
  115. Johannes SchindelinJun 14, 2021
  116. 25/28 t7527: create test for fsmonitor--daemonJeff Hostetler via GitGitGadget, May 22, 2021
  117. 26/28 p7519: add fsmonitor--daemonJeff Hostetler via GitGitGadget, May 22, 2021
  118. 27/28 t7527: test status with untracked-cache and fsmonitor--daemonJeff Hostetler via GitGitGadget, May 22, 2021
  119. 28/28 t/perf: avoid copying builtin fsmonitor files into test repoJeff Hostetler via GitGitGadget, May 22, 2021
  120. Junio C HamanoMay 27, 2021
  121. Johannes SchindelinJun 2, 2021
  122. Jeff HostetlerJun 22, 2021
  123. 00/34 Builtin FSMonitor FeatureJeff Hostetler via GitGitGadget, Jul 1, 2021
  124. 02/34 fsmonitor--daemon: man pageJeff Hostetler via GitGitGadget, Jul 1, 2021
  125. Ævar Arnfjörð BjarmasonJul 1, 2021
  126. Johannes SchindelinJul 5, 2021
  127. Jeff HostetlerJul 12, 2021
  128. Ævar Arnfjörð BjarmasonJul 13, 2021
  129. Johannes SchindelinJul 16, 2021
  130. Felipe ContrerasJul 16, 2021
  131. 01/34 simple-ipc: preparations for supporting binary messages.Jeff Hostetler via GitGitGadget, Jul 1, 2021
  132. 04/34 fsmonitor-ipc: create client routines for git-fsmonitor--daemonJeff Hostetler via GitGitGadget, Jul 1, 2021
  133. 05/34 help: include fsmonitor--daemon feature flag in version infoJeff Hostetler via GitGitGadget, Jul 1, 2021
  134. 03/34 fsmonitor--daemon: update fsmonitor documentationJeff Hostetler via GitGitGadget, Jul 1, 2021
  135. Ævar Arnfjörð BjarmasonJul 1, 2021
  136. 07/34 fsmonitor: use IPC to query the builtin FSMonitor daemonJeff Hostetler via GitGitGadget, Jul 1, 2021
  137. 08/34 fsmonitor--daemon: add a built-in fsmonitor daemonJeff Hostetler via GitGitGadget, Jul 1, 2021
  138. Ævar Arnfjörð BjarmasonJul 1, 2021
  139. Jeff HostetlerJul 19, 2021
  140. 06/34 fsmonitor: config settings are repository-specificJeff Hostetler via GitGitGadget, Jul 1, 2021
  141. Ævar Arnfjörð BjarmasonJul 1, 2021
  142. Jeff HostetlerJul 19, 2021
  143. 09/34 fsmonitor--daemon: implement 'stop' and 'status' commandsJeff Hostetler via GitGitGadget, Jul 1, 2021
  144. 11/34 fsmonitor-fs-listen-win32: stub in backend for WindowsJeff Hostetler via GitGitGadget, Jul 1, 2021
  145. Ævar Arnfjörð BjarmasonJul 1, 2021
  146. Johannes SchindelinJul 16, 2021
  147. Ævar Arnfjörð BjarmasonJul 16, 2021
  148. Junio C HamanoJul 17, 2021
  149. Junio C HamanoJul 17, 2021
  150. Ævar Arnfjörð BjarmasonJul 17, 2021
  151. Junio C HamanoJul 19, 2021
  152. Felipe ContrerasJul 16, 2021
  153. Jeff HostetlerJul 19, 2021
  154. Ævar Arnfjörð BjarmasonJul 20, 2021
  155. 13/34 fsmonitor--daemon: implement 'run' commandJeff Hostetler via GitGitGadget, Jul 1, 2021
  156. 10/34 t/helper/fsmonitor-client: create IPC client to talk to FSMonitor DaemonJeff Hostetler via GitGitGadget, Jul 1, 2021
  157. Ævar Arnfjörð BjarmasonJul 1, 2021
  158. 12/34 fsmonitor-fs-listen-macos: stub in backend for MacOSJeff Hostetler via GitGitGadget, Jul 1, 2021
  159. Ævar Arnfjörð BjarmasonJul 1, 2021
  160. Johannes SchindelinJul 16, 2021
  161. Ævar Arnfjörð BjarmasonJul 16, 2021
  162. Johannes SchindelinJul 26, 2021
  163. Junio C HamanoJul 26, 2021
  164. Jeff HostetlerJul 27, 2021
  165. Ævar Arnfjörð BjarmasonJul 27, 2021
  166. Junio C HamanoJul 27, 2021
  167. Felipe ContrerasJul 27, 2021
  168. 14/34 fsmonitor--daemon: implement 'start' commandJeff Hostetler via GitGitGadget, Jul 1, 2021
  169. Ævar Arnfjörð BjarmasonJul 1, 2021
  170. Johannes SchindelinJul 5, 2021
  171. Jeff HostetlerJul 13, 2021
  172. Ævar Arnfjörð BjarmasonJul 13, 2021
  173. Jeff HostetlerJul 13, 2021
  174. Ævar Arnfjörð BjarmasonJul 20, 2021
  175. 15/34 fsmonitor: do not try to operate on bare reposJeff Hostetler via GitGitGadget, Jul 1, 2021
  176. Ævar Arnfjörð BjarmasonJul 1, 2021
  177. 16/34 fsmonitor--daemon: add pathname classificationJeff Hostetler via GitGitGadget, Jul 1, 2021
  178. 18/34 fsmonitor--daemon: create token-based changed path cacheJeff Hostetler via GitGitGadget, Jul 1, 2021
  179. 17/34 fsmonitor--daemon: define token-idsJeff Hostetler via GitGitGadget, Jul 1, 2021
  180. Ævar Arnfjörð BjarmasonJul 1, 2021
  181. Jeff HostetlerJul 13, 2021
  182. Ævar Arnfjörð BjarmasonJul 13, 2021
  183. 20/34 fsmonitor-fs-listen-macos: add macos header files for FSEventJeff Hostetler via GitGitGadget, Jul 1, 2021
  184. 19/34 fsmonitor-fs-listen-win32: implement FSMonitor backend on WindowsJeff Hostetler via GitGitGadget, Jul 1, 2021
  185. Ævar Arnfjörð BjarmasonJul 1, 2021
  186. Jeff HostetlerJul 13, 2021
  187. Ævar Arnfjörð BjarmasonJul 13, 2021
  188. Johannes SchindelinJul 16, 2021
  189. Ævar Arnfjörð BjarmasonJul 16, 2021
  190. Eric WongJul 17, 2021
  191. Jeff HostetlerJul 19, 2021
  192. Felipe ContrerasJul 16, 2021
  193. Johannes SchindelinJul 6, 2021
  194. Jeff HostetlerJul 13, 2021
  195. 23/34 t/helper/test-touch: add helper to touch a series of filesJeff Hostetler via GitGitGadget, Jul 1, 2021
  196. Junio C HamanoJul 1, 2021
  197. Jeff HostetlerJul 13, 2021
  198. 24/34 t/perf/p7519: speed up test using "test-tool touch"Jeff Hostetler via GitGitGadget, Jul 1, 2021
  199. Ævar Arnfjörð BjarmasonJul 1, 2021
  200. Jeff HostetlerJul 13, 2021
  201. Elijah NewrenJul 13, 2021
  202. Junio C HamanoJul 13, 2021
  203. Elijah NewrenJul 13, 2021
  204. Jeff HostetlerJul 13, 2021
  205. Junio C HamanoJul 13, 2021
  206. Jeff HostetlerJul 13, 2021
  207. Ævar Arnfjörð BjarmasonJul 13, 2021
  208. Jeff HostetlerJul 13, 2021
  209. Ævar Arnfjörð BjarmasonJul 20, 2021
  210. Jeff HostetlerJul 13, 2021
  211. 22/34 fsmonitor--daemon: implement handle_client callbackJeff Hostetler via GitGitGadget, Jul 1, 2021
  212. 21/34 fsmonitor-fs-listen-macos: implement FSEvent listener on MacOSJeff Hostetler via GitGitGadget, Jul 1, 2021
  213. 25/34 t/perf: avoid copying builtin fsmonitor files into test repoJeff Hostetler via GitGitGadget, Jul 1, 2021
  214. Ævar Arnfjörð BjarmasonJul 1, 2021
  215. 29/34 fsmonitor--daemon: use a cookie file to sync with file systemJeff Hostetler via GitGitGadget, Jul 1, 2021
  216. Ævar Arnfjörð BjarmasonJul 1, 2021
  217. Jeff HostetlerJul 21, 2021
  218. 27/34 t7527: create test for fsmonitor--daemonJeff Hostetler via GitGitGadget, Jul 1, 2021
  219. Ævar Arnfjörð BjarmasonJul 1, 2021
  220. 26/34 t/perf/p7519: add fsmonitor--daemon test casesJeff Hostetler via GitGitGadget, Jul 1, 2021
  221. 28/34 fsmonitor--daemon: periodically truncate list of modified filesJeff Hostetler via GitGitGadget, Jul 1, 2021
  222. 30/34 fsmonitor: enhance existing commentsJeff Hostetler via GitGitGadget, Jul 1, 2021
  223. 32/34 t7527: test status with untracked-cache and fsmonitor--daemonJeff Hostetler via GitGitGadget, Jul 1, 2021
  224. 31/34 fsmonitor: force update index after large responsesJeff Hostetler via GitGitGadget, Jul 1, 2021
  225. 33/34 fsmonitor: handle shortname for .gitJeff Hostetler via GitGitGadget, Jul 1, 2021
  226. 34/34 t7527: test FS event reporing on MacOS WRT case and UnicodeJeff Hostetler via GitGitGadget, Jul 1, 2021
  227. Ævar Arnfjörð BjarmasonJul 1, 2021
  228. Ævar Arnfjörð BjarmasonJul 1, 2021
  229. Jeff HostetlerJul 1, 2021
  230. Ævar Arnfjörð BjarmasonJul 1, 2021
  231. Jeff HostetlerJul 2, 2021
  232. Ævar Arnfjörð BjarmasonJul 5, 2021
  233. Johannes SchindelinJul 5, 2021
  234. Ævar Arnfjörð BjarmasonJul 5, 2021
  235. Johannes SchindelinJul 6, 2021
  236. Felipe ContrerasJul 7, 2021
  237. Felipe ContrerasJul 7, 2021

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

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