[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r26803 - in trunk/subversion: libsvn_client tests/cmdline

From: Philip Martin <philip_at_codematters.co.uk>
Date: 2007-10-18 00:41:09 CEST

kameshj@tigris.org writes:

> Author: kameshj
> Date: Thu Sep 27 07:25:29 2007
> New Revision: 26803
>
> Log:
> Fix issue 2821.
> Improve merge algorithm used for target trees with child paths which have
> mergeinfo that differs from their parent.
>
> Recap of Status quo merge operation for same url merges:
> -------------------------------------------------------
> * Harvest all paths under a target having explicit merge corresponding to merge source.
> * Harvest all switched paths.
> * Harvest all parent paths missing child due to 'insufficient - authorization.
>>From above 3 harvesting populate a list by name 'children_with_mergeinfo'.
>
> Items in children_with_mergeinfo should be sorted in depth first order to
> confirms to reporter's set_path semantics.
> 'do_merge' function was doing all the merges for a given path and complex
> mergeinfo recording.
>
> For each child in children_with_mergeinfo:
> if child == merge_target
> continute
> do_merge(child)
>
> do_merge(user_given_target)
>
> New style of merge(same urls) as suggested by Peter Lundblad on
> http://subversion.tigris.org/servlets/BrowseList?list=dev&by=thread&from=565086
> -------------------------------------------------------------------------------
> * Harvest all paths under a target having explicit merge corresponding to merge source.
> * Harvest all switched paths.
> * Harvest all parent paths missing child due to 'insufficient - authorization.
>>From above 3 harvesting populate a list by name 'children_with_mergeinfo'.
> If 'children_with_mergeinfo' is empty add 'target' explicitly to it.
> If We don't have any 'target' in 'children_with_mergeinfo' add it in a
> correct location confirming to 'depth-first-ordering'.
>
> 'do_merge' function is doing only the merges for a given path and no complex
> mergeinfo recording.
>
> For each child in children_with_mergeinfo:
> Calculate remaining_ranges to merge with the help of
> 'populate_remaining_ranges'.
> Get the smallest end_rev out of all paths remaing_ranges.
>
> *** No need to run diff summarize as the new style of merging does
> not need it.***
>
> While(end_rev!=INVALID_REVNUM)
> slice_remaining_ranges(children_with_mergeinfo, end_rev)
> do_merge(orig_target, start, end_rev)
> start = start + 1
> remove_first_range_from_remaining_ranges(children_with_mergeinfo)
> end_rev = get_nearest_end_rev(children_with_mergeinfo)

Don't put documentation like that into the log message, put it in the
source code where it is visible to people looking at the code.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Oct 18 00:41:35 2007

This is an archived mail posted to the Subversion Dev mailing list.