perl: make Git::IndexInfo work with SHA-256
Most of the Git modules, git-svn excepted, don't know anything about the hash algorithm and mostly work. However, when we're printing an all-zero object ID in Git::IndexInfo, we need to know the hash length. Since we don't want to change the API to have that information passed in, let's query the config to find the hash algorithm and compute the right value. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Acked-by: Eric Wong <e@80x24.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
		
				
					committed by
					
						
						Junio C Hamano
					
				
			
			
				
	
			
			
			
						parent
						
							9ab33150a0
						
					
				
				
					commit
					ff508e227c
				
			@ -5,13 +5,15 @@ use Git qw/command_input_pipe command_close_pipe/;
 | 
			
		||||
 | 
			
		||||
sub new {
 | 
			
		||||
	my ($class) = @_;
 | 
			
		||||
	my $hash_algo = Git::config('extensions.objectformat') || 'sha1';
 | 
			
		||||
	my ($gui, $ctx) = command_input_pipe(qw/update-index -z --index-info/);
 | 
			
		||||
	bless { gui => $gui, ctx => $ctx, nr => 0}, $class;
 | 
			
		||||
	bless { gui => $gui, ctx => $ctx, nr => 0, hash_algo => $hash_algo}, $class;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub remove {
 | 
			
		||||
	my ($self, $path) = @_;
 | 
			
		||||
	if (print { $self->{gui} } '0 ', 0 x 40, "\t", $path, "\0") {
 | 
			
		||||
	my $length = $self->{hash_algo} eq 'sha256' ? 64 : 40;
 | 
			
		||||
	if (print { $self->{gui} } '0 ', 0 x $length, "\t", $path, "\0") {
 | 
			
		||||
		return ++$self->{nr};
 | 
			
		||||
	}
 | 
			
		||||
	undef;
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user