diff options
Diffstat (limited to 'third_party/git/t/t7519/fsmonitor-watchman')
-rwxr-xr-x | third_party/git/t/t7519/fsmonitor-watchman | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/third_party/git/t/t7519/fsmonitor-watchman b/third_party/git/t/t7519/fsmonitor-watchman index 264b9daf834e..5514edcf68be 100755 --- a/third_party/git/t/t7519/fsmonitor-watchman +++ b/third_party/git/t/t7519/fsmonitor-watchman @@ -23,10 +23,10 @@ my ($version, $time) = @ARGV; if ($version == 1) { # convert nanoseconds to seconds - # subtract one second to make sure watchman will return all changes - $time = int ($time / 1000000000) - 1; + $time = int $time / 1000000000; } else { - exit 1; + die "Unsupported query-fsmonitor hook version '$version'.\n" . + "Falling back to scanning...\n"; } my $git_work_tree; @@ -54,12 +54,18 @@ sub launch_watchman { # # To accomplish this, we're using the "since" generator to use the # recency index to select candidate nodes and "fields" to limit the - # output to file names only. + # output to file names only. Then we're using the "expression" term to + # further constrain the results. + # + # The category of transient files that we want to ignore will have a + # creation clock (cclock) newer than $time_t value and will also not + # currently exist. my $query = <<" END"; ["query", "$git_work_tree", { "since": $time, - "fields": ["name"] + "fields": ["name"], + "expression": ["not", ["allof", ["since", $time, "cclock"], ["not", "exists"]]] }] END |