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>
		
			
				
	
	
		
			27 lines
		
	
	
		
			708 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			708 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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;
 | 
						|
  }
 | 
						|
'
 |