vcs-svn: read inline data from deltas
authorJonathan Nieder <jrnieder@gmail.com>
Wed, 13 Oct 2010 09:35:59 +0000 (04:35 -0500)
committerJonathan Nieder <jrnieder@gmail.com>
Mon, 28 Mar 2011 03:51:00 +0000 (22:51 -0500)
commitfc4ae43b2cbd53da6ac2a0047fb4e53175921696
treea957c8604baf066e5cc5eb0c8f3f085ee1d10bcf
parentbcd254621f9a98794cdc32906db10af7135824c4
vcs-svn: read inline data from deltas

Each window of an svndiff0-format delta includes a section for novel
text to be copied to the postimage (in the order it appears in the
window, possibly interspersed with other data).

Slurp in this data when encountering it.  It is not actually necessary
to do so --- it would be just as easy to copy from delta to output
as part of interpreting the relevant instructions --- but this way,
the code that interprets svndiff0 instructions can proceed very
quickly because it does not require I/O.

Subversion's svndiff0 parser rejects deltas that do not consume all
the novel text that was provided.  Omit that check for now so we can
test the new functionality right away, rather than waiting to learn
instructions that consume data.

Do check for truncated data sections.  Subversion's parser rejects
deltas that end in the middle of a declared novel-text section, so it
should be safe for us to reject them, too.

Improved-by: Ramkumar Ramachandra <artagnon@gmail.com>
Improved-by: David Barr <david.barr@cordelta.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Ramkumar Ramachandra <artagnon@gmail.com>
t/t9011-svn-da.sh
vcs-svn/svndiff.c