/[couchdb]/scripts/svn2couch.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

Annotation of /scripts/svn2couch.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24 - (hide annotations)
Tue Feb 3 20:06:34 2009 UTC (15 years, 2 months ago) by dpavlin
File MIME type: text/plain
File size: 1344 byte(s)
Subversion importer
1 dpavlin 24 #!/usr/bin/perl
2    
3     # st2couch.pl
4     #
5     # 09/30/08 20:07:10 CEST Dobrica Pavlinusic <dpavlin@rot13.org>
6    
7     use warnings;
8     use strict;
9    
10     my $path = shift @ARGV || '/home/dpavlin/private/svn/couchdb/';
11     my $repository = $path;
12     $repository =~ s{/+$}{};
13     $repository =~ s{^.+/([^/]+)}{$1};
14     my $database = 'subversion';
15    
16     warn "# $path -> $repository @ $database";
17    
18     use SVN::Dump;
19     use CouchDB::Client;
20     use Data::Structure::Util qw(unbless);
21     use Data::Dump qw/dump/;
22    
23     open(my $svn_fh, "svnadmin dump $path |") || die "can't open svnadmin dump $path: $!";
24     my $dump = SVN::Dump->new({ fh => $svn_fh });
25    
26     my $c = CouchDB::Client->new(uri => 'http://localhost:5984/');
27     $c->testConnection or die "The server cannot be reached";
28     print "CouchDB version " . $c->serverInfo->{version} . "\n";
29     my $db = $c->newDB( $database );
30     #$db->delete if $c->dbExists( $database );
31     $db->create unless $c->dbExists( $database );
32    
33     my $r = 0;
34    
35     while ( my $record = $dump->next_record() ) {
36     warn "## record ",dump( $record );
37     my $_id = $repository . '-r' . $r++;
38     my $doc = $db->newDoc( $_id );
39     my $data = {
40     repository => $repository,
41     type => $record->type,
42     text => $record->get_text,
43     };
44    
45     $data->{$_} = $record->{headers_block}->{$_}
46     foreach ( keys %{ $record->{headers_block} } );
47    
48     warn "## data ",dump( $data );
49     $doc->{data} = $data;
50     $doc->create;
51     warn "<< $record\n";
52     }

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26