git find fat commit

后端 未结 7 1513
借酒劲吻你
借酒劲吻你 2020-12-01 04:03

Is it possible to get info about how much space is wasted by changes in every commit — so I can find commits which added big files or a lot of files. This is all to try to r

相关标签:
7条回答
  • 2020-12-01 04:55

    All of the solutions provided here focus on file sizes but the original question asked was about commit sizes, which in my opinion, and in my case in point, was more important to find (because what I wanted is to get rid of many small binaries introduced in a single commit, which summed up accounted for a lot of size, but small size if measured individually by file).

    A solution that focuses on commit sizes is the provided here, which is this perl script:

    #!/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`  ;
    #  }
    }
    

    And which I call like this:

    ./git-commit-sizes.pl | sort -n -k 1
    
    0 讨论(0)
提交回复
热议问题