##// END OF EJS Templates
patchbomb: use `get_unique_pull_path`...
marmoute -
r47700:a48f15f1 default
parent child Browse files
Show More
@@ -1,1001 +1,1001 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 commands.bundle(ui, repo, tmpfn, dest, **opts)
385 commands.bundle(ui, repo, tmpfn, dest, **opts)
386 return util.readfile(tmpfn)
386 return util.readfile(tmpfn)
387 finally:
387 finally:
388 try:
388 try:
389 os.unlink(tmpfn)
389 os.unlink(tmpfn)
390 except OSError:
390 except OSError:
391 pass
391 pass
392 os.rmdir(tmpdir)
392 os.rmdir(tmpdir)
393
393
394
394
395 def _getdescription(repo, defaultbody, sender, **opts):
395 def _getdescription(repo, defaultbody, sender, **opts):
396 """obtain the body of the introduction message and return it
396 """obtain the body of the introduction message and return it
397
397
398 This is also used for the body of email with an attached bundle.
398 This is also used for the body of email with an attached bundle.
399
399
400 The body can be obtained either from the command line option or entered by
400 The body can be obtained either from the command line option or entered by
401 the user through the editor.
401 the user through the editor.
402 """
402 """
403 ui = repo.ui
403 ui = repo.ui
404 if opts.get('desc'):
404 if opts.get('desc'):
405 body = open(opts.get('desc')).read()
405 body = open(opts.get('desc')).read()
406 else:
406 else:
407 ui.write(
407 ui.write(
408 _(b'\nWrite the introductory message for the patch series.\n\n')
408 _(b'\nWrite the introductory message for the patch series.\n\n')
409 )
409 )
410 body = ui.edit(
410 body = ui.edit(
411 defaultbody, sender, repopath=repo.path, action=b'patchbombbody'
411 defaultbody, sender, repopath=repo.path, action=b'patchbombbody'
412 )
412 )
413 # Save series description in case sendmail fails
413 # Save series description in case sendmail fails
414 msgfile = repo.vfs(b'last-email.txt', b'wb')
414 msgfile = repo.vfs(b'last-email.txt', b'wb')
415 msgfile.write(body)
415 msgfile.write(body)
416 msgfile.close()
416 msgfile.close()
417 return body
417 return body
418
418
419
419
420 def _getbundlemsgs(repo, sender, bundle, **opts):
420 def _getbundlemsgs(repo, sender, bundle, **opts):
421 """Get the full email for sending a given bundle
421 """Get the full email for sending a given bundle
422
422
423 This function returns a list of "email" tuples (subject, content, None).
423 This function returns a list of "email" tuples (subject, content, None).
424 The list is always one message long in that case.
424 The list is always one message long in that case.
425 """
425 """
426 ui = repo.ui
426 ui = repo.ui
427 _charsets = mail._charsets(ui)
427 _charsets = mail._charsets(ui)
428 subj = opts.get('subject') or prompt(
428 subj = opts.get('subject') or prompt(
429 ui, b'Subject:', b'A bundle for your repository'
429 ui, b'Subject:', b'A bundle for your repository'
430 )
430 )
431
431
432 body = _getdescription(repo, b'', sender, **opts)
432 body = _getdescription(repo, b'', sender, **opts)
433 msg = emimemultipart.MIMEMultipart()
433 msg = emimemultipart.MIMEMultipart()
434 if body:
434 if body:
435 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
435 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
436 datapart = emimebase.MIMEBase('application', 'x-mercurial-bundle')
436 datapart = emimebase.MIMEBase('application', 'x-mercurial-bundle')
437 datapart.set_payload(bundle)
437 datapart.set_payload(bundle)
438 bundlename = b'%s.hg' % opts.get('bundlename', b'bundle')
438 bundlename = b'%s.hg' % opts.get('bundlename', b'bundle')
439 datapart.add_header(
439 datapart.add_header(
440 'Content-Disposition',
440 'Content-Disposition',
441 'attachment',
441 'attachment',
442 filename=encoding.strfromlocal(bundlename),
442 filename=encoding.strfromlocal(bundlename),
443 )
443 )
444 emailencoders.encode_base64(datapart)
444 emailencoders.encode_base64(datapart)
445 msg.attach(datapart)
445 msg.attach(datapart)
446 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
446 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
447 return [(msg, subj, None)]
447 return [(msg, subj, None)]
448
448
449
449
450 def _makeintro(repo, sender, revs, patches, **opts):
450 def _makeintro(repo, sender, revs, patches, **opts):
451 """make an introduction email, asking the user for content if needed
451 """make an introduction email, asking the user for content if needed
452
452
453 email is returned as (subject, body, cumulative-diffstat)"""
453 email is returned as (subject, body, cumulative-diffstat)"""
454 ui = repo.ui
454 ui = repo.ui
455 _charsets = mail._charsets(ui)
455 _charsets = mail._charsets(ui)
456
456
457 # use the last revision which is likely to be a bookmarked head
457 # use the last revision which is likely to be a bookmarked head
458 prefix = _formatprefix(
458 prefix = _formatprefix(
459 ui, repo, revs.last(), opts.get('flag'), 0, len(patches), numbered=True
459 ui, repo, revs.last(), opts.get('flag'), 0, len(patches), numbered=True
460 )
460 )
461 subj = opts.get('subject') or prompt(
461 subj = opts.get('subject') or prompt(
462 ui, b'(optional) Subject: ', rest=prefix, default=b''
462 ui, b'(optional) Subject: ', rest=prefix, default=b''
463 )
463 )
464 if not subj:
464 if not subj:
465 return None # skip intro if the user doesn't bother
465 return None # skip intro if the user doesn't bother
466
466
467 subj = prefix + b' ' + subj
467 subj = prefix + b' ' + subj
468
468
469 body = b''
469 body = b''
470 if opts.get('diffstat'):
470 if opts.get('diffstat'):
471 # generate a cumulative diffstat of the whole patch series
471 # generate a cumulative diffstat of the whole patch series
472 diffstat = patch.diffstat(sum(patches, []))
472 diffstat = patch.diffstat(sum(patches, []))
473 body = b'\n' + diffstat
473 body = b'\n' + diffstat
474 else:
474 else:
475 diffstat = None
475 diffstat = None
476
476
477 body = _getdescription(repo, body, sender, **opts)
477 body = _getdescription(repo, body, sender, **opts)
478 msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
478 msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
479 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
479 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
480 return (msg, subj, diffstat)
480 return (msg, subj, diffstat)
481
481
482
482
483 def _getpatchmsgs(repo, sender, revs, patchnames=None, **opts):
483 def _getpatchmsgs(repo, sender, revs, patchnames=None, **opts):
484 """return a list of emails from a list of patches
484 """return a list of emails from a list of patches
485
485
486 This involves introduction message creation if necessary.
486 This involves introduction message creation if necessary.
487
487
488 This function returns a list of "email" tuples (subject, content, None).
488 This function returns a list of "email" tuples (subject, content, None).
489 """
489 """
490 bytesopts = pycompat.byteskwargs(opts)
490 bytesopts = pycompat.byteskwargs(opts)
491 ui = repo.ui
491 ui = repo.ui
492 _charsets = mail._charsets(ui)
492 _charsets = mail._charsets(ui)
493 patches = list(_getpatches(repo, revs, **opts))
493 patches = list(_getpatches(repo, revs, **opts))
494 msgs = []
494 msgs = []
495
495
496 ui.write(_(b'this patch series consists of %d patches.\n\n') % len(patches))
496 ui.write(_(b'this patch series consists of %d patches.\n\n') % len(patches))
497
497
498 # build the intro message, or skip it if the user declines
498 # build the intro message, or skip it if the user declines
499 if introwanted(ui, bytesopts, len(patches)):
499 if introwanted(ui, bytesopts, len(patches)):
500 msg = _makeintro(repo, sender, revs, patches, **opts)
500 msg = _makeintro(repo, sender, revs, patches, **opts)
501 if msg:
501 if msg:
502 msgs.append(msg)
502 msgs.append(msg)
503
503
504 # are we going to send more than one message?
504 # are we going to send more than one message?
505 numbered = len(msgs) + len(patches) > 1
505 numbered = len(msgs) + len(patches) > 1
506
506
507 # now generate the actual patch messages
507 # now generate the actual patch messages
508 name = None
508 name = None
509 assert len(revs) == len(patches)
509 assert len(revs) == len(patches)
510 for i, (r, p) in enumerate(zip(revs, patches)):
510 for i, (r, p) in enumerate(zip(revs, patches)):
511 if patchnames:
511 if patchnames:
512 name = patchnames[i]
512 name = patchnames[i]
513 msg = makepatch(
513 msg = makepatch(
514 ui,
514 ui,
515 repo,
515 repo,
516 r,
516 r,
517 p,
517 p,
518 bytesopts,
518 bytesopts,
519 _charsets,
519 _charsets,
520 i + 1,
520 i + 1,
521 len(patches),
521 len(patches),
522 numbered,
522 numbered,
523 name,
523 name,
524 )
524 )
525 msgs.append(msg)
525 msgs.append(msg)
526
526
527 return msgs
527 return msgs
528
528
529
529
530 def _getoutgoing(repo, dest, revs):
530 def _getoutgoing(repo, dest, revs):
531 '''Return the revisions present locally but not in dest'''
531 '''Return the revisions present locally but not in dest'''
532 ui = repo.ui
532 ui = repo.ui
533 url = ui.expandpath(dest or b'default-push', dest or b'default')
533 paths = urlutil.get_push_paths(repo, ui, [dest])
534 url = urlutil.parseurl(url)[0]
534 safe_paths = [urlutil.hidepassword(p.rawloc) for p in paths]
535 ui.status(_(b'comparing with %s\n') % urlutil.hidepassword(url))
535 ui.status(_(b'comparing with %s\n') % b','.join(safe_paths))
536
536
537 revs = [r for r in revs if r >= 0]
537 revs = [r for r in revs if r >= 0]
538 if not revs:
538 if not revs:
539 revs = [repo.changelog.tiprev()]
539 revs = [repo.changelog.tiprev()]
540 revs = repo.revs(b'outgoing(%s) and ::%ld', dest or b'', revs)
540 revs = repo.revs(b'outgoing(%s) and ::%ld', dest or b'', revs)
541 if not revs:
541 if not revs:
542 ui.status(_(b"no changes found\n"))
542 ui.status(_(b"no changes found\n"))
543 return revs
543 return revs
544
544
545
545
546 def _msgid(node, timestamp):
546 def _msgid(node, timestamp):
547 try:
547 try:
548 hostname = encoding.strfromlocal(encoding.environ[b'HGHOSTNAME'])
548 hostname = encoding.strfromlocal(encoding.environ[b'HGHOSTNAME'])
549 except KeyError:
549 except KeyError:
550 hostname = socket.getfqdn()
550 hostname = socket.getfqdn()
551 return '<%s.%d@%s>' % (node, timestamp, hostname)
551 return '<%s.%d@%s>' % (node, timestamp, hostname)
552
552
553
553
554 emailopts = [
554 emailopts = [
555 (b'', b'body', None, _(b'send patches as inline message text (default)')),
555 (b'', b'body', None, _(b'send patches as inline message text (default)')),
556 (b'a', b'attach', None, _(b'send patches as attachments')),
556 (b'a', b'attach', None, _(b'send patches as attachments')),
557 (b'i', b'inline', None, _(b'send patches as inline attachments')),
557 (b'i', b'inline', None, _(b'send patches as inline attachments')),
558 (
558 (
559 b'',
559 b'',
560 b'bcc',
560 b'bcc',
561 [],
561 [],
562 _(b'email addresses of blind carbon copy recipients'),
562 _(b'email addresses of blind carbon copy recipients'),
563 _(b'EMAIL'),
563 _(b'EMAIL'),
564 ),
564 ),
565 (b'c', b'cc', [], _(b'email addresses of copy recipients'), _(b'EMAIL')),
565 (b'c', b'cc', [], _(b'email addresses of copy recipients'), _(b'EMAIL')),
566 (b'', b'confirm', None, _(b'ask for confirmation before sending')),
566 (b'', b'confirm', None, _(b'ask for confirmation before sending')),
567 (b'd', b'diffstat', None, _(b'add diffstat output to messages')),
567 (b'd', b'diffstat', None, _(b'add diffstat output to messages')),
568 (
568 (
569 b'',
569 b'',
570 b'date',
570 b'date',
571 b'',
571 b'',
572 _(b'use the given date as the sending date'),
572 _(b'use the given date as the sending date'),
573 _(b'DATE'),
573 _(b'DATE'),
574 ),
574 ),
575 (
575 (
576 b'',
576 b'',
577 b'desc',
577 b'desc',
578 b'',
578 b'',
579 _(b'use the given file as the series description'),
579 _(b'use the given file as the series description'),
580 _(b'FILE'),
580 _(b'FILE'),
581 ),
581 ),
582 (b'f', b'from', b'', _(b'email address of sender'), _(b'EMAIL')),
582 (b'f', b'from', b'', _(b'email address of sender'), _(b'EMAIL')),
583 (b'n', b'test', None, _(b'print messages that would be sent')),
583 (b'n', b'test', None, _(b'print messages that would be sent')),
584 (
584 (
585 b'm',
585 b'm',
586 b'mbox',
586 b'mbox',
587 b'',
587 b'',
588 _(b'write messages to mbox file instead of sending them'),
588 _(b'write messages to mbox file instead of sending them'),
589 _(b'FILE'),
589 _(b'FILE'),
590 ),
590 ),
591 (
591 (
592 b'',
592 b'',
593 b'reply-to',
593 b'reply-to',
594 [],
594 [],
595 _(b'email addresses replies should be sent to'),
595 _(b'email addresses replies should be sent to'),
596 _(b'EMAIL'),
596 _(b'EMAIL'),
597 ),
597 ),
598 (
598 (
599 b's',
599 b's',
600 b'subject',
600 b'subject',
601 b'',
601 b'',
602 _(b'subject of first message (intro or single patch)'),
602 _(b'subject of first message (intro or single patch)'),
603 _(b'TEXT'),
603 _(b'TEXT'),
604 ),
604 ),
605 (
605 (
606 b'',
606 b'',
607 b'in-reply-to',
607 b'in-reply-to',
608 b'',
608 b'',
609 _(b'message identifier to reply to'),
609 _(b'message identifier to reply to'),
610 _(b'MSGID'),
610 _(b'MSGID'),
611 ),
611 ),
612 (b'', b'flag', [], _(b'flags to add in subject prefixes'), _(b'FLAG')),
612 (b'', b'flag', [], _(b'flags to add in subject prefixes'), _(b'FLAG')),
613 (b't', b'to', [], _(b'email addresses of recipients'), _(b'EMAIL')),
613 (b't', b'to', [], _(b'email addresses of recipients'), _(b'EMAIL')),
614 ]
614 ]
615
615
616
616
617 @command(
617 @command(
618 b'email',
618 b'email',
619 [
619 [
620 (b'g', b'git', None, _(b'use git extended diff format')),
620 (b'g', b'git', None, _(b'use git extended diff format')),
621 (b'', b'plain', None, _(b'omit hg patch header')),
621 (b'', b'plain', None, _(b'omit hg patch header')),
622 (
622 (
623 b'o',
623 b'o',
624 b'outgoing',
624 b'outgoing',
625 None,
625 None,
626 _(b'send changes not found in the target repository'),
626 _(b'send changes not found in the target repository'),
627 ),
627 ),
628 (
628 (
629 b'b',
629 b'b',
630 b'bundle',
630 b'bundle',
631 None,
631 None,
632 _(b'send changes not in target as a binary bundle'),
632 _(b'send changes not in target as a binary bundle'),
633 ),
633 ),
634 (
634 (
635 b'B',
635 b'B',
636 b'bookmark',
636 b'bookmark',
637 b'',
637 b'',
638 _(b'send changes only reachable by given bookmark'),
638 _(b'send changes only reachable by given bookmark'),
639 _(b'BOOKMARK'),
639 _(b'BOOKMARK'),
640 ),
640 ),
641 (
641 (
642 b'',
642 b'',
643 b'bundlename',
643 b'bundlename',
644 b'bundle',
644 b'bundle',
645 _(b'name of the bundle attachment file'),
645 _(b'name of the bundle attachment file'),
646 _(b'NAME'),
646 _(b'NAME'),
647 ),
647 ),
648 (b'r', b'rev', [], _(b'a revision to send'), _(b'REV')),
648 (b'r', b'rev', [], _(b'a revision to send'), _(b'REV')),
649 (
649 (
650 b'',
650 b'',
651 b'force',
651 b'force',
652 None,
652 None,
653 _(
653 _(
654 b'run even when remote repository is unrelated '
654 b'run even when remote repository is unrelated '
655 b'(with -b/--bundle)'
655 b'(with -b/--bundle)'
656 ),
656 ),
657 ),
657 ),
658 (
658 (
659 b'',
659 b'',
660 b'base',
660 b'base',
661 [],
661 [],
662 _(
662 _(
663 b'a base changeset to specify instead of a destination '
663 b'a base changeset to specify instead of a destination '
664 b'(with -b/--bundle)'
664 b'(with -b/--bundle)'
665 ),
665 ),
666 _(b'REV'),
666 _(b'REV'),
667 ),
667 ),
668 (
668 (
669 b'',
669 b'',
670 b'intro',
670 b'intro',
671 None,
671 None,
672 _(b'send an introduction email for a single patch'),
672 _(b'send an introduction email for a single patch'),
673 ),
673 ),
674 ]
674 ]
675 + emailopts
675 + emailopts
676 + cmdutil.remoteopts,
676 + cmdutil.remoteopts,
677 _(b'hg email [OPTION]... [DEST]...'),
677 _(b'hg email [OPTION]... [DEST]...'),
678 helpcategory=command.CATEGORY_IMPORT_EXPORT,
678 helpcategory=command.CATEGORY_IMPORT_EXPORT,
679 )
679 )
680 def email(ui, repo, *revs, **opts):
680 def email(ui, repo, *revs, **opts):
681 """send changesets by email
681 """send changesets by email
682
682
683 By default, diffs are sent in the format generated by
683 By default, diffs are sent in the format generated by
684 :hg:`export`, one per message. The series starts with a "[PATCH 0
684 :hg:`export`, one per message. The series starts with a "[PATCH 0
685 of N]" introduction, which describes the series as a whole.
685 of N]" introduction, which describes the series as a whole.
686
686
687 Each patch email has a Subject line of "[PATCH M of N] ...", using
687 Each patch email has a Subject line of "[PATCH M of N] ...", using
688 the first line of the changeset description as the subject text.
688 the first line of the changeset description as the subject text.
689 The message contains two or three parts. First, the changeset
689 The message contains two or three parts. First, the changeset
690 description.
690 description.
691
691
692 With the -d/--diffstat option, if the diffstat program is
692 With the -d/--diffstat option, if the diffstat program is
693 installed, the result of running diffstat on the patch is inserted.
693 installed, the result of running diffstat on the patch is inserted.
694
694
695 Finally, the patch itself, as generated by :hg:`export`.
695 Finally, the patch itself, as generated by :hg:`export`.
696
696
697 With the -d/--diffstat or --confirm options, you will be presented
697 With the -d/--diffstat or --confirm options, you will be presented
698 with a final summary of all messages and asked for confirmation before
698 with a final summary of all messages and asked for confirmation before
699 the messages are sent.
699 the messages are sent.
700
700
701 By default the patch is included as text in the email body for
701 By default the patch is included as text in the email body for
702 easy reviewing. Using the -a/--attach option will instead create
702 easy reviewing. Using the -a/--attach option will instead create
703 an attachment for the patch. With -i/--inline an inline attachment
703 an attachment for the patch. With -i/--inline an inline attachment
704 will be created. You can include a patch both as text in the email
704 will be created. You can include a patch both as text in the email
705 body and as a regular or an inline attachment by combining the
705 body and as a regular or an inline attachment by combining the
706 -a/--attach or -i/--inline with the --body option.
706 -a/--attach or -i/--inline with the --body option.
707
707
708 With -B/--bookmark changesets reachable by the given bookmark are
708 With -B/--bookmark changesets reachable by the given bookmark are
709 selected.
709 selected.
710
710
711 With -o/--outgoing, emails will be generated for patches not found
711 With -o/--outgoing, emails will be generated for patches not found
712 in the destination repository (or only those which are ancestors
712 in the destination repository (or only those which are ancestors
713 of the specified revisions if any are provided)
713 of the specified revisions if any are provided)
714
714
715 With -b/--bundle, changesets are selected as for --outgoing, but a
715 With -b/--bundle, changesets are selected as for --outgoing, but a
716 single email containing a binary Mercurial bundle as an attachment
716 single email containing a binary Mercurial bundle as an attachment
717 will be sent. Use the ``patchbomb.bundletype`` config option to
717 will be sent. Use the ``patchbomb.bundletype`` config option to
718 control the bundle type as with :hg:`bundle --type`.
718 control the bundle type as with :hg:`bundle --type`.
719
719
720 With -m/--mbox, instead of previewing each patchbomb message in a
720 With -m/--mbox, instead of previewing each patchbomb message in a
721 pager or sending the messages directly, it will create a UNIX
721 pager or sending the messages directly, it will create a UNIX
722 mailbox file with the patch emails. This mailbox file can be
722 mailbox file with the patch emails. This mailbox file can be
723 previewed with any mail user agent which supports UNIX mbox
723 previewed with any mail user agent which supports UNIX mbox
724 files.
724 files.
725
725
726 With -n/--test, all steps will run, but mail will not be sent.
726 With -n/--test, all steps will run, but mail will not be sent.
727 You will be prompted for an email recipient address, a subject and
727 You will be prompted for an email recipient address, a subject and
728 an introductory message describing the patches of your patchbomb.
728 an introductory message describing the patches of your patchbomb.
729 Then when all is done, patchbomb messages are displayed.
729 Then when all is done, patchbomb messages are displayed.
730
730
731 In case email sending fails, you will find a backup of your series
731 In case email sending fails, you will find a backup of your series
732 introductory message in ``.hg/last-email.txt``.
732 introductory message in ``.hg/last-email.txt``.
733
733
734 The default behavior of this command can be customized through
734 The default behavior of this command can be customized through
735 configuration. (See :hg:`help patchbomb` for details)
735 configuration. (See :hg:`help patchbomb` for details)
736
736
737 Examples::
737 Examples::
738
738
739 hg email -r 3000 # send patch 3000 only
739 hg email -r 3000 # send patch 3000 only
740 hg email -r 3000 -r 3001 # send patches 3000 and 3001
740 hg email -r 3000 -r 3001 # send patches 3000 and 3001
741 hg email -r 3000:3005 # send patches 3000 through 3005
741 hg email -r 3000:3005 # send patches 3000 through 3005
742 hg email 3000 # send patch 3000 (deprecated)
742 hg email 3000 # send patch 3000 (deprecated)
743
743
744 hg email -o # send all patches not in default
744 hg email -o # send all patches not in default
745 hg email -o DEST # send all patches not in DEST
745 hg email -o DEST # send all patches not in DEST
746 hg email -o -r 3000 # send all ancestors of 3000 not in default
746 hg email -o -r 3000 # send all ancestors of 3000 not in default
747 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
747 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
748
748
749 hg email -B feature # send all ancestors of feature bookmark
749 hg email -B feature # send all ancestors of feature bookmark
750
750
751 hg email -b # send bundle of all patches not in default
751 hg email -b # send bundle of all patches not in default
752 hg email -b DEST # send bundle of all patches not in DEST
752 hg email -b DEST # send bundle of all patches not in DEST
753 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
753 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
754 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST
754 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST
755
755
756 hg email -o -m mbox && # generate an mbox file...
756 hg email -o -m mbox && # generate an mbox file...
757 mutt -R -f mbox # ... and view it with mutt
757 mutt -R -f mbox # ... and view it with mutt
758 hg email -o -m mbox && # generate an mbox file ...
758 hg email -o -m mbox && # generate an mbox file ...
759 formail -s sendmail \\ # ... and use formail to send from the mbox
759 formail -s sendmail \\ # ... and use formail to send from the mbox
760 -bm -t < mbox # ... using sendmail
760 -bm -t < mbox # ... using sendmail
761
761
762 Before using this command, you will need to enable email in your
762 Before using this command, you will need to enable email in your
763 hgrc. See the [email] section in hgrc(5) for details.
763 hgrc. See the [email] section in hgrc(5) for details.
764 """
764 """
765 opts = pycompat.byteskwargs(opts)
765 opts = pycompat.byteskwargs(opts)
766
766
767 _charsets = mail._charsets(ui)
767 _charsets = mail._charsets(ui)
768
768
769 bundle = opts.get(b'bundle')
769 bundle = opts.get(b'bundle')
770 date = opts.get(b'date')
770 date = opts.get(b'date')
771 mbox = opts.get(b'mbox')
771 mbox = opts.get(b'mbox')
772 outgoing = opts.get(b'outgoing')
772 outgoing = opts.get(b'outgoing')
773 rev = opts.get(b'rev')
773 rev = opts.get(b'rev')
774 bookmark = opts.get(b'bookmark')
774 bookmark = opts.get(b'bookmark')
775
775
776 if not (opts.get(b'test') or mbox):
776 if not (opts.get(b'test') or mbox):
777 # really sending
777 # really sending
778 mail.validateconfig(ui)
778 mail.validateconfig(ui)
779
779
780 if not (revs or rev or outgoing or bundle or bookmark):
780 if not (revs or rev or outgoing or bundle or bookmark):
781 raise error.Abort(
781 raise error.Abort(
782 _(b'specify at least one changeset with -B, -r or -o')
782 _(b'specify at least one changeset with -B, -r or -o')
783 )
783 )
784
784
785 if outgoing and bundle:
785 if outgoing and bundle:
786 raise error.Abort(
786 raise error.Abort(
787 _(
787 _(
788 b"--outgoing mode always on with --bundle;"
788 b"--outgoing mode always on with --bundle;"
789 b" do not re-specify --outgoing"
789 b" do not re-specify --outgoing"
790 )
790 )
791 )
791 )
792 cmdutil.check_at_most_one_arg(opts, b'rev', b'bookmark')
792 cmdutil.check_at_most_one_arg(opts, b'rev', b'bookmark')
793
793
794 if outgoing or bundle:
794 if outgoing or bundle:
795 if len(revs) > 1:
795 if len(revs) > 1:
796 raise error.Abort(_(b"too many destinations"))
796 raise error.Abort(_(b"too many destinations"))
797 if revs:
797 if revs:
798 dest = revs[0]
798 dest = revs[0]
799 else:
799 else:
800 dest = None
800 dest = None
801 revs = []
801 revs = []
802
802
803 if rev:
803 if rev:
804 if revs:
804 if revs:
805 raise error.Abort(_(b'use only one form to specify the revision'))
805 raise error.Abort(_(b'use only one form to specify the revision'))
806 revs = rev
806 revs = rev
807 elif bookmark:
807 elif bookmark:
808 if bookmark not in repo._bookmarks:
808 if bookmark not in repo._bookmarks:
809 raise error.Abort(_(b"bookmark '%s' not found") % bookmark)
809 raise error.Abort(_(b"bookmark '%s' not found") % bookmark)
810 revs = scmutil.bookmarkrevs(repo, bookmark)
810 revs = scmutil.bookmarkrevs(repo, bookmark)
811
811
812 revs = scmutil.revrange(repo, revs)
812 revs = scmutil.revrange(repo, revs)
813 if outgoing:
813 if outgoing:
814 revs = _getoutgoing(repo, dest, revs)
814 revs = _getoutgoing(repo, dest, revs)
815 if bundle:
815 if bundle:
816 opts[b'revs'] = [b"%d" % r for r in revs]
816 opts[b'revs'] = [b"%d" % r for r in revs]
817
817
818 # check if revision exist on the public destination
818 # check if revision exist on the public destination
819 publicurl = repo.ui.config(b'patchbomb', b'publicurl')
819 publicurl = repo.ui.config(b'patchbomb', b'publicurl')
820 if publicurl:
820 if publicurl:
821 repo.ui.debug(b'checking that revision exist in the public repo\n')
821 repo.ui.debug(b'checking that revision exist in the public repo\n')
822 try:
822 try:
823 publicpeer = hg.peer(repo, {}, publicurl)
823 publicpeer = hg.peer(repo, {}, publicurl)
824 except error.RepoError:
824 except error.RepoError:
825 repo.ui.write_err(
825 repo.ui.write_err(
826 _(b'unable to access public repo: %s\n') % publicurl
826 _(b'unable to access public repo: %s\n') % publicurl
827 )
827 )
828 raise
828 raise
829 if not publicpeer.capable(b'known'):
829 if not publicpeer.capable(b'known'):
830 repo.ui.debug(b'skipping existence checks: public repo too old\n')
830 repo.ui.debug(b'skipping existence checks: public repo too old\n')
831 else:
831 else:
832 out = [repo[r] for r in revs]
832 out = [repo[r] for r in revs]
833 known = publicpeer.known(h.node() for h in out)
833 known = publicpeer.known(h.node() for h in out)
834 missing = []
834 missing = []
835 for idx, h in enumerate(out):
835 for idx, h in enumerate(out):
836 if not known[idx]:
836 if not known[idx]:
837 missing.append(h)
837 missing.append(h)
838 if missing:
838 if missing:
839 if len(missing) > 1:
839 if len(missing) > 1:
840 msg = _(b'public "%s" is missing %s and %i others')
840 msg = _(b'public "%s" is missing %s and %i others')
841 msg %= (publicurl, missing[0], len(missing) - 1)
841 msg %= (publicurl, missing[0], len(missing) - 1)
842 else:
842 else:
843 msg = _(b'public url %s is missing %s')
843 msg = _(b'public url %s is missing %s')
844 msg %= (publicurl, missing[0])
844 msg %= (publicurl, missing[0])
845 missingrevs = [ctx.rev() for ctx in missing]
845 missingrevs = [ctx.rev() for ctx in missing]
846 revhint = b' '.join(
846 revhint = b' '.join(
847 b'-r %s' % h for h in repo.set(b'heads(%ld)', missingrevs)
847 b'-r %s' % h for h in repo.set(b'heads(%ld)', missingrevs)
848 )
848 )
849 hint = _(b"use 'hg push %s %s'") % (publicurl, revhint)
849 hint = _(b"use 'hg push %s %s'") % (publicurl, revhint)
850 raise error.Abort(msg, hint=hint)
850 raise error.Abort(msg, hint=hint)
851
851
852 # start
852 # start
853 if date:
853 if date:
854 start_time = dateutil.parsedate(date)
854 start_time = dateutil.parsedate(date)
855 else:
855 else:
856 start_time = dateutil.makedate()
856 start_time = dateutil.makedate()
857
857
858 def genmsgid(id):
858 def genmsgid(id):
859 return _msgid(id[:20], int(start_time[0]))
859 return _msgid(id[:20], int(start_time[0]))
860
860
861 # deprecated config: patchbomb.from
861 # deprecated config: patchbomb.from
862 sender = (
862 sender = (
863 opts.get(b'from')
863 opts.get(b'from')
864 or ui.config(b'email', b'from')
864 or ui.config(b'email', b'from')
865 or ui.config(b'patchbomb', b'from')
865 or ui.config(b'patchbomb', b'from')
866 or prompt(ui, b'From', ui.username())
866 or prompt(ui, b'From', ui.username())
867 )
867 )
868
868
869 if bundle:
869 if bundle:
870 stropts = pycompat.strkwargs(opts)
870 stropts = pycompat.strkwargs(opts)
871 bundledata = _getbundle(repo, dest, **stropts)
871 bundledata = _getbundle(repo, dest, **stropts)
872 bundleopts = stropts.copy()
872 bundleopts = stropts.copy()
873 bundleopts.pop('bundle', None) # already processed
873 bundleopts.pop('bundle', None) # already processed
874 msgs = _getbundlemsgs(repo, sender, bundledata, **bundleopts)
874 msgs = _getbundlemsgs(repo, sender, bundledata, **bundleopts)
875 else:
875 else:
876 msgs = _getpatchmsgs(repo, sender, revs, **pycompat.strkwargs(opts))
876 msgs = _getpatchmsgs(repo, sender, revs, **pycompat.strkwargs(opts))
877
877
878 showaddrs = []
878 showaddrs = []
879
879
880 def getaddrs(header, ask=False, default=None):
880 def getaddrs(header, ask=False, default=None):
881 configkey = header.lower()
881 configkey = header.lower()
882 opt = header.replace(b'-', b'_').lower()
882 opt = header.replace(b'-', b'_').lower()
883 addrs = opts.get(opt)
883 addrs = opts.get(opt)
884 if addrs:
884 if addrs:
885 showaddrs.append(b'%s: %s' % (header, b', '.join(addrs)))
885 showaddrs.append(b'%s: %s' % (header, b', '.join(addrs)))
886 return mail.addrlistencode(ui, addrs, _charsets, opts.get(b'test'))
886 return mail.addrlistencode(ui, addrs, _charsets, opts.get(b'test'))
887
887
888 # not on the command line: fallback to config and then maybe ask
888 # not on the command line: fallback to config and then maybe ask
889 addr = ui.config(b'email', configkey) or ui.config(
889 addr = ui.config(b'email', configkey) or ui.config(
890 b'patchbomb', configkey
890 b'patchbomb', configkey
891 )
891 )
892 if not addr:
892 if not addr:
893 specified = ui.hasconfig(b'email', configkey) or ui.hasconfig(
893 specified = ui.hasconfig(b'email', configkey) or ui.hasconfig(
894 b'patchbomb', configkey
894 b'patchbomb', configkey
895 )
895 )
896 if not specified and ask:
896 if not specified and ask:
897 addr = prompt(ui, header, default=default)
897 addr = prompt(ui, header, default=default)
898 if addr:
898 if addr:
899 showaddrs.append(b'%s: %s' % (header, addr))
899 showaddrs.append(b'%s: %s' % (header, addr))
900 return mail.addrlistencode(ui, [addr], _charsets, opts.get(b'test'))
900 return mail.addrlistencode(ui, [addr], _charsets, opts.get(b'test'))
901 elif default:
901 elif default:
902 return mail.addrlistencode(
902 return mail.addrlistencode(
903 ui, [default], _charsets, opts.get(b'test')
903 ui, [default], _charsets, opts.get(b'test')
904 )
904 )
905 return []
905 return []
906
906
907 to = getaddrs(b'To', ask=True)
907 to = getaddrs(b'To', ask=True)
908 if not to:
908 if not to:
909 # we can get here in non-interactive mode
909 # we can get here in non-interactive mode
910 raise error.Abort(_(b'no recipient addresses provided'))
910 raise error.Abort(_(b'no recipient addresses provided'))
911 cc = getaddrs(b'Cc', ask=True, default=b'')
911 cc = getaddrs(b'Cc', ask=True, default=b'')
912 bcc = getaddrs(b'Bcc')
912 bcc = getaddrs(b'Bcc')
913 replyto = getaddrs(b'Reply-To')
913 replyto = getaddrs(b'Reply-To')
914
914
915 confirm = ui.configbool(b'patchbomb', b'confirm')
915 confirm = ui.configbool(b'patchbomb', b'confirm')
916 confirm |= bool(opts.get(b'diffstat') or opts.get(b'confirm'))
916 confirm |= bool(opts.get(b'diffstat') or opts.get(b'confirm'))
917
917
918 if confirm:
918 if confirm:
919 ui.write(_(b'\nFinal summary:\n\n'), label=b'patchbomb.finalsummary')
919 ui.write(_(b'\nFinal summary:\n\n'), label=b'patchbomb.finalsummary')
920 ui.write((b'From: %s\n' % sender), label=b'patchbomb.from')
920 ui.write((b'From: %s\n' % sender), label=b'patchbomb.from')
921 for addr in showaddrs:
921 for addr in showaddrs:
922 ui.write(b'%s\n' % addr, label=b'patchbomb.to')
922 ui.write(b'%s\n' % addr, label=b'patchbomb.to')
923 for m, subj, ds in msgs:
923 for m, subj, ds in msgs:
924 ui.write((b'Subject: %s\n' % subj), label=b'patchbomb.subject')
924 ui.write((b'Subject: %s\n' % subj), label=b'patchbomb.subject')
925 if ds:
925 if ds:
926 ui.write(ds, label=b'patchbomb.diffstats')
926 ui.write(ds, label=b'patchbomb.diffstats')
927 ui.write(b'\n')
927 ui.write(b'\n')
928 if ui.promptchoice(
928 if ui.promptchoice(
929 _(b'are you sure you want to send (yn)?$$ &Yes $$ &No')
929 _(b'are you sure you want to send (yn)?$$ &Yes $$ &No')
930 ):
930 ):
931 raise error.Abort(_(b'patchbomb canceled'))
931 raise error.Abort(_(b'patchbomb canceled'))
932
932
933 ui.write(b'\n')
933 ui.write(b'\n')
934
934
935 parent = opts.get(b'in_reply_to') or None
935 parent = opts.get(b'in_reply_to') or None
936 # angle brackets may be omitted, they're not semantically part of the msg-id
936 # angle brackets may be omitted, they're not semantically part of the msg-id
937 if parent is not None:
937 if parent is not None:
938 parent = encoding.strfromlocal(parent)
938 parent = encoding.strfromlocal(parent)
939 if not parent.startswith('<'):
939 if not parent.startswith('<'):
940 parent = '<' + parent
940 parent = '<' + parent
941 if not parent.endswith('>'):
941 if not parent.endswith('>'):
942 parent += '>'
942 parent += '>'
943
943
944 sender_addr = eutil.parseaddr(encoding.strfromlocal(sender))[1]
944 sender_addr = eutil.parseaddr(encoding.strfromlocal(sender))[1]
945 sender = mail.addressencode(ui, sender, _charsets, opts.get(b'test'))
945 sender = mail.addressencode(ui, sender, _charsets, opts.get(b'test'))
946 sendmail = None
946 sendmail = None
947 firstpatch = None
947 firstpatch = None
948 progress = ui.makeprogress(
948 progress = ui.makeprogress(
949 _(b'sending'), unit=_(b'emails'), total=len(msgs)
949 _(b'sending'), unit=_(b'emails'), total=len(msgs)
950 )
950 )
951 for i, (m, subj, ds) in enumerate(msgs):
951 for i, (m, subj, ds) in enumerate(msgs):
952 try:
952 try:
953 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
953 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
954 if not firstpatch:
954 if not firstpatch:
955 firstpatch = m['Message-Id']
955 firstpatch = m['Message-Id']
956 m['X-Mercurial-Series-Id'] = firstpatch
956 m['X-Mercurial-Series-Id'] = firstpatch
957 except TypeError:
957 except TypeError:
958 m['Message-Id'] = genmsgid('patchbomb')
958 m['Message-Id'] = genmsgid('patchbomb')
959 if parent:
959 if parent:
960 m['In-Reply-To'] = parent
960 m['In-Reply-To'] = parent
961 m['References'] = parent
961 m['References'] = parent
962 if not parent or 'X-Mercurial-Node' not in m:
962 if not parent or 'X-Mercurial-Node' not in m:
963 parent = m['Message-Id']
963 parent = m['Message-Id']
964
964
965 m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version().decode()
965 m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version().decode()
966 m['Date'] = eutil.formatdate(start_time[0], localtime=True)
966 m['Date'] = eutil.formatdate(start_time[0], localtime=True)
967
967
968 start_time = (start_time[0] + 1, start_time[1])
968 start_time = (start_time[0] + 1, start_time[1])
969 m['From'] = sender
969 m['From'] = sender
970 m['To'] = ', '.join(to)
970 m['To'] = ', '.join(to)
971 if cc:
971 if cc:
972 m['Cc'] = ', '.join(cc)
972 m['Cc'] = ', '.join(cc)
973 if bcc:
973 if bcc:
974 m['Bcc'] = ', '.join(bcc)
974 m['Bcc'] = ', '.join(bcc)
975 if replyto:
975 if replyto:
976 m['Reply-To'] = ', '.join(replyto)
976 m['Reply-To'] = ', '.join(replyto)
977 if opts.get(b'test'):
977 if opts.get(b'test'):
978 ui.status(_(b'displaying '), subj, b' ...\n')
978 ui.status(_(b'displaying '), subj, b' ...\n')
979 ui.pager(b'email')
979 ui.pager(b'email')
980 generator = mail.Generator(ui, mangle_from_=False)
980 generator = mail.Generator(ui, mangle_from_=False)
981 try:
981 try:
982 generator.flatten(m, False)
982 generator.flatten(m, False)
983 ui.write(b'\n')
983 ui.write(b'\n')
984 except IOError as inst:
984 except IOError as inst:
985 if inst.errno != errno.EPIPE:
985 if inst.errno != errno.EPIPE:
986 raise
986 raise
987 else:
987 else:
988 if not sendmail:
988 if not sendmail:
989 sendmail = mail.connect(ui, mbox=mbox)
989 sendmail = mail.connect(ui, mbox=mbox)
990 ui.status(_(b'sending '), subj, b' ...\n')
990 ui.status(_(b'sending '), subj, b' ...\n')
991 progress.update(i, item=subj)
991 progress.update(i, item=subj)
992 if not mbox:
992 if not mbox:
993 # Exim does not remove the Bcc field
993 # Exim does not remove the Bcc field
994 del m['Bcc']
994 del m['Bcc']
995 fp = stringio()
995 fp = stringio()
996 generator = mail.Generator(fp, mangle_from_=False)
996 generator = mail.Generator(fp, mangle_from_=False)
997 generator.flatten(m, False)
997 generator.flatten(m, False)
998 alldests = to + bcc + cc
998 alldests = to + bcc + cc
999 sendmail(sender_addr, alldests, fp.getvalue())
999 sendmail(sender_addr, alldests, fp.getvalue())
1000
1000
1001 progress.complete()
1001 progress.complete()
@@ -1,3129 +1,3129 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 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t -r 'rev(10) or rev(6)'
2629 $ 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
2630 comparing with ../t
2631 From [test]: test
2631 From [test]: test
2632 this patch series consists of 6 patches.
2632 this patch series consists of 6 patches.
2633
2633
2634
2634
2635 Write the introductory message for the patch series.
2635 Write the introductory message for the patch series.
2636
2636
2637 Cc:
2637 Cc:
2638
2638
2639 displaying [PATCH 0 of 6] test ...
2639 displaying [PATCH 0 of 6] test ...
2640 MIME-Version: 1.0
2640 MIME-Version: 1.0
2641 Content-Type: text/plain; charset="us-ascii"
2641 Content-Type: text/plain; charset="us-ascii"
2642 Content-Transfer-Encoding: 7bit
2642 Content-Transfer-Encoding: 7bit
2643 Subject: [PATCH 0 of 6] test
2643 Subject: [PATCH 0 of 6] test
2644 Message-Id: <patchbomb.315532860@test-hostname>
2644 Message-Id: <patchbomb.315532860@test-hostname>
2645 User-Agent: Mercurial-patchbomb/* (glob)
2645 User-Agent: Mercurial-patchbomb/* (glob)
2646 Date: Tue, 01 Jan 1980 00:01:00 +0000
2646 Date: Tue, 01 Jan 1980 00:01:00 +0000
2647 From: test
2647 From: test
2648 To: foo
2648 To: foo
2649
2649
2650
2650
2651 displaying [PATCH 1 of 6] c ...
2651 displaying [PATCH 1 of 6] c ...
2652 MIME-Version: 1.0
2652 MIME-Version: 1.0
2653 Content-Type: text/plain; charset="us-ascii"
2653 Content-Type: text/plain; charset="us-ascii"
2654 Content-Transfer-Encoding: 7bit
2654 Content-Transfer-Encoding: 7bit
2655 Subject: [PATCH 1 of 6] c
2655 Subject: [PATCH 1 of 6] c
2656 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2656 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2657 X-Mercurial-Series-Index: 1
2657 X-Mercurial-Series-Index: 1
2658 X-Mercurial-Series-Total: 6
2658 X-Mercurial-Series-Total: 6
2659 Message-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2659 Message-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2660 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2660 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2661 In-Reply-To: <patchbomb.315532860@test-hostname>
2661 In-Reply-To: <patchbomb.315532860@test-hostname>
2662 References: <patchbomb.315532860@test-hostname>
2662 References: <patchbomb.315532860@test-hostname>
2663 User-Agent: Mercurial-patchbomb/* (glob)
2663 User-Agent: Mercurial-patchbomb/* (glob)
2664 Date: Tue, 01 Jan 1980 00:01:01 +0000
2664 Date: Tue, 01 Jan 1980 00:01:01 +0000
2665 From: test
2665 From: test
2666 To: foo
2666 To: foo
2667
2667
2668 # HG changeset patch
2668 # HG changeset patch
2669 # User test
2669 # User test
2670 # Date 3 0
2670 # Date 3 0
2671 # Thu Jan 01 00:00:03 1970 +0000
2671 # Thu Jan 01 00:00:03 1970 +0000
2672 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2672 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2673 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2673 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2674 c
2674 c
2675
2675
2676 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2676 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2677 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2677 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2678 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2678 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2679 @@ -0,0 +1,1 @@
2679 @@ -0,0 +1,1 @@
2680 +c
2680 +c
2681
2681
2682 displaying [PATCH 2 of 6] \xe7a ... (esc)
2682 displaying [PATCH 2 of 6] \xe7a ... (esc)
2683 MIME-Version: 1.0
2683 MIME-Version: 1.0
2684 Content-Type: text/plain; charset="iso-8859-1"
2684 Content-Type: text/plain; charset="iso-8859-1"
2685 Content-Transfer-Encoding: quoted-printable
2685 Content-Transfer-Encoding: quoted-printable
2686 Subject: [PATCH 2 of 6] \xe7a (esc) (no-py3 !)
2686 Subject: [PATCH 2 of 6] \xe7a (esc) (no-py3 !)
2687 Subject: =?utf-8?b?W1BBVENIIDIgb2YgNl0gw6dh?= (py3 !)
2687 Subject: =?utf-8?b?W1BBVENIIDIgb2YgNl0gw6dh?= (py3 !)
2688 X-Mercurial-Node: f81ef97829467e868fc405fccbcfa66217e4d3e6
2688 X-Mercurial-Node: f81ef97829467e868fc405fccbcfa66217e4d3e6
2689 X-Mercurial-Series-Index: 2
2689 X-Mercurial-Series-Index: 2
2690 X-Mercurial-Series-Total: 6
2690 X-Mercurial-Series-Total: 6
2691 Message-Id: <f81ef97829467e868fc4.315532862@test-hostname>
2691 Message-Id: <f81ef97829467e868fc4.315532862@test-hostname>
2692 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2692 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2693 In-Reply-To: <patchbomb.315532860@test-hostname>
2693 In-Reply-To: <patchbomb.315532860@test-hostname>
2694 References: <patchbomb.315532860@test-hostname>
2694 References: <patchbomb.315532860@test-hostname>
2695 User-Agent: Mercurial-patchbomb/* (glob)
2695 User-Agent: Mercurial-patchbomb/* (glob)
2696 Date: Tue, 01 Jan 1980 00:01:02 +0000
2696 Date: Tue, 01 Jan 1980 00:01:02 +0000
2697 From: test
2697 From: test
2698 To: foo
2698 To: foo
2699
2699
2700 # HG changeset patch
2700 # HG changeset patch
2701 # User test
2701 # User test
2702 # Date 4 0
2702 # Date 4 0
2703 # Thu Jan 01 00:00:04 1970 +0000
2703 # Thu Jan 01 00:00:04 1970 +0000
2704 # Node ID f81ef97829467e868fc405fccbcfa66217e4d3e6
2704 # Node ID f81ef97829467e868fc405fccbcfa66217e4d3e6
2705 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
2705 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
2706 =E7a
2706 =E7a
2707
2707
2708 diff -r ff2c9fa2018b -r f81ef9782946 description
2708 diff -r ff2c9fa2018b -r f81ef9782946 description
2709 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2709 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2710 +++ b/description Thu Jan 01 00:00:04 1970 +0000
2710 +++ b/description Thu Jan 01 00:00:04 1970 +0000
2711 @@ -0,0 +1,3 @@
2711 @@ -0,0 +1,3 @@
2712 +a multiline
2712 +a multiline
2713 +
2713 +
2714 +description
2714 +description
2715 diff -r ff2c9fa2018b -r f81ef9782946 utf
2715 diff -r ff2c9fa2018b -r f81ef9782946 utf
2716 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2716 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2717 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
2717 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
2718 @@ -0,0 +1,1 @@
2718 @@ -0,0 +1,1 @@
2719 +h=C3=B6mma!
2719 +h=C3=B6mma!
2720
2720
2721 displaying [PATCH 3 of 6] long line ...
2721 displaying [PATCH 3 of 6] long line ...
2722 MIME-Version: 1.0
2722 MIME-Version: 1.0
2723 Content-Type: text/plain; charset="us-ascii"
2723 Content-Type: text/plain; charset="us-ascii"
2724 Content-Transfer-Encoding: quoted-printable
2724 Content-Transfer-Encoding: quoted-printable
2725 Subject: [PATCH 3 of 6] long line
2725 Subject: [PATCH 3 of 6] long line
2726 X-Mercurial-Node: 0c7b871cb86b61a1c07e244393603c361e4a178d
2726 X-Mercurial-Node: 0c7b871cb86b61a1c07e244393603c361e4a178d
2727 X-Mercurial-Series-Index: 3
2727 X-Mercurial-Series-Index: 3
2728 X-Mercurial-Series-Total: 6
2728 X-Mercurial-Series-Total: 6
2729 Message-Id: <0c7b871cb86b61a1c07e.315532863@test-hostname>
2729 Message-Id: <0c7b871cb86b61a1c07e.315532863@test-hostname>
2730 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2730 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2731 In-Reply-To: <patchbomb.315532860@test-hostname>
2731 In-Reply-To: <patchbomb.315532860@test-hostname>
2732 References: <patchbomb.315532860@test-hostname>
2732 References: <patchbomb.315532860@test-hostname>
2733 User-Agent: Mercurial-patchbomb/* (glob)
2733 User-Agent: Mercurial-patchbomb/* (glob)
2734 Date: Tue, 01 Jan 1980 00:01:03 +0000
2734 Date: Tue, 01 Jan 1980 00:01:03 +0000
2735 From: test
2735 From: test
2736 To: foo
2736 To: foo
2737
2737
2738 # HG changeset patch
2738 # HG changeset patch
2739 # User test
2739 # User test
2740 # Date 4 0
2740 # Date 4 0
2741 # Thu Jan 01 00:00:04 1970 +0000
2741 # Thu Jan 01 00:00:04 1970 +0000
2742 # Node ID 0c7b871cb86b61a1c07e244393603c361e4a178d
2742 # Node ID 0c7b871cb86b61a1c07e244393603c361e4a178d
2743 # Parent f81ef97829467e868fc405fccbcfa66217e4d3e6
2743 # Parent f81ef97829467e868fc405fccbcfa66217e4d3e6
2744 long line
2744 long line
2745
2745
2746 diff -r f81ef9782946 -r 0c7b871cb86b long
2746 diff -r f81ef9782946 -r 0c7b871cb86b long
2747 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2747 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2748 +++ b/long Thu Jan 01 00:00:04 1970 +0000
2748 +++ b/long Thu Jan 01 00:00:04 1970 +0000
2749 @@ -0,0 +1,4 @@
2749 @@ -0,0 +1,4 @@
2750 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2750 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2751 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2751 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2752 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2752 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2753 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2753 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2754 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2754 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2755 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2755 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2756 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2756 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2757 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2757 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2758 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2758 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2759 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2759 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2760 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2760 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2761 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2761 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2762 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2762 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2763 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2763 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2764 +foo
2764 +foo
2765 +
2765 +
2766 +bar
2766 +bar
2767
2767
2768 displaying [PATCH 4 of 6] isolatin 8-bit encoding ...
2768 displaying [PATCH 4 of 6] isolatin 8-bit encoding ...
2769 MIME-Version: 1.0
2769 MIME-Version: 1.0
2770 Content-Type: text/plain; charset="iso-8859-1"
2770 Content-Type: text/plain; charset="iso-8859-1"
2771 Content-Transfer-Encoding: quoted-printable
2771 Content-Transfer-Encoding: quoted-printable
2772 Subject: [PATCH 4 of 6] isolatin 8-bit encoding
2772 Subject: [PATCH 4 of 6] isolatin 8-bit encoding
2773 X-Mercurial-Node: 4d6f44f466c96d89f2e7e865a70ff41d8b6eee37
2773 X-Mercurial-Node: 4d6f44f466c96d89f2e7e865a70ff41d8b6eee37
2774 X-Mercurial-Series-Index: 4
2774 X-Mercurial-Series-Index: 4
2775 X-Mercurial-Series-Total: 6
2775 X-Mercurial-Series-Total: 6
2776 Message-Id: <4d6f44f466c96d89f2e7.315532864@test-hostname>
2776 Message-Id: <4d6f44f466c96d89f2e7.315532864@test-hostname>
2777 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2777 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2778 In-Reply-To: <patchbomb.315532860@test-hostname>
2778 In-Reply-To: <patchbomb.315532860@test-hostname>
2779 References: <patchbomb.315532860@test-hostname>
2779 References: <patchbomb.315532860@test-hostname>
2780 User-Agent: Mercurial-patchbomb/* (glob)
2780 User-Agent: Mercurial-patchbomb/* (glob)
2781 Date: Tue, 01 Jan 1980 00:01:04 +0000
2781 Date: Tue, 01 Jan 1980 00:01:04 +0000
2782 From: test
2782 From: test
2783 To: foo
2783 To: foo
2784
2784
2785 # HG changeset patch
2785 # HG changeset patch
2786 # User test
2786 # User test
2787 # Date 5 0
2787 # Date 5 0
2788 # Thu Jan 01 00:00:05 1970 +0000
2788 # Thu Jan 01 00:00:05 1970 +0000
2789 # Node ID 4d6f44f466c96d89f2e7e865a70ff41d8b6eee37
2789 # Node ID 4d6f44f466c96d89f2e7e865a70ff41d8b6eee37
2790 # Parent 0c7b871cb86b61a1c07e244393603c361e4a178d
2790 # Parent 0c7b871cb86b61a1c07e244393603c361e4a178d
2791 isolatin 8-bit encoding
2791 isolatin 8-bit encoding
2792
2792
2793 diff -r 0c7b871cb86b -r 4d6f44f466c9 isolatin
2793 diff -r 0c7b871cb86b -r 4d6f44f466c9 isolatin
2794 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2794 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2795 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
2795 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
2796 @@ -0,0 +1,1 @@
2796 @@ -0,0 +1,1 @@
2797 +h=F6mma!
2797 +h=F6mma!
2798
2798
2799 displaying [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a ...
2799 displaying [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a ...
2800 MIME-Version: 1.0
2800 MIME-Version: 1.0
2801 Content-Type: text/plain; charset="us-ascii"
2801 Content-Type: text/plain; charset="us-ascii"
2802 Content-Transfer-Encoding: 7bit
2802 Content-Transfer-Encoding: 7bit
2803 Subject: [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a
2803 Subject: [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a
2804 X-Mercurial-Node: c41d7353114ccb07a50a822ad5ddf47051c88ec2
2804 X-Mercurial-Node: c41d7353114ccb07a50a822ad5ddf47051c88ec2
2805 X-Mercurial-Series-Index: 5
2805 X-Mercurial-Series-Index: 5
2806 X-Mercurial-Series-Total: 6
2806 X-Mercurial-Series-Total: 6
2807 Message-Id: <c41d7353114ccb07a50a.315532865@test-hostname>
2807 Message-Id: <c41d7353114ccb07a50a.315532865@test-hostname>
2808 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2808 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2809 In-Reply-To: <patchbomb.315532860@test-hostname>
2809 In-Reply-To: <patchbomb.315532860@test-hostname>
2810 References: <patchbomb.315532860@test-hostname>
2810 References: <patchbomb.315532860@test-hostname>
2811 User-Agent: Mercurial-patchbomb/* (glob)
2811 User-Agent: Mercurial-patchbomb/* (glob)
2812 Date: Tue, 01 Jan 1980 00:01:05 +0000
2812 Date: Tue, 01 Jan 1980 00:01:05 +0000
2813 From: test
2813 From: test
2814 To: foo
2814 To: foo
2815
2815
2816 # HG changeset patch
2816 # HG changeset patch
2817 # User test
2817 # User test
2818 # Date 0 0
2818 # Date 0 0
2819 # Thu Jan 01 00:00:00 1970 +0000
2819 # Thu Jan 01 00:00:00 1970 +0000
2820 # Node ID c41d7353114ccb07a50a822ad5ddf47051c88ec2
2820 # Node ID c41d7353114ccb07a50a822ad5ddf47051c88ec2
2821 # Parent 4d6f44f466c96d89f2e7e865a70ff41d8b6eee37
2821 # Parent 4d6f44f466c96d89f2e7e865a70ff41d8b6eee37
2822 Added tag zero, zero.foo for changeset 8580ff50825a
2822 Added tag zero, zero.foo for changeset 8580ff50825a
2823
2823
2824 diff -r 4d6f44f466c9 -r c41d7353114c .hgtags
2824 diff -r 4d6f44f466c9 -r c41d7353114c .hgtags
2825 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2825 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2826 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2826 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2827 @@ -0,0 +1,2 @@
2827 @@ -0,0 +1,2 @@
2828 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero
2828 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero
2829 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2829 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2830
2830
2831 displaying [PATCH 6 of 6] d ...
2831 displaying [PATCH 6 of 6] d ...
2832 MIME-Version: 1.0
2832 MIME-Version: 1.0
2833 Content-Type: text/plain; charset="us-ascii"
2833 Content-Type: text/plain; charset="us-ascii"
2834 Content-Transfer-Encoding: 7bit
2834 Content-Transfer-Encoding: 7bit
2835 Subject: [PATCH 6 of 6] d
2835 Subject: [PATCH 6 of 6] d
2836 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2836 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2837 X-Mercurial-Series-Index: 6
2837 X-Mercurial-Series-Index: 6
2838 X-Mercurial-Series-Total: 6
2838 X-Mercurial-Series-Total: 6
2839 Message-Id: <2f9fa9b998c5fe3ac2bd.315532866@test-hostname>
2839 Message-Id: <2f9fa9b998c5fe3ac2bd.315532866@test-hostname>
2840 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2840 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@test-hostname>
2841 In-Reply-To: <patchbomb.315532860@test-hostname>
2841 In-Reply-To: <patchbomb.315532860@test-hostname>
2842 References: <patchbomb.315532860@test-hostname>
2842 References: <patchbomb.315532860@test-hostname>
2843 User-Agent: Mercurial-patchbomb/* (glob)
2843 User-Agent: Mercurial-patchbomb/* (glob)
2844 Date: Tue, 01 Jan 1980 00:01:06 +0000
2844 Date: Tue, 01 Jan 1980 00:01:06 +0000
2845 From: test
2845 From: test
2846 To: foo
2846 To: foo
2847
2847
2848 # HG changeset patch
2848 # HG changeset patch
2849 # User test
2849 # User test
2850 # Date 4 0
2850 # Date 4 0
2851 # Thu Jan 01 00:00:04 1970 +0000
2851 # Thu Jan 01 00:00:04 1970 +0000
2852 # Branch test
2852 # Branch test
2853 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2853 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2854 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2854 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2855 d
2855 d
2856
2856
2857 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2857 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2858 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2858 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2859 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2859 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2860 @@ -0,0 +1,1 @@
2860 @@ -0,0 +1,1 @@
2861 +d
2861 +d
2862
2862
2863
2863
2864 Don't prompt for a CC header.
2864 Don't prompt for a CC header.
2865
2865
2866 $ echo "[email]" >> $HGRCPATH
2866 $ echo "[email]" >> $HGRCPATH
2867 $ echo "cc=" >> $HGRCPATH
2867 $ echo "cc=" >> $HGRCPATH
2868
2868
2869 dest#branch URIs:
2869 dest#branch URIs:
2870 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test
2870 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test
2871 comparing with ../t
2871 comparing with ../t#test
2872 From [test]: test
2872 From [test]: test
2873 this patch series consists of 1 patches.
2873 this patch series consists of 1 patches.
2874
2874
2875
2875
2876 displaying [PATCH] test ...
2876 displaying [PATCH] test ...
2877 MIME-Version: 1.0
2877 MIME-Version: 1.0
2878 Content-Type: text/plain; charset="us-ascii"
2878 Content-Type: text/plain; charset="us-ascii"
2879 Content-Transfer-Encoding: 7bit
2879 Content-Transfer-Encoding: 7bit
2880 Subject: [PATCH] test
2880 Subject: [PATCH] test
2881 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2881 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2882 X-Mercurial-Series-Index: 1
2882 X-Mercurial-Series-Index: 1
2883 X-Mercurial-Series-Total: 1
2883 X-Mercurial-Series-Total: 1
2884 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@test-hostname>
2884 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@test-hostname>
2885 X-Mercurial-Series-Id: <2f9fa9b998c5fe3ac2bd.315532860@test-hostname>
2885 X-Mercurial-Series-Id: <2f9fa9b998c5fe3ac2bd.315532860@test-hostname>
2886 User-Agent: Mercurial-patchbomb/* (glob)
2886 User-Agent: Mercurial-patchbomb/* (glob)
2887 Date: Tue, 01 Jan 1980 00:01:00 +0000
2887 Date: Tue, 01 Jan 1980 00:01:00 +0000
2888 From: test
2888 From: test
2889 To: foo
2889 To: foo
2890
2890
2891 # HG changeset patch
2891 # HG changeset patch
2892 # User test
2892 # User test
2893 # Date 4 0
2893 # Date 4 0
2894 # Thu Jan 01 00:00:04 1970 +0000
2894 # Thu Jan 01 00:00:04 1970 +0000
2895 # Branch test
2895 # Branch test
2896 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2896 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2897 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2897 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2898 d
2898 d
2899
2899
2900 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2900 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2901 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2901 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2902 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2902 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2903 @@ -0,0 +1,1 @@
2903 @@ -0,0 +1,1 @@
2904 +d
2904 +d
2905
2905
2906 #if no-windows
2906 #if no-windows
2907
2907
2908 Set up a fake sendmail program
2908 Set up a fake sendmail program
2909
2909
2910 $ cat > pretendmail.sh << 'EOF'
2910 $ cat > pretendmail.sh << 'EOF'
2911 > #!/bin/sh
2911 > #!/bin/sh
2912 > echo "$@"
2912 > echo "$@"
2913 > cat
2913 > cat
2914 > EOF
2914 > EOF
2915 $ chmod +x pretendmail.sh
2915 $ chmod +x pretendmail.sh
2916
2916
2917 $ echo '[email]' >> $HGRCPATH
2917 $ echo '[email]' >> $HGRCPATH
2918 $ echo "method=`pwd`/pretendmail.sh" >> $HGRCPATH
2918 $ echo "method=`pwd`/pretendmail.sh" >> $HGRCPATH
2919
2919
2920 Test introduction configuration
2920 Test introduction configuration
2921 =================================
2921 =================================
2922
2922
2923 $ echo '[patchbomb]' >> $HGRCPATH
2923 $ echo '[patchbomb]' >> $HGRCPATH
2924
2924
2925 "auto" setting
2925 "auto" setting
2926 ----------------
2926 ----------------
2927
2927
2928 $ echo 'intro=auto' >> $HGRCPATH
2928 $ echo 'intro=auto' >> $HGRCPATH
2929
2929
2930 single rev
2930 single rev
2931
2931
2932 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2932 $ 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]
2933 [1]
2934
2934
2935 single rev + flag
2935 single rev + flag
2936
2936
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."
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."
2938 Write the introductory message for the patch series.
2938 Write the introductory message for the patch series.
2939
2939
2940
2940
2941 Multi rev
2941 Multi rev
2942
2942
2943 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2943 $ 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.
2944 Write the introductory message for the patch series.
2945
2945
2946 "never" setting
2946 "never" setting
2947 -----------------
2947 -----------------
2948
2948
2949 $ echo 'intro=never' >> $HGRCPATH
2949 $ echo 'intro=never' >> $HGRCPATH
2950
2950
2951 single rev
2951 single rev
2952
2952
2953 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2953 $ 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]
2954 [1]
2955
2955
2956 single rev + flag
2956 single rev + flag
2957
2957
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."
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."
2959 Write the introductory message for the patch series.
2959 Write the introductory message for the patch series.
2960
2960
2961
2961
2962 Multi rev
2962 Multi rev
2963
2963
2964 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2964 $ 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]
2965 [1]
2966
2966
2967 Multi rev + flag
2967 Multi rev + flag
2968
2968
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."
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."
2970 Write the introductory message for the patch series.
2970 Write the introductory message for the patch series.
2971
2971
2972 "always" setting
2972 "always" setting
2973 -----------------
2973 -----------------
2974
2974
2975 $ echo 'intro=always' >> $HGRCPATH
2975 $ echo 'intro=always' >> $HGRCPATH
2976
2976
2977 single rev
2977 single rev
2978
2978
2979 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2979 $ 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.
2980 Write the introductory message for the patch series.
2981
2981
2982 single rev + flag
2982 single rev + flag
2983
2983
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."
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."
2985 Write the introductory message for the patch series.
2985 Write the introductory message for the patch series.
2986
2986
2987
2987
2988 Multi rev
2988 Multi rev
2989
2989
2990 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2990 $ 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.
2991 Write the introductory message for the patch series.
2992
2992
2993 Multi rev + flag
2993 Multi rev + flag
2994
2994
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."
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."
2996 Write the introductory message for the patch series.
2996 Write the introductory message for the patch series.
2997
2997
2998 bad value setting
2998 bad value setting
2999 -----------------
2999 -----------------
3000
3000
3001 $ echo 'intro=oliviawearaclownnose' >> $HGRCPATH
3001 $ echo 'intro=oliviawearaclownnose' >> $HGRCPATH
3002
3002
3003 single rev
3003 single rev
3004
3004
3005 $ hg email --date '1980-1-1 0:1' -v -t foo -s test -r '10'
3005 $ hg email --date '1980-1-1 0:1' -v -t foo -s test -r '10'
3006 From [test]: test
3006 From [test]: test
3007 this patch series consists of 1 patches.
3007 this patch series consists of 1 patches.
3008
3008
3009 warning: invalid patchbomb.intro value "oliviawearaclownnose"
3009 warning: invalid patchbomb.intro value "oliviawearaclownnose"
3010 (should be one of always, never, auto)
3010 (should be one of always, never, auto)
3011 -f test foo
3011 -f test foo
3012 MIME-Version: 1.0
3012 MIME-Version: 1.0
3013 Content-Type: text/plain; charset="us-ascii"
3013 Content-Type: text/plain; charset="us-ascii"
3014 Content-Transfer-Encoding: 7bit
3014 Content-Transfer-Encoding: 7bit
3015 Subject: [PATCH] test
3015 Subject: [PATCH] test
3016 X-Mercurial-Node: 3b6f1ec9dde933a40a115a7990f8b320477231af
3016 X-Mercurial-Node: 3b6f1ec9dde933a40a115a7990f8b320477231af
3017 X-Mercurial-Series-Index: 1
3017 X-Mercurial-Series-Index: 1
3018 X-Mercurial-Series-Total: 1
3018 X-Mercurial-Series-Total: 1
3019 Message-Id: <3b6f1ec9dde933a40a11*> (glob)
3019 Message-Id: <3b6f1ec9dde933a40a11*> (glob)
3020 X-Mercurial-Series-Id: <3b6f1ec9dde933a40a11.*> (glob)
3020 X-Mercurial-Series-Id: <3b6f1ec9dde933a40a11.*> (glob)
3021 User-Agent: Mercurial-patchbomb/* (glob)
3021 User-Agent: Mercurial-patchbomb/* (glob)
3022 Date: Tue, 01 Jan 1980 00:01:00 +0000
3022 Date: Tue, 01 Jan 1980 00:01:00 +0000
3023 From: test
3023 From: test
3024 To: foo
3024 To: foo
3025
3025
3026 # HG changeset patch
3026 # HG changeset patch
3027 # User test
3027 # User test
3028 # Date 5 0
3028 # Date 5 0
3029 # Thu Jan 01 00:00:05 1970 +0000
3029 # Thu Jan 01 00:00:05 1970 +0000
3030 # Branch test
3030 # Branch test
3031 # Node ID 3b6f1ec9dde933a40a115a7990f8b320477231af
3031 # Node ID 3b6f1ec9dde933a40a115a7990f8b320477231af
3032 # Parent 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
3032 # Parent 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
3033 dd
3033 dd
3034
3034
3035 diff -r 2f9fa9b998c5 -r 3b6f1ec9dde9 d
3035 diff -r 2f9fa9b998c5 -r 3b6f1ec9dde9 d
3036 --- a/d Thu Jan 01 00:00:04 1970 +0000
3036 --- a/d Thu Jan 01 00:00:04 1970 +0000
3037 +++ b/d Thu Jan 01 00:00:05 1970 +0000
3037 +++ b/d Thu Jan 01 00:00:05 1970 +0000
3038 @@ -1,1 +1,2 @@
3038 @@ -1,1 +1,2 @@
3039 d
3039 d
3040 +d
3040 +d
3041
3041
3042 sending [PATCH] test ...
3042 sending [PATCH] test ...
3043 sending mail: $TESTTMP/t2/pretendmail.sh -f test foo
3043 sending mail: $TESTTMP/t2/pretendmail.sh -f test foo
3044
3044
3045 Shell characters in addresses
3045 Shell characters in addresses
3046
3046
3047 $ hg email --date '1980-1-1 0:1' -v -t '~foo/bar@example.com' -f 'me*@example.com' -r '10'
3047 $ 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.
3048 this patch series consists of 1 patches.
3049
3049
3050 warning: invalid patchbomb.intro value "oliviawearaclownnose"
3050 warning: invalid patchbomb.intro value "oliviawearaclownnose"
3051 (should be one of always, never, auto)
3051 (should be one of always, never, auto)
3052 -f me*@example.com ~foo/bar@example.com
3052 -f me*@example.com ~foo/bar@example.com
3053 MIME-Version: 1.0
3053 MIME-Version: 1.0
3054 Content-Type: text/plain; charset="us-ascii"
3054 Content-Type: text/plain; charset="us-ascii"
3055 Content-Transfer-Encoding: 7bit
3055 Content-Transfer-Encoding: 7bit
3056 Subject: [PATCH] dd
3056 Subject: [PATCH] dd
3057 X-Mercurial-Node: 3b6f1ec9dde933a40a115a7990f8b320477231af
3057 X-Mercurial-Node: 3b6f1ec9dde933a40a115a7990f8b320477231af
3058 X-Mercurial-Series-Index: 1
3058 X-Mercurial-Series-Index: 1
3059 X-Mercurial-Series-Total: 1
3059 X-Mercurial-Series-Total: 1
3060 Message-Id: <3b6f1ec9dde933a40a11.315532860@test-hostname>
3060 Message-Id: <3b6f1ec9dde933a40a11.315532860@test-hostname>
3061 X-Mercurial-Series-Id: <3b6f1ec9dde933a40a11.315532860@test-hostname>
3061 X-Mercurial-Series-Id: <3b6f1ec9dde933a40a11.315532860@test-hostname>
3062 User-Agent: Mercurial-patchbomb/* (glob)
3062 User-Agent: Mercurial-patchbomb/* (glob)
3063 Date: Tue, 01 Jan 1980 00:01:00 +0000
3063 Date: Tue, 01 Jan 1980 00:01:00 +0000
3064 From: me*@example.com
3064 From: me*@example.com
3065 To: ~foo/bar@example.com
3065 To: ~foo/bar@example.com
3066
3066
3067 # HG changeset patch
3067 # HG changeset patch
3068 # User test
3068 # User test
3069 # Date 5 0
3069 # Date 5 0
3070 # Thu Jan 01 00:00:05 1970 +0000
3070 # Thu Jan 01 00:00:05 1970 +0000
3071 # Branch test
3071 # Branch test
3072 # Node ID 3b6f1ec9dde933a40a115a7990f8b320477231af
3072 # Node ID 3b6f1ec9dde933a40a115a7990f8b320477231af
3073 # Parent 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
3073 # Parent 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
3074 dd
3074 dd
3075
3075
3076 diff -r 2f9fa9b998c5 -r 3b6f1ec9dde9 d
3076 diff -r 2f9fa9b998c5 -r 3b6f1ec9dde9 d
3077 --- a/d Thu Jan 01 00:00:04 1970 +0000
3077 --- a/d Thu Jan 01 00:00:04 1970 +0000
3078 +++ b/d Thu Jan 01 00:00:05 1970 +0000
3078 +++ b/d Thu Jan 01 00:00:05 1970 +0000
3079 @@ -1,1 +1,2 @@
3079 @@ -1,1 +1,2 @@
3080 d
3080 d
3081 +d
3081 +d
3082
3082
3083 sending [PATCH] dd ...
3083 sending [PATCH] dd ...
3084 sending mail: $TESTTMP/t2/pretendmail.sh -f 'me*@example.com' '~foo/bar@example.com'
3084 sending mail: $TESTTMP/t2/pretendmail.sh -f 'me*@example.com' '~foo/bar@example.com'
3085
3085
3086 Test pull url header
3086 Test pull url header
3087 =================================
3087 =================================
3088
3088
3089 basic version
3089 basic version
3090
3090
3091 $ echo 'intro=auto' >> $HGRCPATH
3091 $ echo 'intro=auto' >> $HGRCPATH
3092 $ echo "publicurl=$TESTTMP/t2" >> $HGRCPATH
3092 $ echo "publicurl=$TESTTMP/t2" >> $HGRCPATH
3093 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '10' | grep '^#'
3093 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '10' | grep '^#'
3094 abort: public url $TESTTMP/t2 is missing 3b6f1ec9dde9
3094 abort: public url $TESTTMP/t2 is missing 3b6f1ec9dde9
3095 (use 'hg push $TESTTMP/t2 -r 3b6f1ec9dde9')
3095 (use 'hg push $TESTTMP/t2 -r 3b6f1ec9dde9')
3096 [1]
3096 [1]
3097
3097
3098 public missing
3098 public missing
3099
3099
3100 $ echo 'publicurl=$TESTTMP/missing' >> $HGRCPATH
3100 $ echo 'publicurl=$TESTTMP/missing' >> $HGRCPATH
3101 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '10'
3101 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '10'
3102 unable to access public repo: $TESTTMP/missing
3102 unable to access public repo: $TESTTMP/missing
3103 abort: repository $TESTTMP/missing not found
3103 abort: repository $TESTTMP/missing not found
3104 [255]
3104 [255]
3105
3105
3106 node missing at public
3106 node missing at public
3107
3107
3108 $ hg clone -r '9' . ../t3
3108 $ hg clone -r '9' . ../t3
3109 adding changesets
3109 adding changesets
3110 adding manifests
3110 adding manifests
3111 adding file changes
3111 adding file changes
3112 added 3 changesets with 3 changes to 3 files
3112 added 3 changesets with 3 changes to 3 files
3113 new changesets 8580ff50825a:2f9fa9b998c5
3113 new changesets 8580ff50825a:2f9fa9b998c5
3114 updating to branch test
3114 updating to branch test
3115 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
3115 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
3116 $ echo 'publicurl=$TESTTMP/t3' >> $HGRCPATH
3116 $ echo 'publicurl=$TESTTMP/t3' >> $HGRCPATH
3117 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '10'
3117 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '10'
3118 abort: public url $TESTTMP/t3 is missing 3b6f1ec9dde9
3118 abort: public url $TESTTMP/t3 is missing 3b6f1ec9dde9
3119 (use 'hg push $TESTTMP/t3 -r 3b6f1ec9dde9')
3119 (use 'hg push $TESTTMP/t3 -r 3b6f1ec9dde9')
3120 [255]
3120 [255]
3121
3121
3122 multiple heads are missing at public
3122 multiple heads are missing at public
3123
3123
3124 $ hg email --date '1980-1-1 0:1' -t foo -s test -r '2+10'
3124 $ 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
3125 abort: public "$TESTTMP/t3" is missing ff2c9fa2018b and 1 others
3126 (use 'hg push $TESTTMP/t3 -r ff2c9fa2018b -r 3b6f1ec9dde9')
3126 (use 'hg push $TESTTMP/t3 -r ff2c9fa2018b -r 3b6f1ec9dde9')
3127 [255]
3127 [255]
3128
3128
3129 #endif
3129 #endif
General Comments 0
You need to be logged in to leave comments. Login now