On Sun, Sep 14, 2003 at 08:46:52PM +0900, Rob Lahaye wrote: > What is left and right in the mergemaster context??? > 'man sdiff' doesn't seem to help out here. > I've tried a bit (I typed 'v' and 'q'), but then found /etc/hosts > totally empty!! > > Any idea where I went wrong?
'sdiff' does a side-by-side comparison of two files, and lets you generate a file where some or all of those differences have been merged together. 'left' and 'right' in this context refer to the two columns that sdiff divides the screen into, where it shows you the blocks of lines that differ between the two files you're comparing. Perhaps an example is in order. Run these commands to get two different versions of the GENERIC kernel configuration from cvs: # cd /tmp # fetch -o GENERIC-CURRENT 'http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/i386/conf/GENERIC?rev=220.127.116.11.2.2&content-type=text/plain' # fetch -o GENERIC-STABLE 'http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/src/sys/i386/conf/GENERIC?rev=18.104.22.168&content-type=text/plain' (As the names suggest, those are just the latest versions from the HEAD and RELENG_4 branches) Now, assuming you're in an xterm or similar, stretch the window until it is at least 160 characters wide. If you're in a fixed width window, substitute the width of the window for the number after '-w' below. It's clearer to see what's going on if you can use as wide a screen as possible. Now run: # setenv EDITOR=vi # sdiff -o GENERIC.n -s -w 160 GENERIC-STABLE GENERIC-CURRENT The first output you will see is: # $FreeBSD: /repoman/r/ncvs/src/sys/i386/conf/GENERIC,v 22.214.171.124 2003/04/28 | # $FreeBSD: /repoman/r/ncvs/src/sys/i386/conf/GENERIC,v 126.96.36.199.2.2 2003/0 % (Which probably won't make a lot of sense unless your mail client doesn't automatically wrap long lines and you happen to be reading this in a fairly wide screen) What this is doing is asking which $FreeBSD$ tag should go into the merged file. Choose 'l' for the left-hand version, which comes from GENERIC-STABLE. If you're in a narrow window, you probably can't see the difference between those two lines as it's too far over to be displayed. The next chunk looks like: < # FireWire support < device firewire # FireWire bus code < device sbp # SCSI over FireWire (Requires scbus and da) < device fwe # Ethernet over FireWire (non-standard!) < % because the firewire support is only in the GENERIC-STABLE kernel config. Here, choose 'r' for the right hand version which comes from GENERIC-CURRENT. What you should end up with is a new file GENERIC.n where: % diff -u GENERIC-STABLE GENERIC.n --- GENERIC-STABLE Mon Apr 28 04:41:46 2003 +++ GENERIC.n Sun Sep 14 16:51:22 2003 @@ -264,8 +264,3 @@ device aue # ADMtek USB ethernet device cue # CATC USB ethernet device kue # Kawasaki LSI USB ethernet - -# FireWire support -device firewire # FireWire bus code -device sbp # SCSI over FireWire (Requires scbus and da) -device fwe # Ethernet over FireWire (non-standard!) and % diff -u GENERIC-CURRENT GENERIC.n --- GENERIC-CURRENT Tue Mar 25 23:35:15 2003 +++ GENERIC.n Sun Sep 14 16:51:22 2003 @@ -15,7 +15,7 @@ # device lines is also present in the ./LINT configuration file. If you are # in doubt as to the purpose or necessity of a line, check first in LINT. # -# $FreeBSD: /repoman/r/ncvs/src/sys/i386/conf/GENERIC,v 188.8.131.52.2.2 2003/03/25 23:35:15 jhb Exp $ +# $FreeBSD: /repoman/r/ncvs/src/sys/i386/conf/GENERIC,v 184.108.40.206 2003/04/28 03:41:46 simokawa Exp $ machine i386 cpu I386_CPU One thing that may trip you up: don't set your $EDITOR variable to 'emacs' -- because of the way emacs works by immediately copying the temporary file sdiff(1) generates, and renaming the original as a backup, it confuses sdiff(1), and you won't see any of your edits in the output. vi(1) just works directly on the temporary file and all is well. Cheers, Matthew -- Dr Matthew J Seaman MA, D.Phil. 26 The Paddocks Savill Way PGP: http://www.infracaninophile.co.uk/pgpkey Marlow Tel: +44 1628 476614 Bucks., SL7 1TH UK
Description: PGP signature