Parse::SVNDiff - Subversion binary diff format parser
This document describes version 0.03 of Parse::SVNDiff, released July 24, 2005.
use Parse::SVNDiff; $diff = Parse::SVNDiff->new; $diff->parse($raw_svndiff); $raw_svndiff = $diff->dump; $target_text = $diff->apply($source_text); $diff->apply_fh($source_fh, $target_fh);
This module implements a parser and a dumper for Subversion's svndiff binary diff format. The API is still subject to change in the next few versions.
If you pass the lazy option to the constructor;
$diff = Parse::SVNDiff->new( lazy => 1 );
Then the module does not actually parse the diff until you either dump it or apply it to something.
Note that Lazy Diffs are so lazy that they also forget their contents after a apply or dump so can't be applied twice. This is under the assumption that if you're doing it lazy, you're probably only going to want to do one of those.
apply
dump
You can also make individual data windows lazy load parts of themselves; it remains to be seen whether this will see a new performance improvement or degradation. The option is;
$diff = Parse::SVNDiff->new( lazy => 1, lazy_windows => 1, );
Currently you can't use lazy_windows unless the input stream to ->parse() is seekable.
lazy_windows
->parse()
Each window specifies a "source" offset that is from the beginning of the file, not a relative position from its last position. It would be much better if that was the case, as well as it not being allowed to be negative. That way, the "source" data stream would be able to be a stream and not a seekable file.
This means two things;
The "source" filehandle in apply_fh() must permit seeking
apply_fh()
Very large window sizes are not currently treated in a lazy fashion; each window is processed in a chunk. This limitation is just a matter of getting more tuits to handle large chunk sizes properly, however.
Sam Vilain <samv@cpan.org>
Autrijus Tang <autrijus@autrijus.org>
Copyright 2005, Sam Vilain.
Original version
Copyright 2004 by Autrijus Tang <autrijus@autrijus.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html
To install Parse::SVNDiff, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Parse::SVNDiff
CPAN shell
perl -MCPAN -e shell install Parse::SVNDiff
For more information on module installation, please visit the detailed CPAN module installation guide.