#!/usr/bin/perl -w use strict; use Test::More; use SVK::Test; use SVK::Mirror; use SVK::Mirror::Backend::SVNRa; plan tests => 11; my ($xd, $svk) = build_test('test'); my ($copath, $corpath) = get_copath ('api-mirror'); our $output; my $tree = create_basic_tree ($xd, '/test/'); my $depot = $xd->find_depot(''); my $repos = $depot->repos; my $sdepot = $xd->find_depot('test'); my $srepos = $sdepot->repos; my $uri = uri($sdepot->repospath); my $m = SVK::Mirror->create( { depot => $depot, path => '/m', backend => 'SVNRa', url => "$uri/A", pool => SVN::Pool->new } ); is_output($svk, 'pg', ['svm:source', '//m'], [uri($sdepot->repospath).'!/A']); is_output($svk, 'pg', ['svm:uuid', '//m'], [$srepos->fs->get_uuid]); is_output($svk, 'pg', ['svm:mirror', '//'], ['/m', '' ]); $m = SVK::Mirror->load( { depot => $depot, path => '/m', pool => SVN::Pool->new } ); is( $m->url, "$uri/A" ); $m = SVK::Mirror->create( { depot => $depot, path => '/m2', backend => 'SVNRa', url => "$uri/B", pool => SVN::Pool->new } ); is_output($svk, 'pg', ['svm:source', '//m2'], [uri($sdepot->repospath).'!/B']); is_output($svk, 'pg', ['svm:uuid', '//m2'], [$srepos->fs->get_uuid]); is_output($svk, 'pg', ['svm:mirror', '//'], ['/m', '/m2', '']); eval { SVK::Mirror::Backend::SVNRa->create( SVK::Mirror->new( { depot => $depot, path => '/m3', url => $uri, pool => SVN::Pool->new } ) ); }; is($@, "Mirroring overlapping paths not supported\n"); is_output($svk, 'ls', ['//'], ['m/', 'm2/'], 'm3 not created'); my $mc = SVK::MirrorCatalog->new( { repos => $repos, depot => $depot } ); is_deeply([ sort $mc->entries], ['/m', '/m2']); $m = SVK::Mirror->load( { depot => $depot, path => '/m', pool => SVN::Pool->new } ); { my @revs; $m->traverse_new_changesets(sub { push @revs, $_[0] }); is_deeply(\@revs, [1,2]); } $m->run(); #$m->mirror_changesets(); # XXX: check committed revisions