git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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.


  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).