Skip to content

Commit

Permalink
perl: make Git::IndexInfo work with SHA-256
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
bk2204 authored and gitster committed Jun 22, 2020
1 parent 9ab3315 commit ff508e2
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions perl/Git/IndexInfo.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit ff508e2

Please sign in to comment.