sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #98247
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