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