~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/lca-merge.txt

  • Committer: Aaron Bentley
  • Date: 2008-03-11 14:29:08 UTC
  • mto: This revision was merged to the branch mainline in revision 3264.
  • Revision ID: aaron@aaronbentley.com-20080311142908-yyrvcpn2mldt0fnn
Update documentation to reflect conflict-handling difference

Show diffs side-by-side

added added

removed removed

Lines of Context:
106
106
implementation of three-way.  (One that happens to automatically do
107
107
``--reprocess``, ftw).
108
108
 
 
109
Exception to three-way behavior
 
110
-------------------------------
 
111
There is a special case of three-way merge which LCA merge handles differently
 
112
from our default "merge3" algorithm:
 
113
BASE has content X, THIS deletes the content, and OTHER changes X to Y.  In
 
114
this case, LCA merge emits Y in its output and does not indicate a conflict.
 
115
merge3 would output Y, but would also indicate a conflict.  (This is also the
 
116
behavior in the inverse case where OTHER has nothing and THIS has Y.)
 
117
 
 
118
This behavior is due the way LCA determines basic conflicts; they
 
119
can only be emitted when THIS and OTHER each have unique lines between common
 
120
lines.  If THIS does not have unique lines in this position, conflicts will not
 
121
be emitted, even if its (lack of) content is unique.
 
122
 
 
123
This behavior difference is shared with "weave" merge.  I hope that a future
 
124
revision of LCA merge will handle this case as merge3 would.
 
125
 
109
126
Why a new name
110
127
--------------
111
128