xref: /freebsd-14.2/usr.bin/diff3/diff3.1 (revision b2c76c41)
1e1910ebdSBaptiste Daroussin.\" $OpenBSD: diff3.1,v 1.7 2007/05/31 19:20:09 jmc Exp $
2e1910ebdSBaptiste Daroussin.\"
3e1910ebdSBaptiste Daroussin.\" Copyright (c) 1990, 1993, 1994
4e1910ebdSBaptiste Daroussin.\"	The Regents of the University of California.  All rights reserved.
5e1910ebdSBaptiste Daroussin.\"
6e1910ebdSBaptiste Daroussin.\" Redistribution and use in source and binary forms, with or without
7e1910ebdSBaptiste Daroussin.\" modification, are permitted provided that the following conditions
8e1910ebdSBaptiste Daroussin.\" are met:
9e1910ebdSBaptiste Daroussin.\" 1. Redistributions of source code must retain the above copyright
10e1910ebdSBaptiste Daroussin.\"    notice, this list of conditions and the following disclaimer.
11e1910ebdSBaptiste Daroussin.\" 2. Redistributions in binary form must reproduce the above copyright
12e1910ebdSBaptiste Daroussin.\"    notice, this list of conditions and the following disclaimer in the
13e1910ebdSBaptiste Daroussin.\"    documentation and/or other materials provided with the distribution.
14e1910ebdSBaptiste Daroussin.\" 3. Neither the name of the University nor the names of its contributors
15e1910ebdSBaptiste Daroussin.\"    may be used to endorse or promote products derived from this software
16e1910ebdSBaptiste Daroussin.\"    without specific prior written permission.
17e1910ebdSBaptiste Daroussin.\"
18e1910ebdSBaptiste Daroussin.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19e1910ebdSBaptiste Daroussin.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20e1910ebdSBaptiste Daroussin.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21e1910ebdSBaptiste Daroussin.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22e1910ebdSBaptiste Daroussin.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23e1910ebdSBaptiste Daroussin.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24e1910ebdSBaptiste Daroussin.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25e1910ebdSBaptiste Daroussin.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26e1910ebdSBaptiste Daroussin.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27e1910ebdSBaptiste Daroussin.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28e1910ebdSBaptiste Daroussin.\" SUCH DAMAGE.
29e1910ebdSBaptiste Daroussin.\"
30e1910ebdSBaptiste Daroussin.\"     @(#)diff3.1	8.2 (Berkeley) 4/18/94
31e1910ebdSBaptiste Daroussin.\"
32*26b5deefSTom Jones.Dd June 23, 2022
33e1910ebdSBaptiste Daroussin.Dt DIFF3 1
34e1910ebdSBaptiste Daroussin.Os
35e1910ebdSBaptiste Daroussin.Sh NAME
36e1910ebdSBaptiste Daroussin.Nm diff3
37e1910ebdSBaptiste Daroussin.Nd 3-way differential file comparison
38e1910ebdSBaptiste Daroussin.Sh SYNOPSIS
39*26b5deefSTom Jones.Nm
40034dd2d5STom Jones.Op Fl 3AaEeimTXx
41e8ff9535SPiotr Pawel Stefaniak.Op Fl Fl diff-program Ar program
4254a3415cSPiotr Pawel Stefaniak.Op Fl Fl strip-trailing-cr
43e8ff9535SPiotr Pawel Stefaniak.Op Fl L | Fl Fl label Ar label1
44e8ff9535SPiotr Pawel Stefaniak.Op Fl L | Fl Fl label Ar label2
45e8ff9535SPiotr Pawel Stefaniak.Op Fl L | Fl Fl label Ar label3
46e1910ebdSBaptiste Daroussin.Ar file1 file2 file3
47*26b5deefSTom Jones.Nm
48*26b5deefSTom Jones.Op Fl Fl help
49*26b5deefSTom Jones.Op Fl Fl version
50e1910ebdSBaptiste Daroussin.Sh DESCRIPTION
51e1910ebdSBaptiste DaroussinThe
52e1910ebdSBaptiste Daroussin.Nm
53e1910ebdSBaptiste Daroussinutility compares the contents of three different versions of a file,
54e1910ebdSBaptiste Daroussin.Ar file1 ,
55e1910ebdSBaptiste Daroussin.Ar file2
56e1910ebdSBaptiste Daroussinand
57e1910ebdSBaptiste Daroussin.Ar file3 ,
58e1910ebdSBaptiste Daroussinwriting the result to the standard output.
59e1910ebdSBaptiste DaroussinThe options describe different methods of merging and
60e1910ebdSBaptiste Daroussinpurging
61e1910ebdSBaptiste Daroussinthe separate versions into a new file.
62e1910ebdSBaptiste Daroussin.Nm
63e1910ebdSBaptiste Daroussinis used by
64e1910ebdSBaptiste Daroussin.Xr rcs 1
65e1910ebdSBaptiste Daroussinto merge specific versions or create
66e1910ebdSBaptiste Daroussinnew versions.
67e1910ebdSBaptiste Daroussin.Pp
68e1910ebdSBaptiste DaroussinThe options are as follows:
69e1910ebdSBaptiste Daroussin.Bl -tag -width "-E, -X"
70e8ff9535SPiotr Pawel Stefaniak.It Fl 3 , Fl Fl easy-only
71e1910ebdSBaptiste DaroussinProduces an output script suitable for
72e1910ebdSBaptiste Daroussin.Xr ed 1
73e1910ebdSBaptiste Daroussinwith changes
74e1910ebdSBaptiste Daroussinspecific only to
75e1910ebdSBaptiste Daroussin.Ar file3 .
769ab079c5STom Jones.It Fl A Fl Fl show-all
779ab079c5STom JonesOutput all changes, bracketing conflicts.
78e8ff9535SPiotr Pawel Stefaniak.It Fl a , Fl Fl text
79e1910ebdSBaptiste DaroussinTreat all files as ASCII.
80e8ff9535SPiotr Pawel Stefaniak.It Fl E , Fl Fl show-overlap
81e8ff9535SPiotr Pawel Stefaniak.It Fl X
82e1910ebdSBaptiste DaroussinSimilar to
83e1910ebdSBaptiste Daroussin.Fl e
84e1910ebdSBaptiste Daroussinand
85e1910ebdSBaptiste Daroussin.Fl x ,
86e1910ebdSBaptiste Daroussinrespectively, but treat overlapping changes (i.e., changes that would
87e1910ebdSBaptiste Daroussinbe noted with ==== in the normal listing) differently.
88e1910ebdSBaptiste DaroussinThe overlapping lines from both files will be inserted by the edit script,
89e1910ebdSBaptiste Daroussinbracketed by "<<<<<<" and ">>>>>>" lines.
90e8ff9535SPiotr Pawel Stefaniak.It Fl e , Fl Fl ed
91e1910ebdSBaptiste DaroussinProduces output in a form suitable as an input script for the
92e1910ebdSBaptiste Daroussin.Xr ed 1
93e1910ebdSBaptiste Daroussinutility.
94e1910ebdSBaptiste DaroussinThe script may then be used to merge differences common between all
95e1910ebdSBaptiste Daroussinthree files and differences specific to
96e1910ebdSBaptiste Daroussin.Ar file1
97e1910ebdSBaptiste Daroussinand
98e1910ebdSBaptiste Daroussin.Ar file3 .
99e1910ebdSBaptiste DaroussinIn other words, the
100e1910ebdSBaptiste Daroussin.Fl e
101e1910ebdSBaptiste Daroussinoption ignores differences specific to
102e1910ebdSBaptiste Daroussin.Ar file1
103e1910ebdSBaptiste Daroussinand
104e1910ebdSBaptiste Daroussin.Ar file2 ,
105e1910ebdSBaptiste Daroussinand those specific to
106e1910ebdSBaptiste Daroussin.Ar file2
107e1910ebdSBaptiste Daroussinand
108e1910ebdSBaptiste Daroussin.Ar file3 .
109e1910ebdSBaptiste DaroussinIt is useful for backing out changes specific to
110e1910ebdSBaptiste Daroussin.Ar file2
111e1910ebdSBaptiste Daroussinonly.
112*26b5deefSTom Jones.It Fl Fl help
113*26b5deefSTom JonesPrints usage information and exits.
114e8ff9535SPiotr Pawel Stefaniak.It Fl i
115e8ff9535SPiotr Pawel StefaniakAppends 'w' and 'q'
116e8ff9535SPiotr Pawel Stefaniak.Xr ed 1
117e8ff9535SPiotr Pawel Stefaniakcommands.
118e8ff9535SPiotr Pawel Stefaniak.It Fl L , Fl Fl label
119e8ff9535SPiotr Pawel StefaniakDefines labels to print instead of file names
120e8ff9535SPiotr Pawel Stefaniak.Ar file1 ,
121e8ff9535SPiotr Pawel Stefaniak.Ar file2
122e8ff9535SPiotr Pawel Stefaniakand
123e8ff9535SPiotr Pawel Stefaniak.Ar file3 .
124034dd2d5STom Jones.It Fl m, Fl Fl merge
125034dd2d5STom JonesMerge output instead of generating ed script.
1269f7a81b1SPiotr Pawel Stefaniak.It Fl T, Fl Fl initial-tab
1279f7a81b1SPiotr Pawel StefaniakIn the normal listing,
1289f7a81b1SPiotr Pawel Stefaniakuse a tab instead of two spaces
1299f7a81b1SPiotr Pawel Stefaniakat the beginning of each line.
1309f7a81b1SPiotr Pawel StefaniakIn modes that produce an
1319f7a81b1SPiotr Pawel Stefaniak.Xr ed 1
1329f7a81b1SPiotr Pawel Stefaniakscript, this option changes nothing.
133e8ff9535SPiotr Pawel Stefaniak.It Fl x, Fl Fl overlap-only
134e1910ebdSBaptiste DaroussinProduces an output script suitable for
135e1910ebdSBaptiste Daroussin.Xr ed 1
136e1910ebdSBaptiste Daroussinwith changes
137e1910ebdSBaptiste Daroussinspecific only to all three versions.
138e8ff9535SPiotr Pawel Stefaniak.It Fl Fl diff-program Ar program
139e8ff9535SPiotr Pawel StefaniakUse
140e8ff9535SPiotr Pawel Stefaniak.Ar program
141e8ff9535SPiotr Pawel Stefaniakinstead of the default
142e8ff9535SPiotr Pawel Stefaniak.Xr diff 1
143e8ff9535SPiotr Pawel Stefaniakto compare files.
14454a3415cSPiotr Pawel Stefaniak.It Fl Fl strip-trailing-cr
14554a3415cSPiotr Pawel StefaniakStrip trailing carriage return on input files.
146*26b5deefSTom Jones.It Fl Fl version
147*26b5deefSTom JonesPrints version information and exits.
148e1910ebdSBaptiste Daroussin.El
149e1910ebdSBaptiste Daroussin.Pp
150e1910ebdSBaptiste DaroussinThe
151e1910ebdSBaptiste Daroussin.Fl E
152e1910ebdSBaptiste Daroussinoption is used by
153e1910ebdSBaptiste Daroussin.Tn RCS
154e1910ebdSBaptiste Daroussin.Xr merge 1
155e1910ebdSBaptiste Daroussinto ensure that overlapping changes in the merged files are preserved
156e1910ebdSBaptiste Daroussinand brought to someone's attention.
157e1910ebdSBaptiste Daroussin.Pp
158e1910ebdSBaptiste DaroussinFor example, suppose lines 7-8 are changed in both
159e1910ebdSBaptiste Daroussin.Ar file1
160e1910ebdSBaptiste Daroussinand
161e1910ebdSBaptiste Daroussin.Ar file2 .
162e1910ebdSBaptiste DaroussinApplying the edit script generated by the command
163e1910ebdSBaptiste Daroussin.Pp
164e1910ebdSBaptiste Daroussin.Dl $ diff3 -E file1 file2 file3
165e1910ebdSBaptiste Daroussin.Pp
166e1910ebdSBaptiste Daroussinto
167e1910ebdSBaptiste Daroussin.Ar file1
168e1910ebdSBaptiste Daroussinresults in the file:
169e1910ebdSBaptiste Daroussin.Bd -literal -offset indent
170e1910ebdSBaptiste Daroussinlines 1-6
171e1910ebdSBaptiste Daroussinof file1
172e1910ebdSBaptiste Daroussin<<<<<<< file1
173e1910ebdSBaptiste Daroussinlines 7-8
174e1910ebdSBaptiste Daroussinof file1
175e1910ebdSBaptiste Daroussin=======
176e1910ebdSBaptiste Daroussinlines 7-8
177e1910ebdSBaptiste Daroussinof file3
178e1910ebdSBaptiste Daroussin>>>>>>> file3
179e1910ebdSBaptiste Daroussinrest of file1
180e1910ebdSBaptiste Daroussin.Ed
181e1910ebdSBaptiste Daroussin.Pp
182e1910ebdSBaptiste DaroussinThe default output of
183e1910ebdSBaptiste Daroussin.Nm
184e1910ebdSBaptiste Daroussinmakes notation of the differences between all files, and those
185e1910ebdSBaptiste Daroussindifferences specific to each pair of files.
186e1910ebdSBaptiste DaroussinThe changes are described by the commands necessary for
187e1910ebdSBaptiste Daroussin.Xr ed 1
188e1910ebdSBaptiste Daroussinto create the desired target from the different versions.
189e1910ebdSBaptiste DaroussinSee
190e1910ebdSBaptiste Daroussin.Xr diff 1
191e1910ebdSBaptiste Daroussinfor a description of the commands.
192e1910ebdSBaptiste Daroussin.Bl -tag -width "====="
193e1910ebdSBaptiste Daroussin.It Li \&====
194e1910ebdSBaptiste DaroussinThe lines beneath this notation are ranges of lines which are different
195e1910ebdSBaptiste Daroussinbetween all files.
196e1910ebdSBaptiste Daroussin.It \&==== Ns Va n
197e1910ebdSBaptiste DaroussinThe lines beneath this notation are ranges of lines which are exclusively
198e1910ebdSBaptiste Daroussindifferent in file
199e1910ebdSBaptiste Daroussin.Va n .
200e1910ebdSBaptiste Daroussin.El
201e1910ebdSBaptiste Daroussin.Sh SEE ALSO
202e1910ebdSBaptiste Daroussin.Xr diff 1 ,
203e1910ebdSBaptiste Daroussin.Xr ed 1 ,
204e1910ebdSBaptiste Daroussin.Xr merge 1 ,
205e1910ebdSBaptiste Daroussin.Xr rcs 1 ,
206e1910ebdSBaptiste Daroussin.Xr sdiff 1
207e1910ebdSBaptiste Daroussin.Sh HISTORY
208e1910ebdSBaptiste DaroussinA
209e1910ebdSBaptiste Daroussin.Nm
210e1910ebdSBaptiste Daroussincommand appeared in
211e1910ebdSBaptiste Daroussin.At v7 .
212e1910ebdSBaptiste Daroussin.Sh BUGS
213e1910ebdSBaptiste DaroussinThe
214e1910ebdSBaptiste Daroussin.Fl e
215e1910ebdSBaptiste Daroussinoption cannot catch and change lines which have
216e1910ebdSBaptiste Daroussin.Ql \&.
217e1910ebdSBaptiste Daroussinas the first and only character on the line.
218e1910ebdSBaptiste DaroussinThe resulting script will fail on that line
219e1910ebdSBaptiste Daroussinas
220e1910ebdSBaptiste Daroussin.Ql \&.
221e1910ebdSBaptiste Daroussinis an
222e1910ebdSBaptiste Daroussin.Xr ed 1
223e1910ebdSBaptiste Daroussinediting command.
224