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

RE: svn diff, svn merge, and vendor branches (long)

From: Bill Tutt <rassilon_at_lyra.org>
Date: 2002-12-08 06:05:42 CET

> From: Philip Martin [mailto:philip@codematters.co.uk]
> One problem I forsee:
> when we get as far as recording merge history, how are we going to
> record the merge of the difference between two unrelated files? Will
> subsequent merge-history-aware merges use that information?

If we support merging two unrelated files then the answer is yes.
Storing the data is not an issue. Solving the repeated merge problem
requires us to store ancestry sets. Merges simply add additional data to
ancestry sets.

e.g.:

    John commits an update to create /foo as Foo.0.TxnA.

/foo now has an empty ancestry set.

    Barney commits a change to /foo as Foo.0.TxnB.

/foo now has an ancestry set of {Foo.0.TxnA}

    Charley commits a change to /foo as Foo.0.TxnC.

/foo now has an ancestry set of {Foo.0.TxnA Foo.0.TxnB}

    Fred unfortunately uses a filesystem copy to copy /foo to /bar.
    Fred commits /bar as Bar.0.TxnD.
    John commits a change to /bar as Bar.0.TxnE.

/bar now has an ancestry set of {Bar.0.TxnD}

    Fred merges the changes from /bar into /foo and commits /foo as
{Foo.0.TxnF}

/foo now has an ancestry set of {Foo.0.TxnA Foo.0.TxnB Foo.0.TxnC
Bar.0.TxnD Bar.0.TxnE}

The result of merge operations is the union of all ancestry sets
involved in the operation. If there's a star merge of /foo /bar and
/blah then the new /foo is the union of all ancestry sets of /foo /bar
and /blah.

FYI,
Bill

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun Dec 8 06:06:28 2002

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