git/list[1] front-page[2] threads[3] people[4] search[5] about
 

RE: [PATCH v1 5/5] Add a sample query-fsmonitor hook script that integrates with the cross platform Watchman file watching service.

From
DTDavid Turner <david.turner@twosigma.com>
Date
May 15, 2017, 19:50 UTC
Message-ID
<fb609e259c714469b5528888e14c2e3a@exmbdft7.ad.twosigma.com>
In-Reply-To
<20170515191347.1892-6-benpeart@microsoft.com>
Show 67 quoted lines
> -----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?

Previous: Ben PeartNext: Ben Peart
Message 8 of 26 in “Fast git status via a file system watcher”
  1. 0/5 Fast git status via a file system watcherBen Peart, May 15, 2017
  2. 1/5 dir: make lookup_untracked() available outside of dir.cBen Peart, May 15, 2017
  3. Junio C HamanoMay 16, 2017
  4. 3/5 fsmonitor: add test cases for fsmonitor extensionBen Peart, May 15, 2017
  5. Junio C HamanoMay 16, 2017
  6. Ben PeartMay 16, 2017
  7. 5/5 Add a sample query-fsmonitor hook script that integrates with the cross platform Watchman file watching service.Ben Peart, May 15, 2017
  8. David TurnerMay 15, 2017
  9. Ben PeartMay 15, 2017
  10. 2/5 Teach git to optionally utilize a file system monitor to speed up detecting new or changed files.Ben Peart, May 15, 2017
  11. David TurnerMay 15, 2017
  12. Ben PeartMay 16, 2017
  13. brian m. carlsonMay 16, 2017
  14. Jeff KingMay 16, 2017
  15. Ben PeartMay 16, 2017
  16. Jeff KingMay 16, 2017
  17. Ben PeartMay 16, 2017
  18. Jeff KingMay 16, 2017
  19. Johannes SixtMay 16, 2017
  20. Ben PeartMay 17, 2017
  21. Johannes SixtMay 17, 2017
  22. Jeff KingMay 18, 2017
  23. Jonathan TanMay 16, 2017
  24. Ben PeartMay 17, 2017
  25. 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, May 15, 2017
  26. Junio C HamanoMay 16, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.