From: Ben Peart <peartben@gmail.com>
To: David Turner <David.Turner@twosigma.com>,
"git@vger.kernel.org" <git@vger.kernel.org>
Cc: "gitster@pobox.com" <gitster@pobox.com>,
"benpeart@microsoft.com" <benpeart@microsoft.com>,
"pclouds@gmail.com" <pclouds@gmail.com>,
"johannes.schindelin@gmx.de" <johannes.schindelin@gmx.de>,
"peff@peff.net" <peff@peff.net>
Subject: Re: [PATCH v1 5/5] Add a sample query-fsmonitor hook script that integrates with the cross platform Watchman file watching service.
Date: Mon, 15 May 2017 16:10:31 -0400 [thread overview]
Message-ID: <268acc85-8fc7-7779-8cb8-f0e88e7d50a5@gmail.com> (raw)
In-Reply-To: <fb609e259c714469b5528888e14c2e3a@exmbdft7.ad.twosigma.com>
On 5/15/2017 3:50 PM, David Turner wrote:
>
>> -----Original Message-----
>> From: Ben Peart [mailto:peartben@gmail.com]
>> Sent: Monday, May 15, 2017 3:14 PM
>> To: git@vger.kernel.org
>> Cc: gitster@pobox.com; benpeart@microsoft.com; pclouds@gmail.com;
>> johannes.schindelin@gmx.de; David Turner <David.Turner@twosigma.com>;
>> peff@peff.net
>> Subject: [PATCH v1 5/5] Add a sample query-fsmonitor hook script that
>> integrates with the cross platform Watchman file watching service.
>>
>> To use the script:
>>
>> Download and install Watchman from https://facebook.github.io/watchman/
>> and instruct Watchman to watch your working directory for changes
>> ('watchman watch-project /usr/src/git').
>>
>> Rename the sample integration hook from query-fsmonitor.sample to query-
>> fsmonitor.
>>
>> Configure git to use the extension ('git config core.fsmonitor true') and
>> optionally turn on the untracked cache for optimal performance ('git config
>> core.untrackedcache true').
>>
>> Signed-off-by: Ben Peart <benpeart@microsoft.com>
>> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
>> ---
>> templates/hooks--query-fsmonitor.sample | 27
>> +++++++++++++++++++++++++++
>> 1 file changed, 27 insertions(+)
>> create mode 100644 templates/hooks--query-fsmonitor.sample
>>
>> diff --git a/templates/hooks--query-fsmonitor.sample b/templates/hooks--
>> query-fsmonitor.sample
>> new file mode 100644
>> index 0000000000..4bd22f21d8
>> --- /dev/null
>> +++ b/templates/hooks--query-fsmonitor.sample
>> @@ -0,0 +1,27 @@
>> +#!/bin/sh
>> +#
>> +# An example hook script to integrate Watchman #
>> +(https://facebook.github.io/watchman/) with git to provide fast # git
>> +status.
>> +#
>> +# The hook is passed a time_t formatted as a string and outputs to #
>> +stdout all files that have been modified since the given time.
>> +# Paths must be relative to the root of the working tree and #
>> +separated by a single NUL.
>> +#
>> +# To enable this hook, rename this file to "query-fsmonitor"
>> +
>> +# Convert unix style paths to escaped Windows style paths case "$(uname
>> +-s)" in
>> +MINGW*|MSYS_NT*)
>> + GIT_WORK_TREE="$(cygpath -aw "$PWD" | sed 's,\\,\\\\,g')"
>> + ;;
>> +*)
>> + GIT_WORK_TREE="$PWD"
>> + ;;
>> +esac
>> +
>> +# Query Watchman for all the changes since the requested time echo
>> +"[\"query\", \"$GIT_WORK_TREE\", {\"since\": $1,
>> +\"fields\":[\"name\"]}]" | \ watchman -j | \ perl -e 'use JSON::PP; my
>> +$o = JSON::PP->new->utf8->decode(join("", <>)); die "Watchman: $o-
>>> {'error'}.\nFalling back to scanning...\n" if defined($o->{"error"});
>> print(join("\0", @{$o->{"files"}}));'
> Last time I checked, the argument to 'since' was not a time_t -- it was a
> watchman clock spec. Have you tested this? Does it work?
>
Watchman also accepts a Unix time value for "since" as documented here
(https://facebook.github.io/watchman/docs/expr/since.html).
Yes, this has been tested and works correctly as long as you have a
recent version that contains the patch
(https://github.com/facebook/watchman/commit/67b26a8938336f08918fc7187129b6c1a571f35b)
that made sure it was greedy when using the Unix time.
next prev parent reply other threads:[~2017-05-15 20:10 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-15 19:13 [PATCH v1 0/5] Fast git status via a file system watcher Ben Peart
2017-05-15 19:13 ` [PATCH v1 1/5] dir: make lookup_untracked() available outside of dir.c Ben Peart
2017-05-16 5:01 ` Junio C Hamano
2017-05-15 19:13 ` [PATCH v1 2/5] Teach git to optionally utilize a file system monitor to speed up detecting new or changed files Ben Peart
2017-05-15 21:21 ` David Turner
2017-05-16 1:15 ` Ben Peart
2017-05-16 0:22 ` brian m. carlson
2017-05-16 0:34 ` Jeff King
2017-05-16 1:55 ` Ben Peart
2017-05-16 2:51 ` Jeff King
2017-05-16 17:17 ` Ben Peart
2017-05-16 17:49 ` Jeff King
2017-05-16 19:13 ` Johannes Sixt
2017-05-17 14:26 ` Ben Peart
2017-05-17 18:15 ` Johannes Sixt
2017-05-18 4:52 ` Jeff King
2017-05-16 21:41 ` Jonathan Tan
2017-05-17 3:35 ` Ben Peart
2017-05-15 19:13 ` [PATCH v1 3/5] fsmonitor: add test cases for fsmonitor extension Ben Peart
2017-05-16 4:59 ` Junio C Hamano
2017-05-16 14:28 ` Ben Peart
2017-05-15 19:13 ` [PATCH v1 4/5] Add documentation for the fsmonitor extension. This includes the core.fsmonitor setting, the query-fsmonitor hook, and the fsmonitor index extension Ben Peart
2017-05-15 19:13 ` [PATCH v1 5/5] Add a sample query-fsmonitor hook script that integrates with the cross platform Watchman file watching service Ben Peart
2017-05-15 19:50 ` David Turner
2017-05-15 20:10 ` Ben Peart [this message]
2017-05-16 5:00 ` [PATCH v1 0/5] Fast git status via a file system watcher Junio C Hamano
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=268acc85-8fc7-7779-8cb8-f0e88e7d50a5@gmail.com \
--to=peartben@gmail.com \
--cc=David.Turner@twosigma.com \
--cc=benpeart@microsoft.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johannes.schindelin@gmx.de \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
/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 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 NNTP newsgroup(s).