#!/usr/bin/perl -w use strict; use Test::More tests => 9; BEGIN { require 't/tree.pl' }; our $output; my ($xd, $svk) = build_test(); our ($copath, $corpath) = get_copath ('smerge-log'); my ($repospath, undef, $repos) = $xd->find_repos ('//', 1); my $uuid = $repos->fs->get_uuid; $svk->mkdir ('-m', 'trunk', '//trunk'); $svk->checkout ('//', $copath); overwrite_file (copath ('trunk/filea.txt'), "this is filea\n"); $svk->commit ('--import', '-m', 'commit on trunk', $copath); $svk->cp ('-m', 'branch for local', '//trunk', '//local'); $svk->update ($copath); overwrite_file (copath ('local/fileb.txt'), "this is fileb\n"); $svk->commit ('--import', '-m', 'add fileb on local', $copath); append_file (copath ('trunk/filea.txt'), "modified on trunk\n"); $svk->commit ('-m', 'modify filea on trunk', $copath); $svk->smerge ('-Clm', 'Merge from local to trunk', '--host', 'svk', '-f', '//local'); is_output ($svk, 'smerge', ['-m', 'merge down', '-t', '//local'], ['Auto-merging (2, 5) /trunk to /local (base /trunk:2).', 'U filea.txt', "New merge ticket: $uuid:/trunk:5", 'Committed revision 6.']); is_output ($svk, 'smerge', ['-lm', 'Merge from local to trunk', '--host', 'svk', '-f', '//local'], ['Auto-merging (0, 6) /local to /trunk (base /trunk:5).', 'A fileb.txt', "New merge ticket: $uuid:/local:6", 'Committed revision 7.']); is_output ($svk, 'log', ['-r7', '//'], ['-' x 70, qr'r7: .*', '', 'Merge from local to trunk', # we should get rid of the copy rev too qr' r3@svk: .*', ' branch for local', qr' r4@svk: .*', ' add fileb on local', '', '-' x 70, ]); $svk->update ($copath); append_file (copath ('local/fileb.txt'), "appended\n"); $svk->commit ('-m', 'modify fileb on local', $copath); is_output ($svk, 'smerge', ['-lm', 'Merge from local to trunk', '--host', 'svk', '-f', '//local'], ['Auto-merging (6, 8) /local to /trunk (base /local:6).', 'U fileb.txt', "New merge ticket: $uuid:/local:8", 'Committed revision 9.']); is_output ($svk, 'log', ['-r9', '//'], ['-' x 70, qr'r9: .*', '', 'Merge from local to trunk', qr' r8@svk: .*', ' modify fileb on local', '', '-' x 70]); $svk->cp ('-m', 'branch for local', '//local', '//fix'); $svk->update ($copath); append_file (copath ('fix/fileb.txt'), "fileb fixes on branch\n"); $svk->commit ('-m', 'modify fileb on fix', $copath); $svk->smerge ('-lm', 'Merge from fix to local', '--host', 'fix', '-f', '//fix'); $svk->smerge ('-lm', 'Merge from local to trunk', '--host', 'svk', '-f', '//local'); append_file (copath ('fix/fileb.txt'), "more fileb fixes on branch\n"); $svk->commit ('-m', 'modify fileb on fix', $copath); $svk->smerge ('-lm', 'Merge from fix to local with verbatim log', '--verbatim', '--host', 'fix', '-f', '//fix'); is_output ($svk, 'log', ['-r12', '//'], ['-' x 70, qr'r12: .*', '', 'Merge from fix to local', qr' r10@fix: .*', ' branch for local', qr' r11@fix: .*', ' modify fileb on fix', '', '-' x 70]); is_output ($svk, 'log', ['-r13', '//'], ['-' x 70, qr'r13: .*', '', 'Merge from local to trunk', qr' r12@svk: .*', ' Merge from fix to local', qr' r10@fix: .*', ' branch for local', qr' r11@fix: .*', ' modify fileb on fix', ' ', '', '-' x 70]); is_output ($svk, 'log', ['-r14', '//'], ['-' x 70, qr'r14: .*', '', 'modify fileb on fix', '-' x 70 ]); # XXX: may lose something if we do "local -> fix merge" first set_editor(<< 'TMP'); $_ = shift; open _ or die $!; # "manually" enter a commit message @_ = ("Second merge from fix to local\n", <_>); close _; unlink $_; open _, '>', $_ or die $!; print _ @_; close _; TMP append_file (copath ('fix/fileb.txt'), "even more fileb fixes on branch\n"); $svk->commit ('-m', 'modify fileb on fix again', $copath); $svk->smerge ('-l', '--host', 'editor-fix', '-f', '//fix'); is_output ($svk, 'log', ['-r17', '//'], ['-' x 70, qr'r17: .*', '', 'Second merge from fix to local', qr' r16@editor-fix: .*', ' modify fileb on fix again', '', '-' x 70]);