← Back to team overview

sslug-teknik team mailing list archive

Re: Ændring af Subversion database

 

Robert Larsen <robert@xxxxxxxxxxxxxxxxx> writes:

> For at bevare historikken for folk vil jeg derfor gerne kunne rende
> igennem vores Subversion repository og ændre committers navn til det
> nye. Er det muligt ?

Jeg har ingen ide til at pille i den eksisterende database, men det
kunne være en mulighed at dumpe databasen, pille i dumpet og loade den
igen. Kan blandt andet gøres med perl modulet SVN::Dumpfilter[0]

Et hurtigt kik på dokumentationen foreslår noget ala:

  use SVN::Dumpfilter;
  
  sub my_filter (\%;$);
  my $dumpfile = shift @ARGV; # filename or '-' for STDIN
  my $outfile  = shift @ARGV; # filename or '-' for STDOUT
  
  Dumpfilter($dumpfile, $outfile, \&my_filter);

  sub my_filter (\%;$) {
     my $href   = shift;
     my $recalc = shift || 0;
     my $header = $href->{'header'};
     my $prop   = $href->{'properties'};
  
     # Do something (modify, add, delete) with the current node given by the
     # hash ref $href
     # e.g.:
     if (exists $prop->{'svn:author'}) {
       $prop->{'svn:author'} =~ getNewLogin( $prop->{'svn:author'});
       $recalc = 1;
     }
  
     # The node content is accessible as scalar with ${$href->{content}}
     # Can be in every possible text or binary format.
  

     if ($recalc) {
       svn_recalc_prop_header(%$href);        # call if you changed properties
     }
   }

   sub getNewLogin {
     my $user = shift;
     ....
   }

og køres så med

svnadmin dump /path/to/repository | my_svndumpfilter - - | svnadmin load /path/to/new/repository

0) http://search.cpan.org/perldoc?SVN::Dumpfilter

//Makholm



Follow ups

References