ubuntu command-line – ¿Obteniendo tamaños de confirmación en Git?

Pregunta:

¿Hay alguna forma de averiguar cuánto espacio utilizó cada confirmación? Si presiono después de cada confirmación, veré cuántos datos se envían. Ésta es una forma de estimarlo. Pero debe haber una forma mejor.

La solución aceptada me da el siguiente resultado:

$ ./git-commit-sizes 
1494 40eb8832156be81711f3816f04031cf3b8ef16b0 2
0 fbfb9f4c1f7ae403b9d8b4e194e384c6c41283ad 2
1961638 35e59833bad00edff2c5e8600eb4e62251606556 23
0 49cffee125318113d5dbe6f81e4ce12dcc07263d 2

Cada línea representa un compromiso, dando tres información:

bytes usados, nombre sha1, archivos cambiados

Respuesta:

Aquí hay un script de perl para determinar el tamaño de cada confirmación de Git:

La fuente está aquí , he agregado una modificación:

#!/usr/bin/perl
foreach my $rev (`git rev-list --all --pretty=oneline`) {
  my $tot = 0;
  ($sha = $rev) =~ s/\s.*$//;
  foreach my $blob (`git diff-tree -r -c -M -C --no-commit-id $sha`) {
    $blob = (split /\s/, $blob)[3];
    next if $blob == "0000000000000000000000000000000000000000"; # Deleted
    my $size = `echo $blob | git cat-file --batch-check`;
    $size = (split /\s/, $size)[2];
    $tot += int($size);
  }
  my $revn = substr($rev, 0, 40);
#  if ($tot > 1000000) {
    print "$tot $revn " . `git show --pretty="format:" --name-only $revn | wc -l`  ;
#  }
}

Inicie el script en su repositorio de git.

<path_to_script>/commit-size | awk '/\s80973c0/ {print $1 " bytes"}'  80973c0

Mi ejemplo:

± commit-size | awk '/\se920f35/ {print $1 " bytes"}'  
546 bytes

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım