--- trunk/svn-indexer.pl 2006/12/10 00:01:33 26 +++ trunk/bin/indexer 2007/09/03 20:10:08 63 @@ -1,6 +1,6 @@ #!/usr/bin/perl -w -# svn-indexer.pl +# SVNBrowser indexer # # 12/04/06 22:19:20 CET Dobrica Pavlinusic @@ -8,79 +8,21 @@ use lib 'lib'; - use SVN::Log; use Data::Dump qw/dump/; use Jifty; +use SVNBrowser::Indexer; BEGIN { Jifty->new }; my $repository = shift @ARGV || Jifty->config->app('repository'); -my ($start_rev,$end_rev) = (1, 'HEAD'); - my $system_user = SVNBrowser::CurrentUser->superuser; -my $rev_col = SVNBrowser::Model::RevisionCollection->new(current_user => $system_user); -$rev_col->unlimit; -$rev_col->order_by({ column => 'revision', order => 'DES' }); -my $last_rev = $rev_col->first; - -my $branch_regex = Jifty->config->app('branch_regex'); - -if ($last_rev) { - $start_rev = $last_rev->revision; - warn "Index $repository rev $start_rev - $end_rev [branch regex: $branch_regex]\n"; +my $rep_col = SVNBrowser::Model::RepositoryCollection->new(current_user => $system_user); +$rep_col->unlimit; +while ( my $rep = $rep_col->next ) { + SVNBrowser::Indexer->reindex( $rep ); } -SVN::Log::retrieve({ - repository => $repository, - start => $start_rev, - end => $end_rev, - callback => sub { - my ($paths,$revision,$author,$date,$message) = @_; - - return if ($last_rev && $revision <= $last_rev->revision); - - $author ||= 'anonymous'; - - my $r = SVNBrowser::Model::Revision->new(current_user => $system_user); - my $id = $r->load_or_create( - revision => $revision, - author => $author, - commit_date => $date, - message => $message, - ); - print "$revision -> $id $date $author\n"; - foreach my $path (keys %$paths) { - my $action = $paths->{$path}->{action} || die "no action in ", dump($path); - - my $branch = '/'; - ($branch,$path) = ($1,$2) if ($path =~ m/$branch_regex/); - - my $b = SVNBrowser::Model::Branch->new(current_user => $system_user); - $b->load_or_create( - path => $branch, - ); - - my $rb = SVNBrowser::Model::RevisionBranch->new(current_user => $system_user); - $rb->load_or_create( - revision => $r, - branch => $b, - ); - - my $a = SVNBrowser::Model::Action->new(current_user => $system_user); - $a->load_or_create( - revision => $revision, - type => $action, - branch => $branch, - rel_path => $path, - ); - - print " $action | $branch | $path\n"; - } - } -}); - -