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