diff options
author | Nicolas Pitre <nico@cam.org> | 2007-07-12 03:40:18 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-07-12 14:18:15 -0700 |
commit | 750bd6ac350079cf1f76c24acb7686ad89a95102 (patch) | |
tree | 7e8a525994611690960eb60fc0b49d4958edc564 /contrib | |
parent | c83f032e09e49e5bc60686663f7c78d36f72cef4 (diff) | |
download | git-750bd6ac350079cf1f76c24acb7686ad89a95102.tar.gz git-750bd6ac350079cf1f76c24acb7686ad89a95102.tar.xz |
script to display a distribution of longest common hash prefixes
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>
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/stats/git-common-hash | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/contrib/stats/git-common-hash b/contrib/stats/git-common-hash new file mode 100755 index 000000000..e27fd088b --- /dev/null +++ b/contrib/stats/git-common-hash @@ -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; + } +' |