[svk-devel] smerge/pull with renames
Jason Dillon
jason at planet57.com
Wed Mar 21 17:44:33 EDT 2007
Cool... hopefully someone has a dusty pixie somewhere they can shake
over the code soonish :-)
--jason
On Mar 21, 2007, at 8:54 AM, Stig Brautaset wrote:
> Thank you. I have commited this (with a small addition of my own)
> as a TODO test (t/07smerge-rename3.t) on trunk. If somebody with
> more knowledge of the internals than me could have a look, I'd be
> delighted.
>
> Stig
>
> On 21 Mar 2007, at 00:52, Jason Dillon wrote:
>
>> This isn't really complete... but it might be close:
>>
>> <snip>
>> #!/usr/bin/perl -w
>>
>> #
>> # Tests that smerge handles updates after renames have been made
>> #
>>
>> use Test::More tests => 1;
>> use strict;
>> use File::Path;
>> use Cwd;
>> use SVK::Test;
>>
>> my ($xd, $svk) = build_test();
>> our $output;
>> my ($co_trunk_path, $co_trunk_rpath) = get_copath ('smerge-rename3-
>> trunk');
>> my ($co_branch_path, $co_branch_rpath) = get_copath ('smerge-
>> rename3-branch');
>> my ($repospath, undef, $repos) = $xd->find_repos ('//', 1);
>> my $uuid = $repos->fs->get_uuid;
>>
>> # Setup the trunk
>> $svk->mkdir ('-m', 'trunk', '//trunk');
>> $svk->checkout ('//trunk', $co_trunk_path);
>>
>> # Create some data in trunk
>> chdir($co_trunk_path);
>> $svk->mkdir('module');
>> overwrite_file('module/test.txt', '1');
>> $svk->ci(-m => "test 1");
>>
>> # Make a copy
>> $svk->mkdir ('-m', 'trunk', '//branches');
>> $svk->cp(-m => 'newbranch', '//trunk', '//branches/newbranch');
>> $svk->checkout ('//branches/newbranch', $co_branch_path);
>>
>> # TODO: Verify that newbranch/module/test.txt == '1'
>>
>> # Rename the module in the branch
>> chdir($co_branch_path);
>> $svk->move('module', 'module2');
>> $svk->commit(-m => "renamed");
>>
>> # Make a change to trunk
>> chdir($co_trunk_path);
>> overwrite_file('module/test.txt', '2');
>> $svk->ci(-m => "test 2");
>>
>> # Merge changes w/rename from trunk to branch
>> $svk->smerge('//trunk', '//branches/newbranch', '--track-rename',
>> '-m')
>>
>> # Update the branch
>> chdir($co_branch_path);
>> $svk->update();
>>
>> # TODO: Verify that newbranch/module2/text == '2'
>>
>> # Make another change to trunk
>> chdir($co_trunk_path);
>> overwrite_file('module/test.txt', '3');
>> $svk->ci(-m => "test 3");
>>
>> # Merge changes w/rename from trunk to branch
>> $svk->smerge('//trunk', '//branches/newbranch', '--track-rename',
>> '-m')
>>
>> # Update the branch
>> chdir($co_branch_path);
>> $svk->update();
>>
>> # TODO: Verify that newbranch/module2/text == '3'
>> </snip>
>>
>> I've no idea how to hook up text validation of content to the
>> framework, so I just put in a TODO that states what it should do.
>>
>> The problem is for all changes to trunk/* which are made after the
>> first smerge --track-rename. The first smerge --track-rename
>> appears to do the right thing after svk up in the branch, but when
>> new changes are made to the trunk, no combination of smerge (w/and
>> w/o --track-rename) or svk pull, or svk up will get the new
>> changes from trunk into the correct files in the branch. They
>> always end up in the skip list.
>>
>> * * *
>>
>> BTW... why is --track-rename optional? IMO this should always be
>> on... I can't think of a reason why I would want to smerge from
>> one tree to another, when the target has renamed files or
>> directories when I would want to not have it merge the contents of
>> the source files into the new locations of the target files.
>>
>> Please have a look, let me know if this .t is helpful... if you
>> need more input I can provide that... as I really want/need to get
>> this functionality working so I can start on the huge
>> reorganization of the Geronimo server/trunk tree (with out
>> impacting other developers while its going on).
>>
>> If you can help me figure out how to run this .t too and provide
>> some hints on how to replace the TODO comments with code then I
>> can work on updating this testcase too.
>>
>> Thanks a ton... I know you are busy, but I hope you can find some
>> free cycles to help me out.
>>
>> Cheers,
>>
>> --jason
>>
>>
>>
>> On Mar 20, 2007, at 2:48 AM, Chia-Liang Kao wrote:
>>
>>> Hi Jason,
>>>
>>> On 20/03/07, Jason Dillon <jason at planet57.com> wrote:
>>>> FYI, I did get --track-rename to work *once*... but all changes
>>>> made to the
>>>> file after I renamed its parent directory in my branch have
>>>> never made it.
>>>
>>> Sorry I haven't had much time for this lately. If you can create
>>> a .t
>>> file which contains how to reproduce the problem and the expected
>>> behaviour, it'd help a lot. see any other .t file from the
>>> distribution as example. Meanwhile, there was a recent fix about
>>> copy
>>> tracking at r2323. See if that fixes your problem.
>>>
>>>
>>> Cheers,
>>> CLK
>>> _______________________________________________
>>> svk-devel mailing list
>>> svk-devel at bestpractical.com
>>> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/svk-devel
>>
>> _______________________________________________
>> svk-devel mailing list
>> svk-devel at bestpractical.com
>> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/svk-devel
>>
>
> _______________________________________________
> svk-devel mailing list
> svk-devel at bestpractical.com
> http://lists.bestpractical.com/cgi-bin/mailman/listinfo/svk-devel
More information about the svk-devel
mailing list