 ff508e227c
			
		
	
	ff508e227c
	
	
	
		
			
			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>
		
			
				
	
	
		
			36 lines
		
	
	
		
			797 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			797 B
		
	
	
	
		
			Perl
		
	
	
	
	
	
| package Git::IndexInfo;
 | |
| use strict;
 | |
| use warnings;
 | |
| 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, hash_algo => $hash_algo}, $class;
 | |
| }
 | |
| 
 | |
| sub remove {
 | |
| 	my ($self, $path) = @_;
 | |
| 	my $length = $self->{hash_algo} eq 'sha256' ? 64 : 40;
 | |
| 	if (print { $self->{gui} } '0 ', 0 x $length, "\t", $path, "\0") {
 | |
| 		return ++$self->{nr};
 | |
| 	}
 | |
| 	undef;
 | |
| }
 | |
| 
 | |
| sub update {
 | |
| 	my ($self, $mode, $hash, $path) = @_;
 | |
| 	if (print { $self->{gui} } $mode, ' ', $hash, "\t", $path, "\0") {
 | |
| 		return ++$self->{nr};
 | |
| 	}
 | |
| 	undef;
 | |
| }
 | |
| 
 | |
| sub DESTROY {
 | |
| 	my ($self) = @_;
 | |
| 	command_close_pipe($self->{gui}, $self->{ctx});
 | |
| }
 | |
| 
 | |
| 1;
 |