@c
@c ================================================================================
@c                               Edition 1.1
@c                      of the Texinfo-manuals for the
@c                      (R)evision (C)ontrol (S)ystem
@c                               Version 5.7
@c
@c                  (c) 1982, 1988, 1989 Walter F. Tichy.
@c           (c) 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.
@c        (c) 1996, 1997 Karl Heinz Marbaise (doing converting job)
@c ================================================================================
@c
@c Discription:
@c    three way file merge
@c
@c Authors:
@c    Walter Tichy,
@c    Paul Eggert,
@c    Karl Heinz Marbaise (doing converting job)
@c
@c e-mail:
@c    Internet: KHMarbaise@p69.ks.fido.de
@c    Fido-net: 2:2452/117.69
@c
@c Bugs, question:
@c    to above e-mail adress.
@c
@c License:
@c    The "Texinfo Edition of the RCS V5.7 manuals" are free
@c    software; you can redistribute it and/or modify it under
@c    the terms of the GNU General Public License as published
@c    by the Free Software Foundation; either version 2, or (at
@c    your option) any later version.
@c
@c    The "Texinfo Edition of the RCS V5.7 manuals" are distributed
@c    in the hope that they will be useful, but WITHOUT ANY WARRANTY;
@c    without even the implied warranty of MERCHANTABILITY or
@c    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
@c    License for more details.
@c
@c    You should have received a copy of the GNU General Public License
@c    along with the "Texinfo Edition of the RCS V5.7 manuals"; see the
@c    file COPYING. If not, write to the:
@c    Free Software Foundation,
@c    59 Temple Place - Suite 330,
@c    Boston, MA 02111-1307, USA.
@c
@c    See \rcstxi.110\COPYING for details.
@c
@c ================================================================================
@c
@c
@c $Id: MERGE.TEX 1.2 1997/03/30 22:53:13 KHM Exp $
@c
@c =============================================================================
@c merge -- three-way file merge
@c -----------------------------------------------------------------------------
@node merge,AppendixA,rlog,Top
@chapter merge -- three-way file merge
@cindex merge
@cindex file merge
@menu
* mergeIntro::       Introduction to @code{merge}.

* mergeOptions::     command line options of @code{merge}.
* mergeDiag::        Diagnostic output of @code{merge}.
* mergeBugs::        Bugs.

@end menu
@c =============================================================================
@c merge -- three-way file merge
@c     Description
@c -----------------------------------------------------------------------------
@node mergeIntro,mergeOptions,,merge
@section Description

@code{merge}  incorporates  all  changes  that lead from @file{file2} to
@file{file3} into @file{file1}.  The result ordinarily goes
into  @file{file1}.
merge is useful for combining separate changes to an original.
Suppose @file{file2} is the original, and both  @file{file1} and
@file{file3} are  modifications  of  @file{file2} .  Then merge combines
both changes.

A conflict occurs if both @file{file1} and @file{file3} have changes  in
a  common segment of lines.  If a conflict is found, merge
normally outputs a warning and brackets the conflict  with
@code{<<<<<<<}  and  @code{>>>>>>>} lines.  A typical conflict will look
like this:

@example
@group
<<<<<<< file A
lines in file A
=======
lines in file B
>>>>>>> file B
@end group
@end example

If there are conflicts, the user should  edit  the  result
and delete one of the alternatives.
@c =============================================================================
@c merge -- three-way file merge
@c     Options
@c -----------------------------------------------------------------------------
@node mergeOptions,mergeDiag,mergeIntro,merge
@section Command line options of merge
@ifinfo
Overview off all options which can be given to @code{merge}

@code{Synopsis}: merge [options] file1 file2 file3
@end ifinfo
@menu
* mergeOptA::      -A Style of diff3.
* mergeOptE::      -E Conflict style.
* mergeOptL::      -L Labels.
* mergeOptp::      -p Send to standard output.
* mergeOptq::      -q Quite mode.
* mergeOptV::      -V Version.
@end menu
@c =============================================================================
@c merge -- three-way file merge
@c     Options
@c         option -A
@c -----------------------------------------------------------------------------
@node mergeOptA,mergeOptE,mergeOptions,mergeOptions
@subsection Output conflicts
@cindex -A
@cindex Output conflicts
@cindex diff3
@table @code
@item -A

Output conflicts using the @code{-A} style of @code{diff3}, if
supported by diff3.  This merges all changes  leading
from  @file{file2} to @file{file3} into @file{file1}, and generates
the most verbose output.
@end table
@c =============================================================================
@c merge -- three-way file merge
@c     Options
@c         option -E
@c -----------------------------------------------------------------------------
@node mergeOptE,mergeOptL,mergeOptA,mergeOptions
@subsection Specify conflict styles
@cindex -E
@cindex -e
@cindex conflict styles
@cindex diff3
@table @code
@item -E -e

These options specify conflict styles that generate
less   information   than  @code{-A}.   See  @code{diff3}  for
details.  The default is @code{-E}.  With @code{-e},  merge  does
not warn about conflicts.
@end table
@c =============================================================================
@c merge -- three-way file merge
@c     Options
@c         option -L
@c -----------------------------------------------------------------------------
@node mergeOptL,mergeOptp,mergeOptE,mergeOptions
@subsection Label
@cindex -L
@table @code
@item -L@file{label}

This  option  may  be  given up to three times, and
specifies labels to be used in place of the  corresponding
file names in conflict reports.  That is,
@code{merge -L x -L y -L z a b c}  generates  output  that
looks like it came from files @file{x}, @file{y} and @file{z}instead of
from files @file{a}, @file{b} and @file{c}.

@end table
@c =============================================================================
@c merge -- three-way file merge
@c     Options
@c         option -p
@c -----------------------------------------------------------------------------
@node mergeOptp,mergeOptq,mergeOptL,mergeOptions
@subsection Standard output
@cindex -p
@cindex Standard output
@table @code
@item -p

Send results to standard output  instead  of  overwriting
@file{file1}.
@end table
@c =============================================================================
@c merge -- three-way file merge
@c     Options
@c         option -q
@c -----------------------------------------------------------------------------
@node mergeOptq,mergeOptV,mergeOptp,mergeOptions
@subsection Quiet Mode
@cindex -q
@cindex Quiet mode
@table @code
@item -q

Quiet;  do  not  warn about conflicts.
@end table
@c =============================================================================
@c merge -- three-way file merge
@c     Options
@c         option -V
@c -----------------------------------------------------------------------------
@node mergeOptV,,mergeOptq,mergeOptions
@subsection Version
@cindex -V
@cindex Version
@table @code
@item -V

Print's version number.
@end table
@c =============================================================================
@c merge -- three-way file merge
@c     Diagnostics
@c -----------------------------------------------------------------------------
@node mergeDiag,mergeBugs,mergeOptions,merge
@section Diagnostics
Exit status is 0 for no conflicts, 1 for some conflicts, 2
for trouble.
@c =============================================================================
@c merge -- three-way file merge
@c     Bugs
@c -----------------------------------------------------------------------------
@node mergeBugs,,mergeDiag,merge
@section Bugs
It normally does not make sense to merge binary  files  as
if they were text, but merge tries to do it anyway.

