summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c83f032)
raw | patch | inline | side by side (parent: c83f032)
author | Nicolas Pitre <nico@cam.org> | |
Thu, 12 Jul 2007 07:40:18 +0000 (03:40 -0400) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Thu, 12 Jul 2007 21:18:15 +0000 (14:18 -0700) |
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>
Randal L. Schwartz <merlyn@stonehenge.com>.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/stats/git-common-hash | [new file with mode: 0755] | patch | blob |
diff --git a/contrib/stats/git-common-hash b/contrib/stats/git-common-hash
--- /dev/null
@@ -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;
+ }
+'