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