Thread (31 messages) flat view 31 messages, 2 authors, 2020-06-22
STALE2266d

Revision v1 of 2 in this series.

Revisions (2)
  1. v1 current
  2. v2 [diff vs current]

[PATCH 07/14] t/lib-git-svn: make hash size independent

From: brian m. carlson <hidden>
Date: 2020-06-19 22:51:41
Subsystem: the rest · Maintainer: Linus Torvalds

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 <redacted>
---
 t/lib-git-svn.sh | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
index 7d248e6588..4780b45337 100644
--- a/t/lib-git-svn.sh
+++ b/t/lib-git-svn.sh
@@ -78,29 +78,30 @@ maybe_start_httpd () {
 }
 
 convert_to_rev_db () {
-	perl -w -- - "$@" <<\EOF
-use strict;
+	perl -w -e "use strict; my \$oidlen = $(test_oid rawsz);" -e '
 @ARGV == 2 or die "usage: convert_to_rev_db <input> <output>";
-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 $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 $!;
 	print $wr $c,"\n" or die $!;
 }
 close $wr or die $!;
-close $rd or die $!;
-EOF
+close $rd or die $!;' \
+	-- "$@"
 }
 
 require_svnserve () {
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help