summaryrefslogtreecommitdiff
path: root/t/lib-git-svn.sh
diff options
context:
space:
mode:
authorbrian m. carlson <sandals@crustytoothpaste.net>2020-06-22 18:04:11 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-06-22 18:21:07 (GMT)
commit148f193d16e3ca02b5ea2b72b5f069e722ac4a30 (patch)
tree9164ec0ff62bdba05ab2420f2ba3171c665c8c49 /t/lib-git-svn.sh
parent3e04b6e1b672a2b38b1e2a7094bcc600e76959b1 (diff)
downloadgit-148f193d16e3ca02b5ea2b72b5f069e722ac4a30.zip
git-148f193d16e3ca02b5ea2b72b5f069e722ac4a30.tar.gz
git-148f193d16e3ca02b5ea2b72b5f069e722ac4a30.tar.bz2
t/lib-git-svn: make hash size independent
The record size used in the git svn storage is four bytes plus the length of the binary hash. Pass the hash length into our Perl invocation and use it to compute the size of the records. 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>
Diffstat (limited to 't/lib-git-svn.sh')
-rw-r--r--t/lib-git-svn.sh17
1 files changed, 10 insertions, 7 deletions
diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
index 7d248e6..547eb3c 100644
--- a/t/lib-git-svn.sh
+++ b/t/lib-git-svn.sh
@@ -78,21 +78,24 @@ maybe_start_httpd () {
}
convert_to_rev_db () {
- perl -w -- - "$@" <<\EOF
+ perl -w -- - "$(test_oid rawsz)" "$@" <<\EOF
use strict;
+my $oidlen = shift;
@ARGV == 2 or die "usage: convert_to_rev_db <input> <output>";
+my $record_size = $oidlen + 4;
+my $hexlen = $oidlen * 2;
open my $wr, '+>', $ARGV[1] or die "$!: couldn't open: $ARGV[1]";
open my $rd, '<', $ARGV[0] or die "$!: couldn't open: $ARGV[0]";
my $size = (stat($rd))[7];
-($size % 24) == 0 or die "Inconsistent size: $size";
-while (sysread($rd, my $buf, 24) == 24) {
- my ($r, $c) = unpack('NH40', $buf);
- my $offset = $r * 41;
+($size % $record_size) == 0 or die "Inconsistent size: $size";
+while (sysread($rd, my $buf, $record_size) == $record_size) {
+ my ($r, $c) = unpack("NH$hexlen", $buf);
+ my $offset = $r * ($hexlen + 1);
seek $wr, 0, 2 or die $!;
my $pos = tell $wr;
if ($pos < $offset) {
- for (1 .. (($offset - $pos) / 41)) {
- print $wr (('0' x 40),"\n") or die $!;
+ for (1 .. (($offset - $pos) / ($hexlen + 1))) {
+ print $wr (('0' x $hexlen),"\n") or die $!;
}
}
seek $wr, $offset, 0 or die $!;