[darcs-users] Why monotone and Codeville are cool

Zooko O'Whielacronx zooko at zooko.com
Mon Mar 21 19:27:20 UTC 2005


> I was less impressed by the way Monotone
> handles merging (sorry, I forget the details),

I think it is simply "do 3-merge of x, y and 
most-recent-common-ancestor(x, y)".

I could be wrong.

> I tried to look at Codeville, but couldn't find any documentation that
> could give me an idea of the underlying data model.  I didn't read the
> sources, as I'm not particularly proficient at reading Python.  If you
> have pointers to documentation about Codeville's data structures to
> point me to, I'm interested.

Sadly, there aren't any docs (as far as I know).

The fundamental concept in Codeville is delicious:

For every line of code, keep track of all patches that have ever 
touched this line of code.  Now when merging, do the following for 
every line of code to be merged:

If one of the two alternate versions of this line has been touched by 
every patch that touched the other version of this line, then that one 
is the result of the merge.  Else, if neither has been touched by every 
patch that touched the other, then it is a conflict.  Obviously when 
the conflict is resolved then you want to mark the new line as 
effectively having been touched by every patch that touched either of 
the conflicting originals.

Again, I could be wrong, but it is something like that.

Regards,

Zooko





More information about the darcs-users mailing list