Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[stellation-res] Merge Issues

I've been working to integrate the new T-Client GUI with the existing core
engine merge facilities.  JUnit testing during this work has revealed a
number of flaws in the existing compound merge algorithm
(CompoundArtifactAgent.merge).

Rather than fix the code piecemeal, I am re-analyzing the requirements, and
will then redesign/reimplement the algorithm.

I would appreciate some help from Mark and anyone else with merge-related expertise.

I've set up a Wiki page to discuss these issues:
 http://stellation.eclipse.org/twiki/bin/view/Stellation/MergeIssues
It currently contains my working notes (sorry if they're scattered and hard
to follow; at least they're better than my handwriting!)

Here is a summary of several of the key issues:

A) The content of a CompoundArtifact is a set of <name,ID> member bindings.
Both the ids *and* the names must be considered during a merge. (It's
entirely possible that an artifact has been renamed but not otherwise
changed, or has been moved to a different parent within a particular image,
or has been changed, renamed and moved all at once, etc.)

B) Compound merges involve several semi-independent factors.  Several
combinations of these factors are not handled correctly; others are not
handled at all.

Up to three images are involved in merges: a leaf image (source of changes),
a base or target image, and a common ancestor image.  A given
CompoundArtifact may be present in one, two or all three of these images.
Where present, that CompoundArtifact may contain different member bindings
for a given artifact.

There are a number of possible combinations that must be taken into account
both to merge content (when that can be done automatically) and to create an
appropriate, accurate conflict indication when manual intervention is needed.

C)  Additional information about the complete parentage of an artifact
within a given BranchImage is needed in order to handle certain types of
merge conflicts.  It is not always sufficient to know the immediate parent
(CA containing a given member binding).  It is sometimes necessary to know
the complete chain of parents (up to the root CA of the image).  This
information is useful both when generating merge conflict indications

Comments and suggestions ?
Further discussion should probably take place on the Wiki, but comments on this list are welcome as well.

- Jim


--
Jim Wright, IBM T.J. Watson Research Center
*** The Stellation project: Advanced SCM for Collaboration
*** http://www.eclipse.org/stellation
*** Work Email: jwright@xxxxxxxxxxxxxx ------- Personal Email: jim.wright@xxxxxxx



Back to the top