#!/bin/sh # git-touch - timestamp files by their last touching Git commit date # from Andreas Schwab, <87bo0olebe.fsf@igel.home>, $gmane/239150 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$_"; } }'