##// END OF EJS Templates
patchbomb: includes a unique series ID in email header...
Pierre-Yves David -
r21724:36b31f78 default
parent child Browse files
Show More
@@ -1,571 +1,572 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 or any later version.
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 To configure other defaults, add a section like this to your
26 26 configuration file::
27 27
28 28 [email]
29 29 from = My Name <my@email>
30 30 to = recipient1, recipient2, ...
31 31 cc = cc1, cc2, ...
32 32 bcc = bcc1, bcc2, ...
33 33 reply-to = address1, address2, ...
34 34
35 35 Use ``[patchbomb]`` as configuration section name if you need to
36 36 override global ``[email]`` address settings.
37 37
38 38 Then you can use the :hg:`email` command to mail a series of
39 39 changesets as a patchbomb.
40 40
41 41 You can also either configure the method option in the email section
42 42 to be a sendmail compatible mailer or fill out the [smtp] section so
43 43 that the patchbomb extension can automatically send patchbombs
44 44 directly from the commandline. See the [email] and [smtp] sections in
45 45 hgrc(5) for details.
46 46 '''
47 47
48 48 import os, errno, socket, tempfile, cStringIO
49 49 import email
50 50 # On python2.4 you have to import these by name or they fail to
51 51 # load. This was not a problem on Python 2.7.
52 52 import email.Generator
53 53 import email.MIMEMultipart
54 54
55 55 from mercurial import cmdutil, commands, hg, mail, patch, util
56 56 from mercurial import scmutil
57 57 from mercurial.i18n import _
58 58 from mercurial.node import bin
59 59
60 60 cmdtable = {}
61 61 command = cmdutil.command(cmdtable)
62 62 testedwith = 'internal'
63 63
64 64 def prompt(ui, prompt, default=None, rest=':'):
65 65 if default:
66 66 prompt += ' [%s]' % default
67 67 return ui.prompt(prompt + rest, default)
68 68
69 69 def introwanted(opts, number):
70 70 '''is an introductory message apparently wanted?'''
71 71 return number > 1 or opts.get('intro') or opts.get('desc')
72 72
73 73 def makepatch(ui, repo, patchlines, opts, _charsets, idx, total, numbered,
74 74 patchname=None):
75 75
76 76 desc = []
77 77 node = None
78 78 body = ''
79 79
80 80 for line in patchlines:
81 81 if line.startswith('#'):
82 82 if line.startswith('# Node ID'):
83 83 node = line.split()[-1]
84 84 continue
85 85 if line.startswith('diff -r') or line.startswith('diff --git'):
86 86 break
87 87 desc.append(line)
88 88
89 89 if not patchname and not node:
90 90 raise ValueError
91 91
92 92 if opts.get('attach') and not opts.get('body'):
93 93 body = ('\n'.join(desc[1:]).strip() or
94 94 'Patch subject is complete summary.')
95 95 body += '\n\n\n'
96 96
97 97 if opts.get('plain'):
98 98 while patchlines and patchlines[0].startswith('# '):
99 99 patchlines.pop(0)
100 100 if patchlines:
101 101 patchlines.pop(0)
102 102 while patchlines and not patchlines[0].strip():
103 103 patchlines.pop(0)
104 104
105 105 ds = patch.diffstat(patchlines, git=opts.get('git'))
106 106 if opts.get('diffstat'):
107 107 body += ds + '\n\n'
108 108
109 109 addattachment = opts.get('attach') or opts.get('inline')
110 110 if not addattachment or opts.get('body'):
111 111 body += '\n'.join(patchlines)
112 112
113 113 if addattachment:
114 114 msg = email.MIMEMultipart.MIMEMultipart()
115 115 if body:
116 116 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
117 117 p = mail.mimetextpatch('\n'.join(patchlines), 'x-patch',
118 118 opts.get('test'))
119 119 binnode = bin(node)
120 120 # if node is mq patch, it will have the patch file's name as a tag
121 121 if not patchname:
122 122 patchtags = [t for t in repo.nodetags(binnode)
123 123 if t.endswith('.patch') or t.endswith('.diff')]
124 124 if patchtags:
125 125 patchname = patchtags[0]
126 126 elif total > 1:
127 127 patchname = cmdutil.makefilename(repo, '%b-%n.patch',
128 128 binnode, seqno=idx,
129 129 total=total)
130 130 else:
131 131 patchname = cmdutil.makefilename(repo, '%b.patch', binnode)
132 132 disposition = 'inline'
133 133 if opts.get('attach'):
134 134 disposition = 'attachment'
135 135 p['Content-Disposition'] = disposition + '; filename=' + patchname
136 136 msg.attach(p)
137 137 else:
138 138 msg = mail.mimetextpatch(body, display=opts.get('test'))
139 139
140 140 flag = ' '.join(opts.get('flag'))
141 141 if flag:
142 142 flag = ' ' + flag
143 143
144 144 subj = desc[0].strip().rstrip('. ')
145 145 if not numbered:
146 146 subj = '[PATCH%s] %s' % (flag, opts.get('subject') or subj)
147 147 else:
148 148 tlen = len(str(total))
149 149 subj = '[PATCH %0*d of %d%s] %s' % (tlen, idx, total, flag, subj)
150 150 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
151 151 msg['X-Mercurial-Node'] = node
152 152 msg['X-Mercurial-Series-Index'] = '%i' % idx
153 153 msg['X-Mercurial-Series-Total'] = '%i' % total
154 154 return msg, subj, ds
155 155
156 156 emailopts = [
157 157 ('', 'body', None, _('send patches as inline message text (default)')),
158 158 ('a', 'attach', None, _('send patches as attachments')),
159 159 ('i', 'inline', None, _('send patches as inline attachments')),
160 160 ('', 'bcc', [], _('email addresses of blind carbon copy recipients')),
161 161 ('c', 'cc', [], _('email addresses of copy recipients')),
162 162 ('', 'confirm', None, _('ask for confirmation before sending')),
163 163 ('d', 'diffstat', None, _('add diffstat output to messages')),
164 164 ('', 'date', '', _('use the given date as the sending date')),
165 165 ('', 'desc', '', _('use the given file as the series description')),
166 166 ('f', 'from', '', _('email address of sender')),
167 167 ('n', 'test', None, _('print messages that would be sent')),
168 168 ('m', 'mbox', '', _('write messages to mbox file instead of sending them')),
169 169 ('', 'reply-to', [], _('email addresses replies should be sent to')),
170 170 ('s', 'subject', '', _('subject of first message (intro or single patch)')),
171 171 ('', 'in-reply-to', '', _('message identifier to reply to')),
172 172 ('', 'flag', [], _('flags to add in subject prefixes')),
173 173 ('t', 'to', [], _('email addresses of recipients'))]
174 174
175 175 @command('email',
176 176 [('g', 'git', None, _('use git extended diff format')),
177 177 ('', 'plain', None, _('omit hg patch header')),
178 178 ('o', 'outgoing', None,
179 179 _('send changes not found in the target repository')),
180 180 ('b', 'bundle', None, _('send changes not in target as a binary bundle')),
181 181 ('', 'bundlename', 'bundle',
182 182 _('name of the bundle attachment file'), _('NAME')),
183 183 ('r', 'rev', [], _('a revision to send'), _('REV')),
184 184 ('', 'force', None, _('run even when remote repository is unrelated '
185 185 '(with -b/--bundle)')),
186 186 ('', 'base', [], _('a base changeset to specify instead of a destination '
187 187 '(with -b/--bundle)'), _('REV')),
188 188 ('', 'intro', None, _('send an introduction email for a single patch')),
189 189 ] + emailopts + commands.remoteopts,
190 190 _('hg email [OPTION]... [DEST]...'))
191 191 def patchbomb(ui, repo, *revs, **opts):
192 192 '''send changesets by email
193 193
194 194 By default, diffs are sent in the format generated by
195 195 :hg:`export`, one per message. The series starts with a "[PATCH 0
196 196 of N]" introduction, which describes the series as a whole.
197 197
198 198 Each patch email has a Subject line of "[PATCH M of N] ...", using
199 199 the first line of the changeset description as the subject text.
200 200 The message contains two or three parts. First, the changeset
201 201 description.
202 202
203 203 With the -d/--diffstat option, if the diffstat program is
204 204 installed, the result of running diffstat on the patch is inserted.
205 205
206 206 Finally, the patch itself, as generated by :hg:`export`.
207 207
208 208 With the -d/--diffstat or --confirm options, you will be presented
209 209 with a final summary of all messages and asked for confirmation before
210 210 the messages are sent.
211 211
212 212 By default the patch is included as text in the email body for
213 213 easy reviewing. Using the -a/--attach option will instead create
214 214 an attachment for the patch. With -i/--inline an inline attachment
215 215 will be created. You can include a patch both as text in the email
216 216 body and as a regular or an inline attachment by combining the
217 217 -a/--attach or -i/--inline with the --body option.
218 218
219 219 With -o/--outgoing, emails will be generated for patches not found
220 220 in the destination repository (or only those which are ancestors
221 221 of the specified revisions if any are provided)
222 222
223 223 With -b/--bundle, changesets are selected as for --outgoing, but a
224 224 single email containing a binary Mercurial bundle as an attachment
225 225 will be sent.
226 226
227 227 With -m/--mbox, instead of previewing each patchbomb message in a
228 228 pager or sending the messages directly, it will create a UNIX
229 229 mailbox file with the patch emails. This mailbox file can be
230 230 previewed with any mail user agent which supports UNIX mbox
231 231 files.
232 232
233 233 With -n/--test, all steps will run, but mail will not be sent.
234 234 You will be prompted for an email recipient address, a subject and
235 235 an introductory message describing the patches of your patchbomb.
236 236 Then when all is done, patchbomb messages are displayed. If the
237 237 PAGER environment variable is set, your pager will be fired up once
238 238 for each patchbomb message, so you can verify everything is alright.
239 239
240 240 In case email sending fails, you will find a backup of your series
241 241 introductory message in ``.hg/last-email.txt``.
242 242
243 243 Examples::
244 244
245 245 hg email -r 3000 # send patch 3000 only
246 246 hg email -r 3000 -r 3001 # send patches 3000 and 3001
247 247 hg email -r 3000:3005 # send patches 3000 through 3005
248 248 hg email 3000 # send patch 3000 (deprecated)
249 249
250 250 hg email -o # send all patches not in default
251 251 hg email -o DEST # send all patches not in DEST
252 252 hg email -o -r 3000 # send all ancestors of 3000 not in default
253 253 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
254 254
255 255 hg email -b # send bundle of all patches not in default
256 256 hg email -b DEST # send bundle of all patches not in DEST
257 257 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
258 258 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST
259 259
260 260 hg email -o -m mbox && # generate an mbox file...
261 261 mutt -R -f mbox # ... and view it with mutt
262 262 hg email -o -m mbox && # generate an mbox file ...
263 263 formail -s sendmail \\ # ... and use formail to send from the mbox
264 264 -bm -t < mbox # ... using sendmail
265 265
266 266 Before using this command, you will need to enable email in your
267 267 hgrc. See the [email] section in hgrc(5) for details.
268 268 '''
269 269
270 270 _charsets = mail._charsets(ui)
271 271
272 272 bundle = opts.get('bundle')
273 273 date = opts.get('date')
274 274 mbox = opts.get('mbox')
275 275 outgoing = opts.get('outgoing')
276 276 rev = opts.get('rev')
277 277 # internal option used by pbranches
278 278 patches = opts.get('patches')
279 279
280 280 def getoutgoing(dest, revs):
281 281 '''Return the revisions present locally but not in dest'''
282 282 url = ui.expandpath(dest or 'default-push', dest or 'default')
283 283 url = hg.parseurl(url)[0]
284 284 ui.status(_('comparing with %s\n') % util.hidepassword(url))
285 285
286 286 revs = [r for r in scmutil.revrange(repo, revs) if r >= 0]
287 287 if not revs:
288 288 revs = [len(repo) - 1]
289 289 revs = repo.revs('outgoing(%s) and ::%ld', dest or '', revs)
290 290 if not revs:
291 291 ui.status(_("no changes found\n"))
292 292 return []
293 293 return [str(r) for r in revs]
294 294
295 295 def getpatches(revs):
296 296 prev = repo['.'].rev()
297 297 for r in scmutil.revrange(repo, revs):
298 298 if r == prev and (repo[None].files() or repo[None].deleted()):
299 299 ui.warn(_('warning: working directory has '
300 300 'uncommitted changes\n'))
301 301 output = cStringIO.StringIO()
302 302 cmdutil.export(repo, [r], fp=output,
303 303 opts=patch.diffopts(ui, opts))
304 304 yield output.getvalue().split('\n')
305 305
306 306 def getbundle(dest):
307 307 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-')
308 308 tmpfn = os.path.join(tmpdir, 'bundle')
309 309 try:
310 310 commands.bundle(ui, repo, tmpfn, dest, **opts)
311 311 fp = open(tmpfn, 'rb')
312 312 data = fp.read()
313 313 fp.close()
314 314 return data
315 315 finally:
316 316 try:
317 317 os.unlink(tmpfn)
318 318 except OSError:
319 319 pass
320 320 os.rmdir(tmpdir)
321 321
322 322 if not (opts.get('test') or mbox):
323 323 # really sending
324 324 mail.validateconfig(ui)
325 325
326 326 if not (revs or rev or outgoing or bundle or patches):
327 327 raise util.Abort(_('specify at least one changeset with -r or -o'))
328 328
329 329 if outgoing and bundle:
330 330 raise util.Abort(_("--outgoing mode always on with --bundle;"
331 331 " do not re-specify --outgoing"))
332 332
333 333 if outgoing or bundle:
334 334 if len(revs) > 1:
335 335 raise util.Abort(_("too many destinations"))
336 336 dest = revs and revs[0] or None
337 337 revs = []
338 338
339 339 if rev:
340 340 if revs:
341 341 raise util.Abort(_('use only one form to specify the revision'))
342 342 revs = rev
343 343
344 344 if outgoing:
345 345 revs = getoutgoing(dest, rev)
346 346 if bundle:
347 347 opts['revs'] = revs
348 348
349 349 # start
350 350 if date:
351 351 start_time = util.parsedate(date)
352 352 else:
353 353 start_time = util.makedate()
354 354
355 355 def genmsgid(id):
356 356 return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn())
357 357
358 358 def getdescription(body, sender):
359 359 if opts.get('desc'):
360 360 body = open(opts.get('desc')).read()
361 361 else:
362 362 ui.write(_('\nWrite the introductory message for the '
363 363 'patch series.\n\n'))
364 364 body = ui.edit(body, sender)
365 365 # Save series description in case sendmail fails
366 366 msgfile = repo.opener('last-email.txt', 'wb')
367 367 msgfile.write(body)
368 368 msgfile.close()
369 369 return body
370 370
371 371 def getpatchmsgs(patches, patchnames=None):
372 372 msgs = []
373 373
374 374 ui.write(_('this patch series consists of %d patches.\n\n')
375 375 % len(patches))
376 376
377 377 # build the intro message, or skip it if the user declines
378 378 if introwanted(opts, len(patches)):
379 379 msg = makeintro(patches)
380 380 if msg:
381 381 msgs.append(msg)
382 382
383 383 # are we going to send more than one message?
384 384 numbered = len(msgs) + len(patches) > 1
385 385
386 386 # now generate the actual patch messages
387 387 name = None
388 388 for i, p in enumerate(patches):
389 389 if patchnames:
390 390 name = patchnames[i]
391 391 msg = makepatch(ui, repo, p, opts, _charsets, i + 1,
392 392 len(patches), numbered, name)
393 393 msgs.append(msg)
394 394
395 395 return msgs
396 396
397 397 def makeintro(patches):
398 398 tlen = len(str(len(patches)))
399 399
400 400 flag = opts.get('flag') or ''
401 401 if flag:
402 402 flag = ' ' + ' '.join(flag)
403 403 prefix = '[PATCH %0*d of %d%s]' % (tlen, 0, len(patches), flag)
404 404
405 405 subj = (opts.get('subject') or
406 406 prompt(ui, '(optional) Subject: ', rest=prefix, default=''))
407 407 if not subj:
408 408 return None # skip intro if the user doesn't bother
409 409
410 410 subj = prefix + ' ' + subj
411 411
412 412 body = ''
413 413 if opts.get('diffstat'):
414 414 # generate a cumulative diffstat of the whole patch series
415 415 diffstat = patch.diffstat(sum(patches, []))
416 416 body = '\n' + diffstat
417 417 else:
418 418 diffstat = None
419 419
420 420 body = getdescription(body, sender)
421 421 msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
422 422 msg['Subject'] = mail.headencode(ui, subj, _charsets,
423 423 opts.get('test'))
424 424 return (msg, subj, diffstat)
425 425
426 426 def getbundlemsgs(bundle):
427 427 subj = (opts.get('subject')
428 428 or prompt(ui, 'Subject:', 'A bundle for your repository'))
429 429
430 430 body = getdescription('', sender)
431 431 msg = email.MIMEMultipart.MIMEMultipart()
432 432 if body:
433 433 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
434 434 datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
435 435 datapart.set_payload(bundle)
436 436 bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
437 437 datapart.add_header('Content-Disposition', 'attachment',
438 438 filename=bundlename)
439 439 email.Encoders.encode_base64(datapart)
440 440 msg.attach(datapart)
441 441 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
442 442 return [(msg, subj, None)]
443 443
444 444 sender = (opts.get('from') or ui.config('email', 'from') or
445 445 ui.config('patchbomb', 'from') or
446 446 prompt(ui, 'From', ui.username()))
447 447
448 448 if patches:
449 449 msgs = getpatchmsgs(patches, opts.get('patchnames'))
450 450 elif bundle:
451 451 msgs = getbundlemsgs(getbundle(dest))
452 452 else:
453 453 msgs = getpatchmsgs(list(getpatches(revs)))
454 454
455 455 showaddrs = []
456 456
457 457 def getaddrs(header, ask=False, default=None):
458 458 configkey = header.lower()
459 459 opt = header.replace('-', '_').lower()
460 460 addrs = opts.get(opt)
461 461 if addrs:
462 462 showaddrs.append('%s: %s' % (header, ', '.join(addrs)))
463 463 return mail.addrlistencode(ui, addrs, _charsets, opts.get('test'))
464 464
465 465 # not on the command line: fallback to config and then maybe ask
466 466 addr = (ui.config('email', configkey) or
467 467 ui.config('patchbomb', configkey) or
468 468 '')
469 469 if not addr and ask:
470 470 addr = prompt(ui, header, default=default)
471 471 if addr:
472 472 showaddrs.append('%s: %s' % (header, addr))
473 473 return mail.addrlistencode(ui, [addr], _charsets, opts.get('test'))
474 474 else:
475 475 return default
476 476
477 477 to = getaddrs('To', ask=True)
478 478 if not to:
479 479 # we can get here in non-interactive mode
480 480 raise util.Abort(_('no recipient addresses provided'))
481 481 cc = getaddrs('Cc', ask=True, default='') or []
482 482 bcc = getaddrs('Bcc') or []
483 483 replyto = getaddrs('Reply-To')
484 484
485 485 if opts.get('diffstat') or opts.get('confirm'):
486 486 ui.write(_('\nFinal summary:\n\n'))
487 487 ui.write(('From: %s\n' % sender))
488 488 for addr in showaddrs:
489 489 ui.write('%s\n' % addr)
490 490 for m, subj, ds in msgs:
491 491 ui.write(('Subject: %s\n' % subj))
492 492 if ds:
493 493 ui.write(ds)
494 494 ui.write('\n')
495 495 if ui.promptchoice(_('are you sure you want to send (yn)?'
496 496 '$$ &Yes $$ &No')):
497 497 raise util.Abort(_('patchbomb canceled'))
498 498
499 499 ui.write('\n')
500 500
501 501 parent = opts.get('in_reply_to') or None
502 502 # angle brackets may be omitted, they're not semantically part of the msg-id
503 503 if parent is not None:
504 504 if not parent.startswith('<'):
505 505 parent = '<' + parent
506 506 if not parent.endswith('>'):
507 507 parent += '>'
508 508
509 509 sender_addr = email.Utils.parseaddr(sender)[1]
510 510 sender = mail.addressencode(ui, sender, _charsets, opts.get('test'))
511 511 sendmail = None
512 512 for i, (m, subj, ds) in enumerate(msgs):
513 513 try:
514 514 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
515 515 except TypeError:
516 516 m['Message-Id'] = genmsgid('patchbomb')
517 517 if parent:
518 518 m['In-Reply-To'] = parent
519 519 m['References'] = parent
520 520 if not parent or 'X-Mercurial-Node' not in m:
521 521 parent = m['Message-Id']
522 m['X-Mercurial-Series-Id'] = parent
522 523
523 524 m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
524 525 m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
525 526
526 527 start_time = (start_time[0] + 1, start_time[1])
527 528 m['From'] = sender
528 529 m['To'] = ', '.join(to)
529 530 if cc:
530 531 m['Cc'] = ', '.join(cc)
531 532 if bcc:
532 533 m['Bcc'] = ', '.join(bcc)
533 534 if replyto:
534 535 m['Reply-To'] = ', '.join(replyto)
535 536 if opts.get('test'):
536 537 ui.status(_('displaying '), subj, ' ...\n')
537 538 ui.flush()
538 539 if 'PAGER' in os.environ and not ui.plain():
539 540 fp = util.popen(os.environ['PAGER'], 'w')
540 541 else:
541 542 fp = ui
542 543 generator = email.Generator.Generator(fp, mangle_from_=False)
543 544 try:
544 545 generator.flatten(m, 0)
545 546 fp.write('\n')
546 547 except IOError, inst:
547 548 if inst.errno != errno.EPIPE:
548 549 raise
549 550 if fp is not ui:
550 551 fp.close()
551 552 else:
552 553 if not sendmail:
553 554 verifycert = ui.config('smtp', 'verifycert')
554 555 if opts.get('insecure'):
555 556 ui.setconfig('smtp', 'verifycert', 'loose', 'patchbomb')
556 557 try:
557 558 sendmail = mail.connect(ui, mbox=mbox)
558 559 finally:
559 560 ui.setconfig('smtp', 'verifycert', verifycert, 'patchbomb')
560 561 ui.status(_('sending '), subj, ' ...\n')
561 562 ui.progress(_('sending'), i, item=subj, total=len(msgs))
562 563 if not mbox:
563 564 # Exim does not remove the Bcc field
564 565 del m['Bcc']
565 566 fp = cStringIO.StringIO()
566 567 generator = email.Generator.Generator(fp, mangle_from_=False)
567 568 generator.flatten(m, 0)
568 569 sendmail(sender_addr, to + bcc + cc, fp.getvalue())
569 570
570 571 ui.progress(_('writing'), None)
571 572 ui.progress(_('sending'), None)
@@ -1,2513 +1,2577 b''
1 1 $ echo "[extensions]" >> $HGRCPATH
2 2 $ echo "patchbomb=" >> $HGRCPATH
3 3
4 4 $ hg init t
5 5 $ cd t
6 6 $ echo a > a
7 7 $ hg commit -Ama -d '1 0'
8 8 adding a
9 9
10 10 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
11 11 this patch series consists of 1 patches.
12 12
13 13
14 14 displaying [PATCH] a ...
15 15 Content-Type: text/plain; charset="us-ascii"
16 16 MIME-Version: 1.0
17 17 Content-Transfer-Encoding: 7bit
18 18 Subject: [PATCH] a
19 19 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
20 20 X-Mercurial-Series-Index: 1
21 21 X-Mercurial-Series-Total: 1
22 22 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
23 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
23 24 User-Agent: Mercurial-patchbomb/* (glob)
24 25 Date: Thu, 01 Jan 1970 00:01:00 +0000
25 26 From: quux
26 27 To: foo
27 28 Cc: bar
28 29
29 30 # HG changeset patch
30 31 # User test
31 32 # Date 1 0
32 33 # Thu Jan 01 00:00:01 1970 +0000
33 34 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
34 35 # Parent 0000000000000000000000000000000000000000
35 36 a
36 37
37 38 diff -r 000000000000 -r 8580ff50825a a
38 39 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
39 40 +++ b/a Thu Jan 01 00:00:01 1970 +0000
40 41 @@ -0,0 +1,1 @@
41 42 +a
42 43
43 44
44 45 $ hg --config ui.interactive=1 email --confirm -n -f quux -t foo -c bar -r tip<<EOF
45 46 > n
46 47 > EOF
47 48 this patch series consists of 1 patches.
48 49
49 50
50 51 Final summary:
51 52
52 53 From: quux
53 54 To: foo
54 55 Cc: bar
55 56 Subject: [PATCH] a
56 57 a | 1 +
57 58 1 files changed, 1 insertions(+), 0 deletions(-)
58 59
59 60 are you sure you want to send (yn)? abort: patchbomb canceled
60 61 [255]
61 62
62 63 $ echo b > b
63 64 $ hg commit -Amb -d '2 0'
64 65 adding b
65 66
66 67 $ hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip
67 68 this patch series consists of 2 patches.
68 69
69 70
70 71 Write the introductory message for the patch series.
71 72
72 73
73 74 displaying [PATCH 0 of 2] test ...
74 75 Content-Type: text/plain; charset="us-ascii"
75 76 MIME-Version: 1.0
76 77 Content-Transfer-Encoding: 7bit
77 78 Subject: [PATCH 0 of 2] test
78 79 Message-Id: <patchbomb.120@*> (glob)
80 X-Mercurial-Series-Id: <patchbomb.120@*> (glob)
79 81 User-Agent: Mercurial-patchbomb/* (glob)
80 82 Date: Thu, 01 Jan 1970 00:02:00 +0000
81 83 From: quux
82 84 To: foo
83 85 Cc: bar
84 86
85 87
86 88 displaying [PATCH 1 of 2] a ...
87 89 Content-Type: text/plain; charset="us-ascii"
88 90 MIME-Version: 1.0
89 91 Content-Transfer-Encoding: 7bit
90 92 Subject: [PATCH 1 of 2] a
91 93 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
92 94 X-Mercurial-Series-Index: 1
93 95 X-Mercurial-Series-Total: 2
94 96 Message-Id: <8580ff50825a50c8f716.121@*> (glob)
95 97 In-Reply-To: <patchbomb.120@*> (glob)
96 98 References: <patchbomb.120@*> (glob)
99 X-Mercurial-Series-Id: <patchbomb.120@*> (glob)
97 100 User-Agent: Mercurial-patchbomb/* (glob)
98 101 Date: Thu, 01 Jan 1970 00:02:01 +0000
99 102 From: quux
100 103 To: foo
101 104 Cc: bar
102 105
103 106 # HG changeset patch
104 107 # User test
105 108 # Date 1 0
106 109 # Thu Jan 01 00:00:01 1970 +0000
107 110 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
108 111 # Parent 0000000000000000000000000000000000000000
109 112 a
110 113
111 114 diff -r 000000000000 -r 8580ff50825a a
112 115 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
113 116 +++ b/a Thu Jan 01 00:00:01 1970 +0000
114 117 @@ -0,0 +1,1 @@
115 118 +a
116 119
117 120 displaying [PATCH 2 of 2] b ...
118 121 Content-Type: text/plain; charset="us-ascii"
119 122 MIME-Version: 1.0
120 123 Content-Transfer-Encoding: 7bit
121 124 Subject: [PATCH 2 of 2] b
122 125 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
123 126 X-Mercurial-Series-Index: 2
124 127 X-Mercurial-Series-Total: 2
125 128 Message-Id: <97d72e5f12c7e84f8506.122@*> (glob)
126 129 In-Reply-To: <patchbomb.120@*> (glob)
127 130 References: <patchbomb.120@*> (glob)
131 X-Mercurial-Series-Id: <patchbomb.120@*> (glob)
128 132 User-Agent: Mercurial-patchbomb/* (glob)
129 133 Date: Thu, 01 Jan 1970 00:02:02 +0000
130 134 From: quux
131 135 To: foo
132 136 Cc: bar
133 137
134 138 # HG changeset patch
135 139 # User test
136 140 # Date 2 0
137 141 # Thu Jan 01 00:00:02 1970 +0000
138 142 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
139 143 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
140 144 b
141 145
142 146 diff -r 8580ff50825a -r 97d72e5f12c7 b
143 147 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
144 148 +++ b/b Thu Jan 01 00:00:02 1970 +0000
145 149 @@ -0,0 +1,1 @@
146 150 +b
147 151
148 152
149 153 .hg/last-email.txt
150 154
151 155 $ cat > editor.sh << '__EOF__'
152 156 > echo "a precious introductory message" > "$1"
153 157 > __EOF__
154 158 $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg email -n -t foo -s test -r 0:tip > /dev/null
155 159 $ cat .hg/last-email.txt
156 160 a precious introductory message
157 161
158 162 $ hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip \
159 163 > --config extensions.progress= --config progress.assume-tty=1 \
160 164 > --config progress.delay=0 --config progress.refresh=0 \
161 165 > --config progress.width=60
162 166 this patch series consists of 2 patches.
163 167
164 168
165 169 Write the introductory message for the patch series.
166 170
167 171 \r (no-eol) (esc)
168 172 sending [ ] 0/3\r (no-eol) (esc)
169 173 sending [ ] 0/3\r (no-eol) (esc)
170 174 \r (no-eol) (esc)
171 175 \r (no-eol) (esc)
172 176 \r (no-eol) (esc)
173 177 \r (no-eol) (esc)
174 178 sending [==============> ] 1/3\r (no-eol) (esc)
175 179 sending [==============> ] 1/3\r (no-eol) (esc)
176 180 \r (no-eol) (esc)
177 181 \r (no-eol) (esc)
178 182 \r (no-eol) (esc)
179 183 \r (no-eol) (esc)
180 184 sending [=============================> ] 2/3\r (no-eol) (esc)
181 185 sending [=============================> ] 2/3\r (no-eol) (esc)
182 186 \r (esc)
183 187 sending [PATCH 0 of 2] test ...
184 188 sending [PATCH 1 of 2] a ...
185 189 sending [PATCH 2 of 2] b ...
186 190
187 191 $ cd ..
188 192
189 193 $ hg clone -q t t2
190 194 $ cd t2
191 195 $ echo c > c
192 196 $ hg commit -Amc -d '3 0'
193 197 adding c
194 198
195 199 $ cat > description <<EOF
196 200 > a multiline
197 201 >
198 202 > description
199 203 > EOF
200 204
201 205
202 206 test bundle and description:
203 207 $ hg email --date '1970-1-1 0:3' -n -f quux -t foo \
204 208 > -c bar -s test -r tip -b --desc description
205 209 searching for changes
206 210 1 changesets found
207 211
208 212 displaying test ...
209 213 Content-Type: multipart/mixed; boundary="===*" (glob)
210 214 MIME-Version: 1.0
211 215 Subject: test
212 216 Message-Id: <patchbomb.180@*> (glob)
217 X-Mercurial-Series-Id: <patchbomb.180@*> (glob)
213 218 User-Agent: Mercurial-patchbomb/* (glob)
214 219 Date: Thu, 01 Jan 1970 00:03:00 +0000
215 220 From: quux
216 221 To: foo
217 222 Cc: bar
218 223
219 224 --===* (glob)
220 225 Content-Type: text/plain; charset="us-ascii"
221 226 MIME-Version: 1.0
222 227 Content-Transfer-Encoding: 7bit
223 228
224 229 a multiline
225 230
226 231 description
227 232
228 233 --===* (glob)
229 234 Content-Type: application/x-mercurial-bundle
230 235 MIME-Version: 1.0
231 236 Content-Disposition: attachment; filename="bundle.hg"
232 237 Content-Transfer-Encoding: base64
233 238
234 239 SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
235 240 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
236 241 oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
237 242 Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
238 243 SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
239 244 sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
240 245 Q70eyNw=
241 246 --===*-- (glob)
242 247
243 248 utf-8 patch:
244 249 $ python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
245 250 $ hg commit -A -d '4 0' -m 'utf-8 content'
246 251 adding description
247 252 adding utf
248 253
249 254 no mime encoding for email --test:
250 255 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n
251 256 this patch series consists of 1 patches.
252 257
253 258
254 259 displaying [PATCH] utf-8 content ...
255 260 Content-Type: text/plain; charset="us-ascii"
256 261 MIME-Version: 1.0
257 262 Content-Transfer-Encoding: 8bit
258 263 Subject: [PATCH] utf-8 content
259 264 X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
260 265 X-Mercurial-Series-Index: 1
261 266 X-Mercurial-Series-Total: 1
262 267 Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
268 X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob)
263 269 User-Agent: Mercurial-patchbomb/* (glob)
264 270 Date: Thu, 01 Jan 1970 00:04:00 +0000
265 271 From: quux
266 272 To: foo
267 273 Cc: bar
268 274
269 275 # HG changeset patch
270 276 # User test
271 277 # Date 4 0
272 278 # Thu Jan 01 00:00:04 1970 +0000
273 279 # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
274 280 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
275 281 utf-8 content
276 282
277 283 diff -r ff2c9fa2018b -r 909a00e13e9d description
278 284 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
279 285 +++ b/description Thu Jan 01 00:00:04 1970 +0000
280 286 @@ -0,0 +1,3 @@
281 287 +a multiline
282 288 +
283 289 +description
284 290 diff -r ff2c9fa2018b -r 909a00e13e9d utf
285 291 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
286 292 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
287 293 @@ -0,0 +1,1 @@
288 294 +h\xc3\xb6mma! (esc)
289 295
290 296
291 297 mime encoded mbox (base64):
292 298 $ hg email --date '1970-1-1 0:4' -f 'Q <quux>' -t foo -c bar -r tip -m mbox
293 299 this patch series consists of 1 patches.
294 300
295 301
296 302 sending [PATCH] utf-8 content ...
297 303
298 304 $ cat mbox
299 305 From quux ... ... .. ..:..:.. .... (re)
300 306 Content-Type: text/plain; charset="utf-8"
301 307 MIME-Version: 1.0
302 308 Content-Transfer-Encoding: base64
303 309 Subject: [PATCH] utf-8 content
304 310 X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
305 311 X-Mercurial-Series-Index: 1
306 312 X-Mercurial-Series-Total: 1
307 313 Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
314 X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob)
308 315 User-Agent: Mercurial-patchbomb/* (glob)
309 316 Date: Thu, 01 Jan 1970 00:04:00 +0000
310 317 From: Q <quux>
311 318 To: foo
312 319 Cc: bar
313 320
314 321 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojICAgICAgVGh1IEph
315 322 biAwMSAwMDowMDowNCAxOTcwICswMDAwCiMgTm9kZSBJRCA5MDlhMDBlMTNlOWQ3OGI1NzVhZWVl
316 323 MjNkZGRiYWRhNDZkNWExNDNmCiMgUGFyZW50ICBmZjJjOWZhMjAxOGIxNWZhNzRiMzMzNjNiZGE5
317 324 NTI3MzIzZTJhOTlmCnV0Zi04IGNvbnRlbnQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIDkwOWEw
318 325 MGUxM2U5ZCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
319 326 MCArMDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK
320 327 QEAgLTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5
321 328 ZmEyMDE4YiAtciA5MDlhMDBlMTNlOWQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
322 329 MDowMCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK
323 330 QEAgLTAsMCArMSwxIEBACitow7ZtbWEhCg==
324 331
325 332
326 333 $ python -c 'print open("mbox").read().split("\n\n")[1].decode("base64")'
327 334 # HG changeset patch
328 335 # User test
329 336 # Date 4 0
330 337 # Thu Jan 01 00:00:04 1970 +0000
331 338 # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
332 339 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
333 340 utf-8 content
334 341
335 342 diff -r ff2c9fa2018b -r 909a00e13e9d description
336 343 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
337 344 +++ b/description Thu Jan 01 00:00:04 1970 +0000
338 345 @@ -0,0 +1,3 @@
339 346 +a multiline
340 347 +
341 348 +description
342 349 diff -r ff2c9fa2018b -r 909a00e13e9d utf
343 350 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
344 351 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
345 352 @@ -0,0 +1,1 @@
346 353 +h\xc3\xb6mma! (esc)
347 354
348 355 $ rm mbox
349 356
350 357 mime encoded mbox (quoted-printable):
351 358 $ python -c 'fp = open("long", "wb"); fp.write("%s\nfoo\n\nbar\n" % ("x" * 1024)); fp.close();'
352 359 $ hg commit -A -d '4 0' -m 'long line'
353 360 adding long
354 361
355 362 no mime encoding for email --test:
356 363 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n
357 364 this patch series consists of 1 patches.
358 365
359 366
360 367 displaying [PATCH] long line ...
361 368 Content-Type: text/plain; charset="us-ascii"
362 369 MIME-Version: 1.0
363 370 Content-Transfer-Encoding: quoted-printable
364 371 Subject: [PATCH] long line
365 372 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
366 373 X-Mercurial-Series-Index: 1
367 374 X-Mercurial-Series-Total: 1
368 375 Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
376 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
369 377 User-Agent: Mercurial-patchbomb/* (glob)
370 378 Date: Thu, 01 Jan 1970 00:04:00 +0000
371 379 From: quux
372 380 To: foo
373 381 Cc: bar
374 382
375 383 # HG changeset patch
376 384 # User test
377 385 # Date 4 0
378 386 # Thu Jan 01 00:00:04 1970 +0000
379 387 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
380 388 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
381 389 long line
382 390
383 391 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
384 392 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
385 393 +++ b/long Thu Jan 01 00:00:04 1970 +0000
386 394 @@ -0,0 +1,4 @@
387 395 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
388 396 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
389 397 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
390 398 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
391 399 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
392 400 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
393 401 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
394 402 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
395 403 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
396 404 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
397 405 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
398 406 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
399 407 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
400 408 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
401 409 +foo
402 410 +
403 411 +bar
404 412
405 413
406 414 mime encoded mbox (quoted-printable):
407 415 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
408 416 this patch series consists of 1 patches.
409 417
410 418
411 419 sending [PATCH] long line ...
412 420 $ cat mbox
413 421 From quux ... ... .. ..:..:.. .... (re)
414 422 Content-Type: text/plain; charset="us-ascii"
415 423 MIME-Version: 1.0
416 424 Content-Transfer-Encoding: quoted-printable
417 425 Subject: [PATCH] long line
418 426 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
419 427 X-Mercurial-Series-Index: 1
420 428 X-Mercurial-Series-Total: 1
421 429 Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
430 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
422 431 User-Agent: Mercurial-patchbomb/* (glob)
423 432 Date: Thu, 01 Jan 1970 00:04:00 +0000
424 433 From: quux
425 434 To: foo
426 435 Cc: bar
427 436
428 437 # HG changeset patch
429 438 # User test
430 439 # Date 4 0
431 440 # Thu Jan 01 00:00:04 1970 +0000
432 441 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
433 442 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
434 443 long line
435 444
436 445 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
437 446 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
438 447 +++ b/long Thu Jan 01 00:00:04 1970 +0000
439 448 @@ -0,0 +1,4 @@
440 449 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
441 450 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
442 451 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
443 452 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
444 453 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
445 454 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
446 455 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
447 456 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
448 457 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
449 458 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
450 459 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
451 460 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
452 461 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
453 462 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
454 463 +foo
455 464 +
456 465 +bar
457 466
458 467
459 468
460 469 $ rm mbox
461 470
462 471 iso-8859-1 patch:
463 472 $ python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
464 473 $ hg commit -A -d '5 0' -m 'isolatin 8-bit encoding'
465 474 adding isolatin
466 475
467 476 fake ascii mbox:
468 477 $ hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
469 478 this patch series consists of 1 patches.
470 479
471 480
472 481 sending [PATCH] isolatin 8-bit encoding ...
473 482 $ cat mbox
474 483 From quux ... ... .. ..:..:.. .... (re)
475 484 Content-Type: text/plain; charset="us-ascii"
476 485 MIME-Version: 1.0
477 486 Content-Transfer-Encoding: 8bit
478 487 Subject: [PATCH] isolatin 8-bit encoding
479 488 X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
480 489 X-Mercurial-Series-Index: 1
481 490 X-Mercurial-Series-Total: 1
482 491 Message-Id: <240fb913fc1b7ff15ddb.300@*> (glob)
492 X-Mercurial-Series-Id: <240fb913fc1b7ff15ddb.300@*> (glob)
483 493 User-Agent: Mercurial-patchbomb/* (glob)
484 494 Date: Thu, 01 Jan 1970 00:05:00 +0000
485 495 From: quux
486 496 To: foo
487 497 Cc: bar
488 498
489 499 # HG changeset patch
490 500 # User test
491 501 # Date 5 0
492 502 # Thu Jan 01 00:00:05 1970 +0000
493 503 # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
494 504 # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
495 505 isolatin 8-bit encoding
496 506
497 507 diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin
498 508 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
499 509 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
500 510 @@ -0,0 +1,1 @@
501 511 +h\xf6mma! (esc)
502 512
503 513
504 514
505 515 test diffstat for single patch:
506 516 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2
507 517 this patch series consists of 1 patches.
508 518
509 519
510 520 Final summary:
511 521
512 522 From: quux
513 523 To: foo
514 524 Cc: bar
515 525 Subject: [PATCH] test
516 526 c | 1 +
517 527 1 files changed, 1 insertions(+), 0 deletions(-)
518 528
519 529 are you sure you want to send (yn)? y
520 530
521 531 displaying [PATCH] test ...
522 532 Content-Type: text/plain; charset="us-ascii"
523 533 MIME-Version: 1.0
524 534 Content-Transfer-Encoding: 7bit
525 535 Subject: [PATCH] test
526 536 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
527 537 X-Mercurial-Series-Index: 1
528 538 X-Mercurial-Series-Total: 1
529 539 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
540 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
530 541 User-Agent: Mercurial-patchbomb/* (glob)
531 542 Date: Thu, 01 Jan 1970 00:01:00 +0000
532 543 From: quux
533 544 To: foo
534 545 Cc: bar
535 546
536 547 c | 1 +
537 548 1 files changed, 1 insertions(+), 0 deletions(-)
538 549
539 550
540 551 # HG changeset patch
541 552 # User test
542 553 # Date 3 0
543 554 # Thu Jan 01 00:00:03 1970 +0000
544 555 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
545 556 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
546 557 c
547 558
548 559 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
549 560 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
550 561 +++ b/c Thu Jan 01 00:00:03 1970 +0000
551 562 @@ -0,0 +1,1 @@
552 563 +c
553 564
554 565
555 566 test diffstat for multiple patches:
556 567 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
557 568 > -r 0:1
558 569 this patch series consists of 2 patches.
559 570
560 571
561 572 Write the introductory message for the patch series.
562 573
563 574
564 575 Final summary:
565 576
566 577 From: quux
567 578 To: foo
568 579 Cc: bar
569 580 Subject: [PATCH 0 of 2] test
570 581 a | 1 +
571 582 b | 1 +
572 583 2 files changed, 2 insertions(+), 0 deletions(-)
573 584 Subject: [PATCH 1 of 2] a
574 585 a | 1 +
575 586 1 files changed, 1 insertions(+), 0 deletions(-)
576 587 Subject: [PATCH 2 of 2] b
577 588 b | 1 +
578 589 1 files changed, 1 insertions(+), 0 deletions(-)
579 590
580 591 are you sure you want to send (yn)? y
581 592
582 593 displaying [PATCH 0 of 2] test ...
583 594 Content-Type: text/plain; charset="us-ascii"
584 595 MIME-Version: 1.0
585 596 Content-Transfer-Encoding: 7bit
586 597 Subject: [PATCH 0 of 2] test
587 598 Message-Id: <patchbomb.60@*> (glob)
599 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
588 600 User-Agent: Mercurial-patchbomb/* (glob)
589 601 Date: Thu, 01 Jan 1970 00:01:00 +0000
590 602 From: quux
591 603 To: foo
592 604 Cc: bar
593 605
594 606
595 607 a | 1 +
596 608 b | 1 +
597 609 2 files changed, 2 insertions(+), 0 deletions(-)
598 610
599 611 displaying [PATCH 1 of 2] a ...
600 612 Content-Type: text/plain; charset="us-ascii"
601 613 MIME-Version: 1.0
602 614 Content-Transfer-Encoding: 7bit
603 615 Subject: [PATCH 1 of 2] a
604 616 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
605 617 X-Mercurial-Series-Index: 1
606 618 X-Mercurial-Series-Total: 2
607 619 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
608 620 In-Reply-To: <patchbomb.60@*> (glob)
609 621 References: <patchbomb.60@*> (glob)
622 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
610 623 User-Agent: Mercurial-patchbomb/* (glob)
611 624 Date: Thu, 01 Jan 1970 00:01:01 +0000
612 625 From: quux
613 626 To: foo
614 627 Cc: bar
615 628
616 629 a | 1 +
617 630 1 files changed, 1 insertions(+), 0 deletions(-)
618 631
619 632
620 633 # HG changeset patch
621 634 # User test
622 635 # Date 1 0
623 636 # Thu Jan 01 00:00:01 1970 +0000
624 637 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
625 638 # Parent 0000000000000000000000000000000000000000
626 639 a
627 640
628 641 diff -r 000000000000 -r 8580ff50825a a
629 642 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
630 643 +++ b/a Thu Jan 01 00:00:01 1970 +0000
631 644 @@ -0,0 +1,1 @@
632 645 +a
633 646
634 647 displaying [PATCH 2 of 2] b ...
635 648 Content-Type: text/plain; charset="us-ascii"
636 649 MIME-Version: 1.0
637 650 Content-Transfer-Encoding: 7bit
638 651 Subject: [PATCH 2 of 2] b
639 652 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
640 653 X-Mercurial-Series-Index: 2
641 654 X-Mercurial-Series-Total: 2
642 655 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
643 656 In-Reply-To: <patchbomb.60@*> (glob)
644 657 References: <patchbomb.60@*> (glob)
658 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
645 659 User-Agent: Mercurial-patchbomb/* (glob)
646 660 Date: Thu, 01 Jan 1970 00:01:02 +0000
647 661 From: quux
648 662 To: foo
649 663 Cc: bar
650 664
651 665 b | 1 +
652 666 1 files changed, 1 insertions(+), 0 deletions(-)
653 667
654 668
655 669 # HG changeset patch
656 670 # User test
657 671 # Date 2 0
658 672 # Thu Jan 01 00:00:02 1970 +0000
659 673 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
660 674 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
661 675 b
662 676
663 677 diff -r 8580ff50825a -r 97d72e5f12c7 b
664 678 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
665 679 +++ b/b Thu Jan 01 00:00:02 1970 +0000
666 680 @@ -0,0 +1,1 @@
667 681 +b
668 682
669 683
670 684 test inline for single patch:
671 685 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2
672 686 this patch series consists of 1 patches.
673 687
674 688
675 689 displaying [PATCH] test ...
676 690 Content-Type: multipart/mixed; boundary="===*" (glob)
677 691 MIME-Version: 1.0
678 692 Subject: [PATCH] test
679 693 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
680 694 X-Mercurial-Series-Index: 1
681 695 X-Mercurial-Series-Total: 1
682 696 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
697 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
683 698 User-Agent: Mercurial-patchbomb/* (glob)
684 699 Date: Thu, 01 Jan 1970 00:01:00 +0000
685 700 From: quux
686 701 To: foo
687 702 Cc: bar
688 703
689 704 --===* (glob)
690 705 Content-Type: text/x-patch; charset="us-ascii"
691 706 MIME-Version: 1.0
692 707 Content-Transfer-Encoding: 7bit
693 708 Content-Disposition: inline; filename=t2.patch
694 709
695 710 # HG changeset patch
696 711 # User test
697 712 # Date 3 0
698 713 # Thu Jan 01 00:00:03 1970 +0000
699 714 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
700 715 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
701 716 c
702 717
703 718 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
704 719 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
705 720 +++ b/c Thu Jan 01 00:00:03 1970 +0000
706 721 @@ -0,0 +1,1 @@
707 722 +c
708 723
709 724 --===*-- (glob)
710 725
711 726
712 727 test inline for single patch (quoted-printable):
713 728 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4
714 729 this patch series consists of 1 patches.
715 730
716 731
717 732 displaying [PATCH] test ...
718 733 Content-Type: multipart/mixed; boundary="===*" (glob)
719 734 MIME-Version: 1.0
720 735 Subject: [PATCH] test
721 736 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
722 737 X-Mercurial-Series-Index: 1
723 738 X-Mercurial-Series-Total: 1
724 739 Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
740 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
725 741 User-Agent: Mercurial-patchbomb/* (glob)
726 742 Date: Thu, 01 Jan 1970 00:01:00 +0000
727 743 From: quux
728 744 To: foo
729 745 Cc: bar
730 746
731 747 --===* (glob)
732 748 Content-Type: text/x-patch; charset="us-ascii"
733 749 MIME-Version: 1.0
734 750 Content-Transfer-Encoding: quoted-printable
735 751 Content-Disposition: inline; filename=t2.patch
736 752
737 753 # HG changeset patch
738 754 # User test
739 755 # Date 4 0
740 756 # Thu Jan 01 00:00:04 1970 +0000
741 757 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
742 758 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
743 759 long line
744 760
745 761 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
746 762 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
747 763 +++ b/long Thu Jan 01 00:00:04 1970 +0000
748 764 @@ -0,0 +1,4 @@
749 765 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
750 766 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
751 767 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
752 768 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
753 769 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
754 770 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
755 771 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
756 772 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
757 773 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
758 774 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
759 775 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
760 776 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
761 777 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
762 778 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
763 779 +foo
764 780 +
765 781 +bar
766 782
767 783 --===*-- (glob)
768 784
769 785 test inline for multiple patches:
770 786 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
771 787 > -r 0:1 -r 4
772 788 this patch series consists of 3 patches.
773 789
774 790
775 791 Write the introductory message for the patch series.
776 792
777 793
778 794 displaying [PATCH 0 of 3] test ...
779 795 Content-Type: text/plain; charset="us-ascii"
780 796 MIME-Version: 1.0
781 797 Content-Transfer-Encoding: 7bit
782 798 Subject: [PATCH 0 of 3] test
783 799 Message-Id: <patchbomb.60@*> (glob)
800 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
784 801 User-Agent: Mercurial-patchbomb/* (glob)
785 802 Date: Thu, 01 Jan 1970 00:01:00 +0000
786 803 From: quux
787 804 To: foo
788 805 Cc: bar
789 806
790 807
791 808 displaying [PATCH 1 of 3] a ...
792 809 Content-Type: multipart/mixed; boundary="===*" (glob)
793 810 MIME-Version: 1.0
794 811 Subject: [PATCH 1 of 3] a
795 812 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
796 813 X-Mercurial-Series-Index: 1
797 814 X-Mercurial-Series-Total: 3
798 815 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
799 816 In-Reply-To: <patchbomb.60@*> (glob)
800 817 References: <patchbomb.60@*> (glob)
818 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
801 819 User-Agent: Mercurial-patchbomb/* (glob)
802 820 Date: Thu, 01 Jan 1970 00:01:01 +0000
803 821 From: quux
804 822 To: foo
805 823 Cc: bar
806 824
807 825 --===* (glob)
808 826 Content-Type: text/x-patch; charset="us-ascii"
809 827 MIME-Version: 1.0
810 828 Content-Transfer-Encoding: 7bit
811 829 Content-Disposition: inline; filename=t2-1.patch
812 830
813 831 # HG changeset patch
814 832 # User test
815 833 # Date 1 0
816 834 # Thu Jan 01 00:00:01 1970 +0000
817 835 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
818 836 # Parent 0000000000000000000000000000000000000000
819 837 a
820 838
821 839 diff -r 000000000000 -r 8580ff50825a a
822 840 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
823 841 +++ b/a Thu Jan 01 00:00:01 1970 +0000
824 842 @@ -0,0 +1,1 @@
825 843 +a
826 844
827 845 --===*-- (glob)
828 846 displaying [PATCH 2 of 3] b ...
829 847 Content-Type: multipart/mixed; boundary="===*" (glob)
830 848 MIME-Version: 1.0
831 849 Subject: [PATCH 2 of 3] b
832 850 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
833 851 X-Mercurial-Series-Index: 2
834 852 X-Mercurial-Series-Total: 3
835 853 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
836 854 In-Reply-To: <patchbomb.60@*> (glob)
837 855 References: <patchbomb.60@*> (glob)
856 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
838 857 User-Agent: Mercurial-patchbomb/* (glob)
839 858 Date: Thu, 01 Jan 1970 00:01:02 +0000
840 859 From: quux
841 860 To: foo
842 861 Cc: bar
843 862
844 863 --===* (glob)
845 864 Content-Type: text/x-patch; charset="us-ascii"
846 865 MIME-Version: 1.0
847 866 Content-Transfer-Encoding: 7bit
848 867 Content-Disposition: inline; filename=t2-2.patch
849 868
850 869 # HG changeset patch
851 870 # User test
852 871 # Date 2 0
853 872 # Thu Jan 01 00:00:02 1970 +0000
854 873 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
855 874 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
856 875 b
857 876
858 877 diff -r 8580ff50825a -r 97d72e5f12c7 b
859 878 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
860 879 +++ b/b Thu Jan 01 00:00:02 1970 +0000
861 880 @@ -0,0 +1,1 @@
862 881 +b
863 882
864 883 --===*-- (glob)
865 884 displaying [PATCH 3 of 3] long line ...
866 885 Content-Type: multipart/mixed; boundary="===*" (glob)
867 886 MIME-Version: 1.0
868 887 Subject: [PATCH 3 of 3] long line
869 888 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
870 889 X-Mercurial-Series-Index: 3
871 890 X-Mercurial-Series-Total: 3
872 891 Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
873 892 In-Reply-To: <patchbomb.60@*> (glob)
874 893 References: <patchbomb.60@*> (glob)
894 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
875 895 User-Agent: Mercurial-patchbomb/* (glob)
876 896 Date: Thu, 01 Jan 1970 00:01:03 +0000
877 897 From: quux
878 898 To: foo
879 899 Cc: bar
880 900
881 901 --===* (glob)
882 902 Content-Type: text/x-patch; charset="us-ascii"
883 903 MIME-Version: 1.0
884 904 Content-Transfer-Encoding: quoted-printable
885 905 Content-Disposition: inline; filename=t2-3.patch
886 906
887 907 # HG changeset patch
888 908 # User test
889 909 # Date 4 0
890 910 # Thu Jan 01 00:00:04 1970 +0000
891 911 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
892 912 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
893 913 long line
894 914
895 915 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
896 916 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
897 917 +++ b/long Thu Jan 01 00:00:04 1970 +0000
898 918 @@ -0,0 +1,4 @@
899 919 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
900 920 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
901 921 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
902 922 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
903 923 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
904 924 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
905 925 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
906 926 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
907 927 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
908 928 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
909 929 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
910 930 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
911 931 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
912 932 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
913 933 +foo
914 934 +
915 935 +bar
916 936
917 937 --===*-- (glob)
918 938
919 939 test attach for single patch:
920 940 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2
921 941 this patch series consists of 1 patches.
922 942
923 943
924 944 displaying [PATCH] test ...
925 945 Content-Type: multipart/mixed; boundary="===*" (glob)
926 946 MIME-Version: 1.0
927 947 Subject: [PATCH] test
928 948 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
929 949 X-Mercurial-Series-Index: 1
930 950 X-Mercurial-Series-Total: 1
931 951 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
952 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
932 953 User-Agent: Mercurial-patchbomb/* (glob)
933 954 Date: Thu, 01 Jan 1970 00:01:00 +0000
934 955 From: quux
935 956 To: foo
936 957 Cc: bar
937 958
938 959 --===* (glob)
939 960 Content-Type: text/plain; charset="us-ascii"
940 961 MIME-Version: 1.0
941 962 Content-Transfer-Encoding: 7bit
942 963
943 964 Patch subject is complete summary.
944 965
945 966
946 967
947 968 --===* (glob)
948 969 Content-Type: text/x-patch; charset="us-ascii"
949 970 MIME-Version: 1.0
950 971 Content-Transfer-Encoding: 7bit
951 972 Content-Disposition: attachment; filename=t2.patch
952 973
953 974 # HG changeset patch
954 975 # User test
955 976 # Date 3 0
956 977 # Thu Jan 01 00:00:03 1970 +0000
957 978 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
958 979 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
959 980 c
960 981
961 982 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
962 983 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
963 984 +++ b/c Thu Jan 01 00:00:03 1970 +0000
964 985 @@ -0,0 +1,1 @@
965 986 +c
966 987
967 988 --===*-- (glob)
968 989
969 990 test attach for single patch (quoted-printable):
970 991 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4
971 992 this patch series consists of 1 patches.
972 993
973 994
974 995 displaying [PATCH] test ...
975 996 Content-Type: multipart/mixed; boundary="===*" (glob)
976 997 MIME-Version: 1.0
977 998 Subject: [PATCH] test
978 999 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
979 1000 X-Mercurial-Series-Index: 1
980 1001 X-Mercurial-Series-Total: 1
981 1002 Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
1003 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
982 1004 User-Agent: Mercurial-patchbomb/* (glob)
983 1005 Date: Thu, 01 Jan 1970 00:01:00 +0000
984 1006 From: quux
985 1007 To: foo
986 1008 Cc: bar
987 1009
988 1010 --===* (glob)
989 1011 Content-Type: text/plain; charset="us-ascii"
990 1012 MIME-Version: 1.0
991 1013 Content-Transfer-Encoding: 7bit
992 1014
993 1015 Patch subject is complete summary.
994 1016
995 1017
996 1018
997 1019 --===* (glob)
998 1020 Content-Type: text/x-patch; charset="us-ascii"
999 1021 MIME-Version: 1.0
1000 1022 Content-Transfer-Encoding: quoted-printable
1001 1023 Content-Disposition: attachment; filename=t2.patch
1002 1024
1003 1025 # HG changeset patch
1004 1026 # User test
1005 1027 # Date 4 0
1006 1028 # Thu Jan 01 00:00:04 1970 +0000
1007 1029 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1008 1030 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
1009 1031 long line
1010 1032
1011 1033 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
1012 1034 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1013 1035 +++ b/long Thu Jan 01 00:00:04 1970 +0000
1014 1036 @@ -0,0 +1,4 @@
1015 1037 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1016 1038 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1017 1039 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1018 1040 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1019 1041 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1020 1042 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1021 1043 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1022 1044 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1023 1045 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1024 1046 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1025 1047 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1026 1048 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1027 1049 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1028 1050 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1029 1051 +foo
1030 1052 +
1031 1053 +bar
1032 1054
1033 1055 --===*-- (glob)
1034 1056
1035 1057 test attach and body for single patch:
1036 1058 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a --body -r 2
1037 1059 this patch series consists of 1 patches.
1038 1060
1039 1061
1040 1062 displaying [PATCH] test ...
1041 1063 Content-Type: multipart/mixed; boundary="===*" (glob)
1042 1064 MIME-Version: 1.0
1043 1065 Subject: [PATCH] test
1044 1066 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1045 1067 X-Mercurial-Series-Index: 1
1046 1068 X-Mercurial-Series-Total: 1
1047 1069 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1070 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1048 1071 User-Agent: Mercurial-patchbomb/* (glob)
1049 1072 Date: Thu, 01 Jan 1970 00:01:00 +0000
1050 1073 From: quux
1051 1074 To: foo
1052 1075 Cc: bar
1053 1076
1054 1077 --===* (glob)
1055 1078 Content-Type: text/plain; charset="us-ascii"
1056 1079 MIME-Version: 1.0
1057 1080 Content-Transfer-Encoding: 7bit
1058 1081
1059 1082 # HG changeset patch
1060 1083 # User test
1061 1084 # Date 3 0
1062 1085 # Thu Jan 01 00:00:03 1970 +0000
1063 1086 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1064 1087 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1065 1088 c
1066 1089
1067 1090 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1068 1091 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1069 1092 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1070 1093 @@ -0,0 +1,1 @@
1071 1094 +c
1072 1095
1073 1096 --===* (glob)
1074 1097 Content-Type: text/x-patch; charset="us-ascii"
1075 1098 MIME-Version: 1.0
1076 1099 Content-Transfer-Encoding: 7bit
1077 1100 Content-Disposition: attachment; filename=t2.patch
1078 1101
1079 1102 # HG changeset patch
1080 1103 # User test
1081 1104 # Date 3 0
1082 1105 # Thu Jan 01 00:00:03 1970 +0000
1083 1106 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1084 1107 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1085 1108 c
1086 1109
1087 1110 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1088 1111 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1089 1112 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1090 1113 @@ -0,0 +1,1 @@
1091 1114 +c
1092 1115
1093 1116 --===*-- (glob)
1094 1117
1095 1118 test attach for multiple patches:
1096 1119 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
1097 1120 > -r 0:1 -r 4
1098 1121 this patch series consists of 3 patches.
1099 1122
1100 1123
1101 1124 Write the introductory message for the patch series.
1102 1125
1103 1126
1104 1127 displaying [PATCH 0 of 3] test ...
1105 1128 Content-Type: text/plain; charset="us-ascii"
1106 1129 MIME-Version: 1.0
1107 1130 Content-Transfer-Encoding: 7bit
1108 1131 Subject: [PATCH 0 of 3] test
1109 1132 Message-Id: <patchbomb.60@*> (glob)
1133 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1110 1134 User-Agent: Mercurial-patchbomb/* (glob)
1111 1135 Date: Thu, 01 Jan 1970 00:01:00 +0000
1112 1136 From: quux
1113 1137 To: foo
1114 1138 Cc: bar
1115 1139
1116 1140
1117 1141 displaying [PATCH 1 of 3] a ...
1118 1142 Content-Type: multipart/mixed; boundary="===*" (glob)
1119 1143 MIME-Version: 1.0
1120 1144 Subject: [PATCH 1 of 3] a
1121 1145 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1122 1146 X-Mercurial-Series-Index: 1
1123 1147 X-Mercurial-Series-Total: 3
1124 1148 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1125 1149 In-Reply-To: <patchbomb.60@*> (glob)
1126 1150 References: <patchbomb.60@*> (glob)
1151 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1127 1152 User-Agent: Mercurial-patchbomb/* (glob)
1128 1153 Date: Thu, 01 Jan 1970 00:01:01 +0000
1129 1154 From: quux
1130 1155 To: foo
1131 1156 Cc: bar
1132 1157
1133 1158 --===* (glob)
1134 1159 Content-Type: text/plain; charset="us-ascii"
1135 1160 MIME-Version: 1.0
1136 1161 Content-Transfer-Encoding: 7bit
1137 1162
1138 1163 Patch subject is complete summary.
1139 1164
1140 1165
1141 1166
1142 1167 --===* (glob)
1143 1168 Content-Type: text/x-patch; charset="us-ascii"
1144 1169 MIME-Version: 1.0
1145 1170 Content-Transfer-Encoding: 7bit
1146 1171 Content-Disposition: attachment; filename=t2-1.patch
1147 1172
1148 1173 # HG changeset patch
1149 1174 # User test
1150 1175 # Date 1 0
1151 1176 # Thu Jan 01 00:00:01 1970 +0000
1152 1177 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1153 1178 # Parent 0000000000000000000000000000000000000000
1154 1179 a
1155 1180
1156 1181 diff -r 000000000000 -r 8580ff50825a a
1157 1182 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1158 1183 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1159 1184 @@ -0,0 +1,1 @@
1160 1185 +a
1161 1186
1162 1187 --===*-- (glob)
1163 1188 displaying [PATCH 2 of 3] b ...
1164 1189 Content-Type: multipart/mixed; boundary="===*" (glob)
1165 1190 MIME-Version: 1.0
1166 1191 Subject: [PATCH 2 of 3] b
1167 1192 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1168 1193 X-Mercurial-Series-Index: 2
1169 1194 X-Mercurial-Series-Total: 3
1170 1195 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1171 1196 In-Reply-To: <patchbomb.60@*> (glob)
1172 1197 References: <patchbomb.60@*> (glob)
1198 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1173 1199 User-Agent: Mercurial-patchbomb/* (glob)
1174 1200 Date: Thu, 01 Jan 1970 00:01:02 +0000
1175 1201 From: quux
1176 1202 To: foo
1177 1203 Cc: bar
1178 1204
1179 1205 --===* (glob)
1180 1206 Content-Type: text/plain; charset="us-ascii"
1181 1207 MIME-Version: 1.0
1182 1208 Content-Transfer-Encoding: 7bit
1183 1209
1184 1210 Patch subject is complete summary.
1185 1211
1186 1212
1187 1213
1188 1214 --===* (glob)
1189 1215 Content-Type: text/x-patch; charset="us-ascii"
1190 1216 MIME-Version: 1.0
1191 1217 Content-Transfer-Encoding: 7bit
1192 1218 Content-Disposition: attachment; filename=t2-2.patch
1193 1219
1194 1220 # HG changeset patch
1195 1221 # User test
1196 1222 # Date 2 0
1197 1223 # Thu Jan 01 00:00:02 1970 +0000
1198 1224 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1199 1225 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1200 1226 b
1201 1227
1202 1228 diff -r 8580ff50825a -r 97d72e5f12c7 b
1203 1229 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1204 1230 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1205 1231 @@ -0,0 +1,1 @@
1206 1232 +b
1207 1233
1208 1234 --===*-- (glob)
1209 1235 displaying [PATCH 3 of 3] long line ...
1210 1236 Content-Type: multipart/mixed; boundary="===*" (glob)
1211 1237 MIME-Version: 1.0
1212 1238 Subject: [PATCH 3 of 3] long line
1213 1239 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1214 1240 X-Mercurial-Series-Index: 3
1215 1241 X-Mercurial-Series-Total: 3
1216 1242 Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
1217 1243 In-Reply-To: <patchbomb.60@*> (glob)
1218 1244 References: <patchbomb.60@*> (glob)
1245 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1219 1246 User-Agent: Mercurial-patchbomb/* (glob)
1220 1247 Date: Thu, 01 Jan 1970 00:01:03 +0000
1221 1248 From: quux
1222 1249 To: foo
1223 1250 Cc: bar
1224 1251
1225 1252 --===* (glob)
1226 1253 Content-Type: text/plain; charset="us-ascii"
1227 1254 MIME-Version: 1.0
1228 1255 Content-Transfer-Encoding: 7bit
1229 1256
1230 1257 Patch subject is complete summary.
1231 1258
1232 1259
1233 1260
1234 1261 --===* (glob)
1235 1262 Content-Type: text/x-patch; charset="us-ascii"
1236 1263 MIME-Version: 1.0
1237 1264 Content-Transfer-Encoding: quoted-printable
1238 1265 Content-Disposition: attachment; filename=t2-3.patch
1239 1266
1240 1267 # HG changeset patch
1241 1268 # User test
1242 1269 # Date 4 0
1243 1270 # Thu Jan 01 00:00:04 1970 +0000
1244 1271 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1245 1272 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
1246 1273 long line
1247 1274
1248 1275 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
1249 1276 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1250 1277 +++ b/long Thu Jan 01 00:00:04 1970 +0000
1251 1278 @@ -0,0 +1,4 @@
1252 1279 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1253 1280 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1254 1281 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1255 1282 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1256 1283 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1257 1284 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1258 1285 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1259 1286 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1260 1287 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1261 1288 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1262 1289 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1263 1290 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1264 1291 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1265 1292 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1266 1293 +foo
1267 1294 +
1268 1295 +bar
1269 1296
1270 1297 --===*-- (glob)
1271 1298
1272 1299 test intro for single patch:
1273 1300 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1274 1301 > -r 2
1275 1302 this patch series consists of 1 patches.
1276 1303
1277 1304
1278 1305 Write the introductory message for the patch series.
1279 1306
1280 1307
1281 1308 displaying [PATCH 0 of 1] test ...
1282 1309 Content-Type: text/plain; charset="us-ascii"
1283 1310 MIME-Version: 1.0
1284 1311 Content-Transfer-Encoding: 7bit
1285 1312 Subject: [PATCH 0 of 1] test
1286 1313 Message-Id: <patchbomb.60@*> (glob)
1314 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1287 1315 User-Agent: Mercurial-patchbomb/* (glob)
1288 1316 Date: Thu, 01 Jan 1970 00:01:00 +0000
1289 1317 From: quux
1290 1318 To: foo
1291 1319 Cc: bar
1292 1320
1293 1321
1294 1322 displaying [PATCH 1 of 1] c ...
1295 1323 Content-Type: text/plain; charset="us-ascii"
1296 1324 MIME-Version: 1.0
1297 1325 Content-Transfer-Encoding: 7bit
1298 1326 Subject: [PATCH 1 of 1] c
1299 1327 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1300 1328 X-Mercurial-Series-Index: 1
1301 1329 X-Mercurial-Series-Total: 1
1302 1330 Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1303 1331 In-Reply-To: <patchbomb.60@*> (glob)
1304 1332 References: <patchbomb.60@*> (glob)
1333 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1305 1334 User-Agent: Mercurial-patchbomb/* (glob)
1306 1335 Date: Thu, 01 Jan 1970 00:01:01 +0000
1307 1336 From: quux
1308 1337 To: foo
1309 1338 Cc: bar
1310 1339
1311 1340 # HG changeset patch
1312 1341 # User test
1313 1342 # Date 3 0
1314 1343 # Thu Jan 01 00:00:03 1970 +0000
1315 1344 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1316 1345 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1317 1346 c
1318 1347
1319 1348 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1320 1349 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1321 1350 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1322 1351 @@ -0,0 +1,1 @@
1323 1352 +c
1324 1353
1325 1354
1326 1355 test --desc without --intro for a single patch:
1327 1356 $ echo foo > intro.text
1328 1357 $ hg email --date '1970-1-1 0:1' -n --desc intro.text -f quux -t foo -c bar \
1329 1358 > -s test -r 2
1330 1359 this patch series consists of 1 patches.
1331 1360
1332 1361
1333 1362 displaying [PATCH 0 of 1] test ...
1334 1363 Content-Type: text/plain; charset="us-ascii"
1335 1364 MIME-Version: 1.0
1336 1365 Content-Transfer-Encoding: 7bit
1337 1366 Subject: [PATCH 0 of 1] test
1338 1367 Message-Id: <patchbomb.60@*> (glob)
1368 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1339 1369 User-Agent: Mercurial-patchbomb/* (glob)
1340 1370 Date: Thu, 01 Jan 1970 00:01:00 +0000
1341 1371 From: quux
1342 1372 To: foo
1343 1373 Cc: bar
1344 1374
1345 1375 foo
1346 1376
1347 1377 displaying [PATCH 1 of 1] c ...
1348 1378 Content-Type: text/plain; charset="us-ascii"
1349 1379 MIME-Version: 1.0
1350 1380 Content-Transfer-Encoding: 7bit
1351 1381 Subject: [PATCH 1 of 1] c
1352 1382 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1353 1383 X-Mercurial-Series-Index: 1
1354 1384 X-Mercurial-Series-Total: 1
1355 1385 Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1356 1386 In-Reply-To: <patchbomb.60@*> (glob)
1357 1387 References: <patchbomb.60@*> (glob)
1388 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1358 1389 User-Agent: Mercurial-patchbomb/* (glob)
1359 1390 Date: Thu, 01 Jan 1970 00:01:01 +0000
1360 1391 From: quux
1361 1392 To: foo
1362 1393 Cc: bar
1363 1394
1364 1395 # HG changeset patch
1365 1396 # User test
1366 1397 # Date 3 0
1367 1398 # Thu Jan 01 00:00:03 1970 +0000
1368 1399 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1369 1400 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1370 1401 c
1371 1402
1372 1403 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1373 1404 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1374 1405 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1375 1406 @@ -0,0 +1,1 @@
1376 1407 +c
1377 1408
1378 1409
1379 1410 test intro for multiple patches:
1380 1411 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1381 1412 > -r 0:1
1382 1413 this patch series consists of 2 patches.
1383 1414
1384 1415
1385 1416 Write the introductory message for the patch series.
1386 1417
1387 1418
1388 1419 displaying [PATCH 0 of 2] test ...
1389 1420 Content-Type: text/plain; charset="us-ascii"
1390 1421 MIME-Version: 1.0
1391 1422 Content-Transfer-Encoding: 7bit
1392 1423 Subject: [PATCH 0 of 2] test
1393 1424 Message-Id: <patchbomb.60@*> (glob)
1425 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1394 1426 User-Agent: Mercurial-patchbomb/* (glob)
1395 1427 Date: Thu, 01 Jan 1970 00:01:00 +0000
1396 1428 From: quux
1397 1429 To: foo
1398 1430 Cc: bar
1399 1431
1400 1432
1401 1433 displaying [PATCH 1 of 2] a ...
1402 1434 Content-Type: text/plain; charset="us-ascii"
1403 1435 MIME-Version: 1.0
1404 1436 Content-Transfer-Encoding: 7bit
1405 1437 Subject: [PATCH 1 of 2] a
1406 1438 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1407 1439 X-Mercurial-Series-Index: 1
1408 1440 X-Mercurial-Series-Total: 2
1409 1441 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1410 1442 In-Reply-To: <patchbomb.60@*> (glob)
1411 1443 References: <patchbomb.60@*> (glob)
1444 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1412 1445 User-Agent: Mercurial-patchbomb/* (glob)
1413 1446 Date: Thu, 01 Jan 1970 00:01:01 +0000
1414 1447 From: quux
1415 1448 To: foo
1416 1449 Cc: bar
1417 1450
1418 1451 # HG changeset patch
1419 1452 # User test
1420 1453 # Date 1 0
1421 1454 # Thu Jan 01 00:00:01 1970 +0000
1422 1455 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1423 1456 # Parent 0000000000000000000000000000000000000000
1424 1457 a
1425 1458
1426 1459 diff -r 000000000000 -r 8580ff50825a a
1427 1460 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1428 1461 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1429 1462 @@ -0,0 +1,1 @@
1430 1463 +a
1431 1464
1432 1465 displaying [PATCH 2 of 2] b ...
1433 1466 Content-Type: text/plain; charset="us-ascii"
1434 1467 MIME-Version: 1.0
1435 1468 Content-Transfer-Encoding: 7bit
1436 1469 Subject: [PATCH 2 of 2] b
1437 1470 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1438 1471 X-Mercurial-Series-Index: 2
1439 1472 X-Mercurial-Series-Total: 2
1440 1473 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1441 1474 In-Reply-To: <patchbomb.60@*> (glob)
1442 1475 References: <patchbomb.60@*> (glob)
1476 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1443 1477 User-Agent: Mercurial-patchbomb/* (glob)
1444 1478 Date: Thu, 01 Jan 1970 00:01:02 +0000
1445 1479 From: quux
1446 1480 To: foo
1447 1481 Cc: bar
1448 1482
1449 1483 # HG changeset patch
1450 1484 # User test
1451 1485 # Date 2 0
1452 1486 # Thu Jan 01 00:00:02 1970 +0000
1453 1487 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1454 1488 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1455 1489 b
1456 1490
1457 1491 diff -r 8580ff50825a -r 97d72e5f12c7 b
1458 1492 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1459 1493 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1460 1494 @@ -0,0 +1,1 @@
1461 1495 +b
1462 1496
1463 1497
1464 1498 test reply-to via config:
1465 1499 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1466 1500 > --config patchbomb.reply-to='baz@example.com'
1467 1501 this patch series consists of 1 patches.
1468 1502
1469 1503
1470 1504 displaying [PATCH] test ...
1471 1505 Content-Type: text/plain; charset="us-ascii"
1472 1506 MIME-Version: 1.0
1473 1507 Content-Transfer-Encoding: 7bit
1474 1508 Subject: [PATCH] test
1475 1509 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1476 1510 X-Mercurial-Series-Index: 1
1477 1511 X-Mercurial-Series-Total: 1
1478 1512 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1513 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1479 1514 User-Agent: Mercurial-patchbomb/* (glob)
1480 1515 Date: Thu, 01 Jan 1970 00:01:00 +0000
1481 1516 From: quux
1482 1517 To: foo
1483 1518 Cc: bar
1484 1519 Reply-To: baz@example.com
1485 1520
1486 1521 # HG changeset patch
1487 1522 # User test
1488 1523 # Date 3 0
1489 1524 # Thu Jan 01 00:00:03 1970 +0000
1490 1525 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1491 1526 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1492 1527 c
1493 1528
1494 1529 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1495 1530 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1496 1531 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1497 1532 @@ -0,0 +1,1 @@
1498 1533 +c
1499 1534
1500 1535
1501 1536 test reply-to via command line:
1502 1537 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1503 1538 > --reply-to baz --reply-to fred
1504 1539 this patch series consists of 1 patches.
1505 1540
1506 1541
1507 1542 displaying [PATCH] test ...
1508 1543 Content-Type: text/plain; charset="us-ascii"
1509 1544 MIME-Version: 1.0
1510 1545 Content-Transfer-Encoding: 7bit
1511 1546 Subject: [PATCH] test
1512 1547 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1513 1548 X-Mercurial-Series-Index: 1
1514 1549 X-Mercurial-Series-Total: 1
1515 1550 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1551 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1516 1552 User-Agent: Mercurial-patchbomb/* (glob)
1517 1553 Date: Thu, 01 Jan 1970 00:01:00 +0000
1518 1554 From: quux
1519 1555 To: foo
1520 1556 Cc: bar
1521 1557 Reply-To: baz, fred
1522 1558
1523 1559 # HG changeset patch
1524 1560 # User test
1525 1561 # Date 3 0
1526 1562 # Thu Jan 01 00:00:03 1970 +0000
1527 1563 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1528 1564 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1529 1565 c
1530 1566
1531 1567 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1532 1568 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1533 1569 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1534 1570 @@ -0,0 +1,1 @@
1535 1571 +c
1536 1572
1537 1573
1538 1574 tagging csets:
1539 1575 $ hg tag -r0 zero zero.foo
1540 1576 $ hg tag -r1 one one.patch
1541 1577 $ hg tag -r2 two two.diff
1542 1578
1543 1579 test inline for single named patch:
1544 1580 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2
1545 1581 this patch series consists of 1 patches.
1546 1582
1547 1583
1548 1584 displaying [PATCH] test ...
1549 1585 Content-Type: multipart/mixed; boundary="===*" (glob)
1550 1586 MIME-Version: 1.0
1551 1587 Subject: [PATCH] test
1552 1588 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1553 1589 X-Mercurial-Series-Index: 1
1554 1590 X-Mercurial-Series-Total: 1
1555 1591 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1592 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1556 1593 User-Agent: Mercurial-patchbomb/* (glob)
1557 1594 Date: Thu, 01 Jan 1970 00:01:00 +0000
1558 1595 From: quux
1559 1596 To: foo
1560 1597 Cc: bar
1561 1598
1562 1599 --===* (glob)
1563 1600 Content-Type: text/x-patch; charset="us-ascii"
1564 1601 MIME-Version: 1.0
1565 1602 Content-Transfer-Encoding: 7bit
1566 1603 Content-Disposition: inline; filename=two.diff
1567 1604
1568 1605 # HG changeset patch
1569 1606 # User test
1570 1607 # Date 3 0
1571 1608 # Thu Jan 01 00:00:03 1970 +0000
1572 1609 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1573 1610 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1574 1611 c
1575 1612
1576 1613 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1577 1614 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1578 1615 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1579 1616 @@ -0,0 +1,1 @@
1580 1617 +c
1581 1618
1582 1619 --===*-- (glob)
1583 1620
1584 1621 test inline for multiple named/unnamed patches:
1585 1622 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1
1586 1623 this patch series consists of 2 patches.
1587 1624
1588 1625
1589 1626 Write the introductory message for the patch series.
1590 1627
1591 1628
1592 1629 displaying [PATCH 0 of 2] test ...
1593 1630 Content-Type: text/plain; charset="us-ascii"
1594 1631 MIME-Version: 1.0
1595 1632 Content-Transfer-Encoding: 7bit
1596 1633 Subject: [PATCH 0 of 2] test
1597 1634 Message-Id: <patchbomb.60@*> (glob)
1635 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1598 1636 User-Agent: Mercurial-patchbomb/* (glob)
1599 1637 Date: Thu, 01 Jan 1970 00:01:00 +0000
1600 1638 From: quux
1601 1639 To: foo
1602 1640 Cc: bar
1603 1641
1604 1642
1605 1643 displaying [PATCH 1 of 2] a ...
1606 1644 Content-Type: multipart/mixed; boundary="===*" (glob)
1607 1645 MIME-Version: 1.0
1608 1646 Subject: [PATCH 1 of 2] a
1609 1647 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1610 1648 X-Mercurial-Series-Index: 1
1611 1649 X-Mercurial-Series-Total: 2
1612 1650 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1613 1651 In-Reply-To: <patchbomb.60@*> (glob)
1614 1652 References: <patchbomb.60@*> (glob)
1653 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1615 1654 User-Agent: Mercurial-patchbomb/* (glob)
1616 1655 Date: Thu, 01 Jan 1970 00:01:01 +0000
1617 1656 From: quux
1618 1657 To: foo
1619 1658 Cc: bar
1620 1659
1621 1660 --===* (glob)
1622 1661 Content-Type: text/x-patch; charset="us-ascii"
1623 1662 MIME-Version: 1.0
1624 1663 Content-Transfer-Encoding: 7bit
1625 1664 Content-Disposition: inline; filename=t2-1.patch
1626 1665
1627 1666 # HG changeset patch
1628 1667 # User test
1629 1668 # Date 1 0
1630 1669 # Thu Jan 01 00:00:01 1970 +0000
1631 1670 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1632 1671 # Parent 0000000000000000000000000000000000000000
1633 1672 a
1634 1673
1635 1674 diff -r 000000000000 -r 8580ff50825a a
1636 1675 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1637 1676 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1638 1677 @@ -0,0 +1,1 @@
1639 1678 +a
1640 1679
1641 1680 --===*-- (glob)
1642 1681 displaying [PATCH 2 of 2] b ...
1643 1682 Content-Type: multipart/mixed; boundary="===*" (glob)
1644 1683 MIME-Version: 1.0
1645 1684 Subject: [PATCH 2 of 2] b
1646 1685 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1647 1686 X-Mercurial-Series-Index: 2
1648 1687 X-Mercurial-Series-Total: 2
1649 1688 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1650 1689 In-Reply-To: <patchbomb.60@*> (glob)
1651 1690 References: <patchbomb.60@*> (glob)
1691 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1652 1692 User-Agent: Mercurial-patchbomb/* (glob)
1653 1693 Date: Thu, 01 Jan 1970 00:01:02 +0000
1654 1694 From: quux
1655 1695 To: foo
1656 1696 Cc: bar
1657 1697
1658 1698 --===* (glob)
1659 1699 Content-Type: text/x-patch; charset="us-ascii"
1660 1700 MIME-Version: 1.0
1661 1701 Content-Transfer-Encoding: 7bit
1662 1702 Content-Disposition: inline; filename=one.patch
1663 1703
1664 1704 # HG changeset patch
1665 1705 # User test
1666 1706 # Date 2 0
1667 1707 # Thu Jan 01 00:00:02 1970 +0000
1668 1708 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1669 1709 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1670 1710 b
1671 1711
1672 1712 diff -r 8580ff50825a -r 97d72e5f12c7 b
1673 1713 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1674 1714 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1675 1715 @@ -0,0 +1,1 @@
1676 1716 +b
1677 1717
1678 1718 --===*-- (glob)
1679 1719
1680 1720
1681 1721 test inreplyto:
1682 1722 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1683 1723 > -r tip
1684 1724 this patch series consists of 1 patches.
1685 1725
1686 1726
1687 1727 displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
1688 1728 Content-Type: text/plain; charset="us-ascii"
1689 1729 MIME-Version: 1.0
1690 1730 Content-Transfer-Encoding: 7bit
1691 1731 Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
1692 1732 X-Mercurial-Node: 7aead2484924c445ad8ce2613df91f52f9e502ed
1693 1733 X-Mercurial-Series-Index: 1
1694 1734 X-Mercurial-Series-Total: 1
1695 1735 Message-Id: <7aead2484924c445ad8c.60@*> (glob)
1696 1736 In-Reply-To: <baz>
1697 1737 References: <baz>
1738 X-Mercurial-Series-Id: <baz>
1698 1739 User-Agent: Mercurial-patchbomb/* (glob)
1699 1740 Date: Thu, 01 Jan 1970 00:01:00 +0000
1700 1741 From: quux
1701 1742 To: foo
1702 1743 Cc: bar
1703 1744
1704 1745 # HG changeset patch
1705 1746 # User test
1706 1747 # Date 0 0
1707 1748 # Thu Jan 01 00:00:00 1970 +0000
1708 1749 # Node ID 7aead2484924c445ad8ce2613df91f52f9e502ed
1709 1750 # Parent 045ca29b1ea20e4940411e695e20e521f2f0f98e
1710 1751 Added tag two, two.diff for changeset ff2c9fa2018b
1711 1752
1712 1753 diff -r 045ca29b1ea2 -r 7aead2484924 .hgtags
1713 1754 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1714 1755 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1715 1756 @@ -2,3 +2,5 @@
1716 1757 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1717 1758 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1718 1759 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1719 1760 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1720 1761 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1721 1762
1722 1763 no intro message in non-interactive mode
1723 1764 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1724 1765 > -r 0:1
1725 1766 this patch series consists of 2 patches.
1726 1767
1727 1768 (optional) Subject: [PATCH 0 of 2]
1728 1769
1729 1770 displaying [PATCH 1 of 2] a ...
1730 1771 Content-Type: text/plain; charset="us-ascii"
1731 1772 MIME-Version: 1.0
1732 1773 Content-Transfer-Encoding: 7bit
1733 1774 Subject: [PATCH 1 of 2] a
1734 1775 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1735 1776 X-Mercurial-Series-Index: 1
1736 1777 X-Mercurial-Series-Total: 2
1737 1778 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
1738 1779 In-Reply-To: <baz>
1739 1780 References: <baz>
1781 X-Mercurial-Series-Id: <baz>
1740 1782 User-Agent: Mercurial-patchbomb/* (glob)
1741 1783 Date: Thu, 01 Jan 1970 00:01:00 +0000
1742 1784 From: quux
1743 1785 To: foo
1744 1786 Cc: bar
1745 1787
1746 1788 # HG changeset patch
1747 1789 # User test
1748 1790 # Date 1 0
1749 1791 # Thu Jan 01 00:00:01 1970 +0000
1750 1792 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1751 1793 # Parent 0000000000000000000000000000000000000000
1752 1794 a
1753 1795
1754 1796 diff -r 000000000000 -r 8580ff50825a a
1755 1797 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1756 1798 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1757 1799 @@ -0,0 +1,1 @@
1758 1800 +a
1759 1801
1760 1802 displaying [PATCH 2 of 2] b ...
1761 1803 Content-Type: text/plain; charset="us-ascii"
1762 1804 MIME-Version: 1.0
1763 1805 Content-Transfer-Encoding: 7bit
1764 1806 Subject: [PATCH 2 of 2] b
1765 1807 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1766 1808 X-Mercurial-Series-Index: 2
1767 1809 X-Mercurial-Series-Total: 2
1768 1810 Message-Id: <97d72e5f12c7e84f8506.61@*> (glob)
1769 1811 In-Reply-To: <baz>
1770 1812 References: <baz>
1813 X-Mercurial-Series-Id: <baz>
1771 1814 User-Agent: Mercurial-patchbomb/* (glob)
1772 1815 Date: Thu, 01 Jan 1970 00:01:01 +0000
1773 1816 From: quux
1774 1817 To: foo
1775 1818 Cc: bar
1776 1819
1777 1820 # HG changeset patch
1778 1821 # User test
1779 1822 # Date 2 0
1780 1823 # Thu Jan 01 00:00:02 1970 +0000
1781 1824 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1782 1825 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1783 1826 b
1784 1827
1785 1828 diff -r 8580ff50825a -r 97d72e5f12c7 b
1786 1829 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1787 1830 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1788 1831 @@ -0,0 +1,1 @@
1789 1832 +b
1790 1833
1791 1834
1792 1835
1793 1836
1794 1837 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1795 1838 > -s test -r 0:1
1796 1839 this patch series consists of 2 patches.
1797 1840
1798 1841
1799 1842 Write the introductory message for the patch series.
1800 1843
1801 1844
1802 1845 displaying [PATCH 0 of 2] test ...
1803 1846 Content-Type: text/plain; charset="us-ascii"
1804 1847 MIME-Version: 1.0
1805 1848 Content-Transfer-Encoding: 7bit
1806 1849 Subject: [PATCH 0 of 2] test
1807 1850 Message-Id: <patchbomb.60@*> (glob)
1808 1851 In-Reply-To: <baz>
1809 1852 References: <baz>
1853 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1810 1854 User-Agent: Mercurial-patchbomb/* (glob)
1811 1855 Date: Thu, 01 Jan 1970 00:01:00 +0000
1812 1856 From: quux
1813 1857 To: foo
1814 1858 Cc: bar
1815 1859
1816 1860
1817 1861 displaying [PATCH 1 of 2] a ...
1818 1862 Content-Type: text/plain; charset="us-ascii"
1819 1863 MIME-Version: 1.0
1820 1864 Content-Transfer-Encoding: 7bit
1821 1865 Subject: [PATCH 1 of 2] a
1822 1866 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1823 1867 X-Mercurial-Series-Index: 1
1824 1868 X-Mercurial-Series-Total: 2
1825 1869 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1826 1870 In-Reply-To: <patchbomb.60@*> (glob)
1827 1871 References: <patchbomb.60@*> (glob)
1872 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1828 1873 User-Agent: Mercurial-patchbomb/* (glob)
1829 1874 Date: Thu, 01 Jan 1970 00:01:01 +0000
1830 1875 From: quux
1831 1876 To: foo
1832 1877 Cc: bar
1833 1878
1834 1879 # HG changeset patch
1835 1880 # User test
1836 1881 # Date 1 0
1837 1882 # Thu Jan 01 00:00:01 1970 +0000
1838 1883 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1839 1884 # Parent 0000000000000000000000000000000000000000
1840 1885 a
1841 1886
1842 1887 diff -r 000000000000 -r 8580ff50825a a
1843 1888 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1844 1889 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1845 1890 @@ -0,0 +1,1 @@
1846 1891 +a
1847 1892
1848 1893 displaying [PATCH 2 of 2] b ...
1849 1894 Content-Type: text/plain; charset="us-ascii"
1850 1895 MIME-Version: 1.0
1851 1896 Content-Transfer-Encoding: 7bit
1852 1897 Subject: [PATCH 2 of 2] b
1853 1898 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1854 1899 X-Mercurial-Series-Index: 2
1855 1900 X-Mercurial-Series-Total: 2
1856 1901 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1857 1902 In-Reply-To: <patchbomb.60@*> (glob)
1858 1903 References: <patchbomb.60@*> (glob)
1904 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1859 1905 User-Agent: Mercurial-patchbomb/* (glob)
1860 1906 Date: Thu, 01 Jan 1970 00:01:02 +0000
1861 1907 From: quux
1862 1908 To: foo
1863 1909 Cc: bar
1864 1910
1865 1911 # HG changeset patch
1866 1912 # User test
1867 1913 # Date 2 0
1868 1914 # Thu Jan 01 00:00:02 1970 +0000
1869 1915 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1870 1916 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1871 1917 b
1872 1918
1873 1919 diff -r 8580ff50825a -r 97d72e5f12c7 b
1874 1920 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1875 1921 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1876 1922 @@ -0,0 +1,1 @@
1877 1923 +b
1878 1924
1879 1925
1880 1926 test single flag for single patch (and no warning when not mailing dirty rev):
1881 1927 $ hg up -qr1
1882 1928 $ echo dirt > a
1883 1929 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
1884 1930 > -r 2
1885 1931 this patch series consists of 1 patches.
1886 1932
1887 1933
1888 1934 displaying [PATCH fooFlag] test ...
1889 1935 Content-Type: text/plain; charset="us-ascii"
1890 1936 MIME-Version: 1.0
1891 1937 Content-Transfer-Encoding: 7bit
1892 1938 Subject: [PATCH fooFlag] test
1893 1939 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1894 1940 X-Mercurial-Series-Index: 1
1895 1941 X-Mercurial-Series-Total: 1
1896 1942 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1943 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1897 1944 User-Agent: Mercurial-patchbomb/* (glob)
1898 1945 Date: Thu, 01 Jan 1970 00:01:00 +0000
1899 1946 From: quux
1900 1947 To: foo
1901 1948 Cc: bar
1902 1949
1903 1950 # HG changeset patch
1904 1951 # User test
1905 1952 # Date 3 0
1906 1953 # Thu Jan 01 00:00:03 1970 +0000
1907 1954 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1908 1955 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1909 1956 c
1910 1957
1911 1958 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1912 1959 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1913 1960 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1914 1961 @@ -0,0 +1,1 @@
1915 1962 +c
1916 1963
1917 1964
1918 1965 test single flag for multiple patches (and warning when mailing dirty rev):
1919 1966 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
1920 1967 > -r 0:1
1921 1968 warning: working directory has uncommitted changes
1922 1969 this patch series consists of 2 patches.
1923 1970
1924 1971
1925 1972 Write the introductory message for the patch series.
1926 1973
1927 1974
1928 1975 displaying [PATCH 0 of 2 fooFlag] test ...
1929 1976 Content-Type: text/plain; charset="us-ascii"
1930 1977 MIME-Version: 1.0
1931 1978 Content-Transfer-Encoding: 7bit
1932 1979 Subject: [PATCH 0 of 2 fooFlag] test
1933 1980 Message-Id: <patchbomb.60@*> (glob)
1981 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1934 1982 User-Agent: Mercurial-patchbomb/* (glob)
1935 1983 Date: Thu, 01 Jan 1970 00:01:00 +0000
1936 1984 From: quux
1937 1985 To: foo
1938 1986 Cc: bar
1939 1987
1940 1988
1941 1989 displaying [PATCH 1 of 2 fooFlag] a ...
1942 1990 Content-Type: text/plain; charset="us-ascii"
1943 1991 MIME-Version: 1.0
1944 1992 Content-Transfer-Encoding: 7bit
1945 1993 Subject: [PATCH 1 of 2 fooFlag] a
1946 1994 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1947 1995 X-Mercurial-Series-Index: 1
1948 1996 X-Mercurial-Series-Total: 2
1949 1997 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1950 1998 In-Reply-To: <patchbomb.60@*> (glob)
1951 1999 References: <patchbomb.60@*> (glob)
2000 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1952 2001 User-Agent: Mercurial-patchbomb/* (glob)
1953 2002 Date: Thu, 01 Jan 1970 00:01:01 +0000
1954 2003 From: quux
1955 2004 To: foo
1956 2005 Cc: bar
1957 2006
1958 2007 # HG changeset patch
1959 2008 # User test
1960 2009 # Date 1 0
1961 2010 # Thu Jan 01 00:00:01 1970 +0000
1962 2011 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1963 2012 # Parent 0000000000000000000000000000000000000000
1964 2013 a
1965 2014
1966 2015 diff -r 000000000000 -r 8580ff50825a a
1967 2016 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1968 2017 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1969 2018 @@ -0,0 +1,1 @@
1970 2019 +a
1971 2020
1972 2021 displaying [PATCH 2 of 2 fooFlag] b ...
1973 2022 Content-Type: text/plain; charset="us-ascii"
1974 2023 MIME-Version: 1.0
1975 2024 Content-Transfer-Encoding: 7bit
1976 2025 Subject: [PATCH 2 of 2 fooFlag] b
1977 2026 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1978 2027 X-Mercurial-Series-Index: 2
1979 2028 X-Mercurial-Series-Total: 2
1980 2029 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1981 2030 In-Reply-To: <patchbomb.60@*> (glob)
1982 2031 References: <patchbomb.60@*> (glob)
2032 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
1983 2033 User-Agent: Mercurial-patchbomb/* (glob)
1984 2034 Date: Thu, 01 Jan 1970 00:01:02 +0000
1985 2035 From: quux
1986 2036 To: foo
1987 2037 Cc: bar
1988 2038
1989 2039 # HG changeset patch
1990 2040 # User test
1991 2041 # Date 2 0
1992 2042 # Thu Jan 01 00:00:02 1970 +0000
1993 2043 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1994 2044 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1995 2045 b
1996 2046
1997 2047 diff -r 8580ff50825a -r 97d72e5f12c7 b
1998 2048 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1999 2049 +++ b/b Thu Jan 01 00:00:02 1970 +0000
2000 2050 @@ -0,0 +1,1 @@
2001 2051 +b
2002 2052
2003 2053 $ hg revert --no-b a
2004 2054 $ hg up -q
2005 2055
2006 2056 test multiple flags for single patch:
2007 2057 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
2008 2058 > -c bar -s test -r 2
2009 2059 this patch series consists of 1 patches.
2010 2060
2011 2061
2012 2062 displaying [PATCH fooFlag barFlag] test ...
2013 2063 Content-Type: text/plain; charset="us-ascii"
2014 2064 MIME-Version: 1.0
2015 2065 Content-Transfer-Encoding: 7bit
2016 2066 Subject: [PATCH fooFlag barFlag] test
2017 2067 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2018 2068 X-Mercurial-Series-Index: 1
2019 2069 X-Mercurial-Series-Total: 1
2020 2070 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2071 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2021 2072 User-Agent: Mercurial-patchbomb/* (glob)
2022 2073 Date: Thu, 01 Jan 1970 00:01:00 +0000
2023 2074 From: quux
2024 2075 To: foo
2025 2076 Cc: bar
2026 2077
2027 2078 # HG changeset patch
2028 2079 # User test
2029 2080 # Date 3 0
2030 2081 # Thu Jan 01 00:00:03 1970 +0000
2031 2082 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2032 2083 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2033 2084 c
2034 2085
2035 2086 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2036 2087 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2037 2088 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2038 2089 @@ -0,0 +1,1 @@
2039 2090 +c
2040 2091
2041 2092
2042 2093 test multiple flags for multiple patches:
2043 2094 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
2044 2095 > -c bar -s test -r 0:1
2045 2096 this patch series consists of 2 patches.
2046 2097
2047 2098
2048 2099 Write the introductory message for the patch series.
2049 2100
2050 2101
2051 2102 displaying [PATCH 0 of 2 fooFlag barFlag] test ...
2052 2103 Content-Type: text/plain; charset="us-ascii"
2053 2104 MIME-Version: 1.0
2054 2105 Content-Transfer-Encoding: 7bit
2055 2106 Subject: [PATCH 0 of 2 fooFlag barFlag] test
2056 2107 Message-Id: <patchbomb.60@*> (glob)
2108 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
2057 2109 User-Agent: Mercurial-patchbomb/* (glob)
2058 2110 Date: Thu, 01 Jan 1970 00:01:00 +0000
2059 2111 From: quux
2060 2112 To: foo
2061 2113 Cc: bar
2062 2114
2063 2115
2064 2116 displaying [PATCH 1 of 2 fooFlag barFlag] a ...
2065 2117 Content-Type: text/plain; charset="us-ascii"
2066 2118 MIME-Version: 1.0
2067 2119 Content-Transfer-Encoding: 7bit
2068 2120 Subject: [PATCH 1 of 2 fooFlag barFlag] a
2069 2121 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2070 2122 X-Mercurial-Series-Index: 1
2071 2123 X-Mercurial-Series-Total: 2
2072 2124 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
2073 2125 In-Reply-To: <patchbomb.60@*> (glob)
2074 2126 References: <patchbomb.60@*> (glob)
2127 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
2075 2128 User-Agent: Mercurial-patchbomb/* (glob)
2076 2129 Date: Thu, 01 Jan 1970 00:01:01 +0000
2077 2130 From: quux
2078 2131 To: foo
2079 2132 Cc: bar
2080 2133
2081 2134 # HG changeset patch
2082 2135 # User test
2083 2136 # Date 1 0
2084 2137 # Thu Jan 01 00:00:01 1970 +0000
2085 2138 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2086 2139 # Parent 0000000000000000000000000000000000000000
2087 2140 a
2088 2141
2089 2142 diff -r 000000000000 -r 8580ff50825a a
2090 2143 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2091 2144 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2092 2145 @@ -0,0 +1,1 @@
2093 2146 +a
2094 2147
2095 2148 displaying [PATCH 2 of 2 fooFlag barFlag] b ...
2096 2149 Content-Type: text/plain; charset="us-ascii"
2097 2150 MIME-Version: 1.0
2098 2151 Content-Transfer-Encoding: 7bit
2099 2152 Subject: [PATCH 2 of 2 fooFlag barFlag] b
2100 2153 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2101 2154 X-Mercurial-Series-Index: 2
2102 2155 X-Mercurial-Series-Total: 2
2103 2156 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
2104 2157 In-Reply-To: <patchbomb.60@*> (glob)
2105 2158 References: <patchbomb.60@*> (glob)
2159 X-Mercurial-Series-Id: <patchbomb.60@*> (glob)
2106 2160 User-Agent: Mercurial-patchbomb/* (glob)
2107 2161 Date: Thu, 01 Jan 1970 00:01:02 +0000
2108 2162 From: quux
2109 2163 To: foo
2110 2164 Cc: bar
2111 2165
2112 2166 # HG changeset patch
2113 2167 # User test
2114 2168 # Date 2 0
2115 2169 # Thu Jan 01 00:00:02 1970 +0000
2116 2170 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2117 2171 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
2118 2172 b
2119 2173
2120 2174 diff -r 8580ff50825a -r 97d72e5f12c7 b
2121 2175 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2122 2176 +++ b/b Thu Jan 01 00:00:02 1970 +0000
2123 2177 @@ -0,0 +1,1 @@
2124 2178 +b
2125 2179
2126 2180
2127 2181 test multi-address parsing:
2128 2182 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
2129 2183 > -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
2130 2184 > --config email.bcc='"Quux, A." <quux>'
2131 2185 this patch series consists of 1 patches.
2132 2186
2133 2187
2134 2188 sending [PATCH] test ...
2135 2189 $ cat < tmp.mbox
2136 2190 From quux ... ... .. ..:..:.. .... (re)
2137 2191 Content-Type: text/plain; charset="us-ascii"
2138 2192 MIME-Version: 1.0
2139 2193 Content-Transfer-Encoding: 7bit
2140 2194 Subject: [PATCH] test
2141 2195 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2142 2196 X-Mercurial-Series-Index: 1
2143 2197 X-Mercurial-Series-Total: 1
2144 2198 Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2199 X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2145 2200 User-Agent: Mercurial-patchbomb/* (glob)
2146 2201 Date: Tue, 01 Jan 1980 00:01:00 +0000
2147 2202 From: quux
2148 2203 To: spam <spam>, eggs, toast
2149 2204 Cc: foo, bar@example.com, "A, B <>" <a@example.com>
2150 2205 Bcc: "Quux, A." <quux>
2151 2206
2152 2207 # HG changeset patch
2153 2208 # User test
2154 2209 # Date 1 0
2155 2210 # Thu Jan 01 00:00:01 1970 +0000
2156 2211 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2157 2212 # Parent 0000000000000000000000000000000000000000
2158 2213 a
2159 2214
2160 2215 diff -r 000000000000 -r 8580ff50825a a
2161 2216 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2162 2217 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2163 2218 @@ -0,0 +1,1 @@
2164 2219 +a
2165 2220
2166 2221
2167 2222
2168 2223 test multi-byte domain parsing:
2169 2224 $ UUML=`python -c 'import sys; sys.stdout.write("\374")'`
2170 2225 $ HGENCODING=iso-8859-1
2171 2226 $ export HGENCODING
2172 2227 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" -s test -r 0
2173 2228 this patch series consists of 1 patches.
2174 2229
2175 2230 Cc:
2176 2231
2177 2232 sending [PATCH] test ...
2178 2233
2179 2234 $ cat tmp.mbox
2180 2235 From quux ... ... .. ..:..:.. .... (re)
2181 2236 Content-Type: text/plain; charset="us-ascii"
2182 2237 MIME-Version: 1.0
2183 2238 Content-Transfer-Encoding: 7bit
2184 2239 Subject: [PATCH] test
2185 2240 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2186 2241 X-Mercurial-Series-Index: 1
2187 2242 X-Mercurial-Series-Total: 1
2188 2243 Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2244 X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2189 2245 User-Agent: Mercurial-patchbomb/* (glob)
2190 2246 Date: Tue, 01 Jan 1980 00:01:00 +0000
2191 2247 From: quux
2192 2248 To: bar@xn--nicode-2ya.com
2193 2249
2194 2250 # HG changeset patch
2195 2251 # User test
2196 2252 # Date 1 0
2197 2253 # Thu Jan 01 00:00:01 1970 +0000
2198 2254 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2199 2255 # Parent 0000000000000000000000000000000000000000
2200 2256 a
2201 2257
2202 2258 diff -r 000000000000 -r 8580ff50825a a
2203 2259 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2204 2260 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2205 2261 @@ -0,0 +1,1 @@
2206 2262 +a
2207 2263
2208 2264
2209 2265
2210 2266 test outgoing:
2211 2267 $ hg up 1
2212 2268 0 files updated, 0 files merged, 6 files removed, 0 files unresolved
2213 2269
2214 2270 $ hg branch test
2215 2271 marked working directory as branch test
2216 2272 (branches are permanent and global, did you want a bookmark?)
2217 2273
2218 2274 $ echo d > d
2219 2275 $ hg add d
2220 2276 $ hg ci -md -d '4 0'
2221 2277 $ echo d >> d
2222 2278 $ hg ci -mdd -d '5 0'
2223 2279 $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
2224 2280 @ 10:3b6f1ec9dde9 dd
2225 2281 |
2226 2282 o 9:2f9fa9b998c5 d
2227 2283 |
2228 2284 | o 8:7aead2484924 Added tag two, two.diff for changeset ff2c9fa2018b
2229 2285 | |
2230 2286 | o 7:045ca29b1ea2 Added tag one, one.patch for changeset 97d72e5f12c7
2231 2287 | |
2232 2288 | o 6:5d5ef15dfe5e Added tag zero, zero.foo for changeset 8580ff50825a
2233 2289 | |
2234 2290 | o 5:240fb913fc1b isolatin 8-bit encoding
2235 2291 | |
2236 2292 | o 4:a2ea8fc83dd8 long line
2237 2293 | |
2238 2294 | o 3:909a00e13e9d utf-8 content
2239 2295 | |
2240 2296 | o 2:ff2c9fa2018b c
2241 2297 |/
2242 2298 o 1:97d72e5f12c7 b
2243 2299 |
2244 2300 o 0:8580ff50825a a
2245 2301
2246 2302 $ hg phase --force --secret -r 10
2247 2303 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t -r 'rev(10) or rev(6)'
2248 2304 comparing with ../t
2249 2305 From [test]: test
2250 2306 this patch series consists of 6 patches.
2251 2307
2252 2308
2253 2309 Write the introductory message for the patch series.
2254 2310
2255 2311 Cc:
2256 2312
2257 2313 displaying [PATCH 0 of 6] test ...
2258 2314 Content-Type: text/plain; charset="us-ascii"
2259 2315 MIME-Version: 1.0
2260 2316 Content-Transfer-Encoding: 7bit
2261 2317 Subject: [PATCH 0 of 6] test
2262 2318 Message-Id: <patchbomb.315532860@*> (glob)
2319 X-Mercurial-Series-Id: <patchbomb.315532860@*> (glob)
2263 2320 User-Agent: Mercurial-patchbomb/* (glob)
2264 2321 Date: Tue, 01 Jan 1980 00:01:00 +0000
2265 2322 From: test
2266 2323 To: foo
2267 2324
2268 2325
2269 2326 displaying [PATCH 1 of 6] c ...
2270 2327 Content-Type: text/plain; charset="us-ascii"
2271 2328 MIME-Version: 1.0
2272 2329 Content-Transfer-Encoding: 7bit
2273 2330 Subject: [PATCH 1 of 6] c
2274 2331 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2275 2332 X-Mercurial-Series-Index: 1
2276 2333 X-Mercurial-Series-Total: 6
2277 2334 Message-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2278 2335 In-Reply-To: <patchbomb.315532860@*> (glob)
2279 2336 References: <patchbomb.315532860@*> (glob)
2337 X-Mercurial-Series-Id: <patchbomb.315532860@*> (glob)
2280 2338 User-Agent: Mercurial-patchbomb/* (glob)
2281 2339 Date: Tue, 01 Jan 1980 00:01:01 +0000
2282 2340 From: test
2283 2341 To: foo
2284 2342
2285 2343 # HG changeset patch
2286 2344 # User test
2287 2345 # Date 3 0
2288 2346 # Thu Jan 01 00:00:03 1970 +0000
2289 2347 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2290 2348 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2291 2349 c
2292 2350
2293 2351 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2294 2352 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2295 2353 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2296 2354 @@ -0,0 +1,1 @@
2297 2355 +c
2298 2356
2299 2357 displaying [PATCH 2 of 6] utf-8 content ...
2300 2358 Content-Type: text/plain; charset="us-ascii"
2301 2359 MIME-Version: 1.0
2302 2360 Content-Transfer-Encoding: 8bit
2303 2361 Subject: [PATCH 2 of 6] utf-8 content
2304 2362 X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
2305 2363 X-Mercurial-Series-Index: 2
2306 2364 X-Mercurial-Series-Total: 6
2307 2365 Message-Id: <909a00e13e9d78b575ae.315532862@*> (glob)
2308 2366 In-Reply-To: <patchbomb.315532860@*> (glob)
2309 2367 References: <patchbomb.315532860@*> (glob)
2368 X-Mercurial-Series-Id: <patchbomb.315532860@*> (glob)
2310 2369 User-Agent: Mercurial-patchbomb/* (glob)
2311 2370 Date: Tue, 01 Jan 1980 00:01:02 +0000
2312 2371 From: test
2313 2372 To: foo
2314 2373
2315 2374 # HG changeset patch
2316 2375 # User test
2317 2376 # Date 4 0
2318 2377 # Thu Jan 01 00:00:04 1970 +0000
2319 2378 # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
2320 2379 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
2321 2380 utf-8 content
2322 2381
2323 2382 diff -r ff2c9fa2018b -r 909a00e13e9d description
2324 2383 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2325 2384 +++ b/description Thu Jan 01 00:00:04 1970 +0000
2326 2385 @@ -0,0 +1,3 @@
2327 2386 +a multiline
2328 2387 +
2329 2388 +description
2330 2389 diff -r ff2c9fa2018b -r 909a00e13e9d utf
2331 2390 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2332 2391 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
2333 2392 @@ -0,0 +1,1 @@
2334 2393 +h\xc3\xb6mma! (esc)
2335 2394
2336 2395 displaying [PATCH 3 of 6] long line ...
2337 2396 Content-Type: text/plain; charset="us-ascii"
2338 2397 MIME-Version: 1.0
2339 2398 Content-Transfer-Encoding: quoted-printable
2340 2399 Subject: [PATCH 3 of 6] long line
2341 2400 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
2342 2401 X-Mercurial-Series-Index: 3
2343 2402 X-Mercurial-Series-Total: 6
2344 2403 Message-Id: <a2ea8fc83dd8b93cfd86.315532863@*> (glob)
2345 2404 In-Reply-To: <patchbomb.315532860@*> (glob)
2346 2405 References: <patchbomb.315532860@*> (glob)
2406 X-Mercurial-Series-Id: <patchbomb.315532860@*> (glob)
2347 2407 User-Agent: Mercurial-patchbomb/* (glob)
2348 2408 Date: Tue, 01 Jan 1980 00:01:03 +0000
2349 2409 From: test
2350 2410 To: foo
2351 2411
2352 2412 # HG changeset patch
2353 2413 # User test
2354 2414 # Date 4 0
2355 2415 # Thu Jan 01 00:00:04 1970 +0000
2356 2416 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
2357 2417 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
2358 2418 long line
2359 2419
2360 2420 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
2361 2421 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2362 2422 +++ b/long Thu Jan 01 00:00:04 1970 +0000
2363 2423 @@ -0,0 +1,4 @@
2364 2424 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2365 2425 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2366 2426 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2367 2427 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2368 2428 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2369 2429 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2370 2430 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2371 2431 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2372 2432 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2373 2433 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2374 2434 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2375 2435 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2376 2436 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2377 2437 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2378 2438 +foo
2379 2439 +
2380 2440 +bar
2381 2441
2382 2442 displaying [PATCH 4 of 6] isolatin 8-bit encoding ...
2383 2443 Content-Type: text/plain; charset="us-ascii"
2384 2444 MIME-Version: 1.0
2385 2445 Content-Transfer-Encoding: 8bit
2386 2446 Subject: [PATCH 4 of 6] isolatin 8-bit encoding
2387 2447 X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
2388 2448 X-Mercurial-Series-Index: 4
2389 2449 X-Mercurial-Series-Total: 6
2390 2450 Message-Id: <240fb913fc1b7ff15ddb.315532864@*> (glob)
2391 2451 In-Reply-To: <patchbomb.315532860@*> (glob)
2392 2452 References: <patchbomb.315532860@*> (glob)
2453 X-Mercurial-Series-Id: <patchbomb.315532860@*> (glob)
2393 2454 User-Agent: Mercurial-patchbomb/* (glob)
2394 2455 Date: Tue, 01 Jan 1980 00:01:04 +0000
2395 2456 From: test
2396 2457 To: foo
2397 2458
2398 2459 # HG changeset patch
2399 2460 # User test
2400 2461 # Date 5 0
2401 2462 # Thu Jan 01 00:00:05 1970 +0000
2402 2463 # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
2403 2464 # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
2404 2465 isolatin 8-bit encoding
2405 2466
2406 2467 diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin
2407 2468 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2408 2469 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
2409 2470 @@ -0,0 +1,1 @@
2410 2471 +h\xf6mma! (esc)
2411 2472
2412 2473 displaying [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a ...
2413 2474 Content-Type: text/plain; charset="us-ascii"
2414 2475 MIME-Version: 1.0
2415 2476 Content-Transfer-Encoding: 7bit
2416 2477 Subject: [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a
2417 2478 X-Mercurial-Node: 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433
2418 2479 X-Mercurial-Series-Index: 5
2419 2480 X-Mercurial-Series-Total: 6
2420 2481 Message-Id: <5d5ef15dfe5e7bd3a4ee.315532865@*> (glob)
2421 2482 In-Reply-To: <patchbomb.315532860@*> (glob)
2422 2483 References: <patchbomb.315532860@*> (glob)
2484 X-Mercurial-Series-Id: <patchbomb.315532860@*> (glob)
2423 2485 User-Agent: Mercurial-patchbomb/* (glob)
2424 2486 Date: Tue, 01 Jan 1980 00:01:05 +0000
2425 2487 From: test
2426 2488 To: foo
2427 2489
2428 2490 # HG changeset patch
2429 2491 # User test
2430 2492 # Date 0 0
2431 2493 # Thu Jan 01 00:00:00 1970 +0000
2432 2494 # Node ID 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433
2433 2495 # Parent 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
2434 2496 Added tag zero, zero.foo for changeset 8580ff50825a
2435 2497
2436 2498 diff -r 240fb913fc1b -r 5d5ef15dfe5e .hgtags
2437 2499 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2438 2500 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2439 2501 @@ -0,0 +1,2 @@
2440 2502 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero
2441 2503 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2442 2504
2443 2505 displaying [PATCH 6 of 6] d ...
2444 2506 Content-Type: text/plain; charset="us-ascii"
2445 2507 MIME-Version: 1.0
2446 2508 Content-Transfer-Encoding: 7bit
2447 2509 Subject: [PATCH 6 of 6] d
2448 2510 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2449 2511 X-Mercurial-Series-Index: 6
2450 2512 X-Mercurial-Series-Total: 6
2451 2513 Message-Id: <2f9fa9b998c5fe3ac2bd.315532866@*> (glob)
2452 2514 In-Reply-To: <patchbomb.315532860@*> (glob)
2453 2515 References: <patchbomb.315532860@*> (glob)
2516 X-Mercurial-Series-Id: <patchbomb.315532860@*> (glob)
2454 2517 User-Agent: Mercurial-patchbomb/* (glob)
2455 2518 Date: Tue, 01 Jan 1980 00:01:06 +0000
2456 2519 From: test
2457 2520 To: foo
2458 2521
2459 2522 # HG changeset patch
2460 2523 # User test
2461 2524 # Date 4 0
2462 2525 # Thu Jan 01 00:00:04 1970 +0000
2463 2526 # Branch test
2464 2527 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2465 2528 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2466 2529 d
2467 2530
2468 2531 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2469 2532 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2470 2533 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2471 2534 @@ -0,0 +1,1 @@
2472 2535 +d
2473 2536
2474 2537
2475 2538 dest#branch URIs:
2476 2539 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test
2477 2540 comparing with ../t
2478 2541 From [test]: test
2479 2542 this patch series consists of 1 patches.
2480 2543
2481 2544 Cc:
2482 2545
2483 2546 displaying [PATCH] test ...
2484 2547 Content-Type: text/plain; charset="us-ascii"
2485 2548 MIME-Version: 1.0
2486 2549 Content-Transfer-Encoding: 7bit
2487 2550 Subject: [PATCH] test
2488 2551 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2489 2552 X-Mercurial-Series-Index: 1
2490 2553 X-Mercurial-Series-Total: 1
2491 2554 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob)
2555 X-Mercurial-Series-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob)
2492 2556 User-Agent: Mercurial-patchbomb/* (glob)
2493 2557 Date: Tue, 01 Jan 1980 00:01:00 +0000
2494 2558 From: test
2495 2559 To: foo
2496 2560
2497 2561 # HG changeset patch
2498 2562 # User test
2499 2563 # Date 4 0
2500 2564 # Thu Jan 01 00:00:04 1970 +0000
2501 2565 # Branch test
2502 2566 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2503 2567 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2504 2568 d
2505 2569
2506 2570 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2507 2571 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2508 2572 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2509 2573 @@ -0,0 +1,1 @@
2510 2574 +d
2511 2575
2512 2576
2513 2577 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now