Daizu::Wc::UpdateEditor - Subversion editor for updating database working copies


This Subversion delta editor can be used to receive updates from Subversion and load the new information into Daizu CMS database working copies. For example, to check out data into a fresh, newly created working copy:

    my $editor = Daizu::Wc::UpdateEditor->new(
        cms => $cms,
        db => $db,
        wc_id => $wc_id,
        revnum => $revnum,
        branch_id => $branch_id,
        branch_path => $branch_path,

    my $reporter = $cms->ra->do_update($revnum, $branch_path, 1, $editor);
    $reporter->set_path('', 0, 1, undef);

This should be used inside a database transaction, so that the changes can be rolled back if anything goes wrong.

The methods called by Subversion are described in the documentation for SVN::Delta::Editor.

Directory and file batons are a reference to a hash containing the following values:


ID number of their entry in the wc_file table.


Relative to branch root (same as 'path' value in wc_file table).


If the property 'svn:mime-type' has been set on this file, then this will be the value of it, otherwise undef.


If this is a file and apply_textdelta() has been called on it, there is also a string which will hold the data of the file. It is put in the database when close_file() is called. Otherwise this will be undef.


A reference to a hash of all properties set or deleted while the baton was open. It will be undef if no properties have been changed. Used during close_file() and close_directory() to call custom property loaders if appropriate.


True if the content or any properties of a file have been updated. This is used when the file or directory is closed to determine whether the 'modified_at' timestamp should be set.


True if the file or directory was added anew rather than opened.

The file/directory batons are undef for directories which aren't stored in the working copy, but are further up the directory hierarchy, such as 'trunk'.


This software is copyright 2006 Geoff Richards <>. For licensing information see this page: