NAME

SVN::Dump::Record - A SVN dump record

VERSION

version 0.08

SYNOPSIS

# SVN::Dump::Record objects are returned by the next_record()
# method of SVN::Dump

DESCRIPTION

An SVN::Dump::Record object represents a Subversion dump record.

METHODS

SVN::Dump provides the following gourps of methods:

Record methods

new()

Create a new empty SVN::Dump::Record object.

type()

Return the record type, as guessed from its headers.

The method dies if the record type cannot be determined.

set_header( $h, $v )

Set the header $h to the value $v.

get_header( $h )

Get the value of header $h.

set_property( $p, $v )

Set the property $p to the value $v.

get_property( $p )

Get the value of property $p.

delete_property( @k )

Delete the properties named in @p. Properties that do not exist in the record will be silently ignored.

set_text( $t )

Set the value of the text block.

get_text()

Get the value of the text block.

Inner blocks manipulation

A SVN::Dump::Record is composed of several inner blocks of various kinds: SVN::Dump::Headers, SVN::Dump::Property and SVN::Dump::Text.

The following methods provide access to these blocks:

set_headers_block( $headers )
get_headers_block()

Get or set the SVN::Dump::Headers object that represents the record headers.

set_property_block( $property )
get_property_block()

Get or set the SVN::Dump::Property object that represents the record property block.

delete_property( @keys )

Delete the given properties. Behaves like the builtin delete().

set_text_block( $text )
get_text_block()

Get or set the SVN::Dump::Text object that represents the record text block.

set_included_record( $record )
get_included_record()

Some special record are actually output recursiveley by svnadmin dump. The "record in the record" is stored within the parent record, so they are parsed as a single record with an included record.

get_record() / set_record() give access to the included record.

According to the Subversion sources (subversion/libsvn_repos/dump.c), this is a "delete original, then add-with-history" node. The dump looks like this:

Node-path: tags/mytag/myfile
Node-kind: file
Node-action: delete

Node-path: tags/mytag/myfile
Node-kind: file
Node-action: add
Node-copyfrom-rev: 23
Node-copyfrom-path: trunk/myfile

Note that there is a single blank line after the first header block, and four after the included one.

update_headers()

Update the various ...-length headers. Used internally.

You must call this method if you update the inner property or text blocks directly, or the results of as_string() will be inconsistent.

Information methods

has_prop()

Return a boolean value indicating if the record has a property block.

has_text()

Return a boolean value indicating if the record has a text block.

has_prop_only()

Return a boolean value indicating if the record has only a property block (and no text block).

has_prop_or_text()

Return a boolean value indicating if the record has a property block or a text block.

property_length()

Return the length of the property block.

text_length()

Return the length of the text block.

Output method

as_string()

Return a string representation of the record that will be understood by other Subversion tools, such as svnadmin.

Warning: dumping a record currently returns the information that was read from the original dump. This means that if you modified the property or text block of a record, the headers will be inconsistent.

ENCAPSULATION

When using SVN::Dump to manipulate a SVN dump, one should not access the SVN::Dump::Headers, SVN::Dump::Property and SVN::Dump::Text components of a SVN::Dump::Record object directly, but use the appropriate set_...() and get_...() methods of the record object.

These methods compute the appropriate modifications of the header values, so that the as_string() method outputs the correct information after any modification of the record.

SEE ALSO

SVN::Dump, SVN::Dump::Reader, SVN::Dump::Headers, SVN::Dump::Property, SVN::Dump::Text.

COPYRIGHT

Copyright 2006-2013 Philippe Bruhat (BooK), All Rights Reserved.

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.