diff options
author | Eric Wong <normalperson@yhbt.net> | 2007-05-27 15:59:01 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-05-28 23:49:47 -0700 |
commit | 7faf068660f0a060066ccbc80f7debbba6bc2d76 (patch) | |
tree | f055519f56aa19fb3ea91d9c95a3cec917d2e1e3 | |
parent | Fix stupid typo in lookup_tag() (diff) | |
download | tgif-7faf068660f0a060066ccbc80f7debbba6bc2d76.tar.xz |
git-svn: avoid md5 calculation entirely if SVN doesn't provide one
There's no point in calculating an MD5 if we're not going to use
it. We'll also avoid the possibility of there being a bug in the
Perl MD5 library not being able to handle zero-sized files.
This is a followup to 20b3d206acbbb042c7ad5f42d36ff8d036a538c5,
which allows us to track repositories that do not provide MD5
checksums.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rwxr-xr-x | git-svn.perl | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/git-svn.perl b/git-svn.perl index fa46236ae8..e35006142a 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -2472,12 +2472,16 @@ sub close_file { my $hash; my $path = $self->git_path($fb->{path}); if (my $fh = $fb->{fh}) { - seek($fh, 0, 0) or croak $!; - my $md5 = Digest::MD5->new; - $md5->addfile($fh); - my $got = $md5->hexdigest; - die "Checksum mismatch: $path\n", - "expected: $exp\n got: $got\n" if (defined $exp && $got ne $exp); + if (defined $exp) { + seek($fh, 0, 0) or croak $!; + my $md5 = Digest::MD5->new; + $md5->addfile($fh); + my $got = $md5->hexdigest; + if ($got ne $exp) { + die "Checksum mismatch: $path\n", + "expected: $exp\n got: $got\n"; + } + } sysseek($fh, 0, 0) or croak $!; if ($fb->{mode_b} == 120000) { sysread($fh, my $buf, 5) == 5 or croak $!; |