From: Eric Wong Date: Wed, 31 Jan 2007 13:13:30 +0000 (-0800) Subject: git-svn: avoid a huge memory spike with high-numbered revisions X-Git-Tag: v1.5.1-rc1~202 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=47a0b75e01876b6e138d78c9504eebedd45c1283;p=git.git git-svn: avoid a huge memory spike with high-numbered revisions Passing very large strings as arguments is bad for memory usage as it never seems to get freed in Perl. The .rev_db format is already not optimized for projects with sparse history. Signed-off-by: Eric Wong --- diff --git a/git-svn.perl b/git-svn.perl index efc551566..ddb038260 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -1345,8 +1345,9 @@ sub rev_db_set { seek $fh, 0, 2 or croak $!; my $pos = tell $fh; if ($pos < $offset) { - print $fh (('0' x 40),"\n") x (($offset - $pos) / 41) - or croak $!; + for (1 .. (($offset - $pos) / 41)) { + print $fh (('0' x 40),"\n") or croak $!; + } } seek $fh, $offset, 0 or croak $!; print $fh $commit,"\n" or croak $!;