From 90c98cdc39f640a14fb31e330d9297887926283a Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Sat, 17 Nov 2007 10:29:13 -0800 Subject: [PATCH] Adding a support script that can be used to make the checked-out file-times of an initial clone nicer. --- support/git-set-file-times | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 support/git-set-file-times diff --git a/support/git-set-file-times b/support/git-set-file-times new file mode 100755 index 00000000..9ddef25f --- /dev/null +++ b/support/git-set-file-times @@ -0,0 +1,34 @@ +#!/usr/bin/perl -w +use strict; + +# Sets mtime and atime of files to the latest commit time in git. +# +# This is useful after the first clone of the rsync repository BEFORE you +# do any building. It is also safe if you have done a "make distclean". + +my %ls; +my $commit_time; + +$/ = "\0"; +open FH, 'git ls-files -z|' or die $!; +while () { + chomp; + $ls{$_} = $_; +} +close FH; + +$/ = "\n"; +open FH, "git log -r --name-only --no-color --pretty=raw -z @ARGV |" or die $!; +while () { + chomp; + if (/^committer .*? (\d+) (?:[\-\+]\d+)$/) { + $commit_time = $1; + } elsif (s/\0\0commit [a-f0-9]{40}$// or s/\0$//) { + my @files = delete @ls{split(/\0/, $_)}; + @files = grep { defined $_ } @files; + next unless @files; + utime $commit_time, $commit_time, @files; + } + last unless %ls; +} +close FH; -- 2.34.1