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.\" 30*26b5deefSTom Jones.Dd June 23, 2022 31e1910ebdSBaptiste Daroussin.Dt DIFF3 1 32e1910ebdSBaptiste Daroussin.Os 33e1910ebdSBaptiste Daroussin.Sh NAME 34e1910ebdSBaptiste Daroussin.Nm diff3 35e1910ebdSBaptiste Daroussin.Nd 3-way differential file comparison 36e1910ebdSBaptiste Daroussin.Sh SYNOPSIS 37*26b5deefSTom Jones.Nm 38034dd2d5STom Jones.Op Fl 3AaEeimTXx 39e8ff9535SPiotr Pawel Stefaniak.Op Fl Fl diff-program Ar program 4054a3415cSPiotr Pawel Stefaniak.Op Fl Fl strip-trailing-cr 41e8ff9535SPiotr Pawel Stefaniak.Op Fl L | Fl Fl label Ar label1 42e8ff9535SPiotr Pawel Stefaniak.Op Fl L | Fl Fl label Ar label2 43e8ff9535SPiotr Pawel Stefaniak.Op Fl L | Fl Fl label Ar label3 44e1910ebdSBaptiste Daroussin.Ar file1 file2 file3 45*26b5deefSTom Jones.Nm 46*26b5deefSTom Jones.Op Fl Fl help 47*26b5deefSTom Jones.Op Fl Fl version 48e1910ebdSBaptiste Daroussin.Sh DESCRIPTION 49e1910ebdSBaptiste DaroussinThe 50e1910ebdSBaptiste Daroussin.Nm 51e1910ebdSBaptiste Daroussinutility compares the contents of three different versions of a file, 52e1910ebdSBaptiste Daroussin.Ar file1 , 53e1910ebdSBaptiste Daroussin.Ar file2 54e1910ebdSBaptiste Daroussinand 55e1910ebdSBaptiste Daroussin.Ar file3 , 56e1910ebdSBaptiste Daroussinwriting the result to the standard output. 57e1910ebdSBaptiste DaroussinThe options describe different methods of merging and 58e1910ebdSBaptiste Daroussinpurging 59e1910ebdSBaptiste Daroussinthe separate versions into a new file. 60e1910ebdSBaptiste Daroussin.Nm 61e1910ebdSBaptiste Daroussinis used by 62e1910ebdSBaptiste Daroussin.Xr rcs 1 63e1910ebdSBaptiste Daroussinto merge specific versions or create 64e1910ebdSBaptiste Daroussinnew versions. 65e1910ebdSBaptiste Daroussin.Pp 66e1910ebdSBaptiste DaroussinThe options are as follows: 67e1910ebdSBaptiste Daroussin.Bl -tag -width "-E, -X" 68e8ff9535SPiotr Pawel Stefaniak.It Fl 3 , Fl Fl easy-only 69e1910ebdSBaptiste DaroussinProduces an output script suitable for 70e1910ebdSBaptiste Daroussin.Xr ed 1 71e1910ebdSBaptiste Daroussinwith changes 72e1910ebdSBaptiste Daroussinspecific only to 73e1910ebdSBaptiste Daroussin.Ar file3 . 749ab079c5STom Jones.It Fl A Fl Fl show-all 759ab079c5STom JonesOutput all changes, bracketing conflicts. 76e8ff9535SPiotr Pawel Stefaniak.It Fl a , Fl Fl text 77e1910ebdSBaptiste DaroussinTreat all files as ASCII. 78e8ff9535SPiotr Pawel Stefaniak.It Fl E , Fl Fl show-overlap 79e8ff9535SPiotr Pawel Stefaniak.It Fl X 80e1910ebdSBaptiste DaroussinSimilar to 81e1910ebdSBaptiste Daroussin.Fl e 82e1910ebdSBaptiste Daroussinand 83e1910ebdSBaptiste Daroussin.Fl x , 84e1910ebdSBaptiste Daroussinrespectively, but treat overlapping changes (i.e., changes that would 85e1910ebdSBaptiste Daroussinbe noted with ==== in the normal listing) differently. 86e1910ebdSBaptiste DaroussinThe overlapping lines from both files will be inserted by the edit script, 87e1910ebdSBaptiste Daroussinbracketed by "<<<<<<" and ">>>>>>" lines. 88e8ff9535SPiotr Pawel Stefaniak.It Fl e , Fl Fl ed 89e1910ebdSBaptiste DaroussinProduces output in a form suitable as an input script for the 90e1910ebdSBaptiste Daroussin.Xr ed 1 91e1910ebdSBaptiste Daroussinutility. 92e1910ebdSBaptiste DaroussinThe script may then be used to merge differences common between all 93e1910ebdSBaptiste Daroussinthree files and differences specific to 94e1910ebdSBaptiste Daroussin.Ar file1 95e1910ebdSBaptiste Daroussinand 96e1910ebdSBaptiste Daroussin.Ar file3 . 97e1910ebdSBaptiste DaroussinIn other words, the 98e1910ebdSBaptiste Daroussin.Fl e 99e1910ebdSBaptiste Daroussinoption ignores differences specific to 100e1910ebdSBaptiste Daroussin.Ar file1 101e1910ebdSBaptiste Daroussinand 102e1910ebdSBaptiste Daroussin.Ar file2 , 103e1910ebdSBaptiste Daroussinand those specific to 104e1910ebdSBaptiste Daroussin.Ar file2 105e1910ebdSBaptiste Daroussinand 106e1910ebdSBaptiste Daroussin.Ar file3 . 107e1910ebdSBaptiste DaroussinIt is useful for backing out changes specific to 108e1910ebdSBaptiste Daroussin.Ar file2 109e1910ebdSBaptiste Daroussinonly. 110*26b5deefSTom Jones.It Fl Fl help 111*26b5deefSTom JonesPrints usage information and exits. 112e8ff9535SPiotr Pawel Stefaniak.It Fl i 113e8ff9535SPiotr Pawel StefaniakAppends 'w' and 'q' 114e8ff9535SPiotr Pawel Stefaniak.Xr ed 1 115e8ff9535SPiotr Pawel Stefaniakcommands. 116e8ff9535SPiotr Pawel Stefaniak.It Fl L , Fl Fl label 117e8ff9535SPiotr Pawel StefaniakDefines labels to print instead of file names 118e8ff9535SPiotr Pawel Stefaniak.Ar file1 , 119e8ff9535SPiotr Pawel Stefaniak.Ar file2 120e8ff9535SPiotr Pawel Stefaniakand 121e8ff9535SPiotr Pawel Stefaniak.Ar file3 . 122034dd2d5STom Jones.It Fl m, Fl Fl merge 123034dd2d5STom JonesMerge output instead of generating ed script. 1249f7a81b1SPiotr Pawel Stefaniak.It Fl T, Fl Fl initial-tab 1259f7a81b1SPiotr Pawel StefaniakIn the normal listing, 1269f7a81b1SPiotr Pawel Stefaniakuse a tab instead of two spaces 1279f7a81b1SPiotr Pawel Stefaniakat the beginning of each line. 1289f7a81b1SPiotr Pawel StefaniakIn modes that produce an 1299f7a81b1SPiotr Pawel Stefaniak.Xr ed 1 1309f7a81b1SPiotr Pawel Stefaniakscript, this option changes nothing. 131e8ff9535SPiotr Pawel Stefaniak.It Fl x, Fl Fl overlap-only 132e1910ebdSBaptiste DaroussinProduces an output script suitable for 133e1910ebdSBaptiste Daroussin.Xr ed 1 134e1910ebdSBaptiste Daroussinwith changes 135e1910ebdSBaptiste Daroussinspecific only to all three versions. 136e8ff9535SPiotr Pawel Stefaniak.It Fl Fl diff-program Ar program 137e8ff9535SPiotr Pawel StefaniakUse 138e8ff9535SPiotr Pawel Stefaniak.Ar program 139e8ff9535SPiotr Pawel Stefaniakinstead of the default 140e8ff9535SPiotr Pawel Stefaniak.Xr diff 1 141e8ff9535SPiotr Pawel Stefaniakto compare files. 14254a3415cSPiotr Pawel Stefaniak.It Fl Fl strip-trailing-cr 14354a3415cSPiotr Pawel StefaniakStrip trailing carriage return on input files. 144*26b5deefSTom Jones.It Fl Fl version 145*26b5deefSTom JonesPrints version information and exits. 146e1910ebdSBaptiste Daroussin.El 147e1910ebdSBaptiste Daroussin.Pp 148e1910ebdSBaptiste DaroussinThe 149e1910ebdSBaptiste Daroussin.Fl E 150e1910ebdSBaptiste Daroussinoption is used by 151e1910ebdSBaptiste Daroussin.Tn RCS 152e1910ebdSBaptiste Daroussin.Xr merge 1 153e1910ebdSBaptiste Daroussinto ensure that overlapping changes in the merged files are preserved 154e1910ebdSBaptiste Daroussinand brought to someone's attention. 155e1910ebdSBaptiste Daroussin.Pp 156e1910ebdSBaptiste DaroussinFor example, suppose lines 7-8 are changed in both 157e1910ebdSBaptiste Daroussin.Ar file1 158e1910ebdSBaptiste Daroussinand 159e1910ebdSBaptiste Daroussin.Ar file2 . 160e1910ebdSBaptiste DaroussinApplying the edit script generated by the command 161e1910ebdSBaptiste Daroussin.Pp 162e1910ebdSBaptiste Daroussin.Dl $ diff3 -E file1 file2 file3 163e1910ebdSBaptiste Daroussin.Pp 164e1910ebdSBaptiste Daroussinto 165e1910ebdSBaptiste Daroussin.Ar file1 166e1910ebdSBaptiste Daroussinresults in the file: 167e1910ebdSBaptiste Daroussin.Bd -literal -offset indent 168e1910ebdSBaptiste Daroussinlines 1-6 169e1910ebdSBaptiste Daroussinof file1 170e1910ebdSBaptiste Daroussin<<<<<<< file1 171e1910ebdSBaptiste Daroussinlines 7-8 172e1910ebdSBaptiste Daroussinof file1 173e1910ebdSBaptiste Daroussin======= 174e1910ebdSBaptiste Daroussinlines 7-8 175e1910ebdSBaptiste Daroussinof file3 176e1910ebdSBaptiste Daroussin>>>>>>> file3 177e1910ebdSBaptiste Daroussinrest of file1 178e1910ebdSBaptiste Daroussin.Ed 179e1910ebdSBaptiste Daroussin.Pp 180e1910ebdSBaptiste DaroussinThe default output of 181e1910ebdSBaptiste Daroussin.Nm 182e1910ebdSBaptiste Daroussinmakes notation of the differences between all files, and those 183e1910ebdSBaptiste Daroussindifferences specific to each pair of files. 184e1910ebdSBaptiste DaroussinThe changes are described by the commands necessary for 185e1910ebdSBaptiste Daroussin.Xr ed 1 186e1910ebdSBaptiste Daroussinto create the desired target from the different versions. 187e1910ebdSBaptiste DaroussinSee 188e1910ebdSBaptiste Daroussin.Xr diff 1 189e1910ebdSBaptiste Daroussinfor a description of the commands. 190e1910ebdSBaptiste Daroussin.Bl -tag -width "=====" 191e1910ebdSBaptiste Daroussin.It Li \&==== 192e1910ebdSBaptiste DaroussinThe lines beneath this notation are ranges of lines which are different 193e1910ebdSBaptiste Daroussinbetween all files. 194e1910ebdSBaptiste Daroussin.It \&==== Ns Va n 195e1910ebdSBaptiste DaroussinThe lines beneath this notation are ranges of lines which are exclusively 196e1910ebdSBaptiste Daroussindifferent in file 197e1910ebdSBaptiste Daroussin.Va n . 198e1910ebdSBaptiste Daroussin.El 199e1910ebdSBaptiste Daroussin.Sh SEE ALSO 200e1910ebdSBaptiste Daroussin.Xr diff 1 , 201e1910ebdSBaptiste Daroussin.Xr ed 1 , 202e1910ebdSBaptiste Daroussin.Xr merge 1 , 203e1910ebdSBaptiste Daroussin.Xr rcs 1 , 204e1910ebdSBaptiste Daroussin.Xr sdiff 1 205e1910ebdSBaptiste Daroussin.Sh HISTORY 206e1910ebdSBaptiste DaroussinA 207e1910ebdSBaptiste Daroussin.Nm 208e1910ebdSBaptiste Daroussincommand appeared in 209e1910ebdSBaptiste Daroussin.At v7 . 210e1910ebdSBaptiste Daroussin.Sh BUGS 211e1910ebdSBaptiste DaroussinThe 212e1910ebdSBaptiste Daroussin.Fl e 213e1910ebdSBaptiste Daroussinoption cannot catch and change lines which have 214e1910ebdSBaptiste Daroussin.Ql \&. 215e1910ebdSBaptiste Daroussinas the first and only character on the line. 216e1910ebdSBaptiste DaroussinThe resulting script will fail on that line 217e1910ebdSBaptiste Daroussinas 218e1910ebdSBaptiste Daroussin.Ql \&. 219e1910ebdSBaptiste Daroussinis an 220e1910ebdSBaptiste Daroussin.Xr ed 1 221e1910ebdSBaptiste Daroussinediting command. 222