/[scripts]/trunk/svndump-move.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/svndump-move.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 47 by dpavlin, Fri Aug 3 17:52:21 2007 UTC revision 49 by dpavlin, Fri Aug 3 18:13:55 2007 UTC
# Line 2  Line 2 
2  use strict;  use strict;
3  use warnings;  use warnings;
4  use SVN::Dump;  use SVN::Dump;
5  use Shell qw/svnadmin cp find svn/;  use Shell qw/svnadmin cp find svn rm/;
6  use Cwd qw/abs_path/;  use Cwd qw/abs_path/;
7    
8  my $base = shift @ARGV;  my $base = shift @ARGV;
# Line 27  sub create_list { Line 27  sub create_list {
27          warn "created: $path ", -s $path, "bytes\n";          warn "created: $path ", -s $path, "bytes\n";
28  }  }
29    
   
30  die "please copy repository on which to perfrom operation to $from\n" if ( ! -e $from );  die "please copy repository on which to perfrom operation to $from\n" if ( ! -e $from );
31    
32  warn "collect all paths from repository $from\n";  warn "collect all paths from repository $from\n";
# Line 36  create_list( $from, $fl ); Line 35  create_list( $from, $fl );
35  if ( ! -e $tl ) {  if ( ! -e $tl ) {
36          cp( $fl, $tl );          cp( $fl, $tl );
37          die "created $tl\nplease edit it to reflect new layout\n";          die "created $tl\nplease edit it to reflect new layout\n";
38  } elsif ( ! -e $to ) {  }
39          svnadmin('create', $to);          
40          open(my $fh_in,  '-|', "svnadmin dump $from") || die "can't dump $from: $!";  my $map;
         open(my $fh_out, '|-', "svnadmin load $to")   || die "can't load $to: $!";  
   
         my $dump = SVN::Dump->new( { fh => $fh_in } );  
   
         warn "## $from -> $to\n";  
   
         while ( my $rec = $dump->next_record() ) {  
                 my $type = $rec->type();  
                 if ( $type eq 'revision' && $rec->get_header( 'Revision-number' ) != 0 ) {  
                         my $to = 'dpavlin@rot13.org';  
                         $rec->set_property( 'svn:author' => $to );  
                 }  
                 warn "##> ", $rec->get_header('Node-path'), "\n";  
41    
42                  print $fh_out $rec->as_string();  open(my $fhf, '<', $fl ) || die "can't open $fl: $!";
43    open(my $fht, '<', $tl ) || die "can't open $tl: $!";
44    while( my $lf = <$fhf> ) {
45            chomp($lf);
46            my $lt = <$fht> || die "list shorter, probably corrupt: $tl\n";
47            chomp($lt);
48            $map->{$lf} = $lt;
49    }
50    
51    if ( -e $to ) {
52            #die "$to allready exists! remove it to re-create repository\n";
53            rm('-Rf',$to);
54    }
55    
56    svnadmin('create', $to);
57    open(my $fh_in,  '-|', "svnadmin dump $from") || die "can't dump $from: $!";
58    open(my $fh_out, '|-', "svnadmin load $to")   || die "can't load $to: $!";
59    
60    my $dump = SVN::Dump->new( { fh => $fh_in } );
61    
62    warn "## $from -> $to\n";
63    
64    while ( my $rec = $dump->next_record() ) {
65            my $type = $rec->type();
66            if ( $type eq 'revision' && $rec->get_header( 'Revision-number' ) != 0 ) {
67                    my $to = 'dpavlin@rot13.org';
68                    $rec->set_property( 'svn:author' => $to );
69            }
70    
71            my $path = $rec->get_header('Node-path');
72            if ( $path && defined( $map->{$path} ) ) {
73                    my $to = $map->{$path};
74                    warn "##> $path -> $to\n";
75                    $rec->set_header('Node-path', $to);
76          }          }
77  } else {  
78          die "$to allready exists! remove it to re-create repository\n";          print $fh_out $rec->as_string();
79  }  }

Legend:
Removed from v.47  
changed lines
  Added in v.49

  ViewVC Help
Powered by ViewVC 1.1.26