3 # Show all projects' pack counts (how many .pack files)
4 # Use "show-pack-counts.pl --sorted" to see in pack count order
5 # Use the --objects option to show pack object counts instead of pack counts
16 $sorted=1, shift if @ARGV && $ARGV[0] eq '--sorted';
17 $objcounts = 1, shift if @ARGV && $ARGV[0] eq '--objects';
18 $sorted=1, shift if @ARGV && $ARGV[0] eq '--sorted';
19 my @projects = Girocco
::Project
::get_full_list
;
20 my $lpbin = $Girocco::Config
::basedir
. "/bin/list_packs";
21 my $prjroot = $Girocco::Config
::reporoot
;
22 my @lpcmd = ($lpbin, "--exclude-no-idx");
23 push(@lpcmd, $objcounts ?
"--count-objects" : "--count");
25 select((select(STDOUT
),$|=1)[0]) unless $sorted;
27 sub count_proj_packs
{
29 my $pd = $prjroot . "/" . $projname . ".git/objects/pack";
30 -d
$pd or warn("no such project (anymore) $projname\n"), return undef;
31 open LPCMD
, '-|', @lpcmd, $pd or
32 warn("failed to run list_packs for project $projname\n"), return undef;
37 warn("list_packs produced invalid output for project $projname\n"), return undef;
43 foreach my $proj (@projects) {
44 my $c = count_proj_packs
($proj);
45 next unless defined($c);
49 printf "%s\t%s\n", $proj, $c;
55 my $order = $counts{$b} <=> $counts{$a};
56 $order or $order = lc($a) cmp lc($b);
60 foreach my $proj (sort($sortsub keys(%counts))) {
61 printf "%s\t%s\n", $proj, $counts{$proj};