##// END OF EJS Templates
Merge with stable
Sune Foldager -
r10023:15fbbc93 merge default
parent child Browse files
Show More
@@ -1,518 +1,519 b''
1 # patchbomb.py - sending Mercurial changesets as patch emails
1 # patchbomb.py - sending Mercurial changesets as patch emails
2 #
2 #
3 # Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
3 # Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2, incorporated herein by reference.
6 # GNU General Public License version 2, incorporated herein by reference.
7
7
8 '''command to send changesets as (a series of) patch emails
8 '''command to send changesets as (a series of) patch emails
9
9
10 The series is started off with a "[PATCH 0 of N]" introduction, which
10 The series is started off with a "[PATCH 0 of N]" introduction, which
11 describes the series as a whole.
11 describes the series as a whole.
12
12
13 Each patch email has a Subject line of "[PATCH M of N] ...", using the
13 Each patch email has a Subject line of "[PATCH M of N] ...", using the
14 first line of the changeset description as the subject text. The
14 first line of the changeset description as the subject text. The
15 message contains two or three body parts:
15 message contains two or three body parts:
16
16
17 - The changeset description.
17 - The changeset description.
18 - [Optional] The result of running diffstat on the patch.
18 - [Optional] The result of running diffstat on the patch.
19 - The patch itself, as generated by "hg export".
19 - The patch itself, as generated by "hg export".
20
20
21 Each message refers to the first in the series using the In-Reply-To
21 Each message refers to the first in the series using the In-Reply-To
22 and References headers, so they will show up as a sequence in threaded
22 and References headers, so they will show up as a sequence in threaded
23 mail and news readers, and in mail archives.
23 mail and news readers, and in mail archives.
24
24
25 With the -d/--diffstat option, you will be prompted for each changeset
25 With the -d/--diffstat option, you will be prompted for each changeset
26 with a diffstat summary and the changeset summary, so you can be sure
26 with a diffstat summary and the changeset summary, so you can be sure
27 you are sending the right changes.
27 you are sending the right changes.
28
28
29 To configure other defaults, add a section like this to your hgrc
29 To configure other defaults, add a section like this to your hgrc
30 file::
30 file::
31
31
32 [email]
32 [email]
33 from = My Name <my@email>
33 from = My Name <my@email>
34 to = recipient1, recipient2, ...
34 to = recipient1, recipient2, ...
35 cc = cc1, cc2, ...
35 cc = cc1, cc2, ...
36 bcc = bcc1, bcc2, ...
36 bcc = bcc1, bcc2, ...
37
37
38 Then you can use the "hg email" command to mail a series of changesets
38 Then you can use the "hg email" command to mail a series of changesets
39 as a patchbomb.
39 as a patchbomb.
40
40
41 To avoid sending patches prematurely, it is a good idea to first run
41 To avoid sending patches prematurely, it is a good idea to first run
42 the "email" command with the "-n" option (test only). You will be
42 the "email" command with the "-n" option (test only). You will be
43 prompted for an email recipient address, a subject and an introductory
43 prompted for an email recipient address, a subject and an introductory
44 message describing the patches of your patchbomb. Then when all is
44 message describing the patches of your patchbomb. Then when all is
45 done, patchbomb messages are displayed. If the PAGER environment
45 done, patchbomb messages are displayed. If the PAGER environment
46 variable is set, your pager will be fired up once for each patchbomb
46 variable is set, your pager will be fired up once for each patchbomb
47 message, so you can verify everything is alright.
47 message, so you can verify everything is alright.
48
48
49 The -m/--mbox option is also very useful. Instead of previewing each
49 The -m/--mbox option is also very useful. Instead of previewing each
50 patchbomb message in a pager or sending the messages directly, it will
50 patchbomb message in a pager or sending the messages directly, it will
51 create a UNIX mailbox file with the patch emails. This mailbox file
51 create a UNIX mailbox file with the patch emails. This mailbox file
52 can be previewed with any mail user agent which supports UNIX mbox
52 can be previewed with any mail user agent which supports UNIX mbox
53 files, e.g. with mutt::
53 files, e.g. with mutt::
54
54
55 % mutt -R -f mbox
55 % mutt -R -f mbox
56
56
57 When you are previewing the patchbomb messages, you can use ``formail``
57 When you are previewing the patchbomb messages, you can use ``formail``
58 (a utility that is commonly installed as part of the procmail
58 (a utility that is commonly installed as part of the procmail
59 package), to send each message out::
59 package), to send each message out::
60
60
61 % formail -s sendmail -bm -t < mbox
61 % formail -s sendmail -bm -t < mbox
62
62
63 That should be all. Now your patchbomb is on its way out.
63 That should be all. Now your patchbomb is on its way out.
64
64
65 You can also either configure the method option in the email section
65 You can also either configure the method option in the email section
66 to be a sendmail compatible mailer or fill out the [smtp] section so
66 to be a sendmail compatible mailer or fill out the [smtp] section so
67 that the patchbomb extension can automatically send patchbombs
67 that the patchbomb extension can automatically send patchbombs
68 directly from the commandline. See the [email] and [smtp] sections in
68 directly from the commandline. See the [email] and [smtp] sections in
69 hgrc(5) for details.
69 hgrc(5) for details.
70 '''
70 '''
71
71
72 import os, errno, socket, tempfile, cStringIO, time
72 import os, errno, socket, tempfile, cStringIO, time
73 import email.MIMEMultipart, email.MIMEBase
73 import email.MIMEMultipart, email.MIMEBase
74 import email.Utils, email.Encoders, email.Generator
74 import email.Utils, email.Encoders, email.Generator
75 from mercurial import cmdutil, commands, hg, mail, patch, util
75 from mercurial import cmdutil, commands, hg, mail, patch, util
76 from mercurial.i18n import _
76 from mercurial.i18n import _
77 from mercurial.node import bin
77 from mercurial.node import bin
78
78
79 def prompt(ui, prompt, default=None, rest=':'):
79 def prompt(ui, prompt, default=None, rest=':'):
80 if not ui.interactive():
80 if not ui.interactive():
81 if default is not None:
81 if default is not None:
82 return default
82 return default
83 raise util.Abort(_("%s Please enter a valid value" % (prompt+rest)))
83 raise util.Abort(_("%s Please enter a valid value" % (prompt+rest)))
84 if default:
84 if default:
85 prompt += ' [%s]' % default
85 prompt += ' [%s]' % default
86 prompt += rest
86 prompt += rest
87 while True:
87 while True:
88 r = ui.prompt(prompt, default=default)
88 r = ui.prompt(prompt, default=default)
89 if r:
89 if r:
90 return r
90 return r
91 if default is not None:
91 if default is not None:
92 return default
92 return default
93 ui.warn(_('Please enter a valid value.\n'))
93 ui.warn(_('Please enter a valid value.\n'))
94
94
95 def cdiffstat(ui, summary, patchlines):
95 def cdiffstat(ui, summary, patchlines):
96 s = patch.diffstat(patchlines)
96 s = patch.diffstat(patchlines)
97 if summary:
97 if summary:
98 ui.write(summary, '\n')
98 ui.write(summary, '\n')
99 ui.write(s, '\n')
99 ui.write(s, '\n')
100 ans = prompt(ui, _('does the diffstat above look okay?'), 'y')
100 ans = prompt(ui, _('does the diffstat above look okay?'), 'y')
101 if not ans.lower().startswith('y'):
101 if not ans.lower().startswith('y'):
102 raise util.Abort(_('diffstat rejected'))
102 raise util.Abort(_('diffstat rejected'))
103 return s
103 return s
104
104
105 def makepatch(ui, repo, patch, opts, _charsets, idx, total, patchname=None):
105 def makepatch(ui, repo, patch, opts, _charsets, idx, total, patchname=None):
106
106
107 desc = []
107 desc = []
108 node = None
108 node = None
109 body = ''
109 body = ''
110
110
111 for line in patch:
111 for line in patch:
112 if line.startswith('#'):
112 if line.startswith('#'):
113 if line.startswith('# Node ID'):
113 if line.startswith('# Node ID'):
114 node = line.split()[-1]
114 node = line.split()[-1]
115 continue
115 continue
116 if line.startswith('diff -r') or line.startswith('diff --git'):
116 if line.startswith('diff -r') or line.startswith('diff --git'):
117 break
117 break
118 desc.append(line)
118 desc.append(line)
119
119
120 if not patchname and not node:
120 if not patchname and not node:
121 raise ValueError
121 raise ValueError
122
122
123 if opts.get('attach'):
123 if opts.get('attach'):
124 body = ('\n'.join(desc[1:]).strip() or
124 body = ('\n'.join(desc[1:]).strip() or
125 'Patch subject is complete summary.')
125 'Patch subject is complete summary.')
126 body += '\n\n\n'
126 body += '\n\n\n'
127
127
128 if opts.get('plain'):
128 if opts.get('plain'):
129 while patch and patch[0].startswith('# '):
129 while patch and patch[0].startswith('# '):
130 patch.pop(0)
130 patch.pop(0)
131 if patch:
131 if patch:
132 patch.pop(0)
132 patch.pop(0)
133 while patch and not patch[0].strip():
133 while patch and not patch[0].strip():
134 patch.pop(0)
134 patch.pop(0)
135
135
136 if opts.get('diffstat'):
136 if opts.get('diffstat'):
137 body += cdiffstat(ui, '\n'.join(desc), patch) + '\n\n'
137 body += cdiffstat(ui, '\n'.join(desc), patch) + '\n\n'
138
138
139 if opts.get('attach') or opts.get('inline'):
139 if opts.get('attach') or opts.get('inline'):
140 msg = email.MIMEMultipart.MIMEMultipart()
140 msg = email.MIMEMultipart.MIMEMultipart()
141 if body:
141 if body:
142 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
142 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
143 p = mail.mimetextpatch('\n'.join(patch), 'x-patch', opts.get('test'))
143 p = mail.mimetextpatch('\n'.join(patch), 'x-patch', opts.get('test'))
144 binnode = bin(node)
144 binnode = bin(node)
145 # if node is mq patch, it will have the patch file's name as a tag
145 # if node is mq patch, it will have the patch file's name as a tag
146 if not patchname:
146 if not patchname:
147 patchtags = [t for t in repo.nodetags(binnode)
147 patchtags = [t for t in repo.nodetags(binnode)
148 if t.endswith('.patch') or t.endswith('.diff')]
148 if t.endswith('.patch') or t.endswith('.diff')]
149 if patchtags:
149 if patchtags:
150 patchname = patchtags[0]
150 patchname = patchtags[0]
151 elif total > 1:
151 elif total > 1:
152 patchname = cmdutil.make_filename(repo, '%b-%n.patch',
152 patchname = cmdutil.make_filename(repo, '%b-%n.patch',
153 binnode, seqno=idx, total=total)
153 binnode, seqno=idx, total=total)
154 else:
154 else:
155 patchname = cmdutil.make_filename(repo, '%b.patch', binnode)
155 patchname = cmdutil.make_filename(repo, '%b.patch', binnode)
156 disposition = 'inline'
156 disposition = 'inline'
157 if opts.get('attach'):
157 if opts.get('attach'):
158 disposition = 'attachment'
158 disposition = 'attachment'
159 p['Content-Disposition'] = disposition + '; filename=' + patchname
159 p['Content-Disposition'] = disposition + '; filename=' + patchname
160 msg.attach(p)
160 msg.attach(p)
161 else:
161 else:
162 body += '\n'.join(patch)
162 body += '\n'.join(patch)
163 msg = mail.mimetextpatch(body, display=opts.get('test'))
163 msg = mail.mimetextpatch(body, display=opts.get('test'))
164
164
165 flag = ' '.join(opts.get('flag'))
165 flag = ' '.join(opts.get('flag'))
166 if flag:
166 if flag:
167 flag = ' ' + flag
167 flag = ' ' + flag
168
168
169 subj = desc[0].strip().rstrip('. ')
169 subj = desc[0].strip().rstrip('. ')
170 if total == 1 and not opts.get('intro'):
170 if total == 1 and not opts.get('intro'):
171 subj = '[PATCH%s] %s' % (flag, opts.get('subject') or subj)
171 subj = '[PATCH%s] %s' % (flag, opts.get('subject') or subj)
172 else:
172 else:
173 tlen = len(str(total))
173 tlen = len(str(total))
174 subj = '[PATCH %0*d of %d%s] %s' % (tlen, idx, total, flag, subj)
174 subj = '[PATCH %0*d of %d%s] %s' % (tlen, idx, total, flag, subj)
175 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
175 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
176 msg['X-Mercurial-Node'] = node
176 msg['X-Mercurial-Node'] = node
177 return msg, subj
177 return msg, subj
178
178
179 def patchbomb(ui, repo, *revs, **opts):
179 def patchbomb(ui, repo, *revs, **opts):
180 '''send changesets by email
180 '''send changesets by email
181
181
182 By default, diffs are sent in the format generated by hg export,
182 By default, diffs are sent in the format generated by hg export,
183 one per message. The series starts with a "[PATCH 0 of N]"
183 one per message. The series starts with a "[PATCH 0 of N]"
184 introduction, which describes the series as a whole.
184 introduction, which describes the series as a whole.
185
185
186 Each patch email has a Subject line of "[PATCH M of N] ...", using
186 Each patch email has a Subject line of "[PATCH M of N] ...", using
187 the first line of the changeset description as the subject text.
187 the first line of the changeset description as the subject text.
188 The message contains two or three parts. First, the changeset
188 The message contains two or three parts. First, the changeset
189 description. Next, (optionally) if the diffstat program is
189 description. Next, (optionally) if the diffstat program is
190 installed and -d/--diffstat is used, the result of running
190 installed and -d/--diffstat is used, the result of running
191 diffstat on the patch. Finally, the patch itself, as generated by
191 diffstat on the patch. Finally, the patch itself, as generated by
192 "hg export".
192 "hg export".
193
193
194 By default the patch is included as text in the email body for
194 By default the patch is included as text in the email body for
195 easy reviewing. Using the -a/--attach option will instead create
195 easy reviewing. Using the -a/--attach option will instead create
196 an attachment for the patch. With -i/--inline an inline attachment
196 an attachment for the patch. With -i/--inline an inline attachment
197 will be created.
197 will be created.
198
198
199 With -o/--outgoing, emails will be generated for patches not found
199 With -o/--outgoing, emails will be generated for patches not found
200 in the destination repository (or only those which are ancestors
200 in the destination repository (or only those which are ancestors
201 of the specified revisions if any are provided)
201 of the specified revisions if any are provided)
202
202
203 With -b/--bundle, changesets are selected as for --outgoing, but a
203 With -b/--bundle, changesets are selected as for --outgoing, but a
204 single email containing a binary Mercurial bundle as an attachment
204 single email containing a binary Mercurial bundle as an attachment
205 will be sent.
205 will be sent.
206
206
207 Examples::
207 Examples::
208
208
209 hg email -r 3000 # send patch 3000 only
209 hg email -r 3000 # send patch 3000 only
210 hg email -r 3000 -r 3001 # send patches 3000 and 3001
210 hg email -r 3000 -r 3001 # send patches 3000 and 3001
211 hg email -r 3000:3005 # send patches 3000 through 3005
211 hg email -r 3000:3005 # send patches 3000 through 3005
212 hg email 3000 # send patch 3000 (deprecated)
212 hg email 3000 # send patch 3000 (deprecated)
213
213
214 hg email -o # send all patches not in default
214 hg email -o # send all patches not in default
215 hg email -o DEST # send all patches not in DEST
215 hg email -o DEST # send all patches not in DEST
216 hg email -o -r 3000 # send all ancestors of 3000 not in default
216 hg email -o -r 3000 # send all ancestors of 3000 not in default
217 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
217 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
218
218
219 hg email -b # send bundle of all patches not in default
219 hg email -b # send bundle of all patches not in default
220 hg email -b DEST # send bundle of all patches not in DEST
220 hg email -b DEST # send bundle of all patches not in DEST
221 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
221 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
222 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST
222 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST
223
223
224 Before using this command, you will need to enable email in your
224 Before using this command, you will need to enable email in your
225 hgrc. See the [email] section in hgrc(5) for details.
225 hgrc. See the [email] section in hgrc(5) for details.
226 '''
226 '''
227
227
228 _charsets = mail._charsets(ui)
228 _charsets = mail._charsets(ui)
229
229
230 def outgoing(dest, revs):
230 def outgoing(dest, revs):
231 '''Return the revisions present locally but not in dest'''
231 '''Return the revisions present locally but not in dest'''
232 dest = ui.expandpath(dest or 'default-push', dest or 'default')
232 dest = ui.expandpath(dest or 'default-push', dest or 'default')
233 dest, revs, checkout = hg.parseurl(dest, revs)
233 dest, revs, checkout = hg.parseurl(dest, revs)
234 revs = [repo.lookup(rev) for rev in revs]
234 if revs:
235 revs = [repo.lookup(rev) for rev in revs]
235 other = hg.repository(cmdutil.remoteui(repo, opts), dest)
236 other = hg.repository(cmdutil.remoteui(repo, opts), dest)
236 ui.status(_('comparing with %s\n') % dest)
237 ui.status(_('comparing with %s\n') % dest)
237 o = repo.findoutgoing(other)
238 o = repo.findoutgoing(other)
238 if not o:
239 if not o:
239 ui.status(_("no changes found\n"))
240 ui.status(_("no changes found\n"))
240 return []
241 return []
241 o = repo.changelog.nodesbetween(o, revs or None)[0]
242 o = repo.changelog.nodesbetween(o, revs)[0]
242 return [str(repo.changelog.rev(r)) for r in o]
243 return [str(repo.changelog.rev(r)) for r in o]
243
244
244 def getpatches(revs):
245 def getpatches(revs):
245 for r in cmdutil.revrange(repo, revs):
246 for r in cmdutil.revrange(repo, revs):
246 output = cStringIO.StringIO()
247 output = cStringIO.StringIO()
247 patch.export(repo, [r], fp=output,
248 patch.export(repo, [r], fp=output,
248 opts=patch.diffopts(ui, opts))
249 opts=patch.diffopts(ui, opts))
249 yield output.getvalue().split('\n')
250 yield output.getvalue().split('\n')
250
251
251 def getbundle(dest):
252 def getbundle(dest):
252 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-')
253 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-')
253 tmpfn = os.path.join(tmpdir, 'bundle')
254 tmpfn = os.path.join(tmpdir, 'bundle')
254 try:
255 try:
255 commands.bundle(ui, repo, tmpfn, dest, **opts)
256 commands.bundle(ui, repo, tmpfn, dest, **opts)
256 return open(tmpfn, 'rb').read()
257 return open(tmpfn, 'rb').read()
257 finally:
258 finally:
258 try:
259 try:
259 os.unlink(tmpfn)
260 os.unlink(tmpfn)
260 except:
261 except:
261 pass
262 pass
262 os.rmdir(tmpdir)
263 os.rmdir(tmpdir)
263
264
264 if not (opts.get('test') or opts.get('mbox')):
265 if not (opts.get('test') or opts.get('mbox')):
265 # really sending
266 # really sending
266 mail.validateconfig(ui)
267 mail.validateconfig(ui)
267
268
268 if not (revs or opts.get('rev')
269 if not (revs or opts.get('rev')
269 or opts.get('outgoing') or opts.get('bundle')
270 or opts.get('outgoing') or opts.get('bundle')
270 or opts.get('patches')):
271 or opts.get('patches')):
271 raise util.Abort(_('specify at least one changeset with -r or -o'))
272 raise util.Abort(_('specify at least one changeset with -r or -o'))
272
273
273 if opts.get('outgoing') and opts.get('bundle'):
274 if opts.get('outgoing') and opts.get('bundle'):
274 raise util.Abort(_("--outgoing mode always on with --bundle;"
275 raise util.Abort(_("--outgoing mode always on with --bundle;"
275 " do not re-specify --outgoing"))
276 " do not re-specify --outgoing"))
276
277
277 if opts.get('outgoing') or opts.get('bundle'):
278 if opts.get('outgoing') or opts.get('bundle'):
278 if len(revs) > 1:
279 if len(revs) > 1:
279 raise util.Abort(_("too many destinations"))
280 raise util.Abort(_("too many destinations"))
280 dest = revs and revs[0] or None
281 dest = revs and revs[0] or None
281 revs = []
282 revs = []
282
283
283 if opts.get('rev'):
284 if opts.get('rev'):
284 if revs:
285 if revs:
285 raise util.Abort(_('use only one form to specify the revision'))
286 raise util.Abort(_('use only one form to specify the revision'))
286 revs = opts.get('rev')
287 revs = opts.get('rev')
287
288
288 if opts.get('outgoing'):
289 if opts.get('outgoing'):
289 revs = outgoing(dest, opts.get('rev'))
290 revs = outgoing(dest, opts.get('rev'))
290 if opts.get('bundle'):
291 if opts.get('bundle'):
291 opts['revs'] = revs
292 opts['revs'] = revs
292
293
293 # start
294 # start
294 if opts.get('date'):
295 if opts.get('date'):
295 start_time = util.parsedate(opts.get('date'))
296 start_time = util.parsedate(opts.get('date'))
296 else:
297 else:
297 start_time = util.makedate()
298 start_time = util.makedate()
298
299
299 def genmsgid(id):
300 def genmsgid(id):
300 return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn())
301 return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn())
301
302
302 def getdescription(body, sender):
303 def getdescription(body, sender):
303 if opts.get('desc'):
304 if opts.get('desc'):
304 body = open(opts.get('desc')).read()
305 body = open(opts.get('desc')).read()
305 else:
306 else:
306 ui.write(_('\nWrite the introductory message for the '
307 ui.write(_('\nWrite the introductory message for the '
307 'patch series.\n\n'))
308 'patch series.\n\n'))
308 body = ui.edit(body, sender)
309 body = ui.edit(body, sender)
309 return body
310 return body
310
311
311 def getpatchmsgs(patches, patchnames=None):
312 def getpatchmsgs(patches, patchnames=None):
312 jumbo = []
313 jumbo = []
313 msgs = []
314 msgs = []
314
315
315 ui.write(_('This patch series consists of %d patches.\n\n')
316 ui.write(_('This patch series consists of %d patches.\n\n')
316 % len(patches))
317 % len(patches))
317
318
318 name = None
319 name = None
319 for i, p in enumerate(patches):
320 for i, p in enumerate(patches):
320 jumbo.extend(p)
321 jumbo.extend(p)
321 if patchnames:
322 if patchnames:
322 name = patchnames[i]
323 name = patchnames[i]
323 msg = makepatch(ui, repo, p, opts, _charsets, i + 1,
324 msg = makepatch(ui, repo, p, opts, _charsets, i + 1,
324 len(patches), name)
325 len(patches), name)
325 msgs.append(msg)
326 msgs.append(msg)
326
327
327 if len(patches) > 1 or opts.get('intro'):
328 if len(patches) > 1 or opts.get('intro'):
328 tlen = len(str(len(patches)))
329 tlen = len(str(len(patches)))
329
330
330 flag = ' '.join(opts.get('flag'))
331 flag = ' '.join(opts.get('flag'))
331 if flag:
332 if flag:
332 subj = '[PATCH %0*d of %d %s]' % (tlen, 0, len(patches), flag)
333 subj = '[PATCH %0*d of %d %s]' % (tlen, 0, len(patches), flag)
333 else:
334 else:
334 subj = '[PATCH %0*d of %d]' % (tlen, 0, len(patches))
335 subj = '[PATCH %0*d of %d]' % (tlen, 0, len(patches))
335 subj += ' ' + (opts.get('subject') or
336 subj += ' ' + (opts.get('subject') or
336 prompt(ui, 'Subject: ', rest=subj))
337 prompt(ui, 'Subject: ', rest=subj))
337
338
338 body = ''
339 body = ''
339 if opts.get('diffstat'):
340 if opts.get('diffstat'):
340 d = cdiffstat(ui, _('Final summary:\n'), jumbo)
341 d = cdiffstat(ui, _('Final summary:\n'), jumbo)
341 if d:
342 if d:
342 body = '\n' + d
343 body = '\n' + d
343
344
344 body = getdescription(body, sender)
345 body = getdescription(body, sender)
345 msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
346 msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
346 msg['Subject'] = mail.headencode(ui, subj, _charsets,
347 msg['Subject'] = mail.headencode(ui, subj, _charsets,
347 opts.get('test'))
348 opts.get('test'))
348
349
349 msgs.insert(0, (msg, subj))
350 msgs.insert(0, (msg, subj))
350 return msgs
351 return msgs
351
352
352 def getbundlemsgs(bundle):
353 def getbundlemsgs(bundle):
353 subj = (opts.get('subject')
354 subj = (opts.get('subject')
354 or prompt(ui, 'Subject:', 'A bundle for your repository'))
355 or prompt(ui, 'Subject:', 'A bundle for your repository'))
355
356
356 body = getdescription('', sender)
357 body = getdescription('', sender)
357 msg = email.MIMEMultipart.MIMEMultipart()
358 msg = email.MIMEMultipart.MIMEMultipart()
358 if body:
359 if body:
359 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
360 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
360 datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
361 datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
361 datapart.set_payload(bundle)
362 datapart.set_payload(bundle)
362 bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
363 bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
363 datapart.add_header('Content-Disposition', 'attachment',
364 datapart.add_header('Content-Disposition', 'attachment',
364 filename=bundlename)
365 filename=bundlename)
365 email.Encoders.encode_base64(datapart)
366 email.Encoders.encode_base64(datapart)
366 msg.attach(datapart)
367 msg.attach(datapart)
367 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
368 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
368 return [(msg, subj)]
369 return [(msg, subj)]
369
370
370 sender = (opts.get('from') or ui.config('email', 'from') or
371 sender = (opts.get('from') or ui.config('email', 'from') or
371 ui.config('patchbomb', 'from') or
372 ui.config('patchbomb', 'from') or
372 prompt(ui, 'From', ui.username()))
373 prompt(ui, 'From', ui.username()))
373
374
374 # internal option used by pbranches
375 # internal option used by pbranches
375 patches = opts.get('patches')
376 patches = opts.get('patches')
376 if patches:
377 if patches:
377 msgs = getpatchmsgs(patches, opts.get('patchnames'))
378 msgs = getpatchmsgs(patches, opts.get('patchnames'))
378 elif opts.get('bundle'):
379 elif opts.get('bundle'):
379 msgs = getbundlemsgs(getbundle(dest))
380 msgs = getbundlemsgs(getbundle(dest))
380 else:
381 else:
381 msgs = getpatchmsgs(list(getpatches(revs)))
382 msgs = getpatchmsgs(list(getpatches(revs)))
382
383
383 def getaddrs(opt, prpt=None, default=None):
384 def getaddrs(opt, prpt=None, default=None):
384 if opts.get(opt):
385 if opts.get(opt):
385 return mail.addrlistencode(ui, opts.get(opt), _charsets,
386 return mail.addrlistencode(ui, opts.get(opt), _charsets,
386 opts.get('test'))
387 opts.get('test'))
387
388
388 addrs = (ui.config('email', opt) or
389 addrs = (ui.config('email', opt) or
389 ui.config('patchbomb', opt) or '')
390 ui.config('patchbomb', opt) or '')
390 if not addrs and prpt:
391 if not addrs and prpt:
391 addrs = prompt(ui, prpt, default)
392 addrs = prompt(ui, prpt, default)
392
393
393 return mail.addrlistencode(ui, [addrs], _charsets, opts.get('test'))
394 return mail.addrlistencode(ui, [addrs], _charsets, opts.get('test'))
394
395
395 to = getaddrs('to', 'To')
396 to = getaddrs('to', 'To')
396 cc = getaddrs('cc', 'Cc', '')
397 cc = getaddrs('cc', 'Cc', '')
397 bcc = getaddrs('bcc')
398 bcc = getaddrs('bcc')
398
399
399 ui.write('\n')
400 ui.write('\n')
400
401
401 parent = opts.get('in_reply_to') or None
402 parent = opts.get('in_reply_to') or None
402 # angle brackets may be omitted, they're not semantically part of the msg-id
403 # angle brackets may be omitted, they're not semantically part of the msg-id
403 if parent is not None:
404 if parent is not None:
404 if not parent.startswith('<'):
405 if not parent.startswith('<'):
405 parent = '<' + parent
406 parent = '<' + parent
406 if not parent.endswith('>'):
407 if not parent.endswith('>'):
407 parent += '>'
408 parent += '>'
408
409
409 first = True
410 first = True
410
411
411 sender_addr = email.Utils.parseaddr(sender)[1]
412 sender_addr = email.Utils.parseaddr(sender)[1]
412 sender = mail.addressencode(ui, sender, _charsets, opts.get('test'))
413 sender = mail.addressencode(ui, sender, _charsets, opts.get('test'))
413 sendmail = None
414 sendmail = None
414 for m, subj in msgs:
415 for m, subj in msgs:
415 try:
416 try:
416 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
417 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
417 except TypeError:
418 except TypeError:
418 m['Message-Id'] = genmsgid('patchbomb')
419 m['Message-Id'] = genmsgid('patchbomb')
419 if parent:
420 if parent:
420 m['In-Reply-To'] = parent
421 m['In-Reply-To'] = parent
421 m['References'] = parent
422 m['References'] = parent
422 if first:
423 if first:
423 parent = m['Message-Id']
424 parent = m['Message-Id']
424 first = False
425 first = False
425
426
426 m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
427 m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
427 m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
428 m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
428
429
429 start_time = (start_time[0] + 1, start_time[1])
430 start_time = (start_time[0] + 1, start_time[1])
430 m['From'] = sender
431 m['From'] = sender
431 m['To'] = ', '.join(to)
432 m['To'] = ', '.join(to)
432 if cc:
433 if cc:
433 m['Cc'] = ', '.join(cc)
434 m['Cc'] = ', '.join(cc)
434 if bcc:
435 if bcc:
435 m['Bcc'] = ', '.join(bcc)
436 m['Bcc'] = ', '.join(bcc)
436 if opts.get('test'):
437 if opts.get('test'):
437 ui.status(_('Displaying '), subj, ' ...\n')
438 ui.status(_('Displaying '), subj, ' ...\n')
438 ui.flush()
439 ui.flush()
439 if 'PAGER' in os.environ:
440 if 'PAGER' in os.environ:
440 fp = util.popen(os.environ['PAGER'], 'w')
441 fp = util.popen(os.environ['PAGER'], 'w')
441 else:
442 else:
442 fp = ui
443 fp = ui
443 generator = email.Generator.Generator(fp, mangle_from_=False)
444 generator = email.Generator.Generator(fp, mangle_from_=False)
444 try:
445 try:
445 generator.flatten(m, 0)
446 generator.flatten(m, 0)
446 fp.write('\n')
447 fp.write('\n')
447 except IOError, inst:
448 except IOError, inst:
448 if inst.errno != errno.EPIPE:
449 if inst.errno != errno.EPIPE:
449 raise
450 raise
450 if fp is not ui:
451 if fp is not ui:
451 fp.close()
452 fp.close()
452 elif opts.get('mbox'):
453 elif opts.get('mbox'):
453 ui.status(_('Writing '), subj, ' ...\n')
454 ui.status(_('Writing '), subj, ' ...\n')
454 fp = open(opts.get('mbox'), 'In-Reply-To' in m and 'ab+' or 'wb+')
455 fp = open(opts.get('mbox'), 'In-Reply-To' in m and 'ab+' or 'wb+')
455 generator = email.Generator.Generator(fp, mangle_from_=True)
456 generator = email.Generator.Generator(fp, mangle_from_=True)
456 # Should be time.asctime(), but Windows prints 2-characters day
457 # Should be time.asctime(), but Windows prints 2-characters day
457 # of month instead of one. Make them print the same thing.
458 # of month instead of one. Make them print the same thing.
458 date = time.strftime('%a %b %d %H:%M:%S %Y',
459 date = time.strftime('%a %b %d %H:%M:%S %Y',
459 time.localtime(start_time[0]))
460 time.localtime(start_time[0]))
460 fp.write('From %s %s\n' % (sender_addr, date))
461 fp.write('From %s %s\n' % (sender_addr, date))
461 generator.flatten(m, 0)
462 generator.flatten(m, 0)
462 fp.write('\n\n')
463 fp.write('\n\n')
463 fp.close()
464 fp.close()
464 else:
465 else:
465 if not sendmail:
466 if not sendmail:
466 sendmail = mail.connect(ui)
467 sendmail = mail.connect(ui)
467 ui.status(_('Sending '), subj, ' ...\n')
468 ui.status(_('Sending '), subj, ' ...\n')
468 # Exim does not remove the Bcc field
469 # Exim does not remove the Bcc field
469 del m['Bcc']
470 del m['Bcc']
470 fp = cStringIO.StringIO()
471 fp = cStringIO.StringIO()
471 generator = email.Generator.Generator(fp, mangle_from_=False)
472 generator = email.Generator.Generator(fp, mangle_from_=False)
472 generator.flatten(m, 0)
473 generator.flatten(m, 0)
473 sendmail(sender, to + bcc + cc, fp.getvalue())
474 sendmail(sender, to + bcc + cc, fp.getvalue())
474
475
475 emailopts = [
476 emailopts = [
476 ('a', 'attach', None, _('send patches as attachments')),
477 ('a', 'attach', None, _('send patches as attachments')),
477 ('i', 'inline', None, _('send patches as inline attachments')),
478 ('i', 'inline', None, _('send patches as inline attachments')),
478 ('', 'bcc', [], _('email addresses of blind carbon copy recipients')),
479 ('', 'bcc', [], _('email addresses of blind carbon copy recipients')),
479 ('c', 'cc', [], _('email addresses of copy recipients')),
480 ('c', 'cc', [], _('email addresses of copy recipients')),
480 ('d', 'diffstat', None, _('add diffstat output to messages')),
481 ('d', 'diffstat', None, _('add diffstat output to messages')),
481 ('', 'date', '', _('use the given date as the sending date')),
482 ('', 'date', '', _('use the given date as the sending date')),
482 ('', 'desc', '', _('use the given file as the series description')),
483 ('', 'desc', '', _('use the given file as the series description')),
483 ('f', 'from', '', _('email address of sender')),
484 ('f', 'from', '', _('email address of sender')),
484 ('n', 'test', None, _('print messages that would be sent')),
485 ('n', 'test', None, _('print messages that would be sent')),
485 ('m', 'mbox', '',
486 ('m', 'mbox', '',
486 _('write messages to mbox file instead of sending them')),
487 _('write messages to mbox file instead of sending them')),
487 ('s', 'subject', '',
488 ('s', 'subject', '',
488 _('subject of first message (intro or single patch)')),
489 _('subject of first message (intro or single patch)')),
489 ('', 'in-reply-to', '',
490 ('', 'in-reply-to', '',
490 _('message identifier to reply to')),
491 _('message identifier to reply to')),
491 ('', 'flag', [], _('flags to add in subject prefixes')),
492 ('', 'flag', [], _('flags to add in subject prefixes')),
492 ('t', 'to', [], _('email addresses of recipients')),
493 ('t', 'to', [], _('email addresses of recipients')),
493 ]
494 ]
494
495
495
496
496 cmdtable = {
497 cmdtable = {
497 "email":
498 "email":
498 (patchbomb,
499 (patchbomb,
499 [('g', 'git', None, _('use git extended diff format')),
500 [('g', 'git', None, _('use git extended diff format')),
500 ('', 'plain', None, _('omit hg patch header')),
501 ('', 'plain', None, _('omit hg patch header')),
501 ('o', 'outgoing', None,
502 ('o', 'outgoing', None,
502 _('send changes not found in the target repository')),
503 _('send changes not found in the target repository')),
503 ('b', 'bundle', None,
504 ('b', 'bundle', None,
504 _('send changes not in target as a binary bundle')),
505 _('send changes not in target as a binary bundle')),
505 ('', 'bundlename', 'bundle',
506 ('', 'bundlename', 'bundle',
506 _('name of the bundle attachment file')),
507 _('name of the bundle attachment file')),
507 ('r', 'rev', [], _('a revision to send')),
508 ('r', 'rev', [], _('a revision to send')),
508 ('', 'force', None,
509 ('', 'force', None,
509 _('run even when remote repository is unrelated '
510 _('run even when remote repository is unrelated '
510 '(with -b/--bundle)')),
511 '(with -b/--bundle)')),
511 ('', 'base', [],
512 ('', 'base', [],
512 _('a base changeset to specify instead of a destination '
513 _('a base changeset to specify instead of a destination '
513 '(with -b/--bundle)')),
514 '(with -b/--bundle)')),
514 ('', 'intro', None,
515 ('', 'intro', None,
515 _('send an introduction email for a single patch')),
516 _('send an introduction email for a single patch')),
516 ] + emailopts + commands.remoteopts,
517 ] + emailopts + commands.remoteopts,
517 _('hg email [OPTION]... [DEST]...'))
518 _('hg email [OPTION]... [DEST]...'))
518 }
519 }
@@ -1,192 +1,195 b''
1 #!/bin/sh
1 #!/bin/sh
2
2
3 fixheaders()
3 fixheaders()
4 {
4 {
5 sed -e 's/\(Message-Id:.*@\).*/\1/' \
5 sed -e 's/\(Message-Id:.*@\).*/\1/' \
6 -e 's/\(In-Reply-To:.*@\).*/\1/' \
6 -e 's/\(In-Reply-To:.*@\).*/\1/' \
7 -e 's/\(References:.*@\).*/\1/' \
7 -e 's/\(References:.*@\).*/\1/' \
8 -e 's/\(User-Agent:.*\)\/.*/\1/' \
8 -e 's/\(User-Agent:.*\)\/.*/\1/' \
9 -e 's/===.*/===/'
9 -e 's/===.*/===/'
10 }
10 }
11
11
12 echo "[extensions]" >> $HGRCPATH
12 echo "[extensions]" >> $HGRCPATH
13 echo "patchbomb=" >> $HGRCPATH
13 echo "patchbomb=" >> $HGRCPATH
14
14
15 hg init t
15 hg init t
16 cd t
16 cd t
17 echo a > a
17 echo a > a
18 hg commit -Ama -d '1 0'
18 hg commit -Ama -d '1 0'
19
19
20 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip | \
20 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip | \
21 fixheaders
21 fixheaders
22
22
23 echo b > b
23 echo b > b
24 hg commit -Amb -d '2 0'
24 hg commit -Amb -d '2 0'
25
25
26 hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip | \
26 hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip | \
27 fixheaders
27 fixheaders
28
28
29 hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip
29 hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip
30
30
31 cd ..
31 cd ..
32
32
33 hg clone -q t t2
33 hg clone -q t t2
34 cd t2
34 cd t2
35 echo c > c
35 echo c > c
36 hg commit -Amc -d '3 0'
36 hg commit -Amc -d '3 0'
37
37
38 cat > description <<EOF
38 cat > description <<EOF
39 a multiline
39 a multiline
40
40
41 description
41 description
42 EOF
42 EOF
43
43
44 echo "% test bundle and description"
44 echo "% test bundle and description"
45 hg email --date '1970-1-1 0:3' -n -f quux -t foo \
45 hg email --date '1970-1-1 0:3' -n -f quux -t foo \
46 -c bar -s test -r tip -b --desc description | \
46 -c bar -s test -r tip -b --desc description | \
47 fixheaders
47 fixheaders
48
48
49 echo "% utf-8 patch"
49 echo "% utf-8 patch"
50 python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
50 python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
51 hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: base64'
51 hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: base64'
52
52
53 echo "% no mime encoding for email --test"
53 echo "% no mime encoding for email --test"
54 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
54 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
55 fixheaders > mailtest
55 fixheaders > mailtest
56 echo "% md5sum of 8-bit output"
56 echo "% md5sum of 8-bit output"
57 $TESTDIR/md5sum.py mailtest
57 $TESTDIR/md5sum.py mailtest
58 rm mailtest
58 rm mailtest
59
59
60 echo "% mime encoded mbox (base64)"
60 echo "% mime encoded mbox (base64)"
61 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
61 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
62 cat mbox | fixheaders
62 cat mbox | fixheaders
63 rm mbox
63 rm mbox
64
64
65 echo "% mime encoded mbox (quoted-printable)"
65 echo "% mime encoded mbox (quoted-printable)"
66 python -c 'fp = open("qp", "wb"); fp.write("%s\nfoo\n\nbar\n" % \
66 python -c 'fp = open("qp", "wb"); fp.write("%s\nfoo\n\nbar\n" % \
67 ("x" * 1024)); fp.close();'
67 ("x" * 1024)); fp.close();'
68 hg commit -A -d '4 0' -m \
68 hg commit -A -d '4 0' -m \
69 'charset=utf-8; content-transfer-encoding: quoted-printable'
69 'charset=utf-8; content-transfer-encoding: quoted-printable'
70
70
71 echo "% no mime encoding for email --test"
71 echo "% no mime encoding for email --test"
72 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
72 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
73 fixheaders > mailtest
73 fixheaders > mailtest
74 echo "% md5sum of qp output"
74 echo "% md5sum of qp output"
75 $TESTDIR/md5sum.py mailtest
75 $TESTDIR/md5sum.py mailtest
76 rm mailtest
76 rm mailtest
77
77
78 echo "% mime encoded mbox (quoted-printable)"
78 echo "% mime encoded mbox (quoted-printable)"
79 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
79 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
80 cat mbox | fixheaders
80 cat mbox | fixheaders
81 rm mbox
81 rm mbox
82
82
83 echo "% iso-8859-1 patch"
83 echo "% iso-8859-1 patch"
84 python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
84 python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
85 hg commit -A -d '5 0' -m 'charset=us-ascii; content-transfer-encoding: 8bit'
85 hg commit -A -d '5 0' -m 'charset=us-ascii; content-transfer-encoding: 8bit'
86
86
87 echo "% fake ascii mbox"
87 echo "% fake ascii mbox"
88 hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
88 hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
89 fixheaders < mbox > mboxfix
89 fixheaders < mbox > mboxfix
90 echo "% md5sum of 8-bit output"
90 echo "% md5sum of 8-bit output"
91 $TESTDIR/md5sum.py mboxfix
91 $TESTDIR/md5sum.py mboxfix
92
92
93 echo "% test diffstat for single patch"
93 echo "% test diffstat for single patch"
94 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | \
94 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | \
95 fixheaders
95 fixheaders
96
96
97 echo "% test diffstat for multiple patches"
97 echo "% test diffstat for multiple patches"
98 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
98 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
99 -r 0:1 | fixheaders
99 -r 0:1 | fixheaders
100
100
101 echo "% test inline for single patch"
101 echo "% test inline for single patch"
102 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
102 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
103 fixheaders
103 fixheaders
104
104
105 echo "% test inline for single patch (quoted-printable)"
105 echo "% test inline for single patch (quoted-printable)"
106 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | \
106 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | \
107 fixheaders
107 fixheaders
108
108
109 echo "% test inline for multiple patches"
109 echo "% test inline for multiple patches"
110 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
110 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
111 -r 0:1 -r 4 | fixheaders
111 -r 0:1 -r 4 | fixheaders
112
112
113 echo "% test attach for single patch"
113 echo "% test attach for single patch"
114 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | \
114 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | \
115 fixheaders
115 fixheaders
116
116
117 echo "% test attach for single patch (quoted-printable)"
117 echo "% test attach for single patch (quoted-printable)"
118 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | \
118 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | \
119 fixheaders
119 fixheaders
120
120
121 echo "% test attach for multiple patches"
121 echo "% test attach for multiple patches"
122 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
122 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
123 -r 0:1 -r 4 | fixheaders
123 -r 0:1 -r 4 | fixheaders
124
124
125 echo "% test intro for single patch"
125 echo "% test intro for single patch"
126 hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
126 hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
127 -r 2 | fixheaders
127 -r 2 | fixheaders
128
128
129 echo "% test intro for multiple patches"
129 echo "% test intro for multiple patches"
130 hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
130 hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
131 -r 0:1 | fixheaders
131 -r 0:1 | fixheaders
132
132
133 echo "% tagging csets"
133 echo "% tagging csets"
134 hg tag -r0 zero zero.foo
134 hg tag -r0 zero zero.foo
135 hg tag -r1 one one.patch
135 hg tag -r1 one one.patch
136 hg tag -r2 two two.diff
136 hg tag -r2 two two.diff
137
137
138 echo "% test inline for single named patch"
138 echo "% test inline for single named patch"
139 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
139 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
140 fixheaders
140 fixheaders
141
141
142 echo "% test inline for multiple named/unnamed patches"
142 echo "% test inline for multiple named/unnamed patches"
143 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1 | \
143 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1 | \
144 fixheaders
144 fixheaders
145
145
146 echo "% test inreplyto"
146 echo "% test inreplyto"
147 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
147 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
148 -r tip | fixheaders
148 -r tip | fixheaders
149
149
150 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
150 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
151 -r 0:1 | fixheaders
151 -r 0:1 | fixheaders
152
152
153 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
153 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
154 -s test -r 0:1 | fixheaders
154 -s test -r 0:1 | fixheaders
155
155
156 echo "% test single flag for single patch"
156 echo "% test single flag for single patch"
157 hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
157 hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
158 -r 2 | fixheaders
158 -r 2 | fixheaders
159
159
160 echo "% test single flag for multiple patches"
160 echo "% test single flag for multiple patches"
161 hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
161 hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
162 -r 0:1 | fixheaders
162 -r 0:1 | fixheaders
163
163
164 echo "% test mutiple flags for single patch"
164 echo "% test mutiple flags for single patch"
165 hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
165 hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
166 -c bar -s test -r 2 | fixheaders
166 -c bar -s test -r 2 | fixheaders
167
167
168 echo "% test multiple flags for multiple patches"
168 echo "% test multiple flags for multiple patches"
169 hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
169 hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
170 -c bar -s test -r 0:1 | fixheaders
170 -c bar -s test -r 0:1 | fixheaders
171
171
172 echo "% test multi-address parsing"
172 echo "% test multi-address parsing"
173 hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
173 hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
174 -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
174 -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
175 --config email.bcc='"Quux, A." <quux>'
175 --config email.bcc='"Quux, A." <quux>'
176 cat tmp.mbox | fixheaders
176 cat tmp.mbox | fixheaders
177
177
178 echo "% test multi-byte domain parsing"
178 echo "% test multi-byte domain parsing"
179 UUML=`printf '\374'`
179 UUML=`printf '\374'`
180 HGENCODING=iso-8859-1
180 HGENCODING=iso-8859-1
181 export HGENCODING
181 export HGENCODING
182 hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" \
182 hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" \
183 -s test -r 0
183 -s test -r 0
184 cat tmp.mbox | fixheaders
184 cat tmp.mbox | fixheaders
185
185
186 echo "% test outgoing and dest#branch URIs"
186 echo "% test outgoing"
187 hg up 1
187 hg up 1
188 hg branch test
188 hg branch test
189 echo d > d
189 echo d > d
190 hg add d
190 hg add d
191 hg ci -md -d '4 0'
191 hg ci -md -d '4 0'
192 hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t | fixheaders
193
194 echo "% dest#branch URIs"
192 hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test | fixheaders
195 hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test | fixheaders
@@ -1,1570 +1,1840 b''
1 adding a
1 adding a
2 This patch series consists of 1 patches.
2 This patch series consists of 1 patches.
3
3
4
4
5 Displaying [PATCH] a ...
5 Displaying [PATCH] a ...
6 Content-Type: text/plain; charset="us-ascii"
6 Content-Type: text/plain; charset="us-ascii"
7 MIME-Version: 1.0
7 MIME-Version: 1.0
8 Content-Transfer-Encoding: 7bit
8 Content-Transfer-Encoding: 7bit
9 Subject: [PATCH] a
9 Subject: [PATCH] a
10 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
10 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
11 Message-Id: <8580ff50825a50c8f716.60@
11 Message-Id: <8580ff50825a50c8f716.60@
12 User-Agent: Mercurial-patchbomb
12 User-Agent: Mercurial-patchbomb
13 Date: Thu, 01 Jan 1970 00:01:00 +0000
13 Date: Thu, 01 Jan 1970 00:01:00 +0000
14 From: quux
14 From: quux
15 To: foo
15 To: foo
16 Cc: bar
16 Cc: bar
17
17
18 # HG changeset patch
18 # HG changeset patch
19 # User test
19 # User test
20 # Date 1 0
20 # Date 1 0
21 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
21 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
22 # Parent 0000000000000000000000000000000000000000
22 # Parent 0000000000000000000000000000000000000000
23 a
23 a
24
24
25 diff -r 000000000000 -r 8580ff50825a a
25 diff -r 000000000000 -r 8580ff50825a a
26 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
27 +++ b/a Thu Jan 01 00:00:01 1970 +0000
27 +++ b/a Thu Jan 01 00:00:01 1970 +0000
28 @@ -0,0 +1,1 @@
28 @@ -0,0 +1,1 @@
29 +a
29 +a
30
30
31 adding b
31 adding b
32 This patch series consists of 2 patches.
32 This patch series consists of 2 patches.
33
33
34
34
35 Write the introductory message for the patch series.
35 Write the introductory message for the patch series.
36
36
37
37
38 Displaying [PATCH 0 of 2] test ...
38 Displaying [PATCH 0 of 2] test ...
39 Content-Type: text/plain; charset="us-ascii"
39 Content-Type: text/plain; charset="us-ascii"
40 MIME-Version: 1.0
40 MIME-Version: 1.0
41 Content-Transfer-Encoding: 7bit
41 Content-Transfer-Encoding: 7bit
42 Subject: [PATCH 0 of 2] test
42 Subject: [PATCH 0 of 2] test
43 Message-Id: <patchbomb.120@
43 Message-Id: <patchbomb.120@
44 User-Agent: Mercurial-patchbomb
44 User-Agent: Mercurial-patchbomb
45 Date: Thu, 01 Jan 1970 00:02:00 +0000
45 Date: Thu, 01 Jan 1970 00:02:00 +0000
46 From: quux
46 From: quux
47 To: foo
47 To: foo
48 Cc: bar
48 Cc: bar
49
49
50
50
51 Displaying [PATCH 1 of 2] a ...
51 Displaying [PATCH 1 of 2] a ...
52 Content-Type: text/plain; charset="us-ascii"
52 Content-Type: text/plain; charset="us-ascii"
53 MIME-Version: 1.0
53 MIME-Version: 1.0
54 Content-Transfer-Encoding: 7bit
54 Content-Transfer-Encoding: 7bit
55 Subject: [PATCH 1 of 2] a
55 Subject: [PATCH 1 of 2] a
56 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
56 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
57 Message-Id: <8580ff50825a50c8f716.121@
57 Message-Id: <8580ff50825a50c8f716.121@
58 In-Reply-To: <patchbomb.120@
58 In-Reply-To: <patchbomb.120@
59 References: <patchbomb.120@
59 References: <patchbomb.120@
60 User-Agent: Mercurial-patchbomb
60 User-Agent: Mercurial-patchbomb
61 Date: Thu, 01 Jan 1970 00:02:01 +0000
61 Date: Thu, 01 Jan 1970 00:02:01 +0000
62 From: quux
62 From: quux
63 To: foo
63 To: foo
64 Cc: bar
64 Cc: bar
65
65
66 # HG changeset patch
66 # HG changeset patch
67 # User test
67 # User test
68 # Date 1 0
68 # Date 1 0
69 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
69 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
70 # Parent 0000000000000000000000000000000000000000
70 # Parent 0000000000000000000000000000000000000000
71 a
71 a
72
72
73 diff -r 000000000000 -r 8580ff50825a a
73 diff -r 000000000000 -r 8580ff50825a a
74 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
74 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
75 +++ b/a Thu Jan 01 00:00:01 1970 +0000
75 +++ b/a Thu Jan 01 00:00:01 1970 +0000
76 @@ -0,0 +1,1 @@
76 @@ -0,0 +1,1 @@
77 +a
77 +a
78
78
79 Displaying [PATCH 2 of 2] b ...
79 Displaying [PATCH 2 of 2] b ...
80 Content-Type: text/plain; charset="us-ascii"
80 Content-Type: text/plain; charset="us-ascii"
81 MIME-Version: 1.0
81 MIME-Version: 1.0
82 Content-Transfer-Encoding: 7bit
82 Content-Transfer-Encoding: 7bit
83 Subject: [PATCH 2 of 2] b
83 Subject: [PATCH 2 of 2] b
84 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
84 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
85 Message-Id: <97d72e5f12c7e84f8506.122@
85 Message-Id: <97d72e5f12c7e84f8506.122@
86 In-Reply-To: <patchbomb.120@
86 In-Reply-To: <patchbomb.120@
87 References: <patchbomb.120@
87 References: <patchbomb.120@
88 User-Agent: Mercurial-patchbomb
88 User-Agent: Mercurial-patchbomb
89 Date: Thu, 01 Jan 1970 00:02:02 +0000
89 Date: Thu, 01 Jan 1970 00:02:02 +0000
90 From: quux
90 From: quux
91 To: foo
91 To: foo
92 Cc: bar
92 Cc: bar
93
93
94 # HG changeset patch
94 # HG changeset patch
95 # User test
95 # User test
96 # Date 2 0
96 # Date 2 0
97 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
97 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
98 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
98 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
99 b
99 b
100
100
101 diff -r 8580ff50825a -r 97d72e5f12c7 b
101 diff -r 8580ff50825a -r 97d72e5f12c7 b
102 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
103 +++ b/b Thu Jan 01 00:00:02 1970 +0000
103 +++ b/b Thu Jan 01 00:00:02 1970 +0000
104 @@ -0,0 +1,1 @@
104 @@ -0,0 +1,1 @@
105 +b
105 +b
106
106
107 This patch series consists of 2 patches.
107 This patch series consists of 2 patches.
108
108
109
109
110 Write the introductory message for the patch series.
110 Write the introductory message for the patch series.
111
111
112
112
113 Writing [PATCH 0 of 2] test ...
113 Writing [PATCH 0 of 2] test ...
114 Writing [PATCH 1 of 2] a ...
114 Writing [PATCH 1 of 2] a ...
115 Writing [PATCH 2 of 2] b ...
115 Writing [PATCH 2 of 2] b ...
116 adding c
116 adding c
117 % test bundle and description
117 % test bundle and description
118 searching for changes
118 searching for changes
119 1 changesets found
119 1 changesets found
120
120
121 Displaying test ...
121 Displaying test ...
122 Content-Type: multipart/mixed; boundary="===
122 Content-Type: multipart/mixed; boundary="===
123 MIME-Version: 1.0
123 MIME-Version: 1.0
124 Subject: test
124 Subject: test
125 Message-Id: <patchbomb.180@
125 Message-Id: <patchbomb.180@
126 User-Agent: Mercurial-patchbomb
126 User-Agent: Mercurial-patchbomb
127 Date: Thu, 01 Jan 1970 00:03:00 +0000
127 Date: Thu, 01 Jan 1970 00:03:00 +0000
128 From: quux
128 From: quux
129 To: foo
129 To: foo
130 Cc: bar
130 Cc: bar
131
131
132 --===
132 --===
133 Content-Type: text/plain; charset="us-ascii"
133 Content-Type: text/plain; charset="us-ascii"
134 MIME-Version: 1.0
134 MIME-Version: 1.0
135 Content-Transfer-Encoding: 7bit
135 Content-Transfer-Encoding: 7bit
136
136
137 a multiline
137 a multiline
138
138
139 description
139 description
140
140
141 --===
141 --===
142 Content-Type: application/x-mercurial-bundle
142 Content-Type: application/x-mercurial-bundle
143 MIME-Version: 1.0
143 MIME-Version: 1.0
144 Content-Disposition: attachment; filename="bundle.hg"
144 Content-Disposition: attachment; filename="bundle.hg"
145 Content-Transfer-Encoding: base64
145 Content-Transfer-Encoding: base64
146
146
147 SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
147 SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
148 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
148 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
149 oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
149 oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
150 Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
150 Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
151 SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
151 SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
152 sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
152 sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
153 Q70eyNw=
153 Q70eyNw=
154 --===
154 --===
155 % utf-8 patch
155 % utf-8 patch
156 adding description
156 adding description
157 adding utf
157 adding utf
158 % no mime encoding for email --test
158 % no mime encoding for email --test
159 % md5sum of 8-bit output
159 % md5sum of 8-bit output
160 e726c29b3008e77994c7572563e57c34 mailtest
160 e726c29b3008e77994c7572563e57c34 mailtest
161 % mime encoded mbox (base64)
161 % mime encoded mbox (base64)
162 This patch series consists of 1 patches.
162 This patch series consists of 1 patches.
163
163
164
164
165 Writing [PATCH] charset=utf-8; content-transfer-encoding: base64 ...
165 Writing [PATCH] charset=utf-8; content-transfer-encoding: base64 ...
166 From quux Thu Jan 01 00:04:01 1970
166 From quux Thu Jan 01 00:04:01 1970
167 Content-Type: text/plain; charset="utf-8"
167 Content-Type: text/plain; charset="utf-8"
168 MIME-Version: 1.0
168 MIME-Version: 1.0
169 Content-Transfer-Encoding: base64
169 Content-Transfer-Encoding: base64
170 Subject: [PATCH] charset=utf-8; content-transfer-encoding: base64
170 Subject: [PATCH] charset=utf-8; content-transfer-encoding: base64
171 X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
171 X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
172 Message-Id: <c3c9e37db9f4fe4882cd.240@
172 Message-Id: <c3c9e37db9f4fe4882cd.240@
173 User-Agent: Mercurial-patchbomb
173 User-Agent: Mercurial-patchbomb
174 Date: Thu, 01 Jan 1970 00:04:00 +0000
174 Date: Thu, 01 Jan 1970 00:04:00 +0000
175 From: quux
175 From: quux
176 To: foo
176 To: foo
177 Cc: bar
177 Cc: bar
178
178
179 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojIE5vZGUgSUQgYzNj
179 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojIE5vZGUgSUQgYzNj
180 OWUzN2RiOWY0ZmU0ODgyY2RhMzliYWY0MmZlZDZiYWQ4YjE1YQojIFBhcmVudCAgZmYyYzlmYTIw
180 OWUzN2RiOWY0ZmU0ODgyY2RhMzliYWY0MmZlZDZiYWQ4YjE1YQojIFBhcmVudCAgZmYyYzlmYTIw
181 MThiMTVmYTc0YjMzMzYzYmRhOTUyNzMyM2UyYTk5ZgpjaGFyc2V0PXV0Zi04OyBjb250ZW50LXRy
181 MThiMTVmYTc0YjMzMzYzYmRhOTUyNzMyM2UyYTk5ZgpjaGFyc2V0PXV0Zi04OyBjb250ZW50LXRy
182 YW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIGMzYzllMzdk
182 YW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIGMzYzllMzdk
183 YjlmNCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
183 YjlmNCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
184 MDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
184 MDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
185 LTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5ZmEy
185 LTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5ZmEy
186 MDE4YiAtciBjM2M5ZTM3ZGI5ZjQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
186 MDE4YiAtciBjM2M5ZTM3ZGI5ZjQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
187 MCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
187 MCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
188 LTAsMCArMSwxIEBACitow7ZtbWEhCg==
188 LTAsMCArMSwxIEBACitow7ZtbWEhCg==
189
189
190
190
191 % mime encoded mbox (quoted-printable)
191 % mime encoded mbox (quoted-printable)
192 adding qp
192 adding qp
193 % no mime encoding for email --test
193 % no mime encoding for email --test
194 % md5sum of qp output
194 % md5sum of qp output
195 0402c7d033e04044e423bb04816f9dae mailtest
195 0402c7d033e04044e423bb04816f9dae mailtest
196 % mime encoded mbox (quoted-printable)
196 % mime encoded mbox (quoted-printable)
197 This patch series consists of 1 patches.
197 This patch series consists of 1 patches.
198
198
199
199
200 Writing [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable ...
200 Writing [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable ...
201 From quux Thu Jan 01 00:04:01 1970
201 From quux Thu Jan 01 00:04:01 1970
202 Content-Type: text/plain; charset="us-ascii"
202 Content-Type: text/plain; charset="us-ascii"
203 MIME-Version: 1.0
203 MIME-Version: 1.0
204 Content-Transfer-Encoding: quoted-printable
204 Content-Transfer-Encoding: quoted-printable
205 Subject: [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable
205 Subject: [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable
206 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
206 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
207 Message-Id: <c655633f8c87700bb38c.240@
207 Message-Id: <c655633f8c87700bb38c.240@
208 User-Agent: Mercurial-patchbomb
208 User-Agent: Mercurial-patchbomb
209 Date: Thu, 01 Jan 1970 00:04:00 +0000
209 Date: Thu, 01 Jan 1970 00:04:00 +0000
210 From: quux
210 From: quux
211 To: foo
211 To: foo
212 Cc: bar
212 Cc: bar
213
213
214 # HG changeset patch
214 # HG changeset patch
215 # User test
215 # User test
216 # Date 4 0
216 # Date 4 0
217 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
217 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
218 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
218 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
219 charset=3Dutf-8; content-transfer-encoding: quoted-printable
219 charset=3Dutf-8; content-transfer-encoding: quoted-printable
220
220
221 diff -r c3c9e37db9f4 -r c655633f8c87 qp
221 diff -r c3c9e37db9f4 -r c655633f8c87 qp
222 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
222 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
223 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
223 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
224 @@ -0,0 +1,4 @@
224 @@ -0,0 +1,4 @@
225 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
225 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
226 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
226 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
227 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
227 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
228 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
228 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
229 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
229 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
230 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
230 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
231 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
231 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
232 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
232 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
233 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
233 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
234 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
234 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
235 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
235 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
236 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
236 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
237 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
237 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
238 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
238 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
239 +foo
239 +foo
240 +
240 +
241 +bar
241 +bar
242
242
243
243
244 % iso-8859-1 patch
244 % iso-8859-1 patch
245 adding isolatin
245 adding isolatin
246 % fake ascii mbox
246 % fake ascii mbox
247 This patch series consists of 1 patches.
247 This patch series consists of 1 patches.
248
248
249
249
250 Writing [PATCH] charset=us-ascii; content-transfer-encoding: 8bit ...
250 Writing [PATCH] charset=us-ascii; content-transfer-encoding: 8bit ...
251 % md5sum of 8-bit output
251 % md5sum of 8-bit output
252 9ea043d8fc43a71045114508baed144b mboxfix
252 9ea043d8fc43a71045114508baed144b mboxfix
253 % test diffstat for single patch
253 % test diffstat for single patch
254 This patch series consists of 1 patches.
254 This patch series consists of 1 patches.
255
255
256 c
256 c
257
257
258 c | 1 +
258 c | 1 +
259 1 files changed, 1 insertions(+), 0 deletions(-)
259 1 files changed, 1 insertions(+), 0 deletions(-)
260
260
261
261
262 Displaying [PATCH] test ...
262 Displaying [PATCH] test ...
263 Content-Type: text/plain; charset="us-ascii"
263 Content-Type: text/plain; charset="us-ascii"
264 MIME-Version: 1.0
264 MIME-Version: 1.0
265 Content-Transfer-Encoding: 7bit
265 Content-Transfer-Encoding: 7bit
266 Subject: [PATCH] test
266 Subject: [PATCH] test
267 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
267 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
268 Message-Id: <ff2c9fa2018b15fa74b3.60@
268 Message-Id: <ff2c9fa2018b15fa74b3.60@
269 User-Agent: Mercurial-patchbomb
269 User-Agent: Mercurial-patchbomb
270 Date: Thu, 01 Jan 1970 00:01:00 +0000
270 Date: Thu, 01 Jan 1970 00:01:00 +0000
271 From: quux
271 From: quux
272 To: foo
272 To: foo
273 Cc: bar
273 Cc: bar
274
274
275 c | 1 +
275 c | 1 +
276 1 files changed, 1 insertions(+), 0 deletions(-)
276 1 files changed, 1 insertions(+), 0 deletions(-)
277
277
278
278
279 # HG changeset patch
279 # HG changeset patch
280 # User test
280 # User test
281 # Date 3 0
281 # Date 3 0
282 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
282 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
283 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
283 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
284 c
284 c
285
285
286 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
286 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
287 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
287 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
288 +++ b/c Thu Jan 01 00:00:03 1970 +0000
288 +++ b/c Thu Jan 01 00:00:03 1970 +0000
289 @@ -0,0 +1,1 @@
289 @@ -0,0 +1,1 @@
290 +c
290 +c
291
291
292 % test diffstat for multiple patches
292 % test diffstat for multiple patches
293 This patch series consists of 2 patches.
293 This patch series consists of 2 patches.
294
294
295 a
295 a
296
296
297 a | 1 +
297 a | 1 +
298 1 files changed, 1 insertions(+), 0 deletions(-)
298 1 files changed, 1 insertions(+), 0 deletions(-)
299
299
300 b
300 b
301
301
302 b | 1 +
302 b | 1 +
303 1 files changed, 1 insertions(+), 0 deletions(-)
303 1 files changed, 1 insertions(+), 0 deletions(-)
304
304
305 Final summary:
305 Final summary:
306
306
307 a | 1 +
307 a | 1 +
308 b | 1 +
308 b | 1 +
309 2 files changed, 2 insertions(+), 0 deletions(-)
309 2 files changed, 2 insertions(+), 0 deletions(-)
310
310
311
311
312 Write the introductory message for the patch series.
312 Write the introductory message for the patch series.
313
313
314
314
315 Displaying [PATCH 0 of 2] test ...
315 Displaying [PATCH 0 of 2] test ...
316 Content-Type: text/plain; charset="us-ascii"
316 Content-Type: text/plain; charset="us-ascii"
317 MIME-Version: 1.0
317 MIME-Version: 1.0
318 Content-Transfer-Encoding: 7bit
318 Content-Transfer-Encoding: 7bit
319 Subject: [PATCH 0 of 2] test
319 Subject: [PATCH 0 of 2] test
320 Message-Id: <patchbomb.60@
320 Message-Id: <patchbomb.60@
321 User-Agent: Mercurial-patchbomb
321 User-Agent: Mercurial-patchbomb
322 Date: Thu, 01 Jan 1970 00:01:00 +0000
322 Date: Thu, 01 Jan 1970 00:01:00 +0000
323 From: quux
323 From: quux
324 To: foo
324 To: foo
325 Cc: bar
325 Cc: bar
326
326
327
327
328 a | 1 +
328 a | 1 +
329 b | 1 +
329 b | 1 +
330 2 files changed, 2 insertions(+), 0 deletions(-)
330 2 files changed, 2 insertions(+), 0 deletions(-)
331
331
332 Displaying [PATCH 1 of 2] a ...
332 Displaying [PATCH 1 of 2] a ...
333 Content-Type: text/plain; charset="us-ascii"
333 Content-Type: text/plain; charset="us-ascii"
334 MIME-Version: 1.0
334 MIME-Version: 1.0
335 Content-Transfer-Encoding: 7bit
335 Content-Transfer-Encoding: 7bit
336 Subject: [PATCH 1 of 2] a
336 Subject: [PATCH 1 of 2] a
337 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
337 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
338 Message-Id: <8580ff50825a50c8f716.61@
338 Message-Id: <8580ff50825a50c8f716.61@
339 In-Reply-To: <patchbomb.60@
339 In-Reply-To: <patchbomb.60@
340 References: <patchbomb.60@
340 References: <patchbomb.60@
341 User-Agent: Mercurial-patchbomb
341 User-Agent: Mercurial-patchbomb
342 Date: Thu, 01 Jan 1970 00:01:01 +0000
342 Date: Thu, 01 Jan 1970 00:01:01 +0000
343 From: quux
343 From: quux
344 To: foo
344 To: foo
345 Cc: bar
345 Cc: bar
346
346
347 a | 1 +
347 a | 1 +
348 1 files changed, 1 insertions(+), 0 deletions(-)
348 1 files changed, 1 insertions(+), 0 deletions(-)
349
349
350
350
351 # HG changeset patch
351 # HG changeset patch
352 # User test
352 # User test
353 # Date 1 0
353 # Date 1 0
354 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
354 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
355 # Parent 0000000000000000000000000000000000000000
355 # Parent 0000000000000000000000000000000000000000
356 a
356 a
357
357
358 diff -r 000000000000 -r 8580ff50825a a
358 diff -r 000000000000 -r 8580ff50825a a
359 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
359 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
360 +++ b/a Thu Jan 01 00:00:01 1970 +0000
360 +++ b/a Thu Jan 01 00:00:01 1970 +0000
361 @@ -0,0 +1,1 @@
361 @@ -0,0 +1,1 @@
362 +a
362 +a
363
363
364 Displaying [PATCH 2 of 2] b ...
364 Displaying [PATCH 2 of 2] b ...
365 Content-Type: text/plain; charset="us-ascii"
365 Content-Type: text/plain; charset="us-ascii"
366 MIME-Version: 1.0
366 MIME-Version: 1.0
367 Content-Transfer-Encoding: 7bit
367 Content-Transfer-Encoding: 7bit
368 Subject: [PATCH 2 of 2] b
368 Subject: [PATCH 2 of 2] b
369 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
369 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
370 Message-Id: <97d72e5f12c7e84f8506.62@
370 Message-Id: <97d72e5f12c7e84f8506.62@
371 In-Reply-To: <patchbomb.60@
371 In-Reply-To: <patchbomb.60@
372 References: <patchbomb.60@
372 References: <patchbomb.60@
373 User-Agent: Mercurial-patchbomb
373 User-Agent: Mercurial-patchbomb
374 Date: Thu, 01 Jan 1970 00:01:02 +0000
374 Date: Thu, 01 Jan 1970 00:01:02 +0000
375 From: quux
375 From: quux
376 To: foo
376 To: foo
377 Cc: bar
377 Cc: bar
378
378
379 b | 1 +
379 b | 1 +
380 1 files changed, 1 insertions(+), 0 deletions(-)
380 1 files changed, 1 insertions(+), 0 deletions(-)
381
381
382
382
383 # HG changeset patch
383 # HG changeset patch
384 # User test
384 # User test
385 # Date 2 0
385 # Date 2 0
386 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
386 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
387 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
387 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
388 b
388 b
389
389
390 diff -r 8580ff50825a -r 97d72e5f12c7 b
390 diff -r 8580ff50825a -r 97d72e5f12c7 b
391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
392 +++ b/b Thu Jan 01 00:00:02 1970 +0000
392 +++ b/b Thu Jan 01 00:00:02 1970 +0000
393 @@ -0,0 +1,1 @@
393 @@ -0,0 +1,1 @@
394 +b
394 +b
395
395
396 % test inline for single patch
396 % test inline for single patch
397 This patch series consists of 1 patches.
397 This patch series consists of 1 patches.
398
398
399
399
400 Displaying [PATCH] test ...
400 Displaying [PATCH] test ...
401 Content-Type: multipart/mixed; boundary="===
401 Content-Type: multipart/mixed; boundary="===
402 MIME-Version: 1.0
402 MIME-Version: 1.0
403 Subject: [PATCH] test
403 Subject: [PATCH] test
404 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
404 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
405 Message-Id: <ff2c9fa2018b15fa74b3.60@
405 Message-Id: <ff2c9fa2018b15fa74b3.60@
406 User-Agent: Mercurial-patchbomb
406 User-Agent: Mercurial-patchbomb
407 Date: Thu, 01 Jan 1970 00:01:00 +0000
407 Date: Thu, 01 Jan 1970 00:01:00 +0000
408 From: quux
408 From: quux
409 To: foo
409 To: foo
410 Cc: bar
410 Cc: bar
411
411
412 --===
412 --===
413 Content-Type: text/x-patch; charset="us-ascii"
413 Content-Type: text/x-patch; charset="us-ascii"
414 MIME-Version: 1.0
414 MIME-Version: 1.0
415 Content-Transfer-Encoding: 7bit
415 Content-Transfer-Encoding: 7bit
416 Content-Disposition: inline; filename=t2.patch
416 Content-Disposition: inline; filename=t2.patch
417
417
418 # HG changeset patch
418 # HG changeset patch
419 # User test
419 # User test
420 # Date 3 0
420 # Date 3 0
421 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
421 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
422 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
422 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
423 c
423 c
424
424
425 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
425 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
426 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
426 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
427 +++ b/c Thu Jan 01 00:00:03 1970 +0000
427 +++ b/c Thu Jan 01 00:00:03 1970 +0000
428 @@ -0,0 +1,1 @@
428 @@ -0,0 +1,1 @@
429 +c
429 +c
430
430
431 --===
431 --===
432 % test inline for single patch (quoted-printable)
432 % test inline for single patch (quoted-printable)
433 This patch series consists of 1 patches.
433 This patch series consists of 1 patches.
434
434
435
435
436 Displaying [PATCH] test ...
436 Displaying [PATCH] test ...
437 Content-Type: multipart/mixed; boundary="===
437 Content-Type: multipart/mixed; boundary="===
438 MIME-Version: 1.0
438 MIME-Version: 1.0
439 Subject: [PATCH] test
439 Subject: [PATCH] test
440 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
440 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
441 Message-Id: <c655633f8c87700bb38c.60@
441 Message-Id: <c655633f8c87700bb38c.60@
442 User-Agent: Mercurial-patchbomb
442 User-Agent: Mercurial-patchbomb
443 Date: Thu, 01 Jan 1970 00:01:00 +0000
443 Date: Thu, 01 Jan 1970 00:01:00 +0000
444 From: quux
444 From: quux
445 To: foo
445 To: foo
446 Cc: bar
446 Cc: bar
447
447
448 --===
448 --===
449 Content-Type: text/x-patch; charset="us-ascii"
449 Content-Type: text/x-patch; charset="us-ascii"
450 MIME-Version: 1.0
450 MIME-Version: 1.0
451 Content-Transfer-Encoding: quoted-printable
451 Content-Transfer-Encoding: quoted-printable
452 Content-Disposition: inline; filename=t2.patch
452 Content-Disposition: inline; filename=t2.patch
453
453
454 # HG changeset patch
454 # HG changeset patch
455 # User test
455 # User test
456 # Date 4 0
456 # Date 4 0
457 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
457 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
458 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
458 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
459 charset=3Dutf-8; content-transfer-encoding: quoted-printable
459 charset=3Dutf-8; content-transfer-encoding: quoted-printable
460
460
461 diff -r c3c9e37db9f4 -r c655633f8c87 qp
461 diff -r c3c9e37db9f4 -r c655633f8c87 qp
462 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
462 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
463 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
463 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
464 @@ -0,0 +1,4 @@
464 @@ -0,0 +1,4 @@
465 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
465 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
466 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
466 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
467 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
467 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
468 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
468 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
469 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
469 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
470 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
470 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
471 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
471 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
472 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
472 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
473 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
473 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
474 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
474 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
475 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
475 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
476 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
476 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
477 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
477 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
478 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
478 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
479 +foo
479 +foo
480 +
480 +
481 +bar
481 +bar
482
482
483 --===
483 --===
484 % test inline for multiple patches
484 % test inline for multiple patches
485 This patch series consists of 3 patches.
485 This patch series consists of 3 patches.
486
486
487
487
488 Write the introductory message for the patch series.
488 Write the introductory message for the patch series.
489
489
490
490
491 Displaying [PATCH 0 of 3] test ...
491 Displaying [PATCH 0 of 3] test ...
492 Content-Type: text/plain; charset="us-ascii"
492 Content-Type: text/plain; charset="us-ascii"
493 MIME-Version: 1.0
493 MIME-Version: 1.0
494 Content-Transfer-Encoding: 7bit
494 Content-Transfer-Encoding: 7bit
495 Subject: [PATCH 0 of 3] test
495 Subject: [PATCH 0 of 3] test
496 Message-Id: <patchbomb.60@
496 Message-Id: <patchbomb.60@
497 User-Agent: Mercurial-patchbomb
497 User-Agent: Mercurial-patchbomb
498 Date: Thu, 01 Jan 1970 00:01:00 +0000
498 Date: Thu, 01 Jan 1970 00:01:00 +0000
499 From: quux
499 From: quux
500 To: foo
500 To: foo
501 Cc: bar
501 Cc: bar
502
502
503
503
504 Displaying [PATCH 1 of 3] a ...
504 Displaying [PATCH 1 of 3] a ...
505 Content-Type: multipart/mixed; boundary="===
505 Content-Type: multipart/mixed; boundary="===
506 MIME-Version: 1.0
506 MIME-Version: 1.0
507 Subject: [PATCH 1 of 3] a
507 Subject: [PATCH 1 of 3] a
508 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
508 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
509 Message-Id: <8580ff50825a50c8f716.61@
509 Message-Id: <8580ff50825a50c8f716.61@
510 In-Reply-To: <patchbomb.60@
510 In-Reply-To: <patchbomb.60@
511 References: <patchbomb.60@
511 References: <patchbomb.60@
512 User-Agent: Mercurial-patchbomb
512 User-Agent: Mercurial-patchbomb
513 Date: Thu, 01 Jan 1970 00:01:01 +0000
513 Date: Thu, 01 Jan 1970 00:01:01 +0000
514 From: quux
514 From: quux
515 To: foo
515 To: foo
516 Cc: bar
516 Cc: bar
517
517
518 --===
518 --===
519 Content-Type: text/x-patch; charset="us-ascii"
519 Content-Type: text/x-patch; charset="us-ascii"
520 MIME-Version: 1.0
520 MIME-Version: 1.0
521 Content-Transfer-Encoding: 7bit
521 Content-Transfer-Encoding: 7bit
522 Content-Disposition: inline; filename=t2-1.patch
522 Content-Disposition: inline; filename=t2-1.patch
523
523
524 # HG changeset patch
524 # HG changeset patch
525 # User test
525 # User test
526 # Date 1 0
526 # Date 1 0
527 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
527 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
528 # Parent 0000000000000000000000000000000000000000
528 # Parent 0000000000000000000000000000000000000000
529 a
529 a
530
530
531 diff -r 000000000000 -r 8580ff50825a a
531 diff -r 000000000000 -r 8580ff50825a a
532 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
532 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
533 +++ b/a Thu Jan 01 00:00:01 1970 +0000
533 +++ b/a Thu Jan 01 00:00:01 1970 +0000
534 @@ -0,0 +1,1 @@
534 @@ -0,0 +1,1 @@
535 +a
535 +a
536
536
537 --===
537 --===
538 Displaying [PATCH 2 of 3] b ...
538 Displaying [PATCH 2 of 3] b ...
539 Content-Type: multipart/mixed; boundary="===
539 Content-Type: multipart/mixed; boundary="===
540 MIME-Version: 1.0
540 MIME-Version: 1.0
541 Subject: [PATCH 2 of 3] b
541 Subject: [PATCH 2 of 3] b
542 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
542 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
543 Message-Id: <97d72e5f12c7e84f8506.62@
543 Message-Id: <97d72e5f12c7e84f8506.62@
544 In-Reply-To: <patchbomb.60@
544 In-Reply-To: <patchbomb.60@
545 References: <patchbomb.60@
545 References: <patchbomb.60@
546 User-Agent: Mercurial-patchbomb
546 User-Agent: Mercurial-patchbomb
547 Date: Thu, 01 Jan 1970 00:01:02 +0000
547 Date: Thu, 01 Jan 1970 00:01:02 +0000
548 From: quux
548 From: quux
549 To: foo
549 To: foo
550 Cc: bar
550 Cc: bar
551
551
552 --===
552 --===
553 Content-Type: text/x-patch; charset="us-ascii"
553 Content-Type: text/x-patch; charset="us-ascii"
554 MIME-Version: 1.0
554 MIME-Version: 1.0
555 Content-Transfer-Encoding: 7bit
555 Content-Transfer-Encoding: 7bit
556 Content-Disposition: inline; filename=t2-2.patch
556 Content-Disposition: inline; filename=t2-2.patch
557
557
558 # HG changeset patch
558 # HG changeset patch
559 # User test
559 # User test
560 # Date 2 0
560 # Date 2 0
561 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
561 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
562 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
562 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
563 b
563 b
564
564
565 diff -r 8580ff50825a -r 97d72e5f12c7 b
565 diff -r 8580ff50825a -r 97d72e5f12c7 b
566 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
566 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
567 +++ b/b Thu Jan 01 00:00:02 1970 +0000
567 +++ b/b Thu Jan 01 00:00:02 1970 +0000
568 @@ -0,0 +1,1 @@
568 @@ -0,0 +1,1 @@
569 +b
569 +b
570
570
571 --===
571 --===
572 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
572 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
573 Content-Type: multipart/mixed; boundary="===
573 Content-Type: multipart/mixed; boundary="===
574 MIME-Version: 1.0
574 MIME-Version: 1.0
575 Subject: [PATCH 3 of 3] charset=utf-8;
575 Subject: [PATCH 3 of 3] charset=utf-8;
576 content-transfer-encoding: quoted-printable
576 content-transfer-encoding: quoted-printable
577 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
577 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
578 Message-Id: <c655633f8c87700bb38c.63@
578 Message-Id: <c655633f8c87700bb38c.63@
579 In-Reply-To: <patchbomb.60@
579 In-Reply-To: <patchbomb.60@
580 References: <patchbomb.60@
580 References: <patchbomb.60@
581 User-Agent: Mercurial-patchbomb
581 User-Agent: Mercurial-patchbomb
582 Date: Thu, 01 Jan 1970 00:01:03 +0000
582 Date: Thu, 01 Jan 1970 00:01:03 +0000
583 From: quux
583 From: quux
584 To: foo
584 To: foo
585 Cc: bar
585 Cc: bar
586
586
587 --===
587 --===
588 Content-Type: text/x-patch; charset="us-ascii"
588 Content-Type: text/x-patch; charset="us-ascii"
589 MIME-Version: 1.0
589 MIME-Version: 1.0
590 Content-Transfer-Encoding: quoted-printable
590 Content-Transfer-Encoding: quoted-printable
591 Content-Disposition: inline; filename=t2-3.patch
591 Content-Disposition: inline; filename=t2-3.patch
592
592
593 # HG changeset patch
593 # HG changeset patch
594 # User test
594 # User test
595 # Date 4 0
595 # Date 4 0
596 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
596 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
597 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
597 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
598 charset=3Dutf-8; content-transfer-encoding: quoted-printable
598 charset=3Dutf-8; content-transfer-encoding: quoted-printable
599
599
600 diff -r c3c9e37db9f4 -r c655633f8c87 qp
600 diff -r c3c9e37db9f4 -r c655633f8c87 qp
601 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
601 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
602 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
602 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
603 @@ -0,0 +1,4 @@
603 @@ -0,0 +1,4 @@
604 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
604 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
605 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
605 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
606 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
606 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
607 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
607 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
608 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
608 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
609 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
609 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
610 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
610 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
611 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
611 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
612 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
612 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
613 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
613 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
614 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
614 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
615 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
615 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
616 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
616 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
617 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
617 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
618 +foo
618 +foo
619 +
619 +
620 +bar
620 +bar
621
621
622 --===
622 --===
623 % test attach for single patch
623 % test attach for single patch
624 This patch series consists of 1 patches.
624 This patch series consists of 1 patches.
625
625
626
626
627 Displaying [PATCH] test ...
627 Displaying [PATCH] test ...
628 Content-Type: multipart/mixed; boundary="===
628 Content-Type: multipart/mixed; boundary="===
629 MIME-Version: 1.0
629 MIME-Version: 1.0
630 Subject: [PATCH] test
630 Subject: [PATCH] test
631 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
631 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
632 Message-Id: <ff2c9fa2018b15fa74b3.60@
632 Message-Id: <ff2c9fa2018b15fa74b3.60@
633 User-Agent: Mercurial-patchbomb
633 User-Agent: Mercurial-patchbomb
634 Date: Thu, 01 Jan 1970 00:01:00 +0000
634 Date: Thu, 01 Jan 1970 00:01:00 +0000
635 From: quux
635 From: quux
636 To: foo
636 To: foo
637 Cc: bar
637 Cc: bar
638
638
639 --===
639 --===
640 Content-Type: text/plain; charset="us-ascii"
640 Content-Type: text/plain; charset="us-ascii"
641 MIME-Version: 1.0
641 MIME-Version: 1.0
642 Content-Transfer-Encoding: 7bit
642 Content-Transfer-Encoding: 7bit
643
643
644 Patch subject is complete summary.
644 Patch subject is complete summary.
645
645
646
646
647
647
648 --===
648 --===
649 Content-Type: text/x-patch; charset="us-ascii"
649 Content-Type: text/x-patch; charset="us-ascii"
650 MIME-Version: 1.0
650 MIME-Version: 1.0
651 Content-Transfer-Encoding: 7bit
651 Content-Transfer-Encoding: 7bit
652 Content-Disposition: attachment; filename=t2.patch
652 Content-Disposition: attachment; filename=t2.patch
653
653
654 # HG changeset patch
654 # HG changeset patch
655 # User test
655 # User test
656 # Date 3 0
656 # Date 3 0
657 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
657 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
658 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
658 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
659 c
659 c
660
660
661 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
661 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
662 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
662 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
663 +++ b/c Thu Jan 01 00:00:03 1970 +0000
663 +++ b/c Thu Jan 01 00:00:03 1970 +0000
664 @@ -0,0 +1,1 @@
664 @@ -0,0 +1,1 @@
665 +c
665 +c
666
666
667 --===
667 --===
668 % test attach for single patch (quoted-printable)
668 % test attach for single patch (quoted-printable)
669 This patch series consists of 1 patches.
669 This patch series consists of 1 patches.
670
670
671
671
672 Displaying [PATCH] test ...
672 Displaying [PATCH] test ...
673 Content-Type: multipart/mixed; boundary="===
673 Content-Type: multipart/mixed; boundary="===
674 MIME-Version: 1.0
674 MIME-Version: 1.0
675 Subject: [PATCH] test
675 Subject: [PATCH] test
676 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
676 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
677 Message-Id: <c655633f8c87700bb38c.60@
677 Message-Id: <c655633f8c87700bb38c.60@
678 User-Agent: Mercurial-patchbomb
678 User-Agent: Mercurial-patchbomb
679 Date: Thu, 01 Jan 1970 00:01:00 +0000
679 Date: Thu, 01 Jan 1970 00:01:00 +0000
680 From: quux
680 From: quux
681 To: foo
681 To: foo
682 Cc: bar
682 Cc: bar
683
683
684 --===
684 --===
685 Content-Type: text/plain; charset="us-ascii"
685 Content-Type: text/plain; charset="us-ascii"
686 MIME-Version: 1.0
686 MIME-Version: 1.0
687 Content-Transfer-Encoding: 7bit
687 Content-Transfer-Encoding: 7bit
688
688
689 Patch subject is complete summary.
689 Patch subject is complete summary.
690
690
691
691
692
692
693 --===
693 --===
694 Content-Type: text/x-patch; charset="us-ascii"
694 Content-Type: text/x-patch; charset="us-ascii"
695 MIME-Version: 1.0
695 MIME-Version: 1.0
696 Content-Transfer-Encoding: quoted-printable
696 Content-Transfer-Encoding: quoted-printable
697 Content-Disposition: attachment; filename=t2.patch
697 Content-Disposition: attachment; filename=t2.patch
698
698
699 # HG changeset patch
699 # HG changeset patch
700 # User test
700 # User test
701 # Date 4 0
701 # Date 4 0
702 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
702 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
703 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
703 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
704 charset=3Dutf-8; content-transfer-encoding: quoted-printable
704 charset=3Dutf-8; content-transfer-encoding: quoted-printable
705
705
706 diff -r c3c9e37db9f4 -r c655633f8c87 qp
706 diff -r c3c9e37db9f4 -r c655633f8c87 qp
707 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
707 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
708 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
708 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
709 @@ -0,0 +1,4 @@
709 @@ -0,0 +1,4 @@
710 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
710 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
711 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
711 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
712 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
712 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
713 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
713 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
714 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
714 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
715 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
715 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
716 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
716 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
717 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
717 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
718 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
718 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
719 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
719 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
720 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
720 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
721 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
721 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
722 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
722 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
723 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
723 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
724 +foo
724 +foo
725 +
725 +
726 +bar
726 +bar
727
727
728 --===
728 --===
729 % test attach for multiple patches
729 % test attach for multiple patches
730 This patch series consists of 3 patches.
730 This patch series consists of 3 patches.
731
731
732
732
733 Write the introductory message for the patch series.
733 Write the introductory message for the patch series.
734
734
735
735
736 Displaying [PATCH 0 of 3] test ...
736 Displaying [PATCH 0 of 3] test ...
737 Content-Type: text/plain; charset="us-ascii"
737 Content-Type: text/plain; charset="us-ascii"
738 MIME-Version: 1.0
738 MIME-Version: 1.0
739 Content-Transfer-Encoding: 7bit
739 Content-Transfer-Encoding: 7bit
740 Subject: [PATCH 0 of 3] test
740 Subject: [PATCH 0 of 3] test
741 Message-Id: <patchbomb.60@
741 Message-Id: <patchbomb.60@
742 User-Agent: Mercurial-patchbomb
742 User-Agent: Mercurial-patchbomb
743 Date: Thu, 01 Jan 1970 00:01:00 +0000
743 Date: Thu, 01 Jan 1970 00:01:00 +0000
744 From: quux
744 From: quux
745 To: foo
745 To: foo
746 Cc: bar
746 Cc: bar
747
747
748
748
749 Displaying [PATCH 1 of 3] a ...
749 Displaying [PATCH 1 of 3] a ...
750 Content-Type: multipart/mixed; boundary="===
750 Content-Type: multipart/mixed; boundary="===
751 MIME-Version: 1.0
751 MIME-Version: 1.0
752 Subject: [PATCH 1 of 3] a
752 Subject: [PATCH 1 of 3] a
753 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
753 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
754 Message-Id: <8580ff50825a50c8f716.61@
754 Message-Id: <8580ff50825a50c8f716.61@
755 In-Reply-To: <patchbomb.60@
755 In-Reply-To: <patchbomb.60@
756 References: <patchbomb.60@
756 References: <patchbomb.60@
757 User-Agent: Mercurial-patchbomb
757 User-Agent: Mercurial-patchbomb
758 Date: Thu, 01 Jan 1970 00:01:01 +0000
758 Date: Thu, 01 Jan 1970 00:01:01 +0000
759 From: quux
759 From: quux
760 To: foo
760 To: foo
761 Cc: bar
761 Cc: bar
762
762
763 --===
763 --===
764 Content-Type: text/plain; charset="us-ascii"
764 Content-Type: text/plain; charset="us-ascii"
765 MIME-Version: 1.0
765 MIME-Version: 1.0
766 Content-Transfer-Encoding: 7bit
766 Content-Transfer-Encoding: 7bit
767
767
768 Patch subject is complete summary.
768 Patch subject is complete summary.
769
769
770
770
771
771
772 --===
772 --===
773 Content-Type: text/x-patch; charset="us-ascii"
773 Content-Type: text/x-patch; charset="us-ascii"
774 MIME-Version: 1.0
774 MIME-Version: 1.0
775 Content-Transfer-Encoding: 7bit
775 Content-Transfer-Encoding: 7bit
776 Content-Disposition: attachment; filename=t2-1.patch
776 Content-Disposition: attachment; filename=t2-1.patch
777
777
778 # HG changeset patch
778 # HG changeset patch
779 # User test
779 # User test
780 # Date 1 0
780 # Date 1 0
781 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
781 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
782 # Parent 0000000000000000000000000000000000000000
782 # Parent 0000000000000000000000000000000000000000
783 a
783 a
784
784
785 diff -r 000000000000 -r 8580ff50825a a
785 diff -r 000000000000 -r 8580ff50825a a
786 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
786 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
787 +++ b/a Thu Jan 01 00:00:01 1970 +0000
787 +++ b/a Thu Jan 01 00:00:01 1970 +0000
788 @@ -0,0 +1,1 @@
788 @@ -0,0 +1,1 @@
789 +a
789 +a
790
790
791 --===
791 --===
792 Displaying [PATCH 2 of 3] b ...
792 Displaying [PATCH 2 of 3] b ...
793 Content-Type: multipart/mixed; boundary="===
793 Content-Type: multipart/mixed; boundary="===
794 MIME-Version: 1.0
794 MIME-Version: 1.0
795 Subject: [PATCH 2 of 3] b
795 Subject: [PATCH 2 of 3] b
796 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
796 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
797 Message-Id: <97d72e5f12c7e84f8506.62@
797 Message-Id: <97d72e5f12c7e84f8506.62@
798 In-Reply-To: <patchbomb.60@
798 In-Reply-To: <patchbomb.60@
799 References: <patchbomb.60@
799 References: <patchbomb.60@
800 User-Agent: Mercurial-patchbomb
800 User-Agent: Mercurial-patchbomb
801 Date: Thu, 01 Jan 1970 00:01:02 +0000
801 Date: Thu, 01 Jan 1970 00:01:02 +0000
802 From: quux
802 From: quux
803 To: foo
803 To: foo
804 Cc: bar
804 Cc: bar
805
805
806 --===
806 --===
807 Content-Type: text/plain; charset="us-ascii"
807 Content-Type: text/plain; charset="us-ascii"
808 MIME-Version: 1.0
808 MIME-Version: 1.0
809 Content-Transfer-Encoding: 7bit
809 Content-Transfer-Encoding: 7bit
810
810
811 Patch subject is complete summary.
811 Patch subject is complete summary.
812
812
813
813
814
814
815 --===
815 --===
816 Content-Type: text/x-patch; charset="us-ascii"
816 Content-Type: text/x-patch; charset="us-ascii"
817 MIME-Version: 1.0
817 MIME-Version: 1.0
818 Content-Transfer-Encoding: 7bit
818 Content-Transfer-Encoding: 7bit
819 Content-Disposition: attachment; filename=t2-2.patch
819 Content-Disposition: attachment; filename=t2-2.patch
820
820
821 # HG changeset patch
821 # HG changeset patch
822 # User test
822 # User test
823 # Date 2 0
823 # Date 2 0
824 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
824 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
825 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
825 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
826 b
826 b
827
827
828 diff -r 8580ff50825a -r 97d72e5f12c7 b
828 diff -r 8580ff50825a -r 97d72e5f12c7 b
829 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
829 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
830 +++ b/b Thu Jan 01 00:00:02 1970 +0000
830 +++ b/b Thu Jan 01 00:00:02 1970 +0000
831 @@ -0,0 +1,1 @@
831 @@ -0,0 +1,1 @@
832 +b
832 +b
833
833
834 --===
834 --===
835 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
835 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
836 Content-Type: multipart/mixed; boundary="===
836 Content-Type: multipart/mixed; boundary="===
837 MIME-Version: 1.0
837 MIME-Version: 1.0
838 Subject: [PATCH 3 of 3] charset=utf-8;
838 Subject: [PATCH 3 of 3] charset=utf-8;
839 content-transfer-encoding: quoted-printable
839 content-transfer-encoding: quoted-printable
840 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
840 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
841 Message-Id: <c655633f8c87700bb38c.63@
841 Message-Id: <c655633f8c87700bb38c.63@
842 In-Reply-To: <patchbomb.60@
842 In-Reply-To: <patchbomb.60@
843 References: <patchbomb.60@
843 References: <patchbomb.60@
844 User-Agent: Mercurial-patchbomb
844 User-Agent: Mercurial-patchbomb
845 Date: Thu, 01 Jan 1970 00:01:03 +0000
845 Date: Thu, 01 Jan 1970 00:01:03 +0000
846 From: quux
846 From: quux
847 To: foo
847 To: foo
848 Cc: bar
848 Cc: bar
849
849
850 --===
850 --===
851 Content-Type: text/plain; charset="us-ascii"
851 Content-Type: text/plain; charset="us-ascii"
852 MIME-Version: 1.0
852 MIME-Version: 1.0
853 Content-Transfer-Encoding: 7bit
853 Content-Transfer-Encoding: 7bit
854
854
855 Patch subject is complete summary.
855 Patch subject is complete summary.
856
856
857
857
858
858
859 --===
859 --===
860 Content-Type: text/x-patch; charset="us-ascii"
860 Content-Type: text/x-patch; charset="us-ascii"
861 MIME-Version: 1.0
861 MIME-Version: 1.0
862 Content-Transfer-Encoding: quoted-printable
862 Content-Transfer-Encoding: quoted-printable
863 Content-Disposition: attachment; filename=t2-3.patch
863 Content-Disposition: attachment; filename=t2-3.patch
864
864
865 # HG changeset patch
865 # HG changeset patch
866 # User test
866 # User test
867 # Date 4 0
867 # Date 4 0
868 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
868 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
869 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
869 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
870 charset=3Dutf-8; content-transfer-encoding: quoted-printable
870 charset=3Dutf-8; content-transfer-encoding: quoted-printable
871
871
872 diff -r c3c9e37db9f4 -r c655633f8c87 qp
872 diff -r c3c9e37db9f4 -r c655633f8c87 qp
873 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
873 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
874 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
874 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
875 @@ -0,0 +1,4 @@
875 @@ -0,0 +1,4 @@
876 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
876 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
877 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
877 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
878 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
878 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
879 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
879 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
880 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
880 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
881 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
881 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
882 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
882 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
883 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
883 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
884 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
884 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
885 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
885 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
886 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
886 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
887 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
887 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
888 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
888 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
889 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
889 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
890 +foo
890 +foo
891 +
891 +
892 +bar
892 +bar
893
893
894 --===
894 --===
895 % test intro for single patch
895 % test intro for single patch
896 This patch series consists of 1 patches.
896 This patch series consists of 1 patches.
897
897
898
898
899 Write the introductory message for the patch series.
899 Write the introductory message for the patch series.
900
900
901
901
902 Displaying [PATCH 0 of 1] test ...
902 Displaying [PATCH 0 of 1] test ...
903 Content-Type: text/plain; charset="us-ascii"
903 Content-Type: text/plain; charset="us-ascii"
904 MIME-Version: 1.0
904 MIME-Version: 1.0
905 Content-Transfer-Encoding: 7bit
905 Content-Transfer-Encoding: 7bit
906 Subject: [PATCH 0 of 1] test
906 Subject: [PATCH 0 of 1] test
907 Message-Id: <patchbomb.60@
907 Message-Id: <patchbomb.60@
908 User-Agent: Mercurial-patchbomb
908 User-Agent: Mercurial-patchbomb
909 Date: Thu, 01 Jan 1970 00:01:00 +0000
909 Date: Thu, 01 Jan 1970 00:01:00 +0000
910 From: quux
910 From: quux
911 To: foo
911 To: foo
912 Cc: bar
912 Cc: bar
913
913
914
914
915 Displaying [PATCH 1 of 1] c ...
915 Displaying [PATCH 1 of 1] c ...
916 Content-Type: text/plain; charset="us-ascii"
916 Content-Type: text/plain; charset="us-ascii"
917 MIME-Version: 1.0
917 MIME-Version: 1.0
918 Content-Transfer-Encoding: 7bit
918 Content-Transfer-Encoding: 7bit
919 Subject: [PATCH 1 of 1] c
919 Subject: [PATCH 1 of 1] c
920 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
920 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
921 Message-Id: <ff2c9fa2018b15fa74b3.61@
921 Message-Id: <ff2c9fa2018b15fa74b3.61@
922 In-Reply-To: <patchbomb.60@
922 In-Reply-To: <patchbomb.60@
923 References: <patchbomb.60@
923 References: <patchbomb.60@
924 User-Agent: Mercurial-patchbomb
924 User-Agent: Mercurial-patchbomb
925 Date: Thu, 01 Jan 1970 00:01:01 +0000
925 Date: Thu, 01 Jan 1970 00:01:01 +0000
926 From: quux
926 From: quux
927 To: foo
927 To: foo
928 Cc: bar
928 Cc: bar
929
929
930 # HG changeset patch
930 # HG changeset patch
931 # User test
931 # User test
932 # Date 3 0
932 # Date 3 0
933 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
933 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
934 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
934 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
935 c
935 c
936
936
937 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
937 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
938 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
938 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
939 +++ b/c Thu Jan 01 00:00:03 1970 +0000
939 +++ b/c Thu Jan 01 00:00:03 1970 +0000
940 @@ -0,0 +1,1 @@
940 @@ -0,0 +1,1 @@
941 +c
941 +c
942
942
943 % test intro for multiple patches
943 % test intro for multiple patches
944 This patch series consists of 2 patches.
944 This patch series consists of 2 patches.
945
945
946
946
947 Write the introductory message for the patch series.
947 Write the introductory message for the patch series.
948
948
949
949
950 Displaying [PATCH 0 of 2] test ...
950 Displaying [PATCH 0 of 2] test ...
951 Content-Type: text/plain; charset="us-ascii"
951 Content-Type: text/plain; charset="us-ascii"
952 MIME-Version: 1.0
952 MIME-Version: 1.0
953 Content-Transfer-Encoding: 7bit
953 Content-Transfer-Encoding: 7bit
954 Subject: [PATCH 0 of 2] test
954 Subject: [PATCH 0 of 2] test
955 Message-Id: <patchbomb.60@
955 Message-Id: <patchbomb.60@
956 User-Agent: Mercurial-patchbomb
956 User-Agent: Mercurial-patchbomb
957 Date: Thu, 01 Jan 1970 00:01:00 +0000
957 Date: Thu, 01 Jan 1970 00:01:00 +0000
958 From: quux
958 From: quux
959 To: foo
959 To: foo
960 Cc: bar
960 Cc: bar
961
961
962
962
963 Displaying [PATCH 1 of 2] a ...
963 Displaying [PATCH 1 of 2] a ...
964 Content-Type: text/plain; charset="us-ascii"
964 Content-Type: text/plain; charset="us-ascii"
965 MIME-Version: 1.0
965 MIME-Version: 1.0
966 Content-Transfer-Encoding: 7bit
966 Content-Transfer-Encoding: 7bit
967 Subject: [PATCH 1 of 2] a
967 Subject: [PATCH 1 of 2] a
968 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
968 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
969 Message-Id: <8580ff50825a50c8f716.61@
969 Message-Id: <8580ff50825a50c8f716.61@
970 In-Reply-To: <patchbomb.60@
970 In-Reply-To: <patchbomb.60@
971 References: <patchbomb.60@
971 References: <patchbomb.60@
972 User-Agent: Mercurial-patchbomb
972 User-Agent: Mercurial-patchbomb
973 Date: Thu, 01 Jan 1970 00:01:01 +0000
973 Date: Thu, 01 Jan 1970 00:01:01 +0000
974 From: quux
974 From: quux
975 To: foo
975 To: foo
976 Cc: bar
976 Cc: bar
977
977
978 # HG changeset patch
978 # HG changeset patch
979 # User test
979 # User test
980 # Date 1 0
980 # Date 1 0
981 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
981 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
982 # Parent 0000000000000000000000000000000000000000
982 # Parent 0000000000000000000000000000000000000000
983 a
983 a
984
984
985 diff -r 000000000000 -r 8580ff50825a a
985 diff -r 000000000000 -r 8580ff50825a a
986 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
986 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
987 +++ b/a Thu Jan 01 00:00:01 1970 +0000
987 +++ b/a Thu Jan 01 00:00:01 1970 +0000
988 @@ -0,0 +1,1 @@
988 @@ -0,0 +1,1 @@
989 +a
989 +a
990
990
991 Displaying [PATCH 2 of 2] b ...
991 Displaying [PATCH 2 of 2] b ...
992 Content-Type: text/plain; charset="us-ascii"
992 Content-Type: text/plain; charset="us-ascii"
993 MIME-Version: 1.0
993 MIME-Version: 1.0
994 Content-Transfer-Encoding: 7bit
994 Content-Transfer-Encoding: 7bit
995 Subject: [PATCH 2 of 2] b
995 Subject: [PATCH 2 of 2] b
996 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
996 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
997 Message-Id: <97d72e5f12c7e84f8506.62@
997 Message-Id: <97d72e5f12c7e84f8506.62@
998 In-Reply-To: <patchbomb.60@
998 In-Reply-To: <patchbomb.60@
999 References: <patchbomb.60@
999 References: <patchbomb.60@
1000 User-Agent: Mercurial-patchbomb
1000 User-Agent: Mercurial-patchbomb
1001 Date: Thu, 01 Jan 1970 00:01:02 +0000
1001 Date: Thu, 01 Jan 1970 00:01:02 +0000
1002 From: quux
1002 From: quux
1003 To: foo
1003 To: foo
1004 Cc: bar
1004 Cc: bar
1005
1005
1006 # HG changeset patch
1006 # HG changeset patch
1007 # User test
1007 # User test
1008 # Date 2 0
1008 # Date 2 0
1009 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1009 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1010 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1010 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1011 b
1011 b
1012
1012
1013 diff -r 8580ff50825a -r 97d72e5f12c7 b
1013 diff -r 8580ff50825a -r 97d72e5f12c7 b
1014 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1014 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1015 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1015 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1016 @@ -0,0 +1,1 @@
1016 @@ -0,0 +1,1 @@
1017 +b
1017 +b
1018
1018
1019 % tagging csets
1019 % tagging csets
1020 % test inline for single named patch
1020 % test inline for single named patch
1021 This patch series consists of 1 patches.
1021 This patch series consists of 1 patches.
1022
1022
1023
1023
1024 Displaying [PATCH] test ...
1024 Displaying [PATCH] test ...
1025 Content-Type: multipart/mixed; boundary="===
1025 Content-Type: multipart/mixed; boundary="===
1026 MIME-Version: 1.0
1026 MIME-Version: 1.0
1027 Subject: [PATCH] test
1027 Subject: [PATCH] test
1028 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1028 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1029 Message-Id: <ff2c9fa2018b15fa74b3.60@
1029 Message-Id: <ff2c9fa2018b15fa74b3.60@
1030 User-Agent: Mercurial-patchbomb
1030 User-Agent: Mercurial-patchbomb
1031 Date: Thu, 01 Jan 1970 00:01:00 +0000
1031 Date: Thu, 01 Jan 1970 00:01:00 +0000
1032 From: quux
1032 From: quux
1033 To: foo
1033 To: foo
1034 Cc: bar
1034 Cc: bar
1035
1035
1036 --===
1036 --===
1037 Content-Type: text/x-patch; charset="us-ascii"
1037 Content-Type: text/x-patch; charset="us-ascii"
1038 MIME-Version: 1.0
1038 MIME-Version: 1.0
1039 Content-Transfer-Encoding: 7bit
1039 Content-Transfer-Encoding: 7bit
1040 Content-Disposition: inline; filename=two.diff
1040 Content-Disposition: inline; filename=two.diff
1041
1041
1042 # HG changeset patch
1042 # HG changeset patch
1043 # User test
1043 # User test
1044 # Date 3 0
1044 # Date 3 0
1045 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1045 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1046 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1046 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1047 c
1047 c
1048
1048
1049 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1049 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1050 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1050 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1051 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1051 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1052 @@ -0,0 +1,1 @@
1052 @@ -0,0 +1,1 @@
1053 +c
1053 +c
1054
1054
1055 --===
1055 --===
1056 % test inline for multiple named/unnamed patches
1056 % test inline for multiple named/unnamed patches
1057 This patch series consists of 2 patches.
1057 This patch series consists of 2 patches.
1058
1058
1059
1059
1060 Write the introductory message for the patch series.
1060 Write the introductory message for the patch series.
1061
1061
1062
1062
1063 Displaying [PATCH 0 of 2] test ...
1063 Displaying [PATCH 0 of 2] test ...
1064 Content-Type: text/plain; charset="us-ascii"
1064 Content-Type: text/plain; charset="us-ascii"
1065 MIME-Version: 1.0
1065 MIME-Version: 1.0
1066 Content-Transfer-Encoding: 7bit
1066 Content-Transfer-Encoding: 7bit
1067 Subject: [PATCH 0 of 2] test
1067 Subject: [PATCH 0 of 2] test
1068 Message-Id: <patchbomb.60@
1068 Message-Id: <patchbomb.60@
1069 User-Agent: Mercurial-patchbomb
1069 User-Agent: Mercurial-patchbomb
1070 Date: Thu, 01 Jan 1970 00:01:00 +0000
1070 Date: Thu, 01 Jan 1970 00:01:00 +0000
1071 From: quux
1071 From: quux
1072 To: foo
1072 To: foo
1073 Cc: bar
1073 Cc: bar
1074
1074
1075
1075
1076 Displaying [PATCH 1 of 2] a ...
1076 Displaying [PATCH 1 of 2] a ...
1077 Content-Type: multipart/mixed; boundary="===
1077 Content-Type: multipart/mixed; boundary="===
1078 MIME-Version: 1.0
1078 MIME-Version: 1.0
1079 Subject: [PATCH 1 of 2] a
1079 Subject: [PATCH 1 of 2] a
1080 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1080 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1081 Message-Id: <8580ff50825a50c8f716.61@
1081 Message-Id: <8580ff50825a50c8f716.61@
1082 In-Reply-To: <patchbomb.60@
1082 In-Reply-To: <patchbomb.60@
1083 References: <patchbomb.60@
1083 References: <patchbomb.60@
1084 User-Agent: Mercurial-patchbomb
1084 User-Agent: Mercurial-patchbomb
1085 Date: Thu, 01 Jan 1970 00:01:01 +0000
1085 Date: Thu, 01 Jan 1970 00:01:01 +0000
1086 From: quux
1086 From: quux
1087 To: foo
1087 To: foo
1088 Cc: bar
1088 Cc: bar
1089
1089
1090 --===
1090 --===
1091 Content-Type: text/x-patch; charset="us-ascii"
1091 Content-Type: text/x-patch; charset="us-ascii"
1092 MIME-Version: 1.0
1092 MIME-Version: 1.0
1093 Content-Transfer-Encoding: 7bit
1093 Content-Transfer-Encoding: 7bit
1094 Content-Disposition: inline; filename=t2-1.patch
1094 Content-Disposition: inline; filename=t2-1.patch
1095
1095
1096 # HG changeset patch
1096 # HG changeset patch
1097 # User test
1097 # User test
1098 # Date 1 0
1098 # Date 1 0
1099 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1099 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1100 # Parent 0000000000000000000000000000000000000000
1100 # Parent 0000000000000000000000000000000000000000
1101 a
1101 a
1102
1102
1103 diff -r 000000000000 -r 8580ff50825a a
1103 diff -r 000000000000 -r 8580ff50825a a
1104 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1104 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1105 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1105 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1106 @@ -0,0 +1,1 @@
1106 @@ -0,0 +1,1 @@
1107 +a
1107 +a
1108
1108
1109 --===
1109 --===
1110 Displaying [PATCH 2 of 2] b ...
1110 Displaying [PATCH 2 of 2] b ...
1111 Content-Type: multipart/mixed; boundary="===
1111 Content-Type: multipart/mixed; boundary="===
1112 MIME-Version: 1.0
1112 MIME-Version: 1.0
1113 Subject: [PATCH 2 of 2] b
1113 Subject: [PATCH 2 of 2] b
1114 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1114 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1115 Message-Id: <97d72e5f12c7e84f8506.62@
1115 Message-Id: <97d72e5f12c7e84f8506.62@
1116 In-Reply-To: <patchbomb.60@
1116 In-Reply-To: <patchbomb.60@
1117 References: <patchbomb.60@
1117 References: <patchbomb.60@
1118 User-Agent: Mercurial-patchbomb
1118 User-Agent: Mercurial-patchbomb
1119 Date: Thu, 01 Jan 1970 00:01:02 +0000
1119 Date: Thu, 01 Jan 1970 00:01:02 +0000
1120 From: quux
1120 From: quux
1121 To: foo
1121 To: foo
1122 Cc: bar
1122 Cc: bar
1123
1123
1124 --===
1124 --===
1125 Content-Type: text/x-patch; charset="us-ascii"
1125 Content-Type: text/x-patch; charset="us-ascii"
1126 MIME-Version: 1.0
1126 MIME-Version: 1.0
1127 Content-Transfer-Encoding: 7bit
1127 Content-Transfer-Encoding: 7bit
1128 Content-Disposition: inline; filename=one.patch
1128 Content-Disposition: inline; filename=one.patch
1129
1129
1130 # HG changeset patch
1130 # HG changeset patch
1131 # User test
1131 # User test
1132 # Date 2 0
1132 # Date 2 0
1133 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1133 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1134 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1134 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1135 b
1135 b
1136
1136
1137 diff -r 8580ff50825a -r 97d72e5f12c7 b
1137 diff -r 8580ff50825a -r 97d72e5f12c7 b
1138 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1138 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1139 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1139 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1140 @@ -0,0 +1,1 @@
1140 @@ -0,0 +1,1 @@
1141 +b
1141 +b
1142
1142
1143 --===
1143 --===
1144 % test inreplyto
1144 % test inreplyto
1145 This patch series consists of 1 patches.
1145 This patch series consists of 1 patches.
1146
1146
1147
1147
1148 Displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
1148 Displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
1149 Content-Type: text/plain; charset="us-ascii"
1149 Content-Type: text/plain; charset="us-ascii"
1150 MIME-Version: 1.0
1150 MIME-Version: 1.0
1151 Content-Transfer-Encoding: 7bit
1151 Content-Transfer-Encoding: 7bit
1152 Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
1152 Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
1153 X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
1153 X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
1154 Message-Id: <e317db6a6f288748d1f6.60@
1154 Message-Id: <e317db6a6f288748d1f6.60@
1155 In-Reply-To: <baz>
1155 In-Reply-To: <baz>
1156 References: <baz>
1156 References: <baz>
1157 User-Agent: Mercurial-patchbomb
1157 User-Agent: Mercurial-patchbomb
1158 Date: Thu, 01 Jan 1970 00:01:00 +0000
1158 Date: Thu, 01 Jan 1970 00:01:00 +0000
1159 From: quux
1159 From: quux
1160 To: foo
1160 To: foo
1161 Cc: bar
1161 Cc: bar
1162
1162
1163 # HG changeset patch
1163 # HG changeset patch
1164 # User test
1164 # User test
1165 # Date 0 0
1165 # Date 0 0
1166 # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
1166 # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
1167 # Parent eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
1167 # Parent eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
1168 Added tag two, two.diff for changeset ff2c9fa2018b
1168 Added tag two, two.diff for changeset ff2c9fa2018b
1169
1169
1170 diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
1170 diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
1171 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1171 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1172 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1172 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1173 @@ -2,3 +2,5 @@
1173 @@ -2,3 +2,5 @@
1174 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1174 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1175 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1175 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1176 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1176 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1177 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1177 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1178 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1178 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1179
1179
1180 abort: Subject: [PATCH 0 of 2] Please enter a valid value
1180 abort: Subject: [PATCH 0 of 2] Please enter a valid value
1181 This patch series consists of 2 patches.
1181 This patch series consists of 2 patches.
1182
1182
1183 This patch series consists of 2 patches.
1183 This patch series consists of 2 patches.
1184
1184
1185
1185
1186 Write the introductory message for the patch series.
1186 Write the introductory message for the patch series.
1187
1187
1188
1188
1189 Displaying [PATCH 0 of 2] test ...
1189 Displaying [PATCH 0 of 2] test ...
1190 Content-Type: text/plain; charset="us-ascii"
1190 Content-Type: text/plain; charset="us-ascii"
1191 MIME-Version: 1.0
1191 MIME-Version: 1.0
1192 Content-Transfer-Encoding: 7bit
1192 Content-Transfer-Encoding: 7bit
1193 Subject: [PATCH 0 of 2] test
1193 Subject: [PATCH 0 of 2] test
1194 Message-Id: <patchbomb.60@
1194 Message-Id: <patchbomb.60@
1195 In-Reply-To: <baz>
1195 In-Reply-To: <baz>
1196 References: <baz>
1196 References: <baz>
1197 User-Agent: Mercurial-patchbomb
1197 User-Agent: Mercurial-patchbomb
1198 Date: Thu, 01 Jan 1970 00:01:00 +0000
1198 Date: Thu, 01 Jan 1970 00:01:00 +0000
1199 From: quux
1199 From: quux
1200 To: foo
1200 To: foo
1201 Cc: bar
1201 Cc: bar
1202
1202
1203
1203
1204 Displaying [PATCH 1 of 2] a ...
1204 Displaying [PATCH 1 of 2] a ...
1205 Content-Type: text/plain; charset="us-ascii"
1205 Content-Type: text/plain; charset="us-ascii"
1206 MIME-Version: 1.0
1206 MIME-Version: 1.0
1207 Content-Transfer-Encoding: 7bit
1207 Content-Transfer-Encoding: 7bit
1208 Subject: [PATCH 1 of 2] a
1208 Subject: [PATCH 1 of 2] a
1209 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1209 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1210 Message-Id: <8580ff50825a50c8f716.61@
1210 Message-Id: <8580ff50825a50c8f716.61@
1211 In-Reply-To: <patchbomb.60@
1211 In-Reply-To: <patchbomb.60@
1212 References: <patchbomb.60@
1212 References: <patchbomb.60@
1213 User-Agent: Mercurial-patchbomb
1213 User-Agent: Mercurial-patchbomb
1214 Date: Thu, 01 Jan 1970 00:01:01 +0000
1214 Date: Thu, 01 Jan 1970 00:01:01 +0000
1215 From: quux
1215 From: quux
1216 To: foo
1216 To: foo
1217 Cc: bar
1217 Cc: bar
1218
1218
1219 # HG changeset patch
1219 # HG changeset patch
1220 # User test
1220 # User test
1221 # Date 1 0
1221 # Date 1 0
1222 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1222 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1223 # Parent 0000000000000000000000000000000000000000
1223 # Parent 0000000000000000000000000000000000000000
1224 a
1224 a
1225
1225
1226 diff -r 000000000000 -r 8580ff50825a a
1226 diff -r 000000000000 -r 8580ff50825a a
1227 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1227 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1228 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1228 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1229 @@ -0,0 +1,1 @@
1229 @@ -0,0 +1,1 @@
1230 +a
1230 +a
1231
1231
1232 Displaying [PATCH 2 of 2] b ...
1232 Displaying [PATCH 2 of 2] b ...
1233 Content-Type: text/plain; charset="us-ascii"
1233 Content-Type: text/plain; charset="us-ascii"
1234 MIME-Version: 1.0
1234 MIME-Version: 1.0
1235 Content-Transfer-Encoding: 7bit
1235 Content-Transfer-Encoding: 7bit
1236 Subject: [PATCH 2 of 2] b
1236 Subject: [PATCH 2 of 2] b
1237 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1237 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1238 Message-Id: <97d72e5f12c7e84f8506.62@
1238 Message-Id: <97d72e5f12c7e84f8506.62@
1239 In-Reply-To: <patchbomb.60@
1239 In-Reply-To: <patchbomb.60@
1240 References: <patchbomb.60@
1240 References: <patchbomb.60@
1241 User-Agent: Mercurial-patchbomb
1241 User-Agent: Mercurial-patchbomb
1242 Date: Thu, 01 Jan 1970 00:01:02 +0000
1242 Date: Thu, 01 Jan 1970 00:01:02 +0000
1243 From: quux
1243 From: quux
1244 To: foo
1244 To: foo
1245 Cc: bar
1245 Cc: bar
1246
1246
1247 # HG changeset patch
1247 # HG changeset patch
1248 # User test
1248 # User test
1249 # Date 2 0
1249 # Date 2 0
1250 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1250 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1251 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1251 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1252 b
1252 b
1253
1253
1254 diff -r 8580ff50825a -r 97d72e5f12c7 b
1254 diff -r 8580ff50825a -r 97d72e5f12c7 b
1255 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1255 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1256 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1256 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1257 @@ -0,0 +1,1 @@
1257 @@ -0,0 +1,1 @@
1258 +b
1258 +b
1259
1259
1260 % test single flag for single patch
1260 % test single flag for single patch
1261 This patch series consists of 1 patches.
1261 This patch series consists of 1 patches.
1262
1262
1263
1263
1264 Displaying [PATCH fooFlag] test ...
1264 Displaying [PATCH fooFlag] test ...
1265 Content-Type: text/plain; charset="us-ascii"
1265 Content-Type: text/plain; charset="us-ascii"
1266 MIME-Version: 1.0
1266 MIME-Version: 1.0
1267 Content-Transfer-Encoding: 7bit
1267 Content-Transfer-Encoding: 7bit
1268 Subject: [PATCH fooFlag] test
1268 Subject: [PATCH fooFlag] test
1269 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1269 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1270 Message-Id: <ff2c9fa2018b15fa74b3.60@
1270 Message-Id: <ff2c9fa2018b15fa74b3.60@
1271 User-Agent: Mercurial-patchbomb
1271 User-Agent: Mercurial-patchbomb
1272 Date: Thu, 01 Jan 1970 00:01:00 +0000
1272 Date: Thu, 01 Jan 1970 00:01:00 +0000
1273 From: quux
1273 From: quux
1274 To: foo
1274 To: foo
1275 Cc: bar
1275 Cc: bar
1276
1276
1277 # HG changeset patch
1277 # HG changeset patch
1278 # User test
1278 # User test
1279 # Date 3 0
1279 # Date 3 0
1280 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1280 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1281 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1281 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1282 c
1282 c
1283
1283
1284 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1284 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1285 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1285 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1286 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1286 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1287 @@ -0,0 +1,1 @@
1287 @@ -0,0 +1,1 @@
1288 +c
1288 +c
1289
1289
1290 % test single flag for multiple patches
1290 % test single flag for multiple patches
1291 This patch series consists of 2 patches.
1291 This patch series consists of 2 patches.
1292
1292
1293
1293
1294 Write the introductory message for the patch series.
1294 Write the introductory message for the patch series.
1295
1295
1296
1296
1297 Displaying [PATCH 0 of 2 fooFlag] test ...
1297 Displaying [PATCH 0 of 2 fooFlag] test ...
1298 Content-Type: text/plain; charset="us-ascii"
1298 Content-Type: text/plain; charset="us-ascii"
1299 MIME-Version: 1.0
1299 MIME-Version: 1.0
1300 Content-Transfer-Encoding: 7bit
1300 Content-Transfer-Encoding: 7bit
1301 Subject: [PATCH 0 of 2 fooFlag] test
1301 Subject: [PATCH 0 of 2 fooFlag] test
1302 Message-Id: <patchbomb.60@
1302 Message-Id: <patchbomb.60@
1303 User-Agent: Mercurial-patchbomb
1303 User-Agent: Mercurial-patchbomb
1304 Date: Thu, 01 Jan 1970 00:01:00 +0000
1304 Date: Thu, 01 Jan 1970 00:01:00 +0000
1305 From: quux
1305 From: quux
1306 To: foo
1306 To: foo
1307 Cc: bar
1307 Cc: bar
1308
1308
1309
1309
1310 Displaying [PATCH 1 of 2 fooFlag] a ...
1310 Displaying [PATCH 1 of 2 fooFlag] a ...
1311 Content-Type: text/plain; charset="us-ascii"
1311 Content-Type: text/plain; charset="us-ascii"
1312 MIME-Version: 1.0
1312 MIME-Version: 1.0
1313 Content-Transfer-Encoding: 7bit
1313 Content-Transfer-Encoding: 7bit
1314 Subject: [PATCH 1 of 2 fooFlag] a
1314 Subject: [PATCH 1 of 2 fooFlag] a
1315 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1315 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1316 Message-Id: <8580ff50825a50c8f716.61@
1316 Message-Id: <8580ff50825a50c8f716.61@
1317 In-Reply-To: <patchbomb.60@
1317 In-Reply-To: <patchbomb.60@
1318 References: <patchbomb.60@
1318 References: <patchbomb.60@
1319 User-Agent: Mercurial-patchbomb
1319 User-Agent: Mercurial-patchbomb
1320 Date: Thu, 01 Jan 1970 00:01:01 +0000
1320 Date: Thu, 01 Jan 1970 00:01:01 +0000
1321 From: quux
1321 From: quux
1322 To: foo
1322 To: foo
1323 Cc: bar
1323 Cc: bar
1324
1324
1325 # HG changeset patch
1325 # HG changeset patch
1326 # User test
1326 # User test
1327 # Date 1 0
1327 # Date 1 0
1328 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1328 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1329 # Parent 0000000000000000000000000000000000000000
1329 # Parent 0000000000000000000000000000000000000000
1330 a
1330 a
1331
1331
1332 diff -r 000000000000 -r 8580ff50825a a
1332 diff -r 000000000000 -r 8580ff50825a a
1333 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1333 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1334 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1334 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1335 @@ -0,0 +1,1 @@
1335 @@ -0,0 +1,1 @@
1336 +a
1336 +a
1337
1337
1338 Displaying [PATCH 2 of 2 fooFlag] b ...
1338 Displaying [PATCH 2 of 2 fooFlag] b ...
1339 Content-Type: text/plain; charset="us-ascii"
1339 Content-Type: text/plain; charset="us-ascii"
1340 MIME-Version: 1.0
1340 MIME-Version: 1.0
1341 Content-Transfer-Encoding: 7bit
1341 Content-Transfer-Encoding: 7bit
1342 Subject: [PATCH 2 of 2 fooFlag] b
1342 Subject: [PATCH 2 of 2 fooFlag] b
1343 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1343 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1344 Message-Id: <97d72e5f12c7e84f8506.62@
1344 Message-Id: <97d72e5f12c7e84f8506.62@
1345 In-Reply-To: <patchbomb.60@
1345 In-Reply-To: <patchbomb.60@
1346 References: <patchbomb.60@
1346 References: <patchbomb.60@
1347 User-Agent: Mercurial-patchbomb
1347 User-Agent: Mercurial-patchbomb
1348 Date: Thu, 01 Jan 1970 00:01:02 +0000
1348 Date: Thu, 01 Jan 1970 00:01:02 +0000
1349 From: quux
1349 From: quux
1350 To: foo
1350 To: foo
1351 Cc: bar
1351 Cc: bar
1352
1352
1353 # HG changeset patch
1353 # HG changeset patch
1354 # User test
1354 # User test
1355 # Date 2 0
1355 # Date 2 0
1356 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1356 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1357 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1357 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1358 b
1358 b
1359
1359
1360 diff -r 8580ff50825a -r 97d72e5f12c7 b
1360 diff -r 8580ff50825a -r 97d72e5f12c7 b
1361 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1361 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1362 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1362 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1363 @@ -0,0 +1,1 @@
1363 @@ -0,0 +1,1 @@
1364 +b
1364 +b
1365
1365
1366 % test mutiple flags for single patch
1366 % test mutiple flags for single patch
1367 This patch series consists of 1 patches.
1367 This patch series consists of 1 patches.
1368
1368
1369
1369
1370 Displaying [PATCH fooFlag barFlag] test ...
1370 Displaying [PATCH fooFlag barFlag] test ...
1371 Content-Type: text/plain; charset="us-ascii"
1371 Content-Type: text/plain; charset="us-ascii"
1372 MIME-Version: 1.0
1372 MIME-Version: 1.0
1373 Content-Transfer-Encoding: 7bit
1373 Content-Transfer-Encoding: 7bit
1374 Subject: [PATCH fooFlag barFlag] test
1374 Subject: [PATCH fooFlag barFlag] test
1375 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1375 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1376 Message-Id: <ff2c9fa2018b15fa74b3.60@
1376 Message-Id: <ff2c9fa2018b15fa74b3.60@
1377 User-Agent: Mercurial-patchbomb
1377 User-Agent: Mercurial-patchbomb
1378 Date: Thu, 01 Jan 1970 00:01:00 +0000
1378 Date: Thu, 01 Jan 1970 00:01:00 +0000
1379 From: quux
1379 From: quux
1380 To: foo
1380 To: foo
1381 Cc: bar
1381 Cc: bar
1382
1382
1383 # HG changeset patch
1383 # HG changeset patch
1384 # User test
1384 # User test
1385 # Date 3 0
1385 # Date 3 0
1386 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1386 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1387 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1387 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1388 c
1388 c
1389
1389
1390 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1390 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1392 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1392 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1393 @@ -0,0 +1,1 @@
1393 @@ -0,0 +1,1 @@
1394 +c
1394 +c
1395
1395
1396 % test multiple flags for multiple patches
1396 % test multiple flags for multiple patches
1397 This patch series consists of 2 patches.
1397 This patch series consists of 2 patches.
1398
1398
1399
1399
1400 Write the introductory message for the patch series.
1400 Write the introductory message for the patch series.
1401
1401
1402
1402
1403 Displaying [PATCH 0 of 2 fooFlag barFlag] test ...
1403 Displaying [PATCH 0 of 2 fooFlag barFlag] test ...
1404 Content-Type: text/plain; charset="us-ascii"
1404 Content-Type: text/plain; charset="us-ascii"
1405 MIME-Version: 1.0
1405 MIME-Version: 1.0
1406 Content-Transfer-Encoding: 7bit
1406 Content-Transfer-Encoding: 7bit
1407 Subject: [PATCH 0 of 2 fooFlag barFlag] test
1407 Subject: [PATCH 0 of 2 fooFlag barFlag] test
1408 Message-Id: <patchbomb.60@
1408 Message-Id: <patchbomb.60@
1409 User-Agent: Mercurial-patchbomb
1409 User-Agent: Mercurial-patchbomb
1410 Date: Thu, 01 Jan 1970 00:01:00 +0000
1410 Date: Thu, 01 Jan 1970 00:01:00 +0000
1411 From: quux
1411 From: quux
1412 To: foo
1412 To: foo
1413 Cc: bar
1413 Cc: bar
1414
1414
1415
1415
1416 Displaying [PATCH 1 of 2 fooFlag barFlag] a ...
1416 Displaying [PATCH 1 of 2 fooFlag barFlag] a ...
1417 Content-Type: text/plain; charset="us-ascii"
1417 Content-Type: text/plain; charset="us-ascii"
1418 MIME-Version: 1.0
1418 MIME-Version: 1.0
1419 Content-Transfer-Encoding: 7bit
1419 Content-Transfer-Encoding: 7bit
1420 Subject: [PATCH 1 of 2 fooFlag barFlag] a
1420 Subject: [PATCH 1 of 2 fooFlag barFlag] a
1421 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1421 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1422 Message-Id: <8580ff50825a50c8f716.61@
1422 Message-Id: <8580ff50825a50c8f716.61@
1423 In-Reply-To: <patchbomb.60@
1423 In-Reply-To: <patchbomb.60@
1424 References: <patchbomb.60@
1424 References: <patchbomb.60@
1425 User-Agent: Mercurial-patchbomb
1425 User-Agent: Mercurial-patchbomb
1426 Date: Thu, 01 Jan 1970 00:01:01 +0000
1426 Date: Thu, 01 Jan 1970 00:01:01 +0000
1427 From: quux
1427 From: quux
1428 To: foo
1428 To: foo
1429 Cc: bar
1429 Cc: bar
1430
1430
1431 # HG changeset patch
1431 # HG changeset patch
1432 # User test
1432 # User test
1433 # Date 1 0
1433 # Date 1 0
1434 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1434 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1435 # Parent 0000000000000000000000000000000000000000
1435 # Parent 0000000000000000000000000000000000000000
1436 a
1436 a
1437
1437
1438 diff -r 000000000000 -r 8580ff50825a a
1438 diff -r 000000000000 -r 8580ff50825a a
1439 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1439 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1440 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1440 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1441 @@ -0,0 +1,1 @@
1441 @@ -0,0 +1,1 @@
1442 +a
1442 +a
1443
1443
1444 Displaying [PATCH 2 of 2 fooFlag barFlag] b ...
1444 Displaying [PATCH 2 of 2 fooFlag barFlag] b ...
1445 Content-Type: text/plain; charset="us-ascii"
1445 Content-Type: text/plain; charset="us-ascii"
1446 MIME-Version: 1.0
1446 MIME-Version: 1.0
1447 Content-Transfer-Encoding: 7bit
1447 Content-Transfer-Encoding: 7bit
1448 Subject: [PATCH 2 of 2 fooFlag barFlag] b
1448 Subject: [PATCH 2 of 2 fooFlag barFlag] b
1449 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1449 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1450 Message-Id: <97d72e5f12c7e84f8506.62@
1450 Message-Id: <97d72e5f12c7e84f8506.62@
1451 In-Reply-To: <patchbomb.60@
1451 In-Reply-To: <patchbomb.60@
1452 References: <patchbomb.60@
1452 References: <patchbomb.60@
1453 User-Agent: Mercurial-patchbomb
1453 User-Agent: Mercurial-patchbomb
1454 Date: Thu, 01 Jan 1970 00:01:02 +0000
1454 Date: Thu, 01 Jan 1970 00:01:02 +0000
1455 From: quux
1455 From: quux
1456 To: foo
1456 To: foo
1457 Cc: bar
1457 Cc: bar
1458
1458
1459 # HG changeset patch
1459 # HG changeset patch
1460 # User test
1460 # User test
1461 # Date 2 0
1461 # Date 2 0
1462 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1462 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1463 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1463 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1464 b
1464 b
1465
1465
1466 diff -r 8580ff50825a -r 97d72e5f12c7 b
1466 diff -r 8580ff50825a -r 97d72e5f12c7 b
1467 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1467 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1468 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1468 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1469 @@ -0,0 +1,1 @@
1469 @@ -0,0 +1,1 @@
1470 +b
1470 +b
1471
1471
1472 % test multi-address parsing
1472 % test multi-address parsing
1473 This patch series consists of 1 patches.
1473 This patch series consists of 1 patches.
1474
1474
1475
1475
1476 Writing [PATCH] test ...
1476 Writing [PATCH] test ...
1477 From quux Tue Jan 01 00:01:01 1980
1477 From quux Tue Jan 01 00:01:01 1980
1478 Content-Type: text/plain; charset="us-ascii"
1478 Content-Type: text/plain; charset="us-ascii"
1479 MIME-Version: 1.0
1479 MIME-Version: 1.0
1480 Content-Transfer-Encoding: 7bit
1480 Content-Transfer-Encoding: 7bit
1481 Subject: [PATCH] test
1481 Subject: [PATCH] test
1482 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1482 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1483 Message-Id: <8580ff50825a50c8f716.315532860@
1483 Message-Id: <8580ff50825a50c8f716.315532860@
1484 User-Agent: Mercurial-patchbomb
1484 User-Agent: Mercurial-patchbomb
1485 Date: Tue, 01 Jan 1980 00:01:00 +0000
1485 Date: Tue, 01 Jan 1980 00:01:00 +0000
1486 From: quux
1486 From: quux
1487 To: spam <spam>, eggs, toast
1487 To: spam <spam>, eggs, toast
1488 Cc: foo, bar@example.com, "A, B <>" <a@example.com>
1488 Cc: foo, bar@example.com, "A, B <>" <a@example.com>
1489 Bcc: "Quux, A." <quux>
1489 Bcc: "Quux, A." <quux>
1490
1490
1491 # HG changeset patch
1491 # HG changeset patch
1492 # User test
1492 # User test
1493 # Date 1 0
1493 # Date 1 0
1494 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1494 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1495 # Parent 0000000000000000000000000000000000000000
1495 # Parent 0000000000000000000000000000000000000000
1496 a
1496 a
1497
1497
1498 diff -r 000000000000 -r 8580ff50825a a
1498 diff -r 000000000000 -r 8580ff50825a a
1499 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1499 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1500 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1500 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1501 @@ -0,0 +1,1 @@
1501 @@ -0,0 +1,1 @@
1502 +a
1502 +a
1503
1503
1504
1504
1505 % test multi-byte domain parsing
1505 % test multi-byte domain parsing
1506 This patch series consists of 1 patches.
1506 This patch series consists of 1 patches.
1507
1507
1508
1508
1509 Writing [PATCH] test ...
1509 Writing [PATCH] test ...
1510 From quux Tue Jan 01 00:01:01 1980
1510 From quux Tue Jan 01 00:01:01 1980
1511 Content-Type: text/plain; charset="us-ascii"
1511 Content-Type: text/plain; charset="us-ascii"
1512 MIME-Version: 1.0
1512 MIME-Version: 1.0
1513 Content-Transfer-Encoding: 7bit
1513 Content-Transfer-Encoding: 7bit
1514 Subject: [PATCH] test
1514 Subject: [PATCH] test
1515 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1515 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1516 Message-Id: <8580ff50825a50c8f716.315532860@
1516 Message-Id: <8580ff50825a50c8f716.315532860@
1517 User-Agent: Mercurial-patchbomb
1517 User-Agent: Mercurial-patchbomb
1518 Date: Tue, 01 Jan 1980 00:01:00 +0000
1518 Date: Tue, 01 Jan 1980 00:01:00 +0000
1519 From: quux
1519 From: quux
1520 To: bar@xn--nicode-2ya.com
1520 To: bar@xn--nicode-2ya.com
1521
1521
1522 # HG changeset patch
1522 # HG changeset patch
1523 # User test
1523 # User test
1524 # Date 1 0
1524 # Date 1 0
1525 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1525 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1526 # Parent 0000000000000000000000000000000000000000
1526 # Parent 0000000000000000000000000000000000000000
1527 a
1527 a
1528
1528
1529 diff -r 000000000000 -r 8580ff50825a a
1529 diff -r 000000000000 -r 8580ff50825a a
1530 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1530 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1531 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1531 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1532 @@ -0,0 +1,1 @@
1532 @@ -0,0 +1,1 @@
1533 +a
1533 +a
1534
1534
1535
1535
1536 % test outgoing and dest#branch URIs
1536 % test outgoing
1537 0 files updated, 0 files merged, 6 files removed, 0 files unresolved
1537 0 files updated, 0 files merged, 6 files removed, 0 files unresolved
1538 marked working directory as branch test
1538 marked working directory as branch test
1539 created new head
1539 created new head
1540 comparing with ../t
1540 comparing with ../t
1541 searching for changes
1541 searching for changes
1542 This patch series consists of 8 patches.
1543
1544
1545 Write the introductory message for the patch series.
1546
1547
1548 Displaying [PATCH 0 of 8] test ...
1549 Content-Type: text/plain; charset="us-ascii"
1550 MIME-Version: 1.0
1551 Content-Transfer-Encoding: 7bit
1552 Subject: [PATCH 0 of 8] test
1553 Message-Id: <patchbomb.315532860@
1554 User-Agent: Mercurial-patchbomb
1555 Date: Tue, 01 Jan 1980 00:01:00 +0000
1556 From: test
1557 To: foo
1558
1559
1560 Displaying [PATCH 1 of 8] c ...
1561 Content-Type: text/plain; charset="us-ascii"
1562 MIME-Version: 1.0
1563 Content-Transfer-Encoding: 7bit
1564 Subject: [PATCH 1 of 8] c
1565 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1566 Message-Id: <ff2c9fa2018b15fa74b3.315532861@
1567 In-Reply-To: <patchbomb.315532860@
1568 References: <patchbomb.315532860@
1569 User-Agent: Mercurial-patchbomb
1570 Date: Tue, 01 Jan 1980 00:01:01 +0000
1571 From: test
1572 To: foo
1573
1574 # HG changeset patch
1575 # User test
1576 # Date 3 0
1577 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1578 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1579 c
1580
1581 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1582 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1583 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1584 @@ -0,0 +1,1 @@
1585 +c
1586
1587 Displaying [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64 ...
1588 Content-Type: text/plain; charset="us-ascii"
1589 MIME-Version: 1.0
1590 Content-Transfer-Encoding: 8bit
1591 Subject: [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64
1592 X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
1593 Message-Id: <c3c9e37db9f4fe4882cd.315532862@
1594 In-Reply-To: <patchbomb.315532860@
1595 References: <patchbomb.315532860@
1596 User-Agent: Mercurial-patchbomb
1597 Date: Tue, 01 Jan 1980 00:01:02 +0000
1598 From: test
1599 To: foo
1600
1601 # HG changeset patch
1602 # User test
1603 # Date 4 0
1604 # Node ID c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
1605 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
1606 charset=utf-8; content-transfer-encoding: base64
1607
1608 diff -r ff2c9fa2018b -r c3c9e37db9f4 description
1609 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1610 +++ b/description Thu Jan 01 00:00:04 1970 +0000
1611 @@ -0,0 +1,3 @@
1612 +a multiline
1613 +
1614 +description
1615 diff -r ff2c9fa2018b -r c3c9e37db9f4 utf
1616 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1617 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
1618 @@ -0,0 +1,1 @@
1619 +hΓΆmma!
1620
1621 Displaying [PATCH 3 of 8] charset=utf-8; content-transfer-encoding: quoted-printable ...
1622 Content-Type: text/plain; charset="us-ascii"
1623 MIME-Version: 1.0
1624 Content-Transfer-Encoding: quoted-printable
1625 Subject: [PATCH 3 of 8] charset=utf-8;
1626 content-transfer-encoding: quoted-printable
1627 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
1628 Message-Id: <c655633f8c87700bb38c.315532863@
1629 In-Reply-To: <patchbomb.315532860@
1630 References: <patchbomb.315532860@
1631 User-Agent: Mercurial-patchbomb
1632 Date: Tue, 01 Jan 1980 00:01:03 +0000
1633 From: test
1634 To: foo
1635
1636 # HG changeset patch
1637 # User test
1638 # Date 4 0
1639 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
1640 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
1641 charset=3Dutf-8; content-transfer-encoding: quoted-printable
1642
1643 diff -r c3c9e37db9f4 -r c655633f8c87 qp
1644 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1645 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
1646 @@ -0,0 +1,4 @@
1647 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1648 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1649 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1650 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1651 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1652 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1653 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1654 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1655 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1656 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1657 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1658 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1659 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1660 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1661 +foo
1662 +
1663 +bar
1664
1665 Displaying [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit ...
1666 Content-Type: text/plain; charset="us-ascii"
1667 MIME-Version: 1.0
1668 Content-Transfer-Encoding: 8bit
1669 Subject: [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit
1670 X-Mercurial-Node: 22d0f96be12f5945fd67d101af58f7bc8263c835
1671 Message-Id: <22d0f96be12f5945fd67.315532864@
1672 In-Reply-To: <patchbomb.315532860@
1673 References: <patchbomb.315532860@
1674 User-Agent: Mercurial-patchbomb
1675 Date: Tue, 01 Jan 1980 00:01:04 +0000
1676 From: test
1677 To: foo
1678
1679 # HG changeset patch
1680 # User test
1681 # Date 5 0
1682 # Node ID 22d0f96be12f5945fd67d101af58f7bc8263c835
1683 # Parent c655633f8c87700bb38cc6a59a2753bdc5a6c376
1684 charset=us-ascii; content-transfer-encoding: 8bit
1685
1686 diff -r c655633f8c87 -r 22d0f96be12f isolatin
1687 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1688 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
1689 @@ -0,0 +1,1 @@
1690 +hοΏ½mma!
1691
1692 Displaying [PATCH 5 of 8] Added tag zero, zero.foo for changeset 8580ff50825a ...
1693 Content-Type: text/plain; charset="us-ascii"
1694 MIME-Version: 1.0
1695 Content-Transfer-Encoding: 7bit
1696 Subject: [PATCH 5 of 8] Added tag zero, zero.foo for changeset 8580ff50825a
1697 X-Mercurial-Node: dd9c2b4b8a8a0934d5523c15f2c119b362360903
1698 Message-Id: <dd9c2b4b8a8a0934d552.315532865@
1699 In-Reply-To: <patchbomb.315532860@
1700 References: <patchbomb.315532860@
1701 User-Agent: Mercurial-patchbomb
1702 Date: Tue, 01 Jan 1980 00:01:05 +0000
1703 From: test
1704 To: foo
1705
1706 # HG changeset patch
1707 # User test
1708 # Date 0 0
1709 # Node ID dd9c2b4b8a8a0934d5523c15f2c119b362360903
1710 # Parent 22d0f96be12f5945fd67d101af58f7bc8263c835
1711 Added tag zero, zero.foo for changeset 8580ff50825a
1712
1713 diff -r 22d0f96be12f -r dd9c2b4b8a8a .hgtags
1714 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1715 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1716 @@ -0,0 +1,2 @@
1717 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero
1718 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1719
1720 Displaying [PATCH 6 of 8] Added tag one, one.patch for changeset 97d72e5f12c7 ...
1721 Content-Type: text/plain; charset="us-ascii"
1722 MIME-Version: 1.0
1723 Content-Transfer-Encoding: 7bit
1724 Subject: [PATCH 6 of 8] Added tag one, one.patch for changeset 97d72e5f12c7
1725 X-Mercurial-Node: eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
1726 Message-Id: <eae5fcf795eee29d0e45.315532866@
1727 In-Reply-To: <patchbomb.315532860@
1728 References: <patchbomb.315532860@
1729 User-Agent: Mercurial-patchbomb
1730 Date: Tue, 01 Jan 1980 00:01:06 +0000
1731 From: test
1732 To: foo
1733
1734 # HG changeset patch
1735 # User test
1736 # Date 0 0
1737 # Node ID eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
1738 # Parent dd9c2b4b8a8a0934d5523c15f2c119b362360903
1739 Added tag one, one.patch for changeset 97d72e5f12c7
1740
1741 diff -r dd9c2b4b8a8a -r eae5fcf795ee .hgtags
1742 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1743 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1744 @@ -1,2 +1,4 @@
1745 8580ff50825a50c8f716709acdf8de0deddcd6ab zero
1746 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1747 +97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1748 +97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1749
1750 Displaying [PATCH 7 of 8] Added tag two, two.diff for changeset ff2c9fa2018b ...
1751 Content-Type: text/plain; charset="us-ascii"
1752 MIME-Version: 1.0
1753 Content-Transfer-Encoding: 7bit
1754 Subject: [PATCH 7 of 8] Added tag two, two.diff for changeset ff2c9fa2018b
1755 X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
1756 Message-Id: <e317db6a6f288748d1f6.315532867@
1757 In-Reply-To: <patchbomb.315532860@
1758 References: <patchbomb.315532860@
1759 User-Agent: Mercurial-patchbomb
1760 Date: Tue, 01 Jan 1980 00:01:07 +0000
1761 From: test
1762 To: foo
1763
1764 # HG changeset patch
1765 # User test
1766 # Date 0 0
1767 # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
1768 # Parent eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
1769 Added tag two, two.diff for changeset ff2c9fa2018b
1770
1771 diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
1772 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1773 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1774 @@ -2,3 +2,5 @@
1775 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1776 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1777 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1778 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1779 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1780
1781 Displaying [PATCH 8 of 8] d ...
1782 Content-Type: text/plain; charset="us-ascii"
1783 MIME-Version: 1.0
1784 Content-Transfer-Encoding: 7bit
1785 Subject: [PATCH 8 of 8] d
1786 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
1787 Message-Id: <2f9fa9b998c5fe3ac2bd.315532868@
1788 In-Reply-To: <patchbomb.315532860@
1789 References: <patchbomb.315532860@
1790 User-Agent: Mercurial-patchbomb
1791 Date: Tue, 01 Jan 1980 00:01:08 +0000
1792 From: test
1793 To: foo
1794
1795 # HG changeset patch
1796 # User test
1797 # Date 4 0
1798 # Branch test
1799 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
1800 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1801 d
1802
1803 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
1804 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1805 +++ b/d Thu Jan 01 00:00:04 1970 +0000
1806 @@ -0,0 +1,1 @@
1807 +d
1808
1809 % dest#branch URIs
1810 comparing with ../t
1811 searching for changes
1542 This patch series consists of 1 patches.
1812 This patch series consists of 1 patches.
1543
1813
1544
1814
1545 Displaying [PATCH] test ...
1815 Displaying [PATCH] test ...
1546 Content-Type: text/plain; charset="us-ascii"
1816 Content-Type: text/plain; charset="us-ascii"
1547 MIME-Version: 1.0
1817 MIME-Version: 1.0
1548 Content-Transfer-Encoding: 7bit
1818 Content-Transfer-Encoding: 7bit
1549 Subject: [PATCH] test
1819 Subject: [PATCH] test
1550 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
1820 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
1551 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@
1821 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@
1552 User-Agent: Mercurial-patchbomb
1822 User-Agent: Mercurial-patchbomb
1553 Date: Tue, 01 Jan 1980 00:01:00 +0000
1823 Date: Tue, 01 Jan 1980 00:01:00 +0000
1554 From: test
1824 From: test
1555 To: foo
1825 To: foo
1556
1826
1557 # HG changeset patch
1827 # HG changeset patch
1558 # User test
1828 # User test
1559 # Date 4 0
1829 # Date 4 0
1560 # Branch test
1830 # Branch test
1561 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
1831 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
1562 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1832 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1563 d
1833 d
1564
1834
1565 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
1835 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
1566 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1836 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1567 +++ b/d Thu Jan 01 00:00:04 1970 +0000
1837 +++ b/d Thu Jan 01 00:00:04 1970 +0000
1568 @@ -0,0 +1,1 @@
1838 @@ -0,0 +1,1 @@
1569 +d
1839 +d
1570
1840
General Comments 0
You need to be logged in to leave comments. Login now