#!/usr/bin/perl -w use strict; use Test::More; use SVK::Test; eval { require SVN::Mirror; 1 } or plan skip_all => 'require SVN::Mirror'; plan tests => 26; use Cwd; use File::Path; my ($xd, $svk) = build_test('test'); my ($copath, $corpath) = get_copath ('import'); my ($repospath, undef, $repos) = $xd->find_repos ('//', 1); sub copath { SVK::Path::Checkout->copath($copath, @_) } is_output_like ($svk, 'import', [], qr'SYNOPSIS', 'import - help'); is_output_like ($svk, 'import', ['foo','bar','baz'], qr'SYNOPSIS', 'import - help'); mkdir $copath; overwrite_file ("$copath/filea", "foobarbazz"); overwrite_file ("$copath/fileb", "foobarbazz"); overwrite_file ("$copath/filec", "foobarbazz"); overwrite_file ("$copath/exe", "foobarbazz"); overwrite_file ("$copath/filea~","foobarbazz"); # Test for import honoring global ignores mkdir "$copath/.DS_Store"; # Test for import honoring global ignores for directories overwrite_file ("$copath/.DS_Store/ignored","foobarbazz"); # Test for import pruning trees on directories in global ignores chmod (0755, "$copath/exe"); mkdir "$copath/dir"; overwrite_file ("$copath/dir/filed", "foobarbazz"); is_output ($svk, 'import', ['-Cm', 'test import', $copath, '//import'], ['Import path //import will be created.', "Directory $corpath will be imported to depotpath //import."]); is_output ($svk, 'import', ['-m', 'test import', $copath, '//import'], ['Committed revision 1.', 'Import path //import initialized.', 'Committed revision 2.', "Directory $corpath imported to depotpath //import as revision 2."]); is_output_like ($svk, 'status', [$copath], qr'not a checkout path'); overwrite_file ("$copath/filea", "foobarbazzblah"); overwrite_file ("$copath/dir/filed", "foobarbazzbozo"); unlink "$copath/fileb"; $svk->import ('-m', 'test import', '//import', $copath); is_output ($svk, 'import', ['-m', 'test import into file', '//import/filec', $copath], [qr'^import destination cannot be a file at ']); unlink "$copath/filec"; $svk->import ('-t', '-m', 'import -t', '//import', $copath); ok($xd->{modified}, 'will update svk config'); is_output ($svk, 'status', [$copath], []); rmtree [$copath]; $svk->checkout ('//import', $copath); ok (-e copath ('filea')); ok (!-e copath ('fileb')); ok (!-e copath ('filec')); ok (-e copath ('dir/filed')); ok (_x(copath ('exe')), 'executable bit imported'); ok (!-e copath ('filea~')); ok (!-e copath ('.DS_Store')); ok (!-e copath ('.DS_Store/ignored')); unlink (copath ('exe')); my $oldwd = getcwd; chdir ($copath); is_output ($svk, 'import', ['//import'], ["Import source ($corpath) is a checkout path; use --from-checkout."]); $svk->import ('-f', '-m', 'import -f', '//import'); is_output ($svk, 'status', [], []); chdir ($oldwd); rmtree ["$copath/dir"]; overwrite_file ("$copath/dir", "now file\n"); $svk->import ('-C', '-f', '//import', $copath); $svk->import ('-f', '-m', 'import -f', '//import', $copath); rmtree [$copath]; $svk->checkout ('//import', $copath); ok (-f copath ('dir')); my ($srepospath, $spath, $srepos) = $xd->find_repos ('/test/A', 1); $svk->mkdir ('-m', 'init', '/test/A'); SKIP: { skip 'SVN::Mirror not installed', 7 unless HAS_SVN_MIRROR; my $uri = uri($srepospath.($spath eq '/' ? '' : $spath)); $svk->mirror ('//m', $uri); $svk->sync ('//m'); is_output ($svk, 'import', ['--from-checkout', '-m', 'import into mirrored path', '//m', $copath], ["Import path (/m) is different from the copath (/import)"]); rmtree [$copath]; $svk->checkout ('//m', $copath); overwrite_file ("$copath/filea", "foobarbazz"); waste_rev ($svk, '/test/F') for 1..10; $svk->import ('--from-checkout', '-m', 'import into mirrored path', '//m', $copath); is ($srepos->fs->youngest_rev, 22, 'import to remote directly'); append_file ("$copath/filea", "fnord"); $svk->import ('--from-checkout', '-m', 'import into mirrored path', '//m', $copath); is ($srepos->fs->youngest_rev, 23, 'import to remote directly with proper base rev'); $svk->import ('--from-checkout', '-m', 'import into mirrored path', $copath, '//m'); is ($srepos->fs->youngest_rev, 24, 'import to remote directly with proper base rev'); $svk->checkout ('--detach', $copath); is_output ($svk, 'import', ['-m', 'import into mirrored path from noncheckout', '//m/hate', $copath], ["Merging back to mirror source $uri.", 'Merge back committed as revision 25.', "Syncing $uri", "Retrieving log information from 24 to 25", "Committed revision 11 from revision 25.", "Import path //m/hate initialized.", "Merging back to mirror source $uri.", "Merge back committed as revision 26.", "Syncing $uri", "Retrieving log information from 26 to 26", "Committed revision 12 from revision 26.", "Directory $corpath imported to depotpath //m/hate as revision 12."]); our $answer = ['//m/hate']; $svk->import (-m => 'via prompt', $copath); is ($srepos->fs->youngest_rev, 27); rmtree [$copath]; is_output ($svk, 'import', ['-m', 'bad copath', '//m/more', $copath], [__"Path $corpath does not exist."]); }