4 ms·
The merge algorithm http://wiki.monotone.ca/MarkMerge/ http://wiki.monotone.ca/MarkMerge/ used by Monotone has a well defined user model for conflicts, with sim
by mkj 10y ago
The merge algorithm http://wiki.monotone.ca/MarkMerge/ http://wiki.monotone.ca/MarkMerge/ used by Monotone has a well defined user model for conflicts, with similarity to Codeville's merge algorithm iirc. I'm not sure if any later VCS used it, looks like perhaps not.
- tbrownaw 10y agoMark-merge is specifically for standalone scalar values. We used it for tree structure (file name, and patent directory), for file attributes, and as a first pass on file content to see if we needed to bother doing a 3-way message. Tree structure is overrated. The way git handles it works better in practice. Files are an implementation detail, rather than something fundamental about code structure. Using it as a first pass at content merging was mostly a performance optimization, and also only works if you track individual files as objects. It might be a useful building block for a system that tracks refactorings as fundamental operations and knows how to do merges on your AST instead of on the serialized text form of your choice. But as far as I know no such system exists yet, and merging complex data structures is far more complex than simply merging their individual building blocks.