[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