]> git.ipfire.org Git - thirdparty/git.git/blame - contrib/stats/git-common-hash
entry: check for fstat() errors after checkout
[thirdparty/git.git] / contrib / stats / git-common-hash
CommitLineData
750bd6ac
NP
1#!/bin/sh
2
3# This script displays the distribution of longest common hash prefixes.
4# This can be used to determine the minimum prefix length to use
5# for object names to be unique.
6
7git rev-list --objects --all | sort | perl -lne '
8 substr($_, 40) = "";
9 # uncomment next line for a distribution of bits instead of hex chars
10 # $_ = unpack("B*",pack("H*",$_));
11 if (defined $p) {
12 ($p ^ $_) =~ /^(\0*)/;
13 $common = length $1;
14 if (defined $pcommon) {
15 $count[$pcommon > $common ? $pcommon : $common]++;
16 } else {
17 $count[$common]++; # first item
18 }
19 }
20 $p = $_;
21 $pcommon = $common;
22 END {
23 $count[$common]++; # last item
24 print "$_: $count[$_]" for 0..$#count;
25 }
26'