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