Index: Repos.pm
===================================================================
--- Repos.pm	(revision 21690)
+++ Repos.pm	(working copy)
@@ -38,6 +38,110 @@
 API. Functions taking svn_repos_t * as the first inbound argument
 could be used as methods of the object returned by open or create.
 
+=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.  I have not tested this functionality, but
+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->load_fs($dumpfile_fh, $feedback_fh, $uuid_action, $parent_dir, $cancel_func, $cancel_baton);
+
+=item $repos->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.
+
+According to svn_repos.h:
+If C<$cancel_func> is not NULL, it is called periodically with
+C<$cancel_baton> as argument to see if the client wishes to cancel
+the load.
+
+I have not tested this functionality (and I am not sure how to do so), but
+you must at least provide undef for these parameters for the method call 
+to work.
+
+Example: 
+    use SVN::Core;
+    use SVN::Repos;
+    
+    my $repos = SVN::Repos::open ('/repo/test_repo');
+    
+    open my $fh, "/repo/sandbox.dump" or die "Cannot open file: $!\n";
+    
+    my $parent_dir = '/';
+    my $use_pre_commit_hook  = 0;
+    my $use_post_commit_hook = 0;
+    
+    $repos->load_fs2($fh, \*STDOUT,
+                     $SVN::Repos::load_uuid_ignore, # Ignore uuid
+                     $parent_dir,           
+                     $use_pre_commit_hook,  # Use pre-commit hook?
+                     $use_post_commit_hook, # Use post-commit hook?
+                     undef, undef);
+    
+                     
+    close $fh;
+
 =cut
 
 package _p_svn_repos_t;
@@ -49,7 +153,7 @@
 		 pre_revprop_change_hook post_revprop_change_hook
 		 dated_revision fs_commit_txn fs_begin_txn_for_commit
 		 fs_begin_txn_for_update fs_change_rev_prop
-		 node_editor dump_fs load_fs get_fs_build_parser/;
+		 node_editor dump_fs dump_fs2 load_fs load_fs2 get_fs_build_parser/;
 
 for (@methods) {
     no strict 'refs';
