From: Alex Vandiver <alexmv@dropbox.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: git@vger.kernel.org, Ben Peart <peartben@gmail.com>
Subject: Re: [PATCH 1/4] fsmonitor: Watch, and ask about, the top of the repo, not the CWD
Date: Wed, 25 Oct 2017 17:20:33 -0700 (PDT) [thread overview]
Message-ID: <alpine.DEB.2.10.1710251700300.9817@alexmv-linux> (raw)
In-Reply-To: <alpine.DEB.2.21.1.1710201457180.40514@virtualbox>
On Fri, 20 Oct 2017, Johannes Schindelin wrote:
> This is super expensive, as it means a full-blown new process instead of
> just a simple environment variable expansion.
>
> The idea behind using `PWD` instead was that Git will already have done
> all of the work of figuring out the top-level directory and switched to
> there before calling the fsmonitor hook.
I'm not seeing that PWD has been at all altered. The following does
seem like a better solution:
------8<-----
diff --git a/fsmonitor.c b/fsmonitor.c
index 7c1540c05..4ea44dcc6 100644
--- a/fsmonitor.c
+++ b/fsmonitor.c
@@ -121,6 +121,7 @@ static int query_fsmonitor(int version, uint64_t last_update, struct strbuf *que
argv[3] = NULL;
cp.argv = argv;
cp.use_shell = 1;
+ cp.dir = get_git_work_tree();
return capture_command(&cp, query_result, 1024);
}
------8<-----
I'll re-roll with that.
> Did you see any case where the script was *not* called from the top-level
> directory?
Merely calling `git status` inside a subdirectory is enough to for the
stock watchman config to report that it's in a "new" directory:
$ watchman watch-list
{
"roots": [],
"version": "4.7.0"
}
$ git status
Adding '/Users/alexmv/src/git' to watchman's watch list.
On branch test
nothing to commit, working tree clean
$ cd builtin/
$ git status
Adding '/Users/alexmv/src/git/builtin' to watchman's watch list.
On branch test
nothing to commit, working tree clean
$ watchman watch-list
{
"roots": [
"/Users/alexmv/src/git/builtin",
"/Users/alexmv/src/git"
],
"version": "4.7.0"
}
As I understand it, that means that it then loses all performance
gains in the new directory, as it spits out "all dirty."
- Alex
next prev parent reply other threads:[~2017-10-26 0:20 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-20 1:11 [PATCH 0/4] fsmonitor fixes Alex Vandiver
2017-10-20 1:11 ` [PATCH 1/4] fsmonitor: Watch, and ask about, the top of the repo, not the CWD Alex Vandiver
2017-10-20 1:11 ` [PATCH 2/4] fsmonitor: Don't bother pretty-printing JSON from watchman Alex Vandiver
2017-10-20 13:00 ` Johannes Schindelin
2017-10-20 13:17 ` Ben Peart
2017-10-26 0:44 ` Alex Vandiver
2017-10-27 15:13 ` Johannes Schindelin
2017-10-20 1:11 ` [PATCH 3/4] fsmonitor: Document GIT_TRACE_FSMONITOR Alex Vandiver
2017-10-20 13:19 ` Ben Peart
2017-10-20 1:11 ` [PATCH 4/4] fsmonitor: Delay updating state until after split index is merged Alex Vandiver
2017-10-20 13:16 ` Johannes Schindelin
2017-10-20 21:47 ` Ben Peart
2017-10-21 2:06 ` Junio C Hamano
2017-10-21 3:35 ` Jeff King
2017-10-23 9:57 ` Johannes Schindelin
2017-10-23 12:36 ` Ben Peart
2017-10-26 1:20 ` Alex Vandiver
2017-10-20 12:58 ` [PATCH 1/4] fsmonitor: Watch, and ask about, the top of the repo, not the CWD Johannes Schindelin
2017-10-26 0:20 ` Alex Vandiver [this message]
2017-10-27 15:11 ` Johannes Schindelin
2017-10-20 13:17 ` [PATCH 0/4] fsmonitor fixes Johannes Schindelin
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=alpine.DEB.2.10.1710251700300.9817@alexmv-linux \
--to=alexmv@dropbox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=peartben@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.
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.