Voici un script Perl qui imprime les commandes Git diff pour un fichier donné tel que trouvé dans une commande Git log.
Par exemple
git log pom.xml | perl gldiff.pl 3 pom.xml
Rendement :
git diff 5cc287:pom.xml e8e420:pom.xml
git diff 3aa914:pom.xml 7476e1:pom.xml
git diff 422bfd:pom.xml f92ad8:pom.xml
qui pourrait ensuite être coupé et collé dans une session de fenêtre shell ou envoyé par pipeline à l'adresse suivante /bin/sh
.
Notes :
- le nombre (3 dans ce cas) indique le nombre de lignes à imprimer
- le fichier (pom.xml dans ce cas) doit correspondre aux deux endroits (vous pourriez l'envelopper dans une fonction shell pour fournir le même fichier aux deux endroits) ou le mettre dans un répertoire binaire comme un script shell
Code :
# 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;
}
3 votes
Si vous devez le faire dans GitHub - Vérifiez ceci