Вот скрипт perl, который выводит команды git diff для данного файла, как это указано в команде git log.
, например
git log pom.xml | perl gldiff.pl 3 pom.xml
Урожайность:
git diff 5cc287:pom.xml e8e420:pom.xml
git diff 3aa914:pom.xml 7476e1:pom.xml
git diff 422bfd:pom.xml f92ad8:pom.xml
, который можно затем вырезать N, вставить в сеанс окна оболочки или передать в /bin/sh.
Примечания:
- число (в данном случае 3) указывает, сколько строк вывести
- файл (в данном случае pom.xml) должен согласовываться в обоих местах (вы можете заключить его в функцию оболочки, чтобы обеспечить одинаковый файл в обоих местах) или поместить его в папку bin в качестве сценария оболочки
Код:
# gldiff.pl
use strict;
my $max = shift;
my $file = shift;
die "not a number" unless $max =~ m/\d+/;
die "not a file" unless -f $file;
my $count;
my @lines;
while (<>) {
chomp;
next unless s/^commit\s+(.*)//;
my $commit = $1;
push @lines, sprintf "%s:%s", substr($commit,0,6),$file;
if (@lines == 2) {
printf "git diff %s %s\n", @lines;
@lines = ();
}
last if ++$count >= $max *2;
}