Escribo un pequeño script que analiza el resultado de git log --stat --pretty=format:'%cN'
; algo a lo largo de las líneas de:
#!/usr/bin/env perl
my %file;
my $contributor = q();
while (<>) {
chomp;
if (/^\S/) {
$contributor = $_;
}
elsif (/^\s*(.*?)\s*\|\s*\d+\s*[+-]+/) {
$file{$1}{$contributor} = 1;
}
}
for my $filename (sort keys %file) {
print "$filename:\n";
for my $contributor (sort keys %{$file{$filename}}) {
print " * $contributor\n";
}
}
(Escrito con la misma rapidez; no cubre casos como archivos binarios.)
Si almacenó este script, por ejemplo, como ~/git-contrib.pl
, que se podría llamar con:
git log --stat=1000,1000 --pretty=format:'%cN' | perl ~/git-contrib.pl
Ventaja: llame al git
solo una vez, lo que implica que es razonablemente rápido. Desventaja: es un script separado.
Esto es rápido pero no informa las rutas completas de archivos. – log0
Si la estructura de su directorio es demasiado profunda para que los nombres de los archivos se corten, simplemente especifique un parámetro de alto ancho de salida arbitrario para la opción '--stat', p. Ej. '--stat = 1000' – igor
' --stat = 1000,1000' hizo el trabajo – log0