git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jeff Hostetler <git@jeffhostetler.com>
To: Eric DeCosta <edecosta@mathworks.com>,
	Eric DeCosta via GitGitGadget <gitgitgadget@gmail.com>,
	"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [PATCH v4 4/4] fsmonitor: normalize FSEvents event paths to the real path
Date: Tue, 6 Sep 2022 13:13:38 -0400	[thread overview]
Message-ID: <a583a787-1f54-74ba-add1-61f9e30d5c2a@jeffhostetler.com> (raw)
In-Reply-To: <BYAPR05MB5573B477ED53CBC4C996729DD97A9@BYAPR05MB5573.namprd05.prod.outlook.com>



On 9/2/22 12:35 PM, Eric DeCosta wrote:
> 
> 
>> -----Original Message-----
>> From: Jeff Hostetler <git@jeffhostetler.com>
>> Sent: Thursday, September 1, 2022 4:06 PM
>> To: Eric DeCosta via GitGitGadget <gitgitgadget@gmail.com>;
>> git@vger.kernel.org
>> Cc: Eric DeCosta <edecosta@mathworks.com>
>> Subject: Re: [PATCH v4 4/4] fsmonitor: normalize FSEvents event paths to the
>> real path
>>
>>
>>
>> On 8/31/22 12:09 PM, Eric DeCosta via GitGitGadget wrote:
>>> From: Eric DeCosta <edecosta@mathworks.com>
>>>
>>> Consider the following network working directory that is mounted under
>>> /System/Volumes/Data:
>>>
>>> /network/working/directory
>>>
>>> The git working directory path is:
>>>
>>> /System/Volumes/Data/network/working/directory
>>>
>>> The paths reported by FSEvents always start with /network. fsmonitor
>>> expects paths to be under the working directory; therefore it fails to
>>> match /network/... and ignores the change.
>>
>> I'm not sure I understand what's going on here.
>> Are you saying that FSEvents reports network mounted directories with a
>> path relative to the mount-point rather than an absolute path?
>>
> 
> Yes
> 
>> In your example, is "/network/working/directory" a valid path on your
>> system (that also happens to be the same directory as
>> "/System/Volumes/...")
>>
>> That is, do you have some aliasing going on where both paths are valid -- like
>> a pair of hard-linked directories?
>> Or, is there something special about a network mount point?
>>
>>
>> Did you have to "cd /System/Volumes/..." to get Git to have the absolute
>> path be this?  Or were you doing a "cd /network/..."?
>> (Sorry to ask so many questions but I don't have a pair of systems to test any
>> of this on right now.)
>>
> 
>   "/network/working/directory" is mounted under
> "/System/Volumes/Data/network/working/directory"
> 
> There is also a symlink:
> 
> "/network" -> "/System/Volumes/Data/network"
> 
> No matter if I "cd /System/Volumes/Data/network/working/directory"
> or "cd /network/working/directory" the paths reported by FSEvents
> always start with "/network/working/directory"
> 
> If I do a similar symlink with local directories, I do not get this
> unexpected behavior.
> 
> I need to remove the symlink and try it that way, but I need to
> coordinate with the machine's owner.


I think you have stumbled upon a recent MacOS feature called
"firmlinks".  I'm just reading up on it myself, so I shouldn't
speculate here (yet), but maybe you too could do some reading
on the subject.

This makes me wonder if the symlink is historical.  The real
magic is in the firmlinks.  For example, if I do:

	$ (cd / ; ls -l | grep Users)
	drwxr-xr-x   6 root  admin   192 Apr  6  2020 Users

	$ (cd /Users ; df .)
	Filesystem   512-blocks      Used Available Capacity iused      ifree 
%iused  Mounted on
	/dev/disk1s1  976490576 608954344 338850488    65% 4181323 4878271557 
  0%   /System/Volumes/Data

we can see that /Users is on /System/Volumes/Data (and there is a
/System/Volumes/Data/Users directory with the same metadata), but
it is not a symlink.


See [1] for more info.

[1] 
http://www.swiftforensics.com/2019/10/macos-1015-volumes-firmlink-magic.html


[...]
>>> @@ -209,7 +209,12 @@ static void
>> fsevent_callback(ConstFSEventStreamRef streamRef,
>>>    		/*
>>>    		 * On Mac, we receive an array of absolute paths.
>>>    		 */
>>> -		path_k = paths[k];
>>> +		if (fsm_settings__get_allow_remote(the_repository) > 0) {
>>> +			strbuf_reset(&tmp);
>>> +			strbuf_realpath_forgiving(&tmp, paths[k], 0);
>>> +			path_k = tmp.buf;
>>> +		} else
>>> +			path_k = paths[k];
>>
>> This feels wrong.
>>
>> It is not that fsmonitor.allowRemote is true, but whether or not this
>> particular file system *IS* remote, right?
> 
> True. I suppose each path could be checked, or some bit could be set
> if the working directory is remote, perhaps along the lines of
> fsmonitor_ipc__get_path. Then the determination of the IPC path
> and whether it is remote would be in one place. fsm-settings-*
> would then just get that bit and check it against allowRemote.
> 
> Thoughts?

I'll do some digging here.  There ought to be a way to tell if a
component directory in a pathname has a firmlink peer.  (But I'm
traveling for GitMerge, so I might not have time to look at this
until afterwards.)

This would indicate that a "bi-directional wormhole" (their words)
alias is available (and hopefully, a way to computer the other peer....)

I'm thinking that the "/network/..." path in the FSEvents is because
FSEventD is using a particular peer spelling (that we weren't
expecting).

If we can compute the spellings of the peers once when the daemon
starts up (and maybe make a little dictionary), then we can do
prefix tricks on the absolute path after the
         path_k = paths[k];
step in fsevent_callback() to extract a relative path rather than
an absolute path.

Then call fsmonitor_classify_path_relative() instead of _absolute().

Watch out though, there are several places that do
         rel = path+k + ...state->path_worktree_watch.len...
that would need to be adjusted.

Hope this helps,
Jeff






  reply	other threads:[~2022-09-06 17:25 UTC|newest]

Thread overview: 170+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-18 20:48 [PATCH] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta via GitGitGadget
2022-08-18 21:35 ` Junio C Hamano
2022-08-18 21:38   ` Junio C Hamano
2022-08-19 10:05 ` Johannes Schindelin
2022-08-19 16:50 ` Jeff Hostetler
2022-08-19 18:38   ` Eric DeCosta
2022-08-19 20:15     ` Jeff Hostetler
2022-08-19 17:48 ` Eric Sunshine
2022-08-19 18:58 ` Torsten Bögershausen
2022-08-20 22:24 ` Junio C Hamano
2022-08-22 13:22   ` Johannes Schindelin
2022-08-22 16:07     ` Junio C Hamano
2022-08-23 13:51     ` Jeff Hostetler
2022-08-24 15:45       ` Eric DeCosta
2022-08-23 13:03 ` [PATCH v2 0/4] " Eric DeCosta via GitGitGadget
2022-08-23 13:03   ` [PATCH v2 1/4] " Eric DeCosta via GitGitGadget
2022-08-23 13:03   ` [PATCH v2 2/4] fsmonitor: macOS: " Eric DeCosta via GitGitGadget
2022-08-23 13:03   ` [PATCH v2 3/4] Check working directory and Unix domain socket file for compatability edecosta via GitGitGadget
2022-08-23 13:03   ` [PATCH v2 4/4] Minor refactoring and simplification of Windows settings checks edecosta via GitGitGadget
2022-08-23 18:55   ` [PATCH v3 0/2] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta via GitGitGadget
2022-08-23 18:55     ` [PATCH v3 1/2] fsmonitor: macOS: " Eric DeCosta via GitGitGadget
2022-08-23 18:55     ` [PATCH v3 2/2] Check working directory and Unix domain socket file for compatability edecosta via GitGitGadget
2022-08-24 20:31       ` Junio C Hamano
2022-08-24 16:46     ` [PATCH v3 0/2] fsmonitor: option to allow fsmonitor to run against network-mounted repos Junio C Hamano
2022-08-31 16:09     ` [PATCH v4 0/4] " Eric DeCosta via GitGitGadget
2022-08-31 16:09       ` [PATCH v4 1/4] fsmonitor: add two new config options, allowRemote and socketDir Eric DeCosta via GitGitGadget
2022-08-31 19:41         ` Ævar Arnfjörð Bjarmason
2022-08-31 20:04         ` Junio C Hamano
2022-09-01  2:25           ` Ramsay Jones
2022-09-01 17:53         ` Jeff Hostetler
2022-09-01 18:04         ` Jeff Hostetler
2022-09-01 21:21         ` Jeff Hostetler
2022-09-02 16:54           ` Eric DeCosta
2022-09-06 14:27             ` Jeff Hostetler
2022-08-31 16:09       ` [PATCH v4 2/4] fsmonitor: generate unique Unix socket file name in the desired location Eric DeCosta via GitGitGadget
2022-08-31 19:49         ` Ævar Arnfjörð Bjarmason
2022-08-31 20:11         ` Junio C Hamano
2022-08-31 16:09       ` [PATCH v4 3/4] fsmonitor: ensure filesystem and unix socket filesystem are compatible Eric DeCosta via GitGitGadget
2022-08-31 16:09       ` [PATCH v4 4/4] fsmonitor: normalize FSEvents event paths to the real path Eric DeCosta via GitGitGadget
2022-08-31 19:37         ` Ævar Arnfjörð Bjarmason
2022-09-01 20:05         ` Jeff Hostetler
2022-09-02 16:35           ` Eric DeCosta
2022-09-06 17:13             ` Jeff Hostetler [this message]
2022-09-06 19:02               ` Eric DeCosta
2022-09-06 19:33                 ` Eric DeCosta
2022-09-06 22:11                   ` Eric DeCosta
2022-09-07 19:14                   ` Jeff Hostetler
2022-09-07 23:04                     ` Eric DeCosta
2022-09-10 20:00       ` [PATCH v5 0/4] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta via GitGitGadget
2022-09-10 20:00         ` [PATCH v5 1/4] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-10 20:00         ` [PATCH v5 2/4] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-10 20:00         ` [PATCH v5 3/4] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-10 20:00         ` [PATCH v5 4/4] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-11  1:01           ` Eric Sunshine
2022-09-12 15:27         ` [PATCH v5 0/4] fsmonitor: option to allow fsmonitor to run against network-mounted repos Junio C Hamano
2022-09-12 19:37           ` Junio C Hamano
2022-09-12 19:39             ` Eric DeCosta
2022-09-12 15:35         ` Junio C Hamano
2022-09-12 19:35           ` Eric DeCosta
2022-09-13 20:27         ` [PATCH v6 0/6] " Eric DeCosta via GitGitGadget
2022-09-13 20:27           ` [PATCH v6 1/6] " Eric DeCosta via GitGitGadget
2022-09-13 20:27           ` [PATCH v6 2/6] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-13 20:27           ` [PATCH v6 3/6] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-14  0:48             ` Junio C Hamano
2022-09-14 15:47               ` Eric DeCosta
2022-09-13 20:27           ` [PATCH v6 4/6] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-14  1:48             ` Junio C Hamano
2022-09-13 20:27           ` [PATCH v6 5/6] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-13 20:27           ` [PATCH v6 6/6] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2022-09-16 17:58           ` [PATCH v6 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Jeff Hostetler
2022-09-16 20:02             ` Eric DeCosta
2022-09-16 19:53           ` [PATCH v7 " Eric DeCosta via GitGitGadget
2022-09-16 19:53             ` [PATCH v7 1/6] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-16 19:53             ` [PATCH v7 2/6] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-16 20:11               ` Junio C Hamano
2022-09-19 12:31                 ` Jeff Hostetler
2022-09-19 16:42                   ` Junio C Hamano
2022-09-19 17:08                     ` Jeff Hostetler
2022-09-19 17:49                       ` Junio C Hamano
2022-09-19 23:51                         ` Eric DeCosta
2022-09-20 14:35                           ` Jeff Hostetler
2022-09-20 15:49                             ` Eric DeCosta
2022-09-16 19:53             ` [PATCH v7 3/6] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-16 19:53             ` [PATCH v7 4/6] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-16 19:53             ` [PATCH v7 5/6] " Eric DeCosta via GitGitGadget
2022-09-16 20:15               ` Junio C Hamano
2022-09-16 19:53             ` [PATCH v7 6/6] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2022-09-16 20:09             ` [PATCH v7 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Junio C Hamano
2022-09-17  1:12             ` [PATCH v8 0/5] " Eric DeCosta via GitGitGadget
2022-09-17  1:12               ` [PATCH v8 1/5] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-17  1:12               ` [PATCH v8 2/5] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-17  4:13                 ` Eric Sunshine
2022-09-19 16:50                   ` Junio C Hamano
2022-09-17  6:29                 ` Eric Sunshine
2022-09-17 16:29                   ` Eric DeCosta
2022-09-19 16:58                   ` Junio C Hamano
2022-09-17  1:12               ` [PATCH v8 3/5] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-17  1:12               ` [PATCH v8 4/5] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-17  1:12               ` [PATCH v8 5/5] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2022-09-17  6:08                 ` Eric Sunshine
2022-09-19 23:55                   ` Eric DeCosta
2022-09-19 19:37               ` [PATCH v9 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta via GitGitGadget
2022-09-19 19:37                 ` [PATCH v9 1/6] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-19 19:37                 ` [PATCH v9 2/6] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-19 19:57                   ` Eric Sunshine
2022-09-19 19:37                 ` [PATCH v9 3/6] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-19 19:37                 ` [PATCH v9 4/6] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-19 19:37                 ` [PATCH v9 5/6] fsmonitor: check for compatability before communicating with fsmonitor Eric DeCosta via GitGitGadget
2022-09-19 19:37                 ` [PATCH v9 6/6] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2022-09-20 20:33                 ` [PATCH v10 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta via GitGitGadget
2022-09-20 20:33                   ` [PATCH v10 1/6] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-20 20:33                   ` [PATCH v10 2/6] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-20 20:33                   ` [PATCH v10 3/6] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-20 20:33                   ` [PATCH v10 4/6] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-20 20:33                   ` [PATCH v10 5/6] fsmonitor: check for compatability before communicating with fsmonitor Eric DeCosta via GitGitGadget
2022-09-21 11:22                     ` Jeff Hostetler
2022-09-21 13:03                       ` Eric DeCosta
2022-09-20 20:33                   ` [PATCH v10 6/6] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2022-09-21 22:18                   ` [PATCH v11 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta via GitGitGadget
2022-09-21 22:18                     ` [PATCH v11 1/6] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-21 22:18                     ` [PATCH v11 2/6] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-21 22:18                     ` [PATCH v11 3/6] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-21 22:18                     ` [PATCH v11 4/6] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-21 22:18                     ` [PATCH v11 5/6] fsmonitor: check for compatability before communicating with fsmonitor Eric DeCosta via GitGitGadget
2022-09-21 22:18                     ` [PATCH v11 6/6] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2022-09-24 19:46                     ` [PATCH v12 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta via GitGitGadget
2022-09-24 19:46                       ` [PATCH v12 1/6] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-24 19:46                       ` [PATCH v12 2/6] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-24 19:46                       ` [PATCH v12 3/6] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-24 19:46                       ` [PATCH v12 4/6] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-26 15:16                         ` Ævar Arnfjörð Bjarmason
2022-09-27  1:53                           ` Eric DeCosta
2022-09-26 15:27                         ` Ævar Arnfjörð Bjarmason
2022-09-24 19:46                       ` [PATCH v12 5/6] fsmonitor: check for compatability before communicating with fsmonitor Eric DeCosta via GitGitGadget
2022-09-25 14:00                         ` Eric DeCosta
2022-09-26 15:23                         ` Ævar Arnfjörð Bjarmason
2022-09-27  1:25                           ` Eric DeCosta
2022-09-24 19:46                       ` [PATCH v12 6/6] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2022-09-26 15:11                         ` Ævar Arnfjörð Bjarmason
2022-09-27  2:16                           ` Eric Sunshine
2022-09-27  4:03                             ` Eric DeCosta
2022-09-25 14:18                       ` [PATCH v12 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta
2022-09-27 20:57                       ` [PATCH v13 " Eric DeCosta via GitGitGadget
2022-09-27 20:57                         ` [PATCH v13 1/6] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-27 20:57                         ` [PATCH v13 2/6] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-27 20:57                         ` [PATCH v13 3/6] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-27 20:57                         ` [PATCH v13 4/6] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-28  5:55                           ` Ævar Arnfjörð Bjarmason
2022-09-27 20:57                         ` [PATCH v13 5/6] fsmonitor: check for compatability before communicating with fsmonitor Eric DeCosta via GitGitGadget
2022-09-27 20:57                         ` [PATCH v13 6/6] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2022-09-28 20:12                         ` [PATCH v14 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta via GitGitGadget
2022-09-28 20:12                           ` [PATCH v14 1/6] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2022-09-28 20:12                           ` [PATCH v14 2/6] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2022-09-28 20:12                           ` [PATCH v14 3/6] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-09-28 20:12                           ` [PATCH v14 4/6] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2022-09-28 20:12                           ` [PATCH v14 5/6] fsmonitor: check for compatability before communicating with fsmonitor Eric DeCosta via GitGitGadget
2022-09-28 20:12                           ` [PATCH v14 6/6] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2022-10-04 17:32                           ` [PATCH v15 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Eric DeCosta via GitGitGadget
2022-10-04 17:32                             ` [PATCH v15 1/6] fsmonitor: refactor filesystem checks to common interface Eric DeCosta via GitGitGadget
2023-01-30  9:37                               ` Ævar Arnfjörð Bjarmason
2022-10-04 17:32                             ` [PATCH v15 2/6] fsmonitor: relocate socket file if .git directory is remote Eric DeCosta via GitGitGadget
2023-01-30  9:58                               ` Ævar Arnfjörð Bjarmason
2022-10-04 17:32                             ` [PATCH v15 3/6] fsmonitor: avoid socket location check if using hook Eric DeCosta via GitGitGadget
2022-10-04 17:32                             ` [PATCH v15 4/6] fsmonitor: deal with synthetic firmlinks on macOS Eric DeCosta via GitGitGadget
2023-01-30 10:08                               ` Ævar Arnfjörð Bjarmason
2022-10-04 17:32                             ` [PATCH v15 5/6] fsmonitor: check for compatability before communicating with fsmonitor Eric DeCosta via GitGitGadget
2022-10-04 17:32                             ` [PATCH v15 6/6] fsmonitor: add documentation for allowRemote and socketDir options Eric DeCosta via GitGitGadget
2023-01-30 10:04                               ` Ævar Arnfjörð Bjarmason
2022-10-05 18:05                             ` [PATCH v15 0/6] fsmonitor: option to allow fsmonitor to run against network-mounted repos Junio C Hamano
2022-10-05 21:14                               ` Eric DeCosta

Reply instructions:

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

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

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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=a583a787-1f54-74ba-add1-61f9e30d5c2a@jeffhostetler.com \
    --to=git@jeffhostetler.com \
    --cc=edecosta@mathworks.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    /path/to/YOUR_REPLY

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

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).