From: Andreas Schwab Date: Tue, 10 Dec 2013 19:02:29 GMT Subject: Re: Setting file timestamps to commit time (git-checkout) Message-ID: <87bo0olebe.fsf@igel.home> In-Reply-To: <20131210083531.GB4087@linux.vnet.ibm.com> Dominik Vogt writes: > The second best approach I could think of is to stamp files with the > timestamp of the last commit that touched that, but I guess that is > not a cheap operation either. I'm using this script for this: #!/bin/sh git log --name-only --format=format:%n%ct -- "$@" | perl -e 'my $do_date = 0; chomp(my $cdup = `git rev-parse --show-cdup`); while (<>) { chomp; if ($do_date) { next if ($_ eq ""); die "Unexpected $_\n" unless /^[0-9]+$/; $d = $_; $do_date = 0; } elsif ($_ eq "") { $do_date = 1; } elsif (!defined($seen{$_})) { $seen{$_} = 1; utime $d, $d, "$cdup$_"; } }' Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."