/[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

Contents of /scripts/svn2couch.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 24 - (show 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 #!/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