diff options
author | Wayne Davison <wayned@samba.org> | 2019-03-15 12:20:55 -0700 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2019-03-15 12:20:55 -0700 |
commit | bdfc296faf29dd7354a4b8b6a252bba84d43abf1 (patch) | |
tree | b9174f796dec0de02322d8e06d3d88696bd97149 /support/git-set-file-times | |
parent | 2ad1c4e800d00244932b028c6c01e7d4090ce367 (diff) | |
download | rsync-bdfc296faf29dd7354a4b8b6a252bba84d43abf1.tar.gz |
Handle a run from down inside the checkout tree.
Diffstat (limited to 'support/git-set-file-times')
-rwxr-xr-x | support/git-set-file-times | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/support/git-set-file-times b/support/git-set-file-times index 077ac0e0..53550b74 100755 --- a/support/git-set-file-times +++ b/support/git-set-file-times @@ -11,8 +11,14 @@ my %ls; my $commit_time; my $prefix = @ARGV && $ARGV[0] =~ s/^--prefix=// ? shift : ''; +my $top_dir = `git rev-parse --show-toplevel`; +exit 1 unless $top_dir; +chomp($top_dir); + +chdir $top_dir or die "Failed to chdir to $top_dir\: $!\n"; + $/ = "\0"; -open FH, 'git ls-files -z|' or die $!; +open FH, '-|', qw( git ls-files -z ) or die "Failed to fork: $!"; while (<FH>) { chomp; $ls{$_} = $_; @@ -20,12 +26,12 @@ while (<FH>) { close FH; $/ = "\n"; -open FH, "git log -r --name-only --no-color --pretty=raw -z @ARGV |" or die $!; +open FH, '-|', qw( git log -r --name-only --no-color --pretty=raw -z ), @ARGV or die "Failed to fork: $!"; while (<FH>) { chomp; if (/^committer .*? (\d+) (?:[\-\+]\d+)$/) { $commit_time = $1; - } elsif (s/\0\0commit [a-f0-9]{40}$// or s/\0$//) { + } elsif (s/\0\0commit [a-f0-9]{40}$// || s/\0$//) { my @files = delete @ls{split(/\0/, $_)}; @files = grep { defined $_ } @files; next unless @files; |