All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.