Skip to content

Commit

Permalink
script to display a distribution of longest common hash prefixes
Browse files Browse the repository at this point in the history
This script was originally posted on the git mailing list by
Randal L. Schwartz <merlyn@stonehenge.com>.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Nicolas Pitre authored and Junio C Hamano committed Jul 12, 2007
1 parent c83f032 commit 750bd6a
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions contrib/stats/git-common-hash
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/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;
}
'

0 comments on commit 750bd6a

Please sign in to comment.