git-svnを使用してSubversionから移行しようとしています。
今、私はの失敗によってブロックされています
$ git svn fetch
Git.pmの900行目で失敗します(git-svnパッケージから)
...
my $read = read($in, $blob, $bytesToReadd);
cat_blob()と呼ばれるサブで問題は、ファイルが2567089913バイトであり、git-svnが2147484672に達すると、「文字列外のオフセット」というメッセージでチョークします。cat_blobは、ファイルをディスクに書き込む前に、ファイル全体を変数に保持しようとします。
ファイルの書き込みをサブの終わりから読み取りループの内側に移動してみました。
(これが私の変更されたコードがどのように見えるかです)
890 my $size = $1;
891
892 my $blob;
893 my $bytesRead = 0;
894
895 while (1) {
896 my $bytesLeft = $size - $bytesRead;
897 last unless $bytesLeft;
898
899 my $bytesToRead = $bytesLeft < 1024 ? $bytesLeft : 1024;
900 print $size, " ", $bytesLeft, " ", $bytesRead, "\n";
901 my $read = read($in, $blob, $bytesToReadd);
902 unless (defined($read)) {
903 $self->_close_cat_blob();
904 throw Error::Simple("in pipe went bad");
905 unless (print $fh $blob) {
906 $self->_close_cat_blob();
907 throw Error::Simple("couldn't write to passed in filehandle");
908 }
909
910 }
911
912 $bytesRead += $read;
913 }
しかし今、私は新しいエラーを受け取ります:
Checksum mismatch: root/Instruments/MY_DIR/MASSIVE_FILE.exe bca43a9cb6c3b7fdb76c460781eb410a34b6b9ec
expected: 52daf59b450b82a541e782dbfb803a32
got: d41d8cd98f00b204e9800998ecf8427e
私はPerlの人ではありません。perlはそこの印刷ステートメントに余分ながらくたを入れますか?チェックサムに合格する方法はありますか?