Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Subversion Wiki" for 
change notification.

The "SymmetricMerge" page has been changed by JulianFoad:
http://wiki.apache.org/subversion/SymmetricMerge?action=diff&rev1=91&rev2=92

Comment:
Define more terms in the Terminology section.

  Of course, while in theory the result is independent of which branch is the 
source and which is the target, in practice the merge may give different 
results.  For example, if changes A2 and B2 both add some lines at the same 
place in a certain file, then perhaps the 3-way merge tool (or the user, for 
whom the tool is just a tool) will choose to put the source-branch lines before 
the target-branch lines in the result.  In such ways, the result may differ.  
But notice that, using a suitable 3-way merge tool and/or user input, the 
result could be guaranteed identical.
  
  == Terminology ==
-  complete merge:: A merge that merges all the changes from the source branch 
that have not yet been merged into the target. A ''sync'' merge and a 
''reintegrate'' merge and a ''symmetric'' merge are all ''complete'' merges.
+  sync merge:: In this Wiki page, I use "sync merge" to mean a ''complete 
merge'' in which the ''base node'' is on the source branch.  Outside this Wiki 
page, "sync merge" may be used more generally to mean any ''complete merge''.   
In svn 1.7, this is obtained by specifying "svn merge" without the 
"--reintegrate" option and without any minimum revision number and without any 
of the conditions or options that would prevent merge tracking.
+  reintegrate merge:: A ''complete merge'' in which the ''base node'' is on 
the target branch: that is, one that is in the opposite direction from the 
previous ''complete merge''.  In svn 1.7, this is obtained by specifying "svn 
merge" with the "--reintegrate" option.
+  complete merge:: A merge that merges all the changes from the source branch 
(up to the current head, or up to some specified maximum revision) that have 
not yet been merged into the target branch.  This is in contrast to a 
''cherry-pick'' merge.  A ''complete merge'' is always a ''forward merge''.  A 
''sync'' merge and a ''reintegrate'' merge and a ''symmetric'' merge are all 
''complete'' merges.
   symmetric merge:: A ''complete merge'' that works in either direction 
between two branches, no matter which branch is regarded as the parent and 
which as the child, and no matter which direction any previous merges between 
those branches were performed.  A ''complete merge'' is the normal kind of 
merge in systems such as ClearCase; this paper is about developing such a merge 
in Subversion.
+  cherry-pick merge:: A merge that leaves a gap in the series of changes that 
have been merged from the source branch.  This is obtained by specifying a 
minimum revision number.   This is in contrast to a ''complete'' merge.   It 
can be a ''forward'' or a ''reverse merge''.  A ''cherry-pick'' merge does not 
necessarily ignore mergeinfo; in svn 1.7, the default behaviour of a 
''forward'' cherry-pick merge is to use mergeinfo to omit any of the specified 
revisions that have already been merged.
+  forward merge:: A merge that applies a pre-existing change again in the same 
sense.  Symmetric merging is only concerned with ''forward merges''.  Contrast 
with a ''reverse merge''.<<BR>>
+ 
+  reverse merge:: A merge that applies the inverse of a pre-existing change.  
Symmetric merging is not concerned with reverse merges.  Merge tracking does 
not fully track reverse merges comprehensively; it only tracks whether a branch 
is currently considered to "have" a given change.  The opposite of a ''forward 
merge''.  Note that a single "svn merge" command can apply a mixture of 
''forward'' and ''reverse merges''.<<BR>>
+ 
   natural history:: The sequence of path-revision coordinates where a node 
existed, if you trace it back through history along its normal changes and any 
copy-from links. Nothing to do with merge arrows.
  
  == Drawing The Graphs ==

Reply via email to