#!/usr/bin/perl -w use strict; use Test::More; use Cwd; use File::Path; use SVK::Test; plan tests => 6; # These tests actually use push and pull, in the hope that I'll get less # confused. This should be okay, because other tests demonstrate that # push/pull function the same as smerge. my $initial_cwd = getcwd; # build another tree to be mirrored ourself my ($xd, $svk) = build_test('test'); my $tree = create_basic_tree ($xd, '/test/'); my ($copath_test, $corpath_test) = get_copath ('bidi-inc-test'); my ($copath_default, $corpath_default) = get_copath ('bidi-inc-default'); my ($copath_second, $corpath_second) = get_copath ('bidi-inc-second'); my ($test_repospath, $test_a_path, $test_repos) =$xd->find_repos ('/test/A', 1); my $test_uuid = $test_repos->fs->get_uuid; my ($default_repospath, $default_path, $default_repos) =$xd->find_repos ('//A', 1); my $default_uuid = $default_repos->fs->get_uuid; my $uri = uri($test_repospath); $svk->mirror ('//m', $uri.($test_a_path eq '/' ? '' : $test_a_path)); $svk->sync ('//m'); $svk->copy ('-m', 'branch', '//m', '//l'); $svk->checkout ('//l', $corpath_default); ok (-e "$corpath_default/be"); append_file ("$corpath_default/be", "from local branch\n"); mkdir "$corpath_default/T/"; append_file ("$corpath_default/T/xd", "local new file\n"); $svk->add ("$corpath_default/T"); $svk->delete ("$corpath_default/Q/qu"); $svk->commit ('-m', 'local modification from branch', "$corpath_default"); append_file ("$corpath_default/T/xd", "more content\n"); $svk->commit ('-m', 'second local modification from branch', "$corpath_default"); chdir ($corpath_default); is_output ($svk, "push", [], [ "Auto-merging (0, 6) /l to /m (base /m:3).", "===> Auto-merging (0, 4) /l to /m (base /m:3).", "Merging back to mirror source $uri/A.", "Empty merge.", "===> Auto-merging (4, 5) /l to /m (base /m:3).", "Merging back to mirror source $uri/A.", "D Q/qu", "A T", "A T/xd", "U be", "New merge ticket: $default_uuid:/l:5", "Merge back committed as revision 3.", "Syncing $uri/A", "Retrieving log information from 3 to 3", "Committed revision 7 from revision 3.", "===> Auto-merging (5, 6) /l to /m (base /l:5).", "Merging back to mirror source $uri/A.", "U T/xd", "New merge ticket: $default_uuid:/l:6", "Merge back committed as revision 4.", "Syncing $uri/A", "Retrieving log information from 4 to 4", "Committed revision 8 from revision 4."]); append_file ("$corpath_default/T/xd", "even more content\n"); $svk->commit ('-m', 'third local modification from branch', "$corpath_default"); append_file ("$corpath_default/be", "more content\n"); $svk->commit ('-m', 'fourth local modification from branch', "$corpath_default"); is_output ($svk, 'push', ['-l'], [ "Auto-merging (6, 10) /l to /m (base /l:6).", "Merging back to mirror source $uri/A.", "U T/xd", "U be", "New merge ticket: $default_uuid:/l:10", "Merge back committed as revision 5.", "Syncing $uri/A", "Retrieving log information from 5 to 5", "Committed revision 11 from revision 5."]); $svk->checkout ('/test/A', $corpath_test); # add a file to remote append_file ("$corpath_test/new-file", "some text\n"); $svk->add ("$corpath_test/new-file"); $svk->commit ('-m', 'making changes in remote depot', "$corpath_test"); chdir ($corpath_default); append_file ("$corpath_default/be", "yet more content\n"); $svk->commit ('-m', 'simultaneous local modification from branch', "$corpath_default"); chdir ($corpath_test); append_file ("$corpath_test/new-file", "some extra text\n"); $svk->commit ('-m', 'more changes in remote depot', "$corpath_test"); chdir ($corpath_default); is_output ($svk, 'push', [], [ "Auto-merging (10, 12) /l to /m (base /l:10).", "===> Auto-merging (10, 12) /l to /m (base /l:10).", "Merging back to mirror source $uri/A.", "U be", "New merge ticket: $default_uuid:/l:12", "Merge back committed as revision 8.", "Syncing $uri/A", "Retrieving log information from 6 to 8", "Committed revision 13 from revision 6.", "Committed revision 14 from revision 7.", "Committed revision 15 from revision 8."]); append_file ("$corpath_default/be", "and more content\n"); $svk->commit ('-m', 'additional local modification from branch', "$corpath_default"); is_output ($svk, 'push', [], [ "Auto-merging (12, 16) /l to /m (base /l:12).", "===> Auto-merging (12, 16) /l to /m (base /l:12).", "Merging back to mirror source $uri/A.", "U be", "New merge ticket: $default_uuid:/l:16", "Merge back committed as revision 9.", "Syncing $uri/A", "Retrieving log information from 9 to 9", "Committed revision 17 from revision 9."]); is_output ($svk, "pull", ['--force-incremental'], [ "Syncing $uri/A", 'Auto-merging (3, 17) /m to /l (base /l:16).', '===> Auto-merging (3, 7) /m to /l (base /l:5).', 'Empty merge.', '===> Auto-merging (7, 8) /m to /l (base /l:6).', 'Empty merge.', '===> Auto-merging (8, 11) /m to /l (base /l:10).', 'Empty merge.', '===> Auto-merging (11, 13) /m to /l (base /l:10).', "A new-file", "New merge ticket: $test_uuid:/A:6", "Committed revision 18.", "===> Auto-merging (13, 14) /m to /l (base /m:13).", "U new-file", "New merge ticket: $test_uuid:/A:7", "Committed revision 19.", "===> Auto-merging (14, 15) /m to /l (base */m:14).", "Empty merge.", "===> Auto-merging (15, 17) /m to /l (base */m:15).", "Empty merge.", "Syncing //l(/l) in $corpath_default to 19.", "A new-file"]);