 750bd6ac35
			
		
	
	750bd6ac35
	
	
	
		
			
			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;
 | |
|   }
 | |
| '
 |