Here are two general schemes for solving the repeated merge problem:

The Most Recent Common Ancestor approach (MRCA)
-----------------------------------------------

In this scheme, you record an optional set of merge sources in each
node-revision.  When asked to do a merge with only one source (that
is, just "svn merge URL", with no second argument), you compute the
most recent ancestor and do a three-way merge between the common
ancestor, the given URL, and the WC.

To compute the most recent ancestor, you chain off the immediate
predecessors of each node-revision.  The immediate predecessors are
the direct predecessor (the most recent node-revision within the node)
and the merge sources.  An interleaved breadth-first search should
find the most recent common ancestor.

The Ancestry Set approach (AS)
------------------------------

(For a longer description of this approach, see
http://svn.collab.net/repos/svn/trunk/doc/programmer/design/model.texi
under "Merging and Ancestry".)

In this scheme, you record the full ancestry set for each
node-revision--that is, the set of all changes which are accounted for
in that node-revision.  (How you store this ancestry set is
unimportant; the point is, you need a reasonably efficient way of
determining it when asked.)  If you are asked to "svn merge URL", you
apply the changes present in URL's ancestry but absent in WC's
ancestry.  Note that this is not a single three-way merge; you may
have to apply a large number of disjoint changes to the WC.

Comparisons and arguments
-------------------------

AS allows you to merge changes from a branch out of order, without
doing any bookkeeping.  MRCA requires you to merge changes from a
branch in order.

Consistency with other modern version controls systems is desirable.

MRCA may be simpler to implement, since it results in a single
three-way merge.

MRCA may be easier for users to understand, even though AS is probably
simpler to a mathematician.

MRCA may break down faster if the merging topology is not
hierarchical.

An Open Question (applying to both schemes)
----------------

If a user asks to merge a directory, should we apply MRCA or AS to
each subdirectory and file to determine what ancestor(s) to use?  Or
should we apply MRCA or AS just once, to the directory itself?  The
latter approach seems simpler and more efficient, but will break down
quickly if the user wants to merge subdirectories of a branch in
advance of merging in the whole thing.
