mirror of
https://github.com/git/git.git
synced 2024-11-29 21:15:15 +08:00
27 lines
708 B
Plaintext
27 lines
708 B
Plaintext
|
#!/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;
|
||
|
}
|
||
|
'
|