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