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