Alien-SVN

 view release on metacpan or  search on metacpan

src/subversion/subversion/bindings/swig/perl/native/Repos.pm  view on Meta::CPAN

use strict;
use warnings;

package SVN::Repos;
use SVN::Base qw(Repos svn_repos_);

=head1 NAME

SVN::Repos - Subversion repository functions

=head1 SYNOPSIS

    use SVN::Core;
    use SVN::Repos;
    use SVN::Fs;

    my $repos = SVN::Repos::open('/path/to/repos');
    print $repos->fs()->youngest_rev;

=head1 DESCRIPTION

SVN::Repos wraps the object-oriented C<svn_repos_t> functions, providing
access to a Subversion repository on the local filesystem.

=head2 CONSTRUCTORS

=over

=item SVN::Repos::open($path)

This function opens an existing repository, and returns an
C<SVN::Repos> object.

=item create($path, undef, undef, $config, $fs_config)

This function creates a new repository, and returns an C<SVN::Repos>
object.

=back

=head2 METHODS

=over

=item $repos-E<gt>dump_fs($dump_fh, $feedback_fh, $start_rev, $end_rev, $incremental, $cancel_func, $cancel_baton)

=item $repos-E<gt>dump_fs2($dump_fh, $feedback_fh, $start_rev, $end_rev, $incremental, $deltify, $cancel_func, $cancel_baton)

Create a dump file of the repository from revision C<$start_rev> to C<$end_rev>
, store it into the filehandle C<$dump_fh>, and write feedback on the progress
of the operation to filehandle C<$feedback_fh>.

If C<$incremental> is TRUE, the first revision dumped will be a diff
against the previous revision (usually it looks like a full dump of
the tree).

If C<$use_deltas> is TRUE, output only node properties which have
changed relative to the previous contents, and output text contents
as svndiff data against the previous contents.  Regardless of how
this flag is set, the first revision of a non-incremental dump will
be done with full plain text.  A dump with @a use_deltas set cannot
be loaded by Subversion 1.0.x.

According to svn_repos.h, the C<$cancel_func> is a function that is called
periodically and given C<$cancel_baton> as a parameter to determine whether
the client wishes to cancel the dump.  You must supply C<undef> at the very
least.

Example:

    use SVN::Core;
    use SVN::Repos;

    my $repos = SVN::Repos::open('/repo/sandbox');

    open my $fh, ">/tmp/tmp.dump" or die "Cannot open file: $!\n";

    my $start_rev   = 10;
    my $end_rev     = 20;
    my $incremental = 1;
    my $deltify     = 1;

    $repos->dump_fs2($fh, \*STDOUT,          # Dump file => $fh, Feedback => STDOUT
                     $start_rev, $end_rev,   # Revision Range
                     $incremental, $deltify, # Options
                     undef, undef);          # Cancel Function

    close $fh;

=item $repos-E<gt>load_fs($dumpfile_fh, $feedback_fh, $uuid_action, $parent_dir, $cancel_func, $cancel_baton);

=item $repos-E<gt>load_fs2($dumpfile_fh, $feedback_fh, $uuid_action, $parent_dir, $use_pre_commit_hook, $use_post_commit_hook, $cancel_func, $cancel_baton);

Loads a dumpfile specified by the C<$dumpfile_fh> filehandle into the repository.
If the dumpstream contains copy history that is unavailable in the repository,
an error will be thrown.

The repository's UUID will be updated iff the dumpstream contains a UUID and
C<$uuid_action> is not equal to C<$SVN::Repos::load_uuid_ignore> and either the
repository contains no revisions or C<$uuid_action> is equal to
C<$SVN::Repos::load_uuid_force>.

If the dumpstream contains no UUID, then C<$uuid_action> is
ignored and the repository UUID is not touched.

If C<$parent_dir> is not null, then the parser will reparent all the
loaded nodes, from root to @a parent_dir.  The directory C<$parent_dir>
must be an existing directory in the repository.

If C<$use_pre_commit_hook> is set, call the repository's pre-commit
hook before committing each loaded revision.

If C<$use_post_commit_hook> is set, call the repository's
post-commit hook after committing each loaded revision.



( run in 1.695 second using v1.01-cache-2.11-cpan-d7f47b0818f )