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

Re: [PATCH] fsmonitor: option to allow fsmonitor to run against network-mounted repos

From
JHJeff Hostetler <git@jeffhostetler.com>
Date
Aug 19, 2022, 20:15 UTC
Message-ID
<04e07c9a-6a74-b731-75e5-7d6cd9d8931c@jeffhostetler.com>
In-Reply-To
<BL0PR05MB55718D2BE72492E74EF2A671D96C9@BL0PR05MB5571.namprd05.prod.outlook.com>
On 8/19/22 2:38 PM, Eric DeCosta wrote:
Show 16 quoted lines
> 
> 
>> -----Original Message-----
>> From: Jeff Hostetler <git@jeffhostetler.com>
>> Sent: Friday, August 19, 2022 12:50 PM
>> To: Eric DeCosta via GitGitGadget <gitgitgadget@gmail.com>;
>> git@vger.kernel.org
>> Cc: Eric DeCosta <edecosta@mathworks.com>
>> Subject: Re: [PATCH] fsmonitor: option to allow fsmonitor to run against
>> network-mounted repos
>>
>>
>>
>> On 8/18/22 4:48 PM, Eric DeCosta via GitGitGadget wrote:
>>> From: Eric DeCosta <edecosta@mathworks.com>
>>>
[...]
Show 6 quoted lines
> Yes, the point is to allow users to try it out.  Self-servingly, I have about
> 3K users who make heavy use of network-mounted sandboxes on the
> three major platforms; all connecting via NFS or SMB to Linux file
> servers.  Hardly exhaustive, but the file system change notification APIs
> (inotify, FSEvents, and ReadDirectoryCHangesW) all seem to work correctly.
> Thus my motivation to work on this aspect of git :-)

Perfect. I have to be careful here, I don't want to discourage experimentation and testing -- and if you have access to a pool of users who can beat on it, then great let's try it.

At the time, I didn't have such a "captive audience"... :-)

And I just wanted to be sure that everyone understood that some of these combinations have never been tried....

[...]
> As far as multiple client machines mounting the remote repo, I have
> doubts that FSMonitor would even see changes made from another
> machine. Worth trying out and documenting as needed - might even
> be better off being considered as unsupported.

Yeah, that's another dimension. (1) is whether we miss events that we generated locally. (2) is whether events get relayed to us from other clients.

Show 34 quoted lines
>> There was a suggestion later in this thread about using a SHA-1
>> or SHA-256 hash of the pathname to avoid the tmp XXXXXX pattern
>> and just put the socket in $HOME (and omit the need for the new
>> fsmonitor-daemon.ipc FILE completely).  This might work, but we
>> need to be careful because a user might have hardlinks or symlinks
>> locally so there may be more than one unique path to the repo
>> on the local system.  (It is OK to have more than one daemon
>> listening to a repo, just less efficient.)
>>
> Ah, I see.
> 
>>
>> As an interim step, you might try using my original socket code
>> plus just the config.allowRemote=true change.  And test it on a
>> mounted repo where you've converted the .git directory to a .git
>> file and moved contents of the .git directory to somewhere local.
>> Then the UDS would be created in the local GITDIR instead of on
>> the remote system.  This won't help any of the sharing cases I
>> described above, but will let you experiment with getting remote
>> events.
>>
> Within the context of the environment that I have available to me
> (macOS over NFS to a Linux file server), FSEvents is working correctly.
> I can make changes at any arbitrary place inside of the repo and an
> event is generated.
> 
> It's looking like that the Unix domain socket (UDS) file should remain
> where it is unless fsmonitor.allowRemote is true.
> 
> If fsmonitor.allowRemote is true then the UDS file can be located
> in $HOME with the caveat that if there is more than one path to
> the repo (via hard or sym links) that things might not work as
> expected.  I think that's OK given the experimental nature of the
> feature.

Yeah, I'd experiment with moving the UDS to $HOME (assuming you don't remote mount home directories too) and see how it works for you. Later, after we have more experience with it, we can talk about just having it always be in $HOME.

Jeff
Previous: Eric DeCostaNext: Eric Sunshine
Message 7 of 170 in “fsmonitor: option to allow fsmonitor to run against network-mounted repos”
  1. fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Aug 18, 2022
  2. Junio C HamanoAug 18, 2022
  3. Junio C HamanoAug 18, 2022
  4. Johannes SchindelinAug 19, 2022
  5. Jeff HostetlerAug 19, 2022
  6. Eric DeCostaAug 19, 2022
  7. Jeff HostetlerAug 19, 2022
  8. Eric SunshineAug 19, 2022
  9. Torsten BögershausenAug 19, 2022
  10. Junio C HamanoAug 20, 2022
  11. Johannes SchindelinAug 22, 2022
  12. Junio C HamanoAug 22, 2022
  13. Jeff HostetlerAug 23, 2022
  14. Eric DeCostaAug 24, 2022
  15. 0/4 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Aug 23, 2022
  16. 1/4 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Aug 23, 2022
  17. 2/4 fsmonitor: macOS: allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Aug 23, 2022
  18. 3/4 Check working directory and Unix domain socket file for compatabilityedecosta via GitGitGadget, Aug 23, 2022
  19. 4/4 Minor refactoring and simplification of Windows settings checksedecosta via GitGitGadget, Aug 23, 2022
  20. 0/2 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Aug 23, 2022
  21. 2/2 Check working directory and Unix domain socket file for compatabilityedecosta via GitGitGadget, Aug 23, 2022
  22. Junio C Hamano, Aug 24, 2022
  23. 1/2 fsmonitor: macOS: allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Aug 23, 2022
  24. Junio C HamanoAug 24, 2022
  25. 0/4 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Aug 31, 2022
  26. 1/4 fsmonitor: add two new config options, allowRemote and socketDirEric DeCosta via GitGitGadget, Aug 31, 2022
  27. Ævar Arnfjörð BjarmasonAug 31, 2022
  28. Junio C HamanoAug 31, 2022
  29. Ramsay JonesSep 1, 2022
  30. Jeff HostetlerSep 1, 2022
  31. Jeff HostetlerSep 1, 2022
  32. Jeff HostetlerSep 1, 2022
  33. Eric DeCostaSep 2, 2022
  34. Jeff HostetlerSep 6, 2022
  35. 2/4 fsmonitor: generate unique Unix socket file name in the desired locationEric DeCosta via GitGitGadget, Aug 31, 2022
  36. Ævar Arnfjörð BjarmasonAug 31, 2022
  37. Junio C HamanoAug 31, 2022
  38. 3/4 fsmonitor: ensure filesystem and unix socket filesystem are compatibleEric DeCosta via GitGitGadget, Aug 31, 2022
  39. 4/4 fsmonitor: normalize FSEvents event paths to the real pathEric DeCosta via GitGitGadget, Aug 31, 2022
  40. Ævar Arnfjörð BjarmasonAug 31, 2022
  41. Jeff HostetlerSep 1, 2022
  42. Eric DeCostaSep 2, 2022
  43. Jeff HostetlerSep 6, 2022
  44. Eric DeCostaSep 6, 2022
  45. Eric DeCostaSep 6, 2022
  46. Eric DeCostaSep 6, 2022
  47. Jeff HostetlerSep 7, 2022
  48. Eric DeCostaSep 7, 2022
  49. 0/4 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 10, 2022
  50. 1/4 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 10, 2022
  51. 2/4 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 10, 2022
  52. 3/4 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 10, 2022
  53. 4/4 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 10, 2022
  54. Eric SunshineSep 11, 2022
  55. Junio C HamanoSep 12, 2022
  56. Junio C HamanoSep 12, 2022
  57. Eric DeCostaSep 12, 2022
  58. Junio C HamanoSep 12, 2022
  59. Eric DeCostaSep 12, 2022
  60. 0/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 13, 2022
  61. 1/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 13, 2022
  62. 3/6 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 13, 2022
  63. Junio C HamanoSep 14, 2022
  64. Eric DeCostaSep 14, 2022
  65. 2/6 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 13, 2022
  66. 4/6 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 13, 2022
  67. Junio C HamanoSep 14, 2022
  68. 6/6 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Sep 13, 2022
  69. 5/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 13, 2022
  70. Jeff HostetlerSep 16, 2022
  71. Eric DeCostaSep 16, 2022
  72. 0/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 16, 2022
  73. 1/6 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 16, 2022
  74. 2/6 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 16, 2022
  75. Junio C HamanoSep 16, 2022
  76. Jeff HostetlerSep 19, 2022
  77. Junio C HamanoSep 19, 2022
  78. Jeff HostetlerSep 19, 2022
  79. Junio C HamanoSep 19, 2022
  80. Eric DeCostaSep 19, 2022
  81. Jeff HostetlerSep 20, 2022
  82. Eric DeCostaSep 20, 2022
  83. 3/6 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 16, 2022
  84. 6/6 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Sep 16, 2022
  85. 5/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 16, 2022
  86. Junio C HamanoSep 16, 2022
  87. 4/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 16, 2022
  88. Junio C HamanoSep 16, 2022
  89. 0/5 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 17, 2022
  90. 2/5 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 17, 2022
  91. Eric SunshineSep 17, 2022
  92. Junio C HamanoSep 19, 2022
  93. Eric SunshineSep 17, 2022
  94. Eric DeCostaSep 17, 2022
  95. Junio C HamanoSep 19, 2022
  96. 1/5 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 17, 2022
  97. 3/5 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 17, 2022
  98. 4/5 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 17, 2022
  99. 5/5 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Sep 17, 2022
  100. Eric SunshineSep 17, 2022
  101. Eric DeCostaSep 19, 2022
  102. 0/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 19, 2022
  103. 1/6 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 19, 2022
  104. 2/6 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 19, 2022
  105. Eric SunshineSep 19, 2022
  106. 3/6 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 19, 2022
  107. 4/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 19, 2022
  108. 5/6 fsmonitor: check for compatability before communicating with fsmonitorEric DeCosta via GitGitGadget, Sep 19, 2022
  109. 6/6 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Sep 19, 2022
  110. 0/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 20, 2022
  111. 2/6 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 20, 2022
  112. 1/6 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 20, 2022
  113. 3/6 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 20, 2022
  114. 5/6 fsmonitor: check for compatability before communicating with fsmonitorEric DeCosta via GitGitGadget, Sep 20, 2022
  115. Jeff HostetlerSep 21, 2022
  116. Eric DeCostaSep 21, 2022
  117. 4/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 20, 2022
  118. 6/6 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Sep 20, 2022
  119. 0/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 21, 2022
  120. 1/6 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 21, 2022
  121. 2/6 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 21, 2022
  122. 3/6 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 21, 2022
  123. 4/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 21, 2022
  124. 5/6 fsmonitor: check for compatability before communicating with fsmonitorEric DeCosta via GitGitGadget, Sep 21, 2022
  125. 6/6 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Sep 21, 2022
  126. 0/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 24, 2022
  127. 1/6 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 24, 2022
  128. 2/6 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 24, 2022
  129. 3/6 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 24, 2022
  130. 4/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 24, 2022
  131. Ævar Arnfjörð BjarmasonSep 26, 2022
  132. Eric DeCostaSep 27, 2022
  133. Ævar Arnfjörð BjarmasonSep 26, 2022
  134. 5/6 fsmonitor: check for compatability before communicating with fsmonitorEric DeCosta via GitGitGadget, Sep 24, 2022
  135. Eric DeCostaSep 25, 2022
  136. Ævar Arnfjörð BjarmasonSep 26, 2022
  137. Eric DeCostaSep 27, 2022
  138. 6/6 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Sep 24, 2022
  139. Ævar Arnfjörð BjarmasonSep 26, 2022
  140. Eric SunshineSep 27, 2022
  141. Eric DeCostaSep 27, 2022
  142. Eric DeCostaSep 25, 2022
  143. 0/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 27, 2022
  144. 1/6 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 27, 2022
  145. 2/6 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 27, 2022
  146. 3/6 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 27, 2022
  147. 4/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 27, 2022
  148. Ævar Arnfjörð BjarmasonSep 28, 2022
  149. 5/6 fsmonitor: check for compatability before communicating with fsmonitorEric DeCosta via GitGitGadget, Sep 27, 2022
  150. 6/6 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Sep 27, 2022
  151. 0/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Sep 28, 2022
  152. 1/6 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Sep 28, 2022
  153. 2/6 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Sep 28, 2022
  154. 3/6 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Sep 28, 2022
  155. 5/6 fsmonitor: check for compatability before communicating with fsmonitorEric DeCosta via GitGitGadget, Sep 28, 2022
  156. 4/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Sep 28, 2022
  157. 6/6 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Sep 28, 2022
  158. 0/6 fsmonitor: option to allow fsmonitor to run against network-mounted reposEric DeCosta via GitGitGadget, Oct 4, 2022
  159. 1/6 fsmonitor: refactor filesystem checks to common interfaceEric DeCosta via GitGitGadget, Oct 4, 2022
  160. Ævar Arnfjörð BjarmasonJan 30, 2023
  161. 2/6 fsmonitor: relocate socket file if .git directory is remoteEric DeCosta via GitGitGadget, Oct 4, 2022
  162. Ævar Arnfjörð BjarmasonJan 30, 2023
  163. 3/6 fsmonitor: avoid socket location check if using hookEric DeCosta via GitGitGadget, Oct 4, 2022
  164. 5/6 fsmonitor: check for compatability before communicating with fsmonitorEric DeCosta via GitGitGadget, Oct 4, 2022
  165. 4/6 fsmonitor: deal with synthetic firmlinks on macOSEric DeCosta via GitGitGadget, Oct 4, 2022
  166. Ævar Arnfjörð BjarmasonJan 30, 2023
  167. 6/6 fsmonitor: add documentation for allowRemote and socketDir optionsEric DeCosta via GitGitGadget, Oct 4, 2022
  168. Ævar Arnfjörð BjarmasonJan 30, 2023
  169. Junio C HamanoOct 5, 2022
  170. Eric DeCostaOct 5, 2022

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

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