]>
Commit | Line | Data |
---|---|---|
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 | ||
7 | git 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 | ' |