#!/usr/bin/perl -w use strict; use SVK::Test; plan tests => 26; our $output; my ($xd, $svk) = build_test('test'); $svk->mkdir(-m => 'trunk', '/test/trunk'); $svk->mkdir(-m => 'trunk', '/test/branches'); $svk->mkdir(-m => 'trunk', '/test/tags'); my $tree = create_basic_tree($xd, '/test/trunk'); my $depot = $xd->find_depot('test'); my $uri = uri($depot->repospath); $svk->mirror('//mirror/MyProject', $uri); $svk->sync('//mirror/MyProject'); my ($copath, $corpath) = get_copath('bm-online-offline'); $svk->checkout('//mirror/MyProject/trunk', $copath); chdir($copath); # this should be is_output(_like) instead of just run it # but I'm not sure what's the correct message yet $svk->br('--offline','foo'); is_output_like ($svk, 'info', [], qr|Depot Path: //local/MyProject/foo|); is_ancestor($svk, '//local/MyProject/foo', '/mirror/MyProject/trunk', 6); is_output($svk, 'br', ['-l', '--local', '//mirror/MyProject'], ['foo']); append_file('A/be', "fnordorz\n"); $svk->commit(-m => 'orz'); is_output($svk, 'br', ['--online', '-C'], ["We will copy branch //local/MyProject/foo to //mirror/MyProject/branches/foo", "Then do a smerge on //mirror/MyProject/branches/foo", "Finally delete the src branch //local/MyProject/foo"]); is_output_like ($svk, 'branch', ['--online'], qr|U A/be|); is_output_like ($svk, 'info', [], qr|Depot Path: //mirror/MyProject/branches/foo|); # since branch name is not the same, just do move and switch is_output ($svk, 'info', ['//local/MyProject/foo'], ["Path //local/MyProject/foo does not exist."]); is_ancestor($svk, '//mirror/MyProject/branches/foo', '/mirror/MyProject/trunk', 6); # let's play with feature/foobar branch now is_output_like ($svk, 'branch', ['--create', 'feature/foobar'], qr'Project branch created: feature/foobar'); $svk->br('--switch', 'feature/foobar'); is_output_like ($svk, 'info', [], qr|Depot Path: //mirror/MyProject/branches/feature/foobar|); is_output ($svk, 'branch', ['--online'], ["Current branch already online"]); # future should be is_output_like $svk->br('--offline'); # offline the feature/foobar branch is_output_like ($svk, 'info', [], qr|Depot Path: //local/MyProject/feature/foobar|); append_file ('B/S/Q/qu', "\nappend CBA on local branch feature/foobar\n"); $svk->commit ('-m', 'commit message on local branch',''); # now should do smerge first, then sw to the branch is_output_like ($svk, 'branch', ['--online', '-C'], qr|U B/S/Q/qu|); is_output_like ($svk, 'branch', ['--online'], qr|U B/S/Q/qu|); is_output_like ($svk, 'log', [], qr|commit message on local branch|); is_output_like ($svk, 'info', [], qr|Depot Path: //mirror/MyProject/branches/feature/foobar|); # since there's the same branch name exists, just do smerge and switch is_output_like ($svk, 'info', ['//local/MyProject/feature/foobar'], qr|Depot Path: //local/MyProject/feature/foobar|); $svk->delete ("A/Q/qu"); overwrite_file ("A/Q/qz", "orz\n"); $svk->commit (-m => '- changes in remote'); is_output_like ($svk, 'branch', ['--offline'], qr|U A/Q/qz\nD A/Q/qu|); is_output_like ($svk, 'log', [], qr|- changes in remote|); # online with a new branch name $svk->br('--online', 'release/abc'); # online and rename to the release/abc branch is_output_like ($svk, 'info', [], qr|Depot Path: //mirror/MyProject/branches/release/abc|); is_output_like ($svk, 'br', [], qr|Copied From: feature/foobar@\d+|); $svk->br('--offline'); # offline the feature/foobar branch chdir ("C"); is_output ($svk, 'br', [], ["Project name: MyProject", "Branch: release/abc (offline)", "Revision: 22", "Repository path: //local/MyProject/release/abc/C", 'Copied From: feature/foobar@12', 'Merged From: release/abc@18']); is_output ($svk, 'br', ['--offline'], ["Current branch already offline"]); is_output ($svk, 'br', [], ["Project name: MyProject", "Branch: release/abc (offline)", "Revision: 22", "Repository path: //local/MyProject/release/abc/C", 'Copied From: feature/foobar@12', 'Merged From: release/abc@18']); chdir('..'); $svk->br('--switch','trunk'); is_output_like ($svk, 'info', [], qr|Depot Path: //mirror/MyProject/trunk|); $svk->br('--offline'); # offline the trunk # w/o bname, will use -trunk as the local(offline) bname is_output_like ($svk, 'info', [], qr|Depot Path: //local/MyProject/MyProject-trunk|);