diff options
Diffstat (limited to 'third_party/git/t/t7519')
-rwxr-xr-x | third_party/git/t/t7519/fsmonitor-all | 23 | ||||
-rwxr-xr-x | third_party/git/t/t7519/fsmonitor-all-v2 | 21 | ||||
-rwxr-xr-x | third_party/git/t/t7519/fsmonitor-env | 24 | ||||
-rwxr-xr-x | third_party/git/t/t7519/fsmonitor-none | 22 | ||||
-rwxr-xr-x | third_party/git/t/t7519/fsmonitor-watchman | 127 | ||||
-rwxr-xr-x | third_party/git/t/t7519/fsmonitor-watchman-v2 | 173 |
6 files changed, 0 insertions, 390 deletions
diff --git a/third_party/git/t/t7519/fsmonitor-all b/third_party/git/t/t7519/fsmonitor-all deleted file mode 100755 index 94ab66bd3d86..000000000000 --- a/third_party/git/t/t7519/fsmonitor-all +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# -# An test hook script to integrate with git to test fsmonitor. -# -# The hook is passed a version (currently 1) and a time in nanoseconds -# 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. -# -#echo "$0 $*" >&2 - -if test "$#" -ne 2 -then - echo "$0: exactly 2 arguments expected" >&2 - exit 2 -fi - -if test "$1" != 1 -then - exit 1 -fi - -echo "/" diff --git a/third_party/git/t/t7519/fsmonitor-all-v2 b/third_party/git/t/t7519/fsmonitor-all-v2 deleted file mode 100755 index 061907e88b65..000000000000 --- a/third_party/git/t/t7519/fsmonitor-all-v2 +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; -# -# An test hook script to integrate with git to test fsmonitor. -# -# The hook is passed a version (currently 2) and since token -# 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. -# -#echo "$0 $*" >&2 -my ($version, $last_update_token) = @ARGV; - -if ($version ne 2) { - print "Unsupported query-fsmonitor hook version '$version'.\n"; - exit 1; -} - -print "last_update_token\0/\0" diff --git a/third_party/git/t/t7519/fsmonitor-env b/third_party/git/t/t7519/fsmonitor-env deleted file mode 100755 index 8f1f7ab164e1..000000000000 --- a/third_party/git/t/t7519/fsmonitor-env +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# -# An test hook script to integrate with git to test fsmonitor. -# -# The hook is passed a version (currently 1) and a time in nanoseconds -# 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. -# -#echo "$0 $*" >&2 - -if test "$#" -ne 2 -then - echo "$0: exactly 2 arguments expected" >&2 - exit 2 -fi - -if test "$1" != 1 -then - echo "Unsupported core.fsmonitor hook version." >&2 - exit 1 -fi - -printf '%s\n' $FSMONITOR_LIST diff --git a/third_party/git/t/t7519/fsmonitor-none b/third_party/git/t/t7519/fsmonitor-none deleted file mode 100755 index ed9cf5a6a934..000000000000 --- a/third_party/git/t/t7519/fsmonitor-none +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# -# An test hook script to integrate with git to test fsmonitor. -# -# The hook is passed a version (currently 1) and a time in nanoseconds -# 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. -# -#echo "$0 $*" >&2 - -if test "$#" -ne 2 -then - echo "$0: exactly 2 arguments expected" >&2 - exit 2 -fi - -if test "$1" != 1 -then - echo "Unsupported core.fsmonitor hook version." >&2 - exit 1 -fi diff --git a/third_party/git/t/t7519/fsmonitor-watchman b/third_party/git/t/t7519/fsmonitor-watchman deleted file mode 100755 index 264b9daf834e..000000000000 --- a/third_party/git/t/t7519/fsmonitor-watchman +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; -use IPC::Open2; - -# An example hook script to integrate Watchman -# (https://facebook.github.io/watchman/) with git to speed up detecting -# new and modified files. -# -# The hook is passed a version (currently 1) and a time in nanoseconds -# 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-watchman" and set -# 'git config core.fsmonitor .git/hooks/query-watchman' -# -my ($version, $time) = @ARGV; -#print STDERR "$0 $version $time\n"; - -# Check the hook interface version - -if ($version == 1) { - # convert nanoseconds to seconds - # subtract one second to make sure watchman will return all changes - $time = int ($time / 1000000000) - 1; -} else { - exit 1; -} - -my $git_work_tree; -if ($^O =~ 'msys' || $^O =~ 'cygwin') { - $git_work_tree = Win32::GetCwd(); - $git_work_tree =~ tr/\\/\//; -} else { - require Cwd; - $git_work_tree = Cwd::cwd(); -} - -my $retry = 1; - -launch_watchman(); - -sub launch_watchman { - - my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j') - or die "open2() failed: $!\n" . - "Falling back to scanning...\n"; - - # In the query expression below we're asking for names of files that - # changed since $time but were not transient (ie created after - # $time but no longer exist). - # - # 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. - - my $query = <<" END"; - ["query", "$git_work_tree", { - "since": $time, - "fields": ["name"] - }] - END - - open (my $fh, ">", ".git/watchman-query.json"); - print $fh $query; - close $fh; - - print CHLD_IN $query; - close CHLD_IN; - my $response = do {local $/; <CHLD_OUT>}; - - open ($fh, ">", ".git/watchman-response.json"); - print $fh $response; - close $fh; - - die "Watchman: command returned no output.\n" . - "Falling back to scanning...\n" if $response eq ""; - die "Watchman: command returned invalid output: $response\n" . - "Falling back to scanning...\n" unless $response =~ /^\{/; - - my $json_pkg; - eval { - require JSON::XS; - $json_pkg = "JSON::XS"; - 1; - } or do { - require JSON::PP; - $json_pkg = "JSON::PP"; - }; - - my $o = $json_pkg->new->utf8->decode($response); - - if ($retry > 0 and $o->{error} and $o->{error} =~ m/unable to resolve root .* directory (.*) is not watched/) { - print STDERR "Adding '$git_work_tree' to watchman's watch list.\n"; - $retry--; - qx/watchman watch "$git_work_tree"/; - die "Failed to make watchman watch '$git_work_tree'.\n" . - "Falling back to scanning...\n" if $? != 0; - - # Watchman will always return all files on the first query so - # return the fast "everything is dirty" flag to git and do the - # Watchman query just to get it over with now so we won't pay - # the cost in git to look up each individual file. - - open ($fh, ">", ".git/watchman-output.out"); - print "/\0"; - close $fh; - - print "/\0"; - eval { launch_watchman() }; - exit 0; - } - - die "Watchman: $o->{error}.\n" . - "Falling back to scanning...\n" if $o->{error}; - - open ($fh, ">", ".git/watchman-output.out"); - binmode $fh, ":utf8"; - print $fh @{$o->{files}}; - close $fh; - - binmode STDOUT, ":utf8"; - local $, = "\0"; - print @{$o->{files}}; -} diff --git a/third_party/git/t/t7519/fsmonitor-watchman-v2 b/third_party/git/t/t7519/fsmonitor-watchman-v2 deleted file mode 100755 index 14ed0aa42de0..000000000000 --- a/third_party/git/t/t7519/fsmonitor-watchman-v2 +++ /dev/null @@ -1,173 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; -use IPC::Open2; - -# An example hook script to integrate Watchman -# (https://facebook.github.io/watchman/) with git to speed up detecting -# new and modified files. -# -# The hook is passed a version (currently 2) and last update token -# formatted as a string and outputs to stdout a new update token and -# all files that have been modified since the update token. 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-watchman" and set -# 'git config core.fsmonitor .git/hooks/query-watchman' -# -my ($version, $last_update_token) = @ARGV; - -# Uncomment for debugging -# print STDERR "$0 $version $last_update_token\n"; - -# Check the hook interface version -if ($version ne 2) { - die "Unsupported query-fsmonitor hook version '$version'.\n" . - "Falling back to scanning...\n"; -} - -my $git_work_tree = get_working_dir(); - -my $retry = 1; - -my $json_pkg; -eval { - require JSON::XS; - $json_pkg = "JSON::XS"; - 1; -} or do { - require JSON::PP; - $json_pkg = "JSON::PP"; -}; - -launch_watchman(); - -sub launch_watchman { - my $o = watchman_query(); - if (is_work_tree_watched($o)) { - output_result($o->{clock}, @{$o->{files}}); - } -} - -sub output_result { - my ($clockid, @files) = @_; - - # Uncomment for debugging watchman output - # open (my $fh, ">", ".git/watchman-output.out"); - # binmode $fh, ":utf8"; - # print $fh "$clockid\n@files\n"; - # close $fh; - - binmode STDOUT, ":utf8"; - print $clockid; - print "\0"; - local $, = "\0"; - print @files; -} - -sub watchman_clock { - my $response = qx/watchman clock "$git_work_tree"/; - die "Failed to get clock id on '$git_work_tree'.\n" . - "Falling back to scanning...\n" if $? != 0; - - return $json_pkg->new->utf8->decode($response); -} - -sub watchman_query { - my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') - or die "open2() failed: $!\n" . - "Falling back to scanning...\n"; - - # In the query expression below we're asking for names of files that - # changed since $last_update_token but not from the .git folder. - # - # 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. Then we're using the "expression" term to - # further constrain the results. - if (substr($last_update_token, 0, 1) eq "c") { - $last_update_token = "\"$last_update_token\""; - } - my $query = <<" END"; - ["query", "$git_work_tree", { - "since": $last_update_token, - "fields": ["name"], - "expression": ["not", ["dirname", ".git"]] - }] - END - - # Uncomment for debugging the watchman query - # open (my $fh, ">", ".git/watchman-query.json"); - # print $fh $query; - # close $fh; - - print CHLD_IN $query; - close CHLD_IN; - my $response = do {local $/; <CHLD_OUT>}; - - # Uncomment for debugging the watch response - # open ($fh, ">", ".git/watchman-response.json"); - # print $fh $response; - # close $fh; - - die "Watchman: command returned no output.\n" . - "Falling back to scanning...\n" if $response eq ""; - die "Watchman: command returned invalid output: $response\n" . - "Falling back to scanning...\n" unless $response =~ /^\{/; - - return $json_pkg->new->utf8->decode($response); -} - -sub is_work_tree_watched { - my ($output) = @_; - my $error = $output->{error}; - if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { - $retry--; - my $response = qx/watchman watch "$git_work_tree"/; - die "Failed to make watchman watch '$git_work_tree'.\n" . - "Falling back to scanning...\n" if $? != 0; - $output = $json_pkg->new->utf8->decode($response); - $error = $output->{error}; - die "Watchman: $error.\n" . - "Falling back to scanning...\n" if $error; - - # Uncomment for debugging watchman output - # open (my $fh, ">", ".git/watchman-output.out"); - # close $fh; - - # Watchman will always return all files on the first query so - # return the fast "everything is dirty" flag to git and do the - # Watchman query just to get it over with now so we won't pay - # the cost in git to look up each individual file. - my $o = watchman_clock(); - $error = $output->{error}; - - die "Watchman: $error.\n" . - "Falling back to scanning...\n" if $error; - - output_result($o->{clock}, ("/")); - $last_update_token = $o->{clock}; - - eval { launch_watchman() }; - return 0; - } - - die "Watchman: $error.\n" . - "Falling back to scanning...\n" if $error; - - return 1; -} - -sub get_working_dir { - my $working_dir; - if ($^O =~ 'msys' || $^O =~ 'cygwin') { - $working_dir = Win32::GetCwd(); - $working_dir =~ tr/\\/\//; - } else { - require Cwd; - $working_dir = Cwd::cwd(); - } - - return $working_dir; -} |