@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    merging revisions.
@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: RCSMERGE.TEX 1.2 1997/03/30 22:53:17 KHM Exp $
@c
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c -----------------------------------------------------------------------------
@node rcsmerge,rlog,rcsdiff,Top
@chapter rcsmerge -- merge RCS versions
@cindex rcsmerge
@cindex merge revisions
@menu
* rcsmergeIntro::    Introduction to @code{rcs}.

* rcsmergeOptions::  command line options of @code{rcs}.
* rcsmergeExamples:: Examples of @code{rcsmerge}.
* rcsmergeEnv::      The Environment which can change the
                     behaviour of much of the RCS commands.
* rcsmergeDiag::     Diagnostic output of @code{rcs}.

@end menu
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Description
@c -----------------------------------------------------------------------------
@node rcsmergeIntro,rcsmergeOptions,,rcsmerge
@section Description
rcsmerge incorporates the changes between two revisions of
an RCS file into the corresponding working file.


Pathnames matching an RCS suffix  denote  RCS  files;  all
others   denote   working  files.   Names  are  paired  as
explained in @ref{ciFiles}.

At least one revision must be specified with  one  of  the
options  described  below,  usually @code{-r}.
At most two revisions may be specified.  If only one
revision  is  specified,  the latest revision on the
default branch (normally the highest branch on the
trunk) is assumed for the second revision.
Revisions may be specified numerically or symbolically.

rcsmerge prints a  warning  if  there  are  overlaps,  and
delimits the overlapping regions as explained in @ref{merge}.
The command is useful for  incorporating  changes  into  a
checked-out revision.


@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Options
@c -----------------------------------------------------------------------------
@node rcsmergeOptions,rcsmergeExamples,rcsmergeIntro,rcsmerge
@section Command line options of rcsmerge
@ifinfo
Overview off all options which can be given to @code{rcsmerge}

@code{Synopsis}: rcsmerge [options] file @dots{}
@end ifinfo
@menu
* rcsmergeOptA::   -A Output conflicts the -A style.
* rcsmergeOptE::   -E specify Conflict style
* rcsmergeOptk::   -k Keyword substitution.
* rcsmergeOptp::   -p send to stdout.
* rcsmergeOptT::   -T Modification time.
* rcsmergeOptV::   -V Version; Emulation of RCS Version.
* rcsmergeOptx::   -x Suffixes.
* rcsmergeOptz::   -z Time zone.
@end menu
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Options
@c         option -A
@c -----------------------------------------------------------------------------
@node rcsmergeOptA,rcsmergeOptE,rcsmergeOptions,rcsmergeOptions
@subsection Output conflicts
@cindex -A
@cindex diff3
@cindex diff
@table @code
@item -A

Output conflicts using the @code{-A} style of @code{diff3}, if
supported by @code{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 rcsmerge -- merge RCS versions
@c     Options
@c         option -e -E
@c -----------------------------------------------------------------------------
@node rcsmergeOptE,rcsmergeOptk,rcsmergeOptA,rcsmergeOptions
@subsection Less information
@cindex -e
@cindex -E
@cindex conflict
@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},  @code{rcsmerge}
does not warn about conflicts.

@end table
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Options
@c         option -k
@c -----------------------------------------------------------------------------
@node rcsmergeOptk,rcsmergeOptp,rcsmergeOptE,rcsmergeOptions
@subsection Keyword substitution
@cindex -k
@cindex Keyword
@table @code
@item -k@file{subst}

Use  @file{subst} style  keyword substitution.
See @ref{coKeyword} for details.
For example, @code{-kk -r1.1 -r1.2}  ignores
differences  in  keyword  values  when  merging the
changes from @code{1.1} to @code{1.2}.  It normally
does not make sense  to  merge binary files as if
they were text, so @code{rcsmerge} refuses to merge
files if @code{-kb} expansion is used.


@end table
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Options
@c         option-p
@c -----------------------------------------------------------------------------
@node rcsmergeOptp,rcsmergeOptT,rcsmergeOptk,rcsmergeOptions
@subsection Send to standard out
@cindex -p
@cindex Output
@cindex send result to standard out.
@table @code
@item -p[@file{rev}]

Send the result to standard output instead of over-
writing the working file.

@end table
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Options
@c         option-T
@c -----------------------------------------------------------------------------
@node rcsmergeOptT,rcsmergeOptV,rcsmergeOptp,rcsmergeOptions
@subsection Modification Time
@cindex -T
@cindex Modification Time
@table @code
@item -T

This option has no effect; it is present  for  compatibility
with other RCS commands.

@end table
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Options
@c         option-V
@c -----------------------------------------------------------------------------
@node rcsmergeOptV,rcsmergeOptx,rcsmergeOptT,rcsmergeOptions
@subsection Version
@cindex -V
@cindex Version
@cindex Emulation of RCS
@table @code
@item -V

Print RCS's version number.

@item -V@file{n}

Emulate RCS version @file{n}.  See @ref{coOptV} for details.

@end table
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Options
@c         option-x
@c -----------------------------------------------------------------------------
@node rcsmergeOptx,rcsmergeOptz,rcsmergeOptV,rcsmergeOptions
@subsection Suffixes
@cindex -x
@cindex Suffixes
@table @code
@item -x@file{suffixes}

Use @file{suffixes} to characterize RCS files. See @ref{ciOptx}.

@end table
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Options
@c         option-z
@c -----------------------------------------------------------------------------
@node rcsmergeOptz,,rcsmergeOptx,rcsmergeOptions
@subsection Time Zone
@cindex -z
@cindex Time Zone
@table @code
@item -z@file{zone}

Use @file{zone} as the time zone for keyword substitution.
See @ref{coOptz} for details.

@end table
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Examples
@c -----------------------------------------------------------------------------
@node rcsmergeExamples,rcsmergeEnv,rcsmergeOptions,rcsmerge
@subsection Examples
@cindex Examples

Suppose  you  have  released  revision @code{2.8} of @file{f.c}.  Assume
furthermore that after you complete an unreleased revision
@code{3.4}, you receive updates to release @code{2.8} from someone else.
To combine the updates to @code{2.8} and your changes between @code{2.8}
and @code{3.4}, put the updates to @code{2.8} into file @file{f.c} and execute


@example
rcsmerge  -p  -r2.8  -r3.4  f.c  >f.merged.c
@end example


Then  examine  @file{f.merged.c}.   Alternatively, if you want to
save the updates to @code{2.8} in the RCS file, check them in  as
revision @code{2.8.1.1} and execute @code{co -j}:


@example
ci  -r2.8.1.1  f.c
co  -r3.4  -j2.8:2.8.1.1  f.c
@end example


As  another  example,  the  following  command  undoes the
changes between revision @code{2.4} and  @code{2.8}  in  your  currently
checked out revision in @file{f.c}.


@example
rcsmerge  -r2.8  -r2.4  f.c
@end example

Note  the  order  of  the  arguments, and that @file{f.c} will be
overwritten.

@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Envrionment
@c -----------------------------------------------------------------------------
@node rcsmergeEnv,rcsmergeDiag,rcsmergeExamples,rcsmerge
@section Environment
@cindex Environment
@table @code
@item RCSINIT
options prepended to the argument list, separated by spaces.
See @ref{ciEnv} for details.

@end table
@c =============================================================================
@c rcsmerge -- merge RCS versions
@c     Diagnostics
@c -----------------------------------------------------------------------------
@node rcsmergeDiag,,rcsmergeEnv,rcsmerge
@section Diagnostics
Exit  status  is 0 for no overlaps, 1 for some overlaps, 2
for trouble.

