annotate miscellany/patch-2.0.12u8/patch.man @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children 848621fd0092 441a2190cfae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 .\" -*- nroff -*-
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 .rn '' }`
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 '\" $Header$
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5 '\" $Log$
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 '\" Revision 1.1 2005/04/18 14:46:05 kono
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 '\" Initial revision
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 '\" Revision 2.0.1.2 88/06/22 20:47:18 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 '\" patch12: now avoids Bell System Logo
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 '\" Revision 2.0.1.1 88/06/03 15:12:51 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 '\" patch10: -B switch was contributed.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 '\" Revision 2.0 86/09/17 15:39:09 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16 '\" Baseline for netwide release.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 '\" Revision 1.4 86/08/01 19:23:22 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 '\" Documented -v, -p, -F.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 '\" Added notes to patch senders.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 '\" Revision 1.3 85/03/26 15:11:06 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 '\" Frozen.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 '\" Revision 1.2.1.4 85/03/12 16:14:27 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 '\" Documented -p.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 '\" Revision 1.2.1.3 85/03/12 16:09:41 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 '\" Documented -D.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 '\" Revision 1.2.1.2 84/12/05 11:06:55 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 '\" Added -l switch, and noted bistability bug.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 '\" Revision 1.2.1.1 84/12/04 17:23:39 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 '\" Branch for sdcrdcf changes.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37 '\" Revision 1.2 84/12/04 17:22:02 lwall
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 '\" Baseline version.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 .de Sh
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 .ne 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 \fB\\$1\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46 ..
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 .de Sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 .if t .sp .5v
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 .if n .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 ..
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 '\" Set up \*(-- to give an unbreakable dash;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 '\" string Tr holds user defined translation string.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 '\" Bell System Logo is used as a dummy character.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55 '\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56 '\" Shut up a groff -ww warning.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57 .if \n(.g .if !dTr .ds Tr
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58 .ie n \{\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 .tr \(*W-\*(Tr
bce86c4163a3 Initial revision
kono
parents:
diff changeset
60 .ds -- \(*W-
bce86c4163a3 Initial revision
kono
parents:
diff changeset
61 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
62 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
63 .ds L" ""
bce86c4163a3 Initial revision
kono
parents:
diff changeset
64 .ds R" ""
bce86c4163a3 Initial revision
kono
parents:
diff changeset
65 .ds L' '
bce86c4163a3 Initial revision
kono
parents:
diff changeset
66 .ds R' '
bce86c4163a3 Initial revision
kono
parents:
diff changeset
67 'br \}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
68 .el \{\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
69 .ds -- \(em\|
bce86c4163a3 Initial revision
kono
parents:
diff changeset
70 .tr \*(Tr
bce86c4163a3 Initial revision
kono
parents:
diff changeset
71 .ds L" ``
bce86c4163a3 Initial revision
kono
parents:
diff changeset
72 .ds R" ''
bce86c4163a3 Initial revision
kono
parents:
diff changeset
73 .ds L' `
bce86c4163a3 Initial revision
kono
parents:
diff changeset
74 .ds R' '
bce86c4163a3 Initial revision
kono
parents:
diff changeset
75 'br\}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
76 .TH PATCH 1 LOCAL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
77 .SH NAME
bce86c4163a3 Initial revision
kono
parents:
diff changeset
78 patch - apply a diff file to an original
bce86c4163a3 Initial revision
kono
parents:
diff changeset
79 .SH SYNOPSIS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
80 .B patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
81 [options] [origfile [patchfile]] [+ [options] [origfile]]...
bce86c4163a3 Initial revision
kono
parents:
diff changeset
82 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
83 but usually just
bce86c4163a3 Initial revision
kono
parents:
diff changeset
84 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
85 .B patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
86 <patchfile
bce86c4163a3 Initial revision
kono
parents:
diff changeset
87 .SH DESCRIPTION
bce86c4163a3 Initial revision
kono
parents:
diff changeset
88 .I Patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
89 will take a patch file containing any of the four forms of difference
bce86c4163a3 Initial revision
kono
parents:
diff changeset
90 listing produced by the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
91 .I diff
bce86c4163a3 Initial revision
kono
parents:
diff changeset
92 program and apply those differences to an original file, producing a patched
bce86c4163a3 Initial revision
kono
parents:
diff changeset
93 version.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
94 By default, the patched version is put in place of the original, with
bce86c4163a3 Initial revision
kono
parents:
diff changeset
95 the original file backed up to the same name with the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
96 extension \*(L".orig\*(R" (\*(L"~\*(R" on systems that do not
bce86c4163a3 Initial revision
kono
parents:
diff changeset
97 support long filenames), or as specified by the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
98 .BR -b ,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
99 .BR -B ,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
100 or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
101 .B -V
bce86c4163a3 Initial revision
kono
parents:
diff changeset
102 switches.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
103 The extension used for making backup files may also be specified in the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
104 .B SIMPLE_BACKUP_SUFFIX
bce86c4163a3 Initial revision
kono
parents:
diff changeset
105 environment variable, which is overridden by above switches.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
106 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
107 If the backup file already exists,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
108 .B patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
109 creates a new backup file name by changing the first lowercase letter
bce86c4163a3 Initial revision
kono
parents:
diff changeset
110 in the last component of the file's name into uppercase. If there are
bce86c4163a3 Initial revision
kono
parents:
diff changeset
111 no more lowercase letters in the name, it removes the first character
bce86c4163a3 Initial revision
kono
parents:
diff changeset
112 from the name. It repeats this process until it comes up with a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
113 backup file that does not already exist.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
114 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
115 You may also specify where you want the output to go with a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
116 .B -o
bce86c4163a3 Initial revision
kono
parents:
diff changeset
117 switch; if that file already exists, it is backed up first.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
118 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
119 If
bce86c4163a3 Initial revision
kono
parents:
diff changeset
120 .I patchfile
bce86c4163a3 Initial revision
kono
parents:
diff changeset
121 is omitted, or is a hyphen, the patch will be read from standard input.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
122 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
123 Upon startup, patch will attempt to determine the type of the diff listing,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
124 unless over-ruled by a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
125 .BR -c ,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
126 .BR -e ,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
127 .BR -n ,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
128 or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
129 .B -u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
130 switch.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
131 Context diffs (old-style, new-style, and unified) and
bce86c4163a3 Initial revision
kono
parents:
diff changeset
132 normal diffs are applied by the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
133 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
134 program itself, while ed diffs are simply fed to the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
135 .I ed
bce86c4163a3 Initial revision
kono
parents:
diff changeset
136 editor via a pipe.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
137 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
138 .I Patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
139 will try to skip any leading garbage, apply the diff,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
140 and then skip any trailing garbage.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
141 Thus you could feed an article or message containing a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
142 diff listing to
bce86c4163a3 Initial revision
kono
parents:
diff changeset
143 .IR patch ,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
144 and it should work.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
145 If the entire diff is indented by a consistent amount,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
146 this will be taken into account.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
147 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
148 With context diffs, and to a lesser extent with normal diffs,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
149 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
150 can detect when the line numbers mentioned in the patch are incorrect,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
151 and will attempt to find the correct place to apply each hunk of the patch.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
152 As a first guess, it takes the line number mentioned for the hunk, plus or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
153 minus any offset used in applying the previous hunk.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
154 If that is not the correct place,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
155 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
156 will scan both forwards and backwards for a set of lines matching the context
bce86c4163a3 Initial revision
kono
parents:
diff changeset
157 given in the hunk.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
158 First
bce86c4163a3 Initial revision
kono
parents:
diff changeset
159 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
160 looks for a place where all lines of the context match.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
161 If no such place is found, and it's a context diff, and the maximum fuzz factor
bce86c4163a3 Initial revision
kono
parents:
diff changeset
162 is set to 1 or more, then another scan takes place ignoring the first and last
bce86c4163a3 Initial revision
kono
parents:
diff changeset
163 line of context.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
164 If that fails, and the maximum fuzz factor is set to 2 or more,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
165 the first two and last two lines of context are ignored,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
166 and another scan is made.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
167 (The default maximum fuzz factor is 2.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
168 If
bce86c4163a3 Initial revision
kono
parents:
diff changeset
169 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
170 cannot find a place to install that hunk of the patch, it will put the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
171 hunk out to a reject file, which normally is the name of the output file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
172 plus \*(L".rej\*(R" (\*(L"#\*(R" on systems that do not support
bce86c4163a3 Initial revision
kono
parents:
diff changeset
173 long filenames).
bce86c4163a3 Initial revision
kono
parents:
diff changeset
174 (Note that the rejected hunk will come out in context diff form whether the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
175 input patch was a context diff or a normal diff.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
176 If the input was a normal diff, many of the contexts will simply be null.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
177 The line numbers on the hunks in the reject file may be different than
bce86c4163a3 Initial revision
kono
parents:
diff changeset
178 in the patch file: they reflect the approximate location patch thinks the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
179 failed hunks belong in the new file rather than the old one.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
180 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
181 As each hunk is completed, you will be told whether the hunk succeeded or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
182 failed, and which line (in the new file)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
183 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
184 thought the hunk should go on.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
185 If this is different from the line number specified in the diff you will
bce86c4163a3 Initial revision
kono
parents:
diff changeset
186 be told the offset.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
187 A single large offset MAY be an indication that a hunk was installed in the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
188 wrong place.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
189 You will also be told if a fuzz factor was used to make the match, in which
bce86c4163a3 Initial revision
kono
parents:
diff changeset
190 case you should also be slightly suspicious.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
191 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
192 If no original file is specified on the command line,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
193 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
194 will try to figure out from the leading garbage what the name of the file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
195 to edit is.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
196 In the header of a context diff, the filename is found from lines beginning
bce86c4163a3 Initial revision
kono
parents:
diff changeset
197 with \*(L"***\*(R" or \*(L"---\*(R", with the shortest name of an existing
bce86c4163a3 Initial revision
kono
parents:
diff changeset
198 file winning.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
199 Only context diffs have lines like that, but if there is an \*(L"Index:\*(R"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
200 line in the leading garbage,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
201 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
202 will try to use the filename from that line.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
203 The context diff header takes precedence over an Index line.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
204 If no filename can be intuited from the leading garbage, you will be asked
bce86c4163a3 Initial revision
kono
parents:
diff changeset
205 for the name of the file to patch.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
206 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
207 If the original file cannot be found or is read-only, but a suitable
bce86c4163a3 Initial revision
kono
parents:
diff changeset
208 SCCS or RCS file is handy,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
209 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
210 will attempt to get or check out the file.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
211 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
212 Additionally, if the leading garbage contains a \*(L"Prereq: \*(R" line,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
213 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
214 will take the first word from the prerequisites line (normally a version
bce86c4163a3 Initial revision
kono
parents:
diff changeset
215 number) and check the input file to see if that word can be found.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
216 If not,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
217 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
218 will ask for confirmation before proceeding.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
219 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
220 The upshot of all this is that you should be able to say, while in a news
bce86c4163a3 Initial revision
kono
parents:
diff changeset
221 interface, the following:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
222 .Sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
223 | patch -d /usr/src/local/blurfl
bce86c4163a3 Initial revision
kono
parents:
diff changeset
224 .Sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
225 and patch a file in the blurfl directory directly from the article containing
bce86c4163a3 Initial revision
kono
parents:
diff changeset
226 the patch.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
227 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
228 If the patch file contains more than one patch,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
229 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
230 will try to apply each of them as if they came from separate patch files.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
231 This means, among other things, that it is assumed that the name of the file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
232 to patch must be determined for each diff listing,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
233 and that the garbage before each diff listing will
bce86c4163a3 Initial revision
kono
parents:
diff changeset
234 be examined for interesting things such as filenames and revision level, as
bce86c4163a3 Initial revision
kono
parents:
diff changeset
235 mentioned previously.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
236 You can give switches (and another original file name) for the second and
bce86c4163a3 Initial revision
kono
parents:
diff changeset
237 subsequent patches by separating the corresponding argument lists
bce86c4163a3 Initial revision
kono
parents:
diff changeset
238 by a \*(L'+\*(R'.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
239 (The argument list for a second or subsequent patch may not specify a new
bce86c4163a3 Initial revision
kono
parents:
diff changeset
240 patch file, however.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
241 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
242 .I Patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
243 recognizes the following switches:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
244 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
245 .B \-b
bce86c4163a3 Initial revision
kono
parents:
diff changeset
246 causes the next argument to be interpreted as the backup extension, to be
bce86c4163a3 Initial revision
kono
parents:
diff changeset
247 used in place of \*(L".orig\*(R" or \*(L"~\*(R".
bce86c4163a3 Initial revision
kono
parents:
diff changeset
248 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
249 .B \-B
bce86c4163a3 Initial revision
kono
parents:
diff changeset
250 causes the next argument to be interpreted as a prefix to the backup file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
251 name. If this argument is specified any argument from -b will be ignored.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
252 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
253 .B \-c
bce86c4163a3 Initial revision
kono
parents:
diff changeset
254 forces
bce86c4163a3 Initial revision
kono
parents:
diff changeset
255 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
256 to interpret the patch file as a context diff.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
257 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
258 .B \-d
bce86c4163a3 Initial revision
kono
parents:
diff changeset
259 causes
bce86c4163a3 Initial revision
kono
parents:
diff changeset
260 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
261 to interpret the next argument as a directory, and cd to it before doing
bce86c4163a3 Initial revision
kono
parents:
diff changeset
262 anything else.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
263 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
264 .B \-D
bce86c4163a3 Initial revision
kono
parents:
diff changeset
265 causes
bce86c4163a3 Initial revision
kono
parents:
diff changeset
266 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
267 to use the "#ifdef...#endif" construct to mark changes.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
268 The argument following will be used as the differentiating symbol.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
269 Note that, unlike the C compiler, there must be a space between the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
270 .B \-D
bce86c4163a3 Initial revision
kono
parents:
diff changeset
271 and the argument.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
272 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
273 .B \-e
bce86c4163a3 Initial revision
kono
parents:
diff changeset
274 forces
bce86c4163a3 Initial revision
kono
parents:
diff changeset
275 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
276 to interpret the patch file as an ed script.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
277 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
278 .B \-E
bce86c4163a3 Initial revision
kono
parents:
diff changeset
279 causes
bce86c4163a3 Initial revision
kono
parents:
diff changeset
280 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
281 to remove output files that are empty after the patches have been applied.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
282 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
283 .B \-f
bce86c4163a3 Initial revision
kono
parents:
diff changeset
284 forces
bce86c4163a3 Initial revision
kono
parents:
diff changeset
285 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
286 to assume that the user knows exactly what he or she is doing, and to not
bce86c4163a3 Initial revision
kono
parents:
diff changeset
287 ask any questions. It assumes the following: skip patches for which a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
288 file to patch can't be found; patch files even though they have the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
289 wrong version for the ``Prereq:'' line in the patch; and assume that
bce86c4163a3 Initial revision
kono
parents:
diff changeset
290 patches are not reversed even if they look like they are.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
291 This option does not suppress commentary; use
bce86c4163a3 Initial revision
kono
parents:
diff changeset
292 .B \-s
bce86c4163a3 Initial revision
kono
parents:
diff changeset
293 for that.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
294 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
295 .B \-t
bce86c4163a3 Initial revision
kono
parents:
diff changeset
296 similar to
bce86c4163a3 Initial revision
kono
parents:
diff changeset
297 .BR \-f ,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
298 in that it suppresses questions, but makes some different assumptions:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
299 skip patches for which a file to patch can't be found (the same as \fB\-f\fP);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
300 skip patches for which the file has the wrong version for the ``Prereq:'' line
bce86c4163a3 Initial revision
kono
parents:
diff changeset
301 in the patch; and assume that patches are reversed if they look like
bce86c4163a3 Initial revision
kono
parents:
diff changeset
302 they are.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
303 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
304 .B \-F<number>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
305 sets the maximum fuzz factor.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
306 This switch only applies to context diffs, and causes
bce86c4163a3 Initial revision
kono
parents:
diff changeset
307 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
308 to ignore up to that many lines in looking for places to install a hunk.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
309 Note that a larger fuzz factor increases the odds of a faulty patch.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
310 The default fuzz factor is 2, and it may not be set to more than
bce86c4163a3 Initial revision
kono
parents:
diff changeset
311 the number of lines of context in the context diff, ordinarily 3.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
312 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
313 .B \-l
bce86c4163a3 Initial revision
kono
parents:
diff changeset
314 causes the pattern matching to be done loosely, in case the tabs and
bce86c4163a3 Initial revision
kono
parents:
diff changeset
315 spaces have been munged in your input file.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
316 Any sequence of whitespace in the pattern line will match any sequence
bce86c4163a3 Initial revision
kono
parents:
diff changeset
317 in the input file.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
318 Normal characters must still match exactly.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
319 Each line of the context must still match a line in the input file.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
320 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
321 .B \-n
bce86c4163a3 Initial revision
kono
parents:
diff changeset
322 forces
bce86c4163a3 Initial revision
kono
parents:
diff changeset
323 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
324 to interpret the patch file as a normal diff.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
325 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
326 .B \-N
bce86c4163a3 Initial revision
kono
parents:
diff changeset
327 causes
bce86c4163a3 Initial revision
kono
parents:
diff changeset
328 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
329 to ignore patches that it thinks are reversed or already applied.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
330 See also
bce86c4163a3 Initial revision
kono
parents:
diff changeset
331 .B \-R .
bce86c4163a3 Initial revision
kono
parents:
diff changeset
332 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
333 .B \-o
bce86c4163a3 Initial revision
kono
parents:
diff changeset
334 causes the next argument to be interpreted as the output file name.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
335 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
336 .B \-p<number>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
337 sets the pathname strip count,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
338 which controls how pathnames found in the patch file are treated, in case
bce86c4163a3 Initial revision
kono
parents:
diff changeset
339 the you keep your files in a different directory than the person who sent
bce86c4163a3 Initial revision
kono
parents:
diff changeset
340 out the patch.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
341 The strip count specifies how many slashes are to be stripped from
bce86c4163a3 Initial revision
kono
parents:
diff changeset
342 the front of the pathname.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
343 (Any intervening directory names also go away.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
344 For example, supposing the filename in the patch file was
bce86c4163a3 Initial revision
kono
parents:
diff changeset
345 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
346 /u/howard/src/blurfl/blurfl.c
bce86c4163a3 Initial revision
kono
parents:
diff changeset
347 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
348 setting
bce86c4163a3 Initial revision
kono
parents:
diff changeset
349 .B \-p
bce86c4163a3 Initial revision
kono
parents:
diff changeset
350 or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
351 .B \-p0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
352 gives the entire pathname unmodified,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
353 .B \-p1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
354 gives
bce86c4163a3 Initial revision
kono
parents:
diff changeset
355 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
356 u/howard/src/blurfl/blurfl.c
bce86c4163a3 Initial revision
kono
parents:
diff changeset
357 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
358 without the leading slash,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
359 .B \-p4
bce86c4163a3 Initial revision
kono
parents:
diff changeset
360 gives
bce86c4163a3 Initial revision
kono
parents:
diff changeset
361 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
362 blurfl/blurfl.c
bce86c4163a3 Initial revision
kono
parents:
diff changeset
363 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
364 and not specifying
bce86c4163a3 Initial revision
kono
parents:
diff changeset
365 .B \-p
bce86c4163a3 Initial revision
kono
parents:
diff changeset
366 at all just gives you "blurfl.c", unless all of the directories in the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
367 leading path (u/howard/src/blurfl) exist and that path is relative,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
368 in which case you get the entire pathname unmodified.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
369 Whatever you end up with is looked for either in the current directory,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
370 or the directory specified by the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
371 .B \-d
bce86c4163a3 Initial revision
kono
parents:
diff changeset
372 switch.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
373 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
374 .B \-r
bce86c4163a3 Initial revision
kono
parents:
diff changeset
375 causes the next argument to be interpreted as the reject file name.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
376 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
377 .B \-R
bce86c4163a3 Initial revision
kono
parents:
diff changeset
378 tells
bce86c4163a3 Initial revision
kono
parents:
diff changeset
379 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
380 that this patch was created with the old and new files swapped.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
381 (Yes, I'm afraid that does happen occasionally, human nature being what it
bce86c4163a3 Initial revision
kono
parents:
diff changeset
382 is.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
383 .I Patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
384 will attempt to swap each hunk around before applying it.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
385 Rejects will come out in the swapped format.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
386 The
bce86c4163a3 Initial revision
kono
parents:
diff changeset
387 .B \-R
bce86c4163a3 Initial revision
kono
parents:
diff changeset
388 switch will not work with ed diff scripts because there is too little
bce86c4163a3 Initial revision
kono
parents:
diff changeset
389 information to reconstruct the reverse operation.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
390 .Sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
391 If the first hunk of a patch fails,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
392 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
393 will reverse the hunk to see if it can be applied that way.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
394 If it can, you will be asked if you want to have the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
395 .B \-R
bce86c4163a3 Initial revision
kono
parents:
diff changeset
396 switch set.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
397 If it can't, the patch will continue to be applied normally.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
398 (Note: this method cannot detect a reversed patch if it is a normal diff
bce86c4163a3 Initial revision
kono
parents:
diff changeset
399 and if the first command is an append (i.e. it should have been a delete)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
400 since appends always succeed, due to the fact that a null context will match
bce86c4163a3 Initial revision
kono
parents:
diff changeset
401 anywhere.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
402 Luckily, most patches add or change lines rather than delete them, so most
bce86c4163a3 Initial revision
kono
parents:
diff changeset
403 reversed normal diffs will begin with a delete, which will fail, triggering
bce86c4163a3 Initial revision
kono
parents:
diff changeset
404 the heuristic.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
405 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
406 .B \-s
bce86c4163a3 Initial revision
kono
parents:
diff changeset
407 makes
bce86c4163a3 Initial revision
kono
parents:
diff changeset
408 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
409 do its work silently, unless an error occurs.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
410 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
411 .B \-S
bce86c4163a3 Initial revision
kono
parents:
diff changeset
412 causes
bce86c4163a3 Initial revision
kono
parents:
diff changeset
413 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
414 to ignore this patch from the patch file, but continue on looking
bce86c4163a3 Initial revision
kono
parents:
diff changeset
415 for the next patch in the file.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
416 Thus
bce86c4163a3 Initial revision
kono
parents:
diff changeset
417 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
418 patch -S + -S + <patchfile
bce86c4163a3 Initial revision
kono
parents:
diff changeset
419 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
420 will ignore the first and second of three patches.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
421 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
422 .B \-u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
423 forces
bce86c4163a3 Initial revision
kono
parents:
diff changeset
424 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
425 to interpret the patch file as a unified context diff (a unidiff).
bce86c4163a3 Initial revision
kono
parents:
diff changeset
426 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
427 .B \-v
bce86c4163a3 Initial revision
kono
parents:
diff changeset
428 causes
bce86c4163a3 Initial revision
kono
parents:
diff changeset
429 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
430 to print out its revision header and patch level.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
431 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
432 .B \-V
bce86c4163a3 Initial revision
kono
parents:
diff changeset
433 causes the next argument to be interpreted as a method for creating
bce86c4163a3 Initial revision
kono
parents:
diff changeset
434 backup file names. The type of backups made can also be given in the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
435 .B VERSION_CONTROL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
436 environment variable, which is overridden by this option.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
437 The
bce86c4163a3 Initial revision
kono
parents:
diff changeset
438 .B -B
bce86c4163a3 Initial revision
kono
parents:
diff changeset
439 option overrides this option, causing the prefix to always be used for
bce86c4163a3 Initial revision
kono
parents:
diff changeset
440 making backup file names.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
441 The value of the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
442 .B VERSION_CONTROL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
443 environment variable and the argument to the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
444 .B -V
bce86c4163a3 Initial revision
kono
parents:
diff changeset
445 option are like the GNU
bce86c4163a3 Initial revision
kono
parents:
diff changeset
446 Emacs `version-control' variable; they also recognize synonyms that
bce86c4163a3 Initial revision
kono
parents:
diff changeset
447 are more descriptive. The valid values are (unique abbreviations are
bce86c4163a3 Initial revision
kono
parents:
diff changeset
448 accepted):
bce86c4163a3 Initial revision
kono
parents:
diff changeset
449 .RS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
450 .TP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
451 `t' or `numbered'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
452 Always make numbered backups.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
453 .TP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
454 `nil' or `existing'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
455 Make numbered backups of files that already
bce86c4163a3 Initial revision
kono
parents:
diff changeset
456 have them, simple backups of the others.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
457 This is the default.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
458 .TP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
459 `never' or `simple'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
460 Always make simple backups.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
461 .RE
bce86c4163a3 Initial revision
kono
parents:
diff changeset
462 .TP 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
463 .B \-x<number>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
464 sets internal debugging flags, and is of interest only to
bce86c4163a3 Initial revision
kono
parents:
diff changeset
465 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
466 patchers.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
467 .SH AUTHOR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
468 Larry Wall <lwall@netlabs.com>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
469 .br
bce86c4163a3 Initial revision
kono
parents:
diff changeset
470 with many other contributors.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
471 .SH ENVIRONMENT
bce86c4163a3 Initial revision
kono
parents:
diff changeset
472 .TP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
473 .B TMPDIR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
474 Directory to put temporary files in; default is /tmp.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
475 .TP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
476 .B SIMPLE_BACKUP_SUFFIX
bce86c4163a3 Initial revision
kono
parents:
diff changeset
477 Extension to use for backup file names instead of \*(L".orig\*(R" or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
478 \*(L"~\*(R".
bce86c4163a3 Initial revision
kono
parents:
diff changeset
479 .TP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
480 .B VERSION_CONTROL
bce86c4163a3 Initial revision
kono
parents:
diff changeset
481 Selects when numbered backup files are made.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
482 .SH FILES
bce86c4163a3 Initial revision
kono
parents:
diff changeset
483 $TMPDIR/patch*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
484 .SH SEE ALSO
bce86c4163a3 Initial revision
kono
parents:
diff changeset
485 diff(1)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
486 .SH NOTES FOR PATCH SENDERS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
487 There are several things you should bear in mind if you are going to
bce86c4163a3 Initial revision
kono
parents:
diff changeset
488 be sending out patches.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
489 First, you can save people a lot of grief by keeping a patchlevel.h file
bce86c4163a3 Initial revision
kono
parents:
diff changeset
490 which is patched to increment the patch level as the first diff in the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
491 patch file you send out.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
492 If you put a Prereq: line in with the patch, it won't let them apply
bce86c4163a3 Initial revision
kono
parents:
diff changeset
493 patches out of order without some warning.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
494 Second, make sure you've specified the filenames right, either in a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
495 context diff header, or with an Index: line.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
496 If you are patching something in a subdirectory, be sure to tell the patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
497 user to specify a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
498 .B \-p
bce86c4163a3 Initial revision
kono
parents:
diff changeset
499 switch as needed.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
500 Third, you can create a file by sending out a diff that compares a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
501 null file to the file you want to create.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
502 This will only work if the file you want to create doesn't exist already in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
503 the target directory.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
504 Fourth, take care not to send out reversed patches, since it makes people wonder
bce86c4163a3 Initial revision
kono
parents:
diff changeset
505 whether they already applied the patch.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
506 Fifth, while you may be able to get away with putting 582 diff listings into
bce86c4163a3 Initial revision
kono
parents:
diff changeset
507 one file, it is probably wiser to group related patches into separate files in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
508 case something goes haywire.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
509 .SH DIAGNOSTICS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
510 Too many to list here, but generally indicative that
bce86c4163a3 Initial revision
kono
parents:
diff changeset
511 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
512 couldn't parse your patch file.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
513 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
514 The message \*(L"Hmm...\*(R" indicates that there is unprocessed text in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
515 the patch file and that
bce86c4163a3 Initial revision
kono
parents:
diff changeset
516 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
517 is attempting to intuit whether there is a patch in that text and, if so,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
518 what kind of patch it is.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
519 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
520 .I Patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
521 will exit with a non-zero status if any reject files were created.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
522 When applying a set of patches in a loop it behooves you to check this
bce86c4163a3 Initial revision
kono
parents:
diff changeset
523 exit status so you don't apply a later patch to a partially patched file.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
524 .SH CAVEATS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
525 .I Patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
526 cannot tell if the line numbers are off in an ed script, and can only detect
bce86c4163a3 Initial revision
kono
parents:
diff changeset
527 bad line numbers in a normal diff when it finds a \*(L"change\*(R" or
bce86c4163a3 Initial revision
kono
parents:
diff changeset
528 a \*(L"delete\*(R" command.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
529 A context diff using fuzz factor 3 may have the same problem.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
530 Until a suitable interactive interface is added, you should probably do
bce86c4163a3 Initial revision
kono
parents:
diff changeset
531 a context diff in these cases to see if the changes made sense.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
532 Of course, compiling without errors is a pretty good indication that the patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
533 worked, but not always.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
534 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
535 .I Patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
536 usually produces the correct results, even when it has to do a lot of
bce86c4163a3 Initial revision
kono
parents:
diff changeset
537 guessing.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
538 However, the results are guaranteed to be correct only when the patch is
bce86c4163a3 Initial revision
kono
parents:
diff changeset
539 applied to exactly the same version of the file that the patch was
bce86c4163a3 Initial revision
kono
parents:
diff changeset
540 generated from.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
541 .SH BUGS
bce86c4163a3 Initial revision
kono
parents:
diff changeset
542 Could be smarter about partial matches, excessively \&deviant offsets and
bce86c4163a3 Initial revision
kono
parents:
diff changeset
543 swapped code, but that would take an extra pass.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
544 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
545 If code has been duplicated (for instance with #ifdef OLDCODE ... #else ...
bce86c4163a3 Initial revision
kono
parents:
diff changeset
546 #endif),
bce86c4163a3 Initial revision
kono
parents:
diff changeset
547 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
548 is incapable of patching both versions, and, if it works at all, will likely
bce86c4163a3 Initial revision
kono
parents:
diff changeset
549 patch the wrong one, and tell you that it succeeded to boot.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
550 .PP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
551 If you apply a patch you've already applied,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
552 .I patch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
553 will think it is a reversed patch, and offer to un-apply the patch.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
554 This could be construed as a feature.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
555 .rn }` ''