| #!/bin/sh |
| |
| # This script displays the distribution of longest common hash prefixes. |
| # This can be used to determine the minimum prefix length to use |
| # for object names to be unique. |
| |
| git rev-list --objects --all | sort | perl -lne ' |
| substr($_, 40) = ""; |
| # uncomment next line for a distribution of bits instead of hex chars |
| # $_ = unpack("B*",pack("H*",$_)); |
| if (defined $p) { |
| ($p ^ $_) =~ /^(\0*)/; |
| $common = length $1; |
| if (defined $pcommon) { |
| $count[$pcommon > $common ? $pcommon : $common]++; |
| } else { |
| $count[$common]++; # first item |
| } |
| } |
| $p = $_; |
| $pcommon = $common; |
| END { |
| $count[$common]++; # last item |
| print "$_: $count[$_]" for 0..$#count; |
| } |
| ' |