##// END OF EJS Templates
patchbomb: show prompt and selection in non-interactive mode...
Christian Ebert -
r12197:54069306 default
parent child Browse files
Show More
@@ -1,538 +1,536
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 With the -d/--diffstat option, you will be prompted for each changeset
25 With the -d/--diffstat option, you will be prompted for each changeset
26 with a diffstat summary and the changeset summary, so you can be sure
26 with a diffstat summary and the changeset summary, so you can be sure
27 you are sending the right changes.
27 you are sending the right changes.
28
28
29 To configure other defaults, add a section like this to your hgrc
29 To configure other defaults, add a section like this to your hgrc
30 file::
30 file::
31
31
32 [email]
32 [email]
33 from = My Name <my@email>
33 from = My Name <my@email>
34 to = recipient1, recipient2, ...
34 to = recipient1, recipient2, ...
35 cc = cc1, cc2, ...
35 cc = cc1, cc2, ...
36 bcc = bcc1, bcc2, ...
36 bcc = bcc1, bcc2, ...
37 reply-to = address1, address2, ...
37 reply-to = address1, address2, ...
38
38
39 Use ``[patchbomb]`` as configuration section name if you need to
39 Use ``[patchbomb]`` as configuration section name if you need to
40 override global ``[email]`` address settings.
40 override global ``[email]`` address settings.
41
41
42 Then you can use the :hg:`email` command to mail a series of
42 Then you can use the :hg:`email` command to mail a series of
43 changesets as a patchbomb.
43 changesets as a patchbomb.
44
44
45 To avoid sending patches prematurely, it is a good idea to first run
45 To avoid sending patches prematurely, it is a good idea to first run
46 the :hg:`email` command with the "-n" option (test only). You will be
46 the :hg:`email` command with the "-n" option (test only). You will be
47 prompted for an email recipient address, a subject and an introductory
47 prompted for an email recipient address, a subject and an introductory
48 message describing the patches of your patchbomb. Then when all is
48 message describing the patches of your patchbomb. Then when all is
49 done, patchbomb messages are displayed. If the PAGER environment
49 done, patchbomb messages are displayed. If the PAGER environment
50 variable is set, your pager will be fired up once for each patchbomb
50 variable is set, your pager will be fired up once for each patchbomb
51 message, so you can verify everything is alright.
51 message, so you can verify everything is alright.
52
52
53 The -m/--mbox option is also very useful. Instead of previewing each
53 The -m/--mbox option is also very useful. Instead of previewing each
54 patchbomb message in a pager or sending the messages directly, it will
54 patchbomb message in a pager or sending the messages directly, it will
55 create a UNIX mailbox file with the patch emails. This mailbox file
55 create a UNIX mailbox file with the patch emails. This mailbox file
56 can be previewed with any mail user agent which supports UNIX mbox
56 can be previewed with any mail user agent which supports UNIX mbox
57 files, e.g. with mutt::
57 files, e.g. with mutt::
58
58
59 % mutt -R -f mbox
59 % mutt -R -f mbox
60
60
61 When you are previewing the patchbomb messages, you can use ``formail``
61 When you are previewing the patchbomb messages, you can use ``formail``
62 (a utility that is commonly installed as part of the procmail
62 (a utility that is commonly installed as part of the procmail
63 package), to send each message out::
63 package), to send each message out::
64
64
65 % formail -s sendmail -bm -t < mbox
65 % formail -s sendmail -bm -t < mbox
66
66
67 That should be all. Now your patchbomb is on its way out.
67 That should be all. Now your patchbomb is on its way out.
68
68
69 You can also either configure the method option in the email section
69 You can also either configure the method option in the email section
70 to be a sendmail compatible mailer or fill out the [smtp] section so
70 to be a sendmail compatible mailer or fill out the [smtp] section so
71 that the patchbomb extension can automatically send patchbombs
71 that the patchbomb extension can automatically send patchbombs
72 directly from the commandline. See the [email] and [smtp] sections in
72 directly from the commandline. See the [email] and [smtp] sections in
73 hgrc(5) for details.
73 hgrc(5) for details.
74 '''
74 '''
75
75
76 import os, errno, socket, tempfile, cStringIO, time
76 import os, errno, socket, tempfile, cStringIO, time
77 import email.MIMEMultipart, email.MIMEBase
77 import email.MIMEMultipart, email.MIMEBase
78 import email.Utils, email.Encoders, email.Generator
78 import email.Utils, email.Encoders, email.Generator
79 from mercurial import cmdutil, commands, hg, mail, patch, util, discovery
79 from mercurial import cmdutil, commands, hg, mail, patch, util, discovery
80 from mercurial.i18n import _
80 from mercurial.i18n import _
81 from mercurial.node import bin
81 from mercurial.node import bin
82
82
83 def prompt(ui, prompt, default=None, rest=':'):
83 def prompt(ui, prompt, default=None, rest=':'):
84 if not ui.interactive():
84 if not ui.interactive() and default is None:
85 if default is not None:
86 return default
87 raise util.Abort(_("%s Please enter a valid value" % (prompt + rest)))
85 raise util.Abort(_("%s Please enter a valid value" % (prompt + rest)))
88 if default:
86 if default:
89 prompt += ' [%s]' % default
87 prompt += ' [%s]' % default
90 prompt += rest
88 prompt += rest
91 while True:
89 while True:
92 r = ui.prompt(prompt, default=default)
90 r = ui.prompt(prompt, default=default)
93 if r:
91 if r:
94 return r
92 return r
95 if default is not None:
93 if default is not None:
96 return default
94 return default
97 ui.warn(_('Please enter a valid value.\n'))
95 ui.warn(_('Please enter a valid value.\n'))
98
96
99 def cdiffstat(ui, summary, patchlines):
97 def cdiffstat(ui, summary, patchlines):
100 s = patch.diffstat(patchlines)
98 s = patch.diffstat(patchlines)
101 if summary:
99 if summary:
102 ui.write(summary, '\n')
100 ui.write(summary, '\n')
103 ui.write(s, '\n')
101 ui.write(s, '\n')
104 if ui.promptchoice(_('does the diffstat above look okay (yn)?'),
102 if ui.promptchoice(_('does the diffstat above look okay (yn)?'),
105 (_('&Yes'), _('&No'))):
103 (_('&Yes'), _('&No'))):
106 raise util.Abort(_('diffstat rejected'))
104 raise util.Abort(_('diffstat rejected'))
107 return s
105 return s
108
106
109 def introneeded(opts, number):
107 def introneeded(opts, number):
110 '''is an introductory message required?'''
108 '''is an introductory message required?'''
111 return number > 1 or opts.get('intro') or opts.get('desc')
109 return number > 1 or opts.get('intro') or opts.get('desc')
112
110
113 def makepatch(ui, repo, patch, opts, _charsets, idx, total, patchname=None):
111 def makepatch(ui, repo, patch, opts, _charsets, idx, total, patchname=None):
114
112
115 desc = []
113 desc = []
116 node = None
114 node = None
117 body = ''
115 body = ''
118
116
119 for line in patch:
117 for line in patch:
120 if line.startswith('#'):
118 if line.startswith('#'):
121 if line.startswith('# Node ID'):
119 if line.startswith('# Node ID'):
122 node = line.split()[-1]
120 node = line.split()[-1]
123 continue
121 continue
124 if line.startswith('diff -r') or line.startswith('diff --git'):
122 if line.startswith('diff -r') or line.startswith('diff --git'):
125 break
123 break
126 desc.append(line)
124 desc.append(line)
127
125
128 if not patchname and not node:
126 if not patchname and not node:
129 raise ValueError
127 raise ValueError
130
128
131 if opts.get('attach'):
129 if opts.get('attach'):
132 body = ('\n'.join(desc[1:]).strip() or
130 body = ('\n'.join(desc[1:]).strip() or
133 'Patch subject is complete summary.')
131 'Patch subject is complete summary.')
134 body += '\n\n\n'
132 body += '\n\n\n'
135
133
136 if opts.get('plain'):
134 if opts.get('plain'):
137 while patch and patch[0].startswith('# '):
135 while patch and patch[0].startswith('# '):
138 patch.pop(0)
136 patch.pop(0)
139 if patch:
137 if patch:
140 patch.pop(0)
138 patch.pop(0)
141 while patch and not patch[0].strip():
139 while patch and not patch[0].strip():
142 patch.pop(0)
140 patch.pop(0)
143
141
144 if opts.get('diffstat'):
142 if opts.get('diffstat'):
145 body += cdiffstat(ui, '\n'.join(desc), patch) + '\n\n'
143 body += cdiffstat(ui, '\n'.join(desc), patch) + '\n\n'
146
144
147 if opts.get('attach') or opts.get('inline'):
145 if opts.get('attach') or opts.get('inline'):
148 msg = email.MIMEMultipart.MIMEMultipart()
146 msg = email.MIMEMultipart.MIMEMultipart()
149 if body:
147 if body:
150 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
148 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
151 p = mail.mimetextpatch('\n'.join(patch), 'x-patch', opts.get('test'))
149 p = mail.mimetextpatch('\n'.join(patch), 'x-patch', opts.get('test'))
152 binnode = bin(node)
150 binnode = bin(node)
153 # if node is mq patch, it will have the patch file's name as a tag
151 # if node is mq patch, it will have the patch file's name as a tag
154 if not patchname:
152 if not patchname:
155 patchtags = [t for t in repo.nodetags(binnode)
153 patchtags = [t for t in repo.nodetags(binnode)
156 if t.endswith('.patch') or t.endswith('.diff')]
154 if t.endswith('.patch') or t.endswith('.diff')]
157 if patchtags:
155 if patchtags:
158 patchname = patchtags[0]
156 patchname = patchtags[0]
159 elif total > 1:
157 elif total > 1:
160 patchname = cmdutil.make_filename(repo, '%b-%n.patch',
158 patchname = cmdutil.make_filename(repo, '%b-%n.patch',
161 binnode, seqno=idx, total=total)
159 binnode, seqno=idx, total=total)
162 else:
160 else:
163 patchname = cmdutil.make_filename(repo, '%b.patch', binnode)
161 patchname = cmdutil.make_filename(repo, '%b.patch', binnode)
164 disposition = 'inline'
162 disposition = 'inline'
165 if opts.get('attach'):
163 if opts.get('attach'):
166 disposition = 'attachment'
164 disposition = 'attachment'
167 p['Content-Disposition'] = disposition + '; filename=' + patchname
165 p['Content-Disposition'] = disposition + '; filename=' + patchname
168 msg.attach(p)
166 msg.attach(p)
169 else:
167 else:
170 body += '\n'.join(patch)
168 body += '\n'.join(patch)
171 msg = mail.mimetextpatch(body, display=opts.get('test'))
169 msg = mail.mimetextpatch(body, display=opts.get('test'))
172
170
173 flag = ' '.join(opts.get('flag'))
171 flag = ' '.join(opts.get('flag'))
174 if flag:
172 if flag:
175 flag = ' ' + flag
173 flag = ' ' + flag
176
174
177 subj = desc[0].strip().rstrip('. ')
175 subj = desc[0].strip().rstrip('. ')
178 if not introneeded(opts, total):
176 if not introneeded(opts, total):
179 subj = '[PATCH%s] %s' % (flag, opts.get('subject') or subj)
177 subj = '[PATCH%s] %s' % (flag, opts.get('subject') or subj)
180 else:
178 else:
181 tlen = len(str(total))
179 tlen = len(str(total))
182 subj = '[PATCH %0*d of %d%s] %s' % (tlen, idx, total, flag, subj)
180 subj = '[PATCH %0*d of %d%s] %s' % (tlen, idx, total, flag, subj)
183 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
181 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
184 msg['X-Mercurial-Node'] = node
182 msg['X-Mercurial-Node'] = node
185 return msg, subj
183 return msg, subj
186
184
187 def patchbomb(ui, repo, *revs, **opts):
185 def patchbomb(ui, repo, *revs, **opts):
188 '''send changesets by email
186 '''send changesets by email
189
187
190 By default, diffs are sent in the format generated by
188 By default, diffs are sent in the format generated by
191 :hg:`export`, one per message. The series starts with a "[PATCH 0
189 :hg:`export`, one per message. The series starts with a "[PATCH 0
192 of N]" introduction, which describes the series as a whole.
190 of N]" introduction, which describes the series as a whole.
193
191
194 Each patch email has a Subject line of "[PATCH M of N] ...", using
192 Each patch email has a Subject line of "[PATCH M of N] ...", using
195 the first line of the changeset description as the subject text.
193 the first line of the changeset description as the subject text.
196 The message contains two or three parts. First, the changeset
194 The message contains two or three parts. First, the changeset
197 description. Next, (optionally) if the diffstat program is
195 description. Next, (optionally) if the diffstat program is
198 installed and -d/--diffstat is used, the result of running
196 installed and -d/--diffstat is used, the result of running
199 diffstat on the patch. Finally, the patch itself, as generated by
197 diffstat on the patch. Finally, the patch itself, as generated by
200 :hg:`export`.
198 :hg:`export`.
201
199
202 By default the patch is included as text in the email body for
200 By default the patch is included as text in the email body for
203 easy reviewing. Using the -a/--attach option will instead create
201 easy reviewing. Using the -a/--attach option will instead create
204 an attachment for the patch. With -i/--inline an inline attachment
202 an attachment for the patch. With -i/--inline an inline attachment
205 will be created.
203 will be created.
206
204
207 With -o/--outgoing, emails will be generated for patches not found
205 With -o/--outgoing, emails will be generated for patches not found
208 in the destination repository (or only those which are ancestors
206 in the destination repository (or only those which are ancestors
209 of the specified revisions if any are provided)
207 of the specified revisions if any are provided)
210
208
211 With -b/--bundle, changesets are selected as for --outgoing, but a
209 With -b/--bundle, changesets are selected as for --outgoing, but a
212 single email containing a binary Mercurial bundle as an attachment
210 single email containing a binary Mercurial bundle as an attachment
213 will be sent.
211 will be sent.
214
212
215 Examples::
213 Examples::
216
214
217 hg email -r 3000 # send patch 3000 only
215 hg email -r 3000 # send patch 3000 only
218 hg email -r 3000 -r 3001 # send patches 3000 and 3001
216 hg email -r 3000 -r 3001 # send patches 3000 and 3001
219 hg email -r 3000:3005 # send patches 3000 through 3005
217 hg email -r 3000:3005 # send patches 3000 through 3005
220 hg email 3000 # send patch 3000 (deprecated)
218 hg email 3000 # send patch 3000 (deprecated)
221
219
222 hg email -o # send all patches not in default
220 hg email -o # send all patches not in default
223 hg email -o DEST # send all patches not in DEST
221 hg email -o DEST # send all patches not in DEST
224 hg email -o -r 3000 # send all ancestors of 3000 not in default
222 hg email -o -r 3000 # send all ancestors of 3000 not in default
225 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
223 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
226
224
227 hg email -b # send bundle of all patches not in default
225 hg email -b # send bundle of all patches not in default
228 hg email -b DEST # send bundle of all patches not in DEST
226 hg email -b DEST # send bundle of all patches not in DEST
229 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
227 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
230 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST
228 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST
231
229
232 Before using this command, you will need to enable email in your
230 Before using this command, you will need to enable email in your
233 hgrc. See the [email] section in hgrc(5) for details.
231 hgrc. See the [email] section in hgrc(5) for details.
234 '''
232 '''
235
233
236 _charsets = mail._charsets(ui)
234 _charsets = mail._charsets(ui)
237
235
238 bundle = opts.get('bundle')
236 bundle = opts.get('bundle')
239 date = opts.get('date')
237 date = opts.get('date')
240 mbox = opts.get('mbox')
238 mbox = opts.get('mbox')
241 outgoing = opts.get('outgoing')
239 outgoing = opts.get('outgoing')
242 rev = opts.get('rev')
240 rev = opts.get('rev')
243 # internal option used by pbranches
241 # internal option used by pbranches
244 patches = opts.get('patches')
242 patches = opts.get('patches')
245
243
246 def getoutgoing(dest, revs):
244 def getoutgoing(dest, revs):
247 '''Return the revisions present locally but not in dest'''
245 '''Return the revisions present locally but not in dest'''
248 dest = ui.expandpath(dest or 'default-push', dest or 'default')
246 dest = ui.expandpath(dest or 'default-push', dest or 'default')
249 dest, branches = hg.parseurl(dest)
247 dest, branches = hg.parseurl(dest)
250 revs, checkout = hg.addbranchrevs(repo, repo, branches, revs)
248 revs, checkout = hg.addbranchrevs(repo, repo, branches, revs)
251 if revs:
249 if revs:
252 revs = [repo.lookup(rev) for rev in revs]
250 revs = [repo.lookup(rev) for rev in revs]
253 other = hg.repository(hg.remoteui(repo, opts), dest)
251 other = hg.repository(hg.remoteui(repo, opts), dest)
254 ui.status(_('comparing with %s\n') % dest)
252 ui.status(_('comparing with %s\n') % dest)
255 o = discovery.findoutgoing(repo, other)
253 o = discovery.findoutgoing(repo, other)
256 if not o:
254 if not o:
257 ui.status(_("no changes found\n"))
255 ui.status(_("no changes found\n"))
258 return []
256 return []
259 o = repo.changelog.nodesbetween(o, revs)[0]
257 o = repo.changelog.nodesbetween(o, revs)[0]
260 return [str(repo.changelog.rev(r)) for r in o]
258 return [str(repo.changelog.rev(r)) for r in o]
261
259
262 def getpatches(revs):
260 def getpatches(revs):
263 for r in cmdutil.revrange(repo, revs):
261 for r in cmdutil.revrange(repo, revs):
264 output = cStringIO.StringIO()
262 output = cStringIO.StringIO()
265 cmdutil.export(repo, [r], fp=output,
263 cmdutil.export(repo, [r], fp=output,
266 opts=patch.diffopts(ui, opts))
264 opts=patch.diffopts(ui, opts))
267 yield output.getvalue().split('\n')
265 yield output.getvalue().split('\n')
268
266
269 def getbundle(dest):
267 def getbundle(dest):
270 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-')
268 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-')
271 tmpfn = os.path.join(tmpdir, 'bundle')
269 tmpfn = os.path.join(tmpdir, 'bundle')
272 try:
270 try:
273 commands.bundle(ui, repo, tmpfn, dest, **opts)
271 commands.bundle(ui, repo, tmpfn, dest, **opts)
274 return open(tmpfn, 'rb').read()
272 return open(tmpfn, 'rb').read()
275 finally:
273 finally:
276 try:
274 try:
277 os.unlink(tmpfn)
275 os.unlink(tmpfn)
278 except:
276 except:
279 pass
277 pass
280 os.rmdir(tmpdir)
278 os.rmdir(tmpdir)
281
279
282 if not (opts.get('test') or mbox):
280 if not (opts.get('test') or mbox):
283 # really sending
281 # really sending
284 mail.validateconfig(ui)
282 mail.validateconfig(ui)
285
283
286 if not (revs or rev or outgoing or bundle or patches):
284 if not (revs or rev or outgoing or bundle or patches):
287 raise util.Abort(_('specify at least one changeset with -r or -o'))
285 raise util.Abort(_('specify at least one changeset with -r or -o'))
288
286
289 if outgoing and bundle:
287 if outgoing and bundle:
290 raise util.Abort(_("--outgoing mode always on with --bundle;"
288 raise util.Abort(_("--outgoing mode always on with --bundle;"
291 " do not re-specify --outgoing"))
289 " do not re-specify --outgoing"))
292
290
293 if outgoing or bundle:
291 if outgoing or bundle:
294 if len(revs) > 1:
292 if len(revs) > 1:
295 raise util.Abort(_("too many destinations"))
293 raise util.Abort(_("too many destinations"))
296 dest = revs and revs[0] or None
294 dest = revs and revs[0] or None
297 revs = []
295 revs = []
298
296
299 if rev:
297 if rev:
300 if revs:
298 if revs:
301 raise util.Abort(_('use only one form to specify the revision'))
299 raise util.Abort(_('use only one form to specify the revision'))
302 revs = rev
300 revs = rev
303
301
304 if outgoing:
302 if outgoing:
305 revs = getoutgoing(dest, rev)
303 revs = getoutgoing(dest, rev)
306 if bundle:
304 if bundle:
307 opts['revs'] = revs
305 opts['revs'] = revs
308
306
309 # start
307 # start
310 if date:
308 if date:
311 start_time = util.parsedate(date)
309 start_time = util.parsedate(date)
312 else:
310 else:
313 start_time = util.makedate()
311 start_time = util.makedate()
314
312
315 def genmsgid(id):
313 def genmsgid(id):
316 return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn())
314 return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn())
317
315
318 def getdescription(body, sender):
316 def getdescription(body, sender):
319 if opts.get('desc'):
317 if opts.get('desc'):
320 body = open(opts.get('desc')).read()
318 body = open(opts.get('desc')).read()
321 else:
319 else:
322 ui.write(_('\nWrite the introductory message for the '
320 ui.write(_('\nWrite the introductory message for the '
323 'patch series.\n\n'))
321 'patch series.\n\n'))
324 body = ui.edit(body, sender)
322 body = ui.edit(body, sender)
325 return body
323 return body
326
324
327 def getpatchmsgs(patches, patchnames=None):
325 def getpatchmsgs(patches, patchnames=None):
328 jumbo = []
326 jumbo = []
329 msgs = []
327 msgs = []
330
328
331 ui.write(_('This patch series consists of %d patches.\n\n')
329 ui.write(_('This patch series consists of %d patches.\n\n')
332 % len(patches))
330 % len(patches))
333
331
334 name = None
332 name = None
335 for i, p in enumerate(patches):
333 for i, p in enumerate(patches):
336 jumbo.extend(p)
334 jumbo.extend(p)
337 if patchnames:
335 if patchnames:
338 name = patchnames[i]
336 name = patchnames[i]
339 msg = makepatch(ui, repo, p, opts, _charsets, i + 1,
337 msg = makepatch(ui, repo, p, opts, _charsets, i + 1,
340 len(patches), name)
338 len(patches), name)
341 msgs.append(msg)
339 msgs.append(msg)
342
340
343 if introneeded(opts, len(patches)):
341 if introneeded(opts, len(patches)):
344 tlen = len(str(len(patches)))
342 tlen = len(str(len(patches)))
345
343
346 flag = ' '.join(opts.get('flag'))
344 flag = ' '.join(opts.get('flag'))
347 if flag:
345 if flag:
348 subj = '[PATCH %0*d of %d %s]' % (tlen, 0, len(patches), flag)
346 subj = '[PATCH %0*d of %d %s]' % (tlen, 0, len(patches), flag)
349 else:
347 else:
350 subj = '[PATCH %0*d of %d]' % (tlen, 0, len(patches))
348 subj = '[PATCH %0*d of %d]' % (tlen, 0, len(patches))
351 subj += ' ' + (opts.get('subject') or
349 subj += ' ' + (opts.get('subject') or
352 prompt(ui, 'Subject: ', rest=subj))
350 prompt(ui, 'Subject: ', rest=subj))
353
351
354 body = ''
352 body = ''
355 if opts.get('diffstat'):
353 if opts.get('diffstat'):
356 d = cdiffstat(ui, _('Final summary:\n'), jumbo)
354 d = cdiffstat(ui, _('Final summary:\n'), jumbo)
357 if d:
355 if d:
358 body = '\n' + d
356 body = '\n' + d
359
357
360 body = getdescription(body, sender)
358 body = getdescription(body, sender)
361 msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
359 msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
362 msg['Subject'] = mail.headencode(ui, subj, _charsets,
360 msg['Subject'] = mail.headencode(ui, subj, _charsets,
363 opts.get('test'))
361 opts.get('test'))
364
362
365 msgs.insert(0, (msg, subj))
363 msgs.insert(0, (msg, subj))
366 return msgs
364 return msgs
367
365
368 def getbundlemsgs(bundle):
366 def getbundlemsgs(bundle):
369 subj = (opts.get('subject')
367 subj = (opts.get('subject')
370 or prompt(ui, 'Subject:', 'A bundle for your repository'))
368 or prompt(ui, 'Subject:', 'A bundle for your repository'))
371
369
372 body = getdescription('', sender)
370 body = getdescription('', sender)
373 msg = email.MIMEMultipart.MIMEMultipart()
371 msg = email.MIMEMultipart.MIMEMultipart()
374 if body:
372 if body:
375 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
373 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
376 datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
374 datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
377 datapart.set_payload(bundle)
375 datapart.set_payload(bundle)
378 bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
376 bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
379 datapart.add_header('Content-Disposition', 'attachment',
377 datapart.add_header('Content-Disposition', 'attachment',
380 filename=bundlename)
378 filename=bundlename)
381 email.Encoders.encode_base64(datapart)
379 email.Encoders.encode_base64(datapart)
382 msg.attach(datapart)
380 msg.attach(datapart)
383 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
381 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
384 return [(msg, subj)]
382 return [(msg, subj)]
385
383
386 sender = (opts.get('from') or ui.config('email', 'from') or
384 sender = (opts.get('from') or ui.config('email', 'from') or
387 ui.config('patchbomb', 'from') or
385 ui.config('patchbomb', 'from') or
388 prompt(ui, 'From', ui.username()))
386 prompt(ui, 'From', ui.username()))
389
387
390 if patches:
388 if patches:
391 msgs = getpatchmsgs(patches, opts.get('patchnames'))
389 msgs = getpatchmsgs(patches, opts.get('patchnames'))
392 elif bundle:
390 elif bundle:
393 msgs = getbundlemsgs(getbundle(dest))
391 msgs = getbundlemsgs(getbundle(dest))
394 else:
392 else:
395 msgs = getpatchmsgs(list(getpatches(revs)))
393 msgs = getpatchmsgs(list(getpatches(revs)))
396
394
397 def getaddrs(opt, prpt=None, default=None):
395 def getaddrs(opt, prpt=None, default=None):
398 addrs = opts.get(opt.replace('-', '_'))
396 addrs = opts.get(opt.replace('-', '_'))
399 if addrs:
397 if addrs:
400 return mail.addrlistencode(ui, addrs, _charsets,
398 return mail.addrlistencode(ui, addrs, _charsets,
401 opts.get('test'))
399 opts.get('test'))
402
400
403 addrs = ui.config('email', opt) or ui.config('patchbomb', opt) or ''
401 addrs = ui.config('email', opt) or ui.config('patchbomb', opt) or ''
404 if not addrs and prpt:
402 if not addrs and prpt:
405 addrs = prompt(ui, prpt, default)
403 addrs = prompt(ui, prpt, default)
406
404
407 return mail.addrlistencode(ui, [addrs], _charsets, opts.get('test'))
405 return mail.addrlistencode(ui, [addrs], _charsets, opts.get('test'))
408
406
409 to = getaddrs('to', 'To')
407 to = getaddrs('to', 'To')
410 cc = getaddrs('cc', 'Cc', '')
408 cc = getaddrs('cc', 'Cc', '')
411 bcc = getaddrs('bcc')
409 bcc = getaddrs('bcc')
412 replyto = getaddrs('reply-to')
410 replyto = getaddrs('reply-to')
413
411
414 ui.write('\n')
412 ui.write('\n')
415
413
416 parent = opts.get('in_reply_to') or None
414 parent = opts.get('in_reply_to') or None
417 # angle brackets may be omitted, they're not semantically part of the msg-id
415 # angle brackets may be omitted, they're not semantically part of the msg-id
418 if parent is not None:
416 if parent is not None:
419 if not parent.startswith('<'):
417 if not parent.startswith('<'):
420 parent = '<' + parent
418 parent = '<' + parent
421 if not parent.endswith('>'):
419 if not parent.endswith('>'):
422 parent += '>'
420 parent += '>'
423
421
424 first = True
422 first = True
425
423
426 sender_addr = email.Utils.parseaddr(sender)[1]
424 sender_addr = email.Utils.parseaddr(sender)[1]
427 sender = mail.addressencode(ui, sender, _charsets, opts.get('test'))
425 sender = mail.addressencode(ui, sender, _charsets, opts.get('test'))
428 sendmail = None
426 sendmail = None
429 for m, subj in msgs:
427 for m, subj in msgs:
430 try:
428 try:
431 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
429 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
432 except TypeError:
430 except TypeError:
433 m['Message-Id'] = genmsgid('patchbomb')
431 m['Message-Id'] = genmsgid('patchbomb')
434 if parent:
432 if parent:
435 m['In-Reply-To'] = parent
433 m['In-Reply-To'] = parent
436 m['References'] = parent
434 m['References'] = parent
437 if first:
435 if first:
438 parent = m['Message-Id']
436 parent = m['Message-Id']
439 first = False
437 first = False
440
438
441 m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
439 m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
442 m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
440 m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
443
441
444 start_time = (start_time[0] + 1, start_time[1])
442 start_time = (start_time[0] + 1, start_time[1])
445 m['From'] = sender
443 m['From'] = sender
446 m['To'] = ', '.join(to)
444 m['To'] = ', '.join(to)
447 if cc:
445 if cc:
448 m['Cc'] = ', '.join(cc)
446 m['Cc'] = ', '.join(cc)
449 if bcc:
447 if bcc:
450 m['Bcc'] = ', '.join(bcc)
448 m['Bcc'] = ', '.join(bcc)
451 if replyto:
449 if replyto:
452 m['Reply-To'] = ', '.join(replyto)
450 m['Reply-To'] = ', '.join(replyto)
453 if opts.get('test'):
451 if opts.get('test'):
454 ui.status(_('Displaying '), subj, ' ...\n')
452 ui.status(_('Displaying '), subj, ' ...\n')
455 ui.flush()
453 ui.flush()
456 if 'PAGER' in os.environ and not ui.plain():
454 if 'PAGER' in os.environ and not ui.plain():
457 fp = util.popen(os.environ['PAGER'], 'w')
455 fp = util.popen(os.environ['PAGER'], 'w')
458 else:
456 else:
459 fp = ui
457 fp = ui
460 generator = email.Generator.Generator(fp, mangle_from_=False)
458 generator = email.Generator.Generator(fp, mangle_from_=False)
461 try:
459 try:
462 generator.flatten(m, 0)
460 generator.flatten(m, 0)
463 fp.write('\n')
461 fp.write('\n')
464 except IOError, inst:
462 except IOError, inst:
465 if inst.errno != errno.EPIPE:
463 if inst.errno != errno.EPIPE:
466 raise
464 raise
467 if fp is not ui:
465 if fp is not ui:
468 fp.close()
466 fp.close()
469 elif mbox:
467 elif mbox:
470 ui.status(_('Writing '), subj, ' ...\n')
468 ui.status(_('Writing '), subj, ' ...\n')
471 fp = open(mbox, 'In-Reply-To' in m and 'ab+' or 'wb+')
469 fp = open(mbox, 'In-Reply-To' in m and 'ab+' or 'wb+')
472 generator = email.Generator.Generator(fp, mangle_from_=True)
470 generator = email.Generator.Generator(fp, mangle_from_=True)
473 # Should be time.asctime(), but Windows prints 2-characters day
471 # Should be time.asctime(), but Windows prints 2-characters day
474 # of month instead of one. Make them print the same thing.
472 # of month instead of one. Make them print the same thing.
475 date = time.strftime('%a %b %d %H:%M:%S %Y',
473 date = time.strftime('%a %b %d %H:%M:%S %Y',
476 time.localtime(start_time[0]))
474 time.localtime(start_time[0]))
477 fp.write('From %s %s\n' % (sender_addr, date))
475 fp.write('From %s %s\n' % (sender_addr, date))
478 generator.flatten(m, 0)
476 generator.flatten(m, 0)
479 fp.write('\n\n')
477 fp.write('\n\n')
480 fp.close()
478 fp.close()
481 else:
479 else:
482 if not sendmail:
480 if not sendmail:
483 sendmail = mail.connect(ui)
481 sendmail = mail.connect(ui)
484 ui.status(_('Sending '), subj, ' ...\n')
482 ui.status(_('Sending '), subj, ' ...\n')
485 # Exim does not remove the Bcc field
483 # Exim does not remove the Bcc field
486 del m['Bcc']
484 del m['Bcc']
487 fp = cStringIO.StringIO()
485 fp = cStringIO.StringIO()
488 generator = email.Generator.Generator(fp, mangle_from_=False)
486 generator = email.Generator.Generator(fp, mangle_from_=False)
489 generator.flatten(m, 0)
487 generator.flatten(m, 0)
490 sendmail(sender, to + bcc + cc, fp.getvalue())
488 sendmail(sender, to + bcc + cc, fp.getvalue())
491
489
492 emailopts = [
490 emailopts = [
493 ('a', 'attach', None, _('send patches as attachments')),
491 ('a', 'attach', None, _('send patches as attachments')),
494 ('i', 'inline', None, _('send patches as inline attachments')),
492 ('i', 'inline', None, _('send patches as inline attachments')),
495 ('', 'bcc', [], _('email addresses of blind carbon copy recipients')),
493 ('', 'bcc', [], _('email addresses of blind carbon copy recipients')),
496 ('c', 'cc', [], _('email addresses of copy recipients')),
494 ('c', 'cc', [], _('email addresses of copy recipients')),
497 ('d', 'diffstat', None, _('add diffstat output to messages')),
495 ('d', 'diffstat', None, _('add diffstat output to messages')),
498 ('', 'date', '', _('use the given date as the sending date')),
496 ('', 'date', '', _('use the given date as the sending date')),
499 ('', 'desc', '', _('use the given file as the series description')),
497 ('', 'desc', '', _('use the given file as the series description')),
500 ('f', 'from', '', _('email address of sender')),
498 ('f', 'from', '', _('email address of sender')),
501 ('n', 'test', None, _('print messages that would be sent')),
499 ('n', 'test', None, _('print messages that would be sent')),
502 ('m', 'mbox', '',
500 ('m', 'mbox', '',
503 _('write messages to mbox file instead of sending them')),
501 _('write messages to mbox file instead of sending them')),
504 ('', 'reply-to', [], _('email addresses replies should be sent to')),
502 ('', 'reply-to', [], _('email addresses replies should be sent to')),
505 ('s', 'subject', '',
503 ('s', 'subject', '',
506 _('subject of first message (intro or single patch)')),
504 _('subject of first message (intro or single patch)')),
507 ('', 'in-reply-to', '',
505 ('', 'in-reply-to', '',
508 _('message identifier to reply to')),
506 _('message identifier to reply to')),
509 ('', 'flag', [], _('flags to add in subject prefixes')),
507 ('', 'flag', [], _('flags to add in subject prefixes')),
510 ('t', 'to', [], _('email addresses of recipients')),
508 ('t', 'to', [], _('email addresses of recipients')),
511 ]
509 ]
512
510
513
511
514 cmdtable = {
512 cmdtable = {
515 "email":
513 "email":
516 (patchbomb,
514 (patchbomb,
517 [('g', 'git', None, _('use git extended diff format')),
515 [('g', 'git', None, _('use git extended diff format')),
518 ('', 'plain', None, _('omit hg patch header')),
516 ('', 'plain', None, _('omit hg patch header')),
519 ('o', 'outgoing', None,
517 ('o', 'outgoing', None,
520 _('send changes not found in the target repository')),
518 _('send changes not found in the target repository')),
521 ('b', 'bundle', None,
519 ('b', 'bundle', None,
522 _('send changes not in target as a binary bundle')),
520 _('send changes not in target as a binary bundle')),
523 ('', 'bundlename', 'bundle',
521 ('', 'bundlename', 'bundle',
524 _('name of the bundle attachment file'), _('NAME')),
522 _('name of the bundle attachment file'), _('NAME')),
525 ('r', 'rev', [],
523 ('r', 'rev', [],
526 _('a revision to send'), _('REV')),
524 _('a revision to send'), _('REV')),
527 ('', 'force', None,
525 ('', 'force', None,
528 _('run even when remote repository is unrelated '
526 _('run even when remote repository is unrelated '
529 '(with -b/--bundle)')),
527 '(with -b/--bundle)')),
530 ('', 'base', [],
528 ('', 'base', [],
531 _('a base changeset to specify instead of a destination '
529 _('a base changeset to specify instead of a destination '
532 '(with -b/--bundle)'),
530 '(with -b/--bundle)'),
533 _('REV')),
531 _('REV')),
534 ('', 'intro', None,
532 ('', 'intro', None,
535 _('send an introduction email for a single patch')),
533 _('send an introduction email for a single patch')),
536 ] + emailopts + commands.remoteopts,
534 ] + emailopts + commands.remoteopts,
537 _('hg email [OPTION]... [DEST]...'))
535 _('hg email [OPTION]... [DEST]...'))
538 }
536 }
@@ -1,2123 +1,2128
1 $ fixheaders()
1 $ fixheaders()
2 > {
2 > {
3 > sed -e 's/\(Message-Id:.*@\).*/\1/' \
3 > sed -e 's/\(Message-Id:.*@\).*/\1/' \
4 > -e 's/\(In-Reply-To:.*@\).*/\1/' \
4 > -e 's/\(In-Reply-To:.*@\).*/\1/' \
5 > -e 's/\(References:.*@\).*/\1/' \
5 > -e 's/\(References:.*@\).*/\1/' \
6 > -e 's/\(User-Agent:.*\)\/.*/\1/' \
6 > -e 's/\(User-Agent:.*\)\/.*/\1/' \
7 > -e 's/===.*/===/'
7 > -e 's/===.*/===/'
8 > }
8 > }
9 $ echo "[extensions]" >> $HGRCPATH
9 $ echo "[extensions]" >> $HGRCPATH
10 $ echo "patchbomb=" >> $HGRCPATH
10 $ echo "patchbomb=" >> $HGRCPATH
11
11
12 $ hg init t
12 $ hg init t
13 $ cd t
13 $ cd t
14 $ echo a > a
14 $ echo a > a
15 $ hg commit -Ama -d '1 0'
15 $ hg commit -Ama -d '1 0'
16 adding a
16 adding a
17
17
18 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
18 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
19 This patch series consists of 1 patches.
19 This patch series consists of 1 patches.
20
20
21
21
22 Displaying [PATCH] a ...
22 Displaying [PATCH] a ...
23 Content-Type: text/plain; charset="us-ascii"
23 Content-Type: text/plain; charset="us-ascii"
24 MIME-Version: 1.0
24 MIME-Version: 1.0
25 Content-Transfer-Encoding: 7bit
25 Content-Transfer-Encoding: 7bit
26 Subject: [PATCH] a
26 Subject: [PATCH] a
27 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
27 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
28 Message-Id: <8580ff50825a50c8f716.60@.*
28 Message-Id: <8580ff50825a50c8f716.60@.*
29 User-Agent: Mercurial-patchbomb/.*
29 User-Agent: Mercurial-patchbomb/.*
30 Date: Thu, 01 Jan 1970 00:01:00 +0000
30 Date: Thu, 01 Jan 1970 00:01:00 +0000
31 From: quux
31 From: quux
32 To: foo
32 To: foo
33 Cc: bar
33 Cc: bar
34
34
35 # HG changeset patch
35 # HG changeset patch
36 # User test
36 # User test
37 # Date 1 0
37 # Date 1 0
38 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
38 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
39 # Parent 0000000000000000000000000000000000000000
39 # Parent 0000000000000000000000000000000000000000
40 a
40 a
41
41
42 diff -r 000000000000 -r 8580ff50825a a
42 diff -r 000000000000 -r 8580ff50825a a
43 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
43 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
44 +++ b/a Thu Jan 01 00:00:01 1970 +0000
44 +++ b/a Thu Jan 01 00:00:01 1970 +0000
45 @@ -0,0 +1,1 @@
45 @@ -0,0 +1,1 @@
46 +a
46 +a
47
47
48
48
49 $ echo b > b
49 $ echo b > b
50 $ hg commit -Amb -d '2 0'
50 $ hg commit -Amb -d '2 0'
51 adding b
51 adding b
52
52
53 $ hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip
53 $ hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip
54 This patch series consists of 2 patches.
54 This patch series consists of 2 patches.
55
55
56
56
57 Write the introductory message for the patch series.
57 Write the introductory message for the patch series.
58
58
59
59
60 Displaying [PATCH 0 of 2] test ...
60 Displaying [PATCH 0 of 2] test ...
61 Content-Type: text/plain; charset="us-ascii"
61 Content-Type: text/plain; charset="us-ascii"
62 MIME-Version: 1.0
62 MIME-Version: 1.0
63 Content-Transfer-Encoding: 7bit
63 Content-Transfer-Encoding: 7bit
64 Subject: [PATCH 0 of 2] test
64 Subject: [PATCH 0 of 2] test
65 Message-Id: <patchbomb.120@[^>]*>
65 Message-Id: <patchbomb.120@[^>]*>
66 User-Agent: Mercurial-patchbomb/.*
66 User-Agent: Mercurial-patchbomb/.*
67 Date: Thu, 01 Jan 1970 00:02:00 +0000
67 Date: Thu, 01 Jan 1970 00:02:00 +0000
68 From: quux
68 From: quux
69 To: foo
69 To: foo
70 Cc: bar
70 Cc: bar
71
71
72
72
73 Displaying [PATCH 1 of 2] a ...
73 Displaying [PATCH 1 of 2] a ...
74 Content-Type: text/plain; charset="us-ascii"
74 Content-Type: text/plain; charset="us-ascii"
75 MIME-Version: 1.0
75 MIME-Version: 1.0
76 Content-Transfer-Encoding: 7bit
76 Content-Transfer-Encoding: 7bit
77 Subject: [PATCH 1 of 2] a
77 Subject: [PATCH 1 of 2] a
78 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
78 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
79 Message-Id: <8580ff50825a50c8f716.121@[^>]*>
79 Message-Id: <8580ff50825a50c8f716.121@[^>]*>
80 In-Reply-To: <patchbomb.120@[^>]*>
80 In-Reply-To: <patchbomb.120@[^>]*>
81 References: <patchbomb.120@[^>]*>
81 References: <patchbomb.120@[^>]*>
82 User-Agent: Mercurial-patchbomb/.*
82 User-Agent: Mercurial-patchbomb/.*
83 Date: Thu, 01 Jan 1970 00:02:01 +0000
83 Date: Thu, 01 Jan 1970 00:02:01 +0000
84 From: quux
84 From: quux
85 To: foo
85 To: foo
86 Cc: bar
86 Cc: bar
87
87
88 # HG changeset patch
88 # HG changeset patch
89 # User test
89 # User test
90 # Date 1 0
90 # Date 1 0
91 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
91 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
92 # Parent 0000000000000000000000000000000000000000
92 # Parent 0000000000000000000000000000000000000000
93 a
93 a
94
94
95 diff -r 000000000000 -r 8580ff50825a a
95 diff -r 000000000000 -r 8580ff50825a a
96 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
96 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
97 +++ b/a Thu Jan 01 00:00:01 1970 +0000
97 +++ b/a Thu Jan 01 00:00:01 1970 +0000
98 @@ -0,0 +1,1 @@
98 @@ -0,0 +1,1 @@
99 +a
99 +a
100
100
101 Displaying [PATCH 2 of 2] b ...
101 Displaying [PATCH 2 of 2] b ...
102 Content-Type: text/plain; charset="us-ascii"
102 Content-Type: text/plain; charset="us-ascii"
103 MIME-Version: 1.0
103 MIME-Version: 1.0
104 Content-Transfer-Encoding: 7bit
104 Content-Transfer-Encoding: 7bit
105 Subject: [PATCH 2 of 2] b
105 Subject: [PATCH 2 of 2] b
106 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
106 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
107 Message-Id: <97d72e5f12c7e84f8506.122@[^>]*>
107 Message-Id: <97d72e5f12c7e84f8506.122@[^>]*>
108 In-Reply-To: <patchbomb.120@[^>]*>
108 In-Reply-To: <patchbomb.120@[^>]*>
109 References: <patchbomb.120@[^>]*>
109 References: <patchbomb.120@[^>]*>
110 User-Agent: Mercurial-patchbomb/.*
110 User-Agent: Mercurial-patchbomb/.*
111 Date: Thu, 01 Jan 1970 00:02:02 +0000
111 Date: Thu, 01 Jan 1970 00:02:02 +0000
112 From: quux
112 From: quux
113 To: foo
113 To: foo
114 Cc: bar
114 Cc: bar
115
115
116 # HG changeset patch
116 # HG changeset patch
117 # User test
117 # User test
118 # Date 2 0
118 # Date 2 0
119 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
119 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
120 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
120 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
121 b
121 b
122
122
123 diff -r 8580ff50825a -r 97d72e5f12c7 b
123 diff -r 8580ff50825a -r 97d72e5f12c7 b
124 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
124 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
125 +++ b/b Thu Jan 01 00:00:02 1970 +0000
125 +++ b/b Thu Jan 01 00:00:02 1970 +0000
126 @@ -0,0 +1,1 @@
126 @@ -0,0 +1,1 @@
127 +b
127 +b
128
128
129
129
130 $ hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip
130 $ hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip
131 This patch series consists of 2 patches.
131 This patch series consists of 2 patches.
132
132
133
133
134 Write the introductory message for the patch series.
134 Write the introductory message for the patch series.
135
135
136
136
137 Writing [PATCH 0 of 2] test ...
137 Writing [PATCH 0 of 2] test ...
138 Writing [PATCH 1 of 2] a ...
138 Writing [PATCH 1 of 2] a ...
139 Writing [PATCH 2 of 2] b ...
139 Writing [PATCH 2 of 2] b ...
140
140
141 $ cd ..
141 $ cd ..
142
142
143 $ hg clone -q t t2
143 $ hg clone -q t t2
144 $ cd t2
144 $ cd t2
145 $ echo c > c
145 $ echo c > c
146 $ hg commit -Amc -d '3 0'
146 $ hg commit -Amc -d '3 0'
147 adding c
147 adding c
148
148
149 $ cat > description <<EOF
149 $ cat > description <<EOF
150 > a multiline
150 > a multiline
151 >
151 >
152 > description
152 > description
153 > EOF
153 > EOF
154
154
155
155
156 test bundle and description:
156 test bundle and description:
157 $ hg email --date '1970-1-1 0:3' -n -f quux -t foo \
157 $ hg email --date '1970-1-1 0:3' -n -f quux -t foo \
158 > -c bar -s test -r tip -b --desc description | fixheaders
158 > -c bar -s test -r tip -b --desc description | fixheaders
159 searching for changes
159 searching for changes
160 1 changesets found
160 1 changesets found
161
161
162 Displaying test ...
162 Displaying test ...
163 Content-Type: multipart/mixed; boundary="===
163 Content-Type: multipart/mixed; boundary="===
164 MIME-Version: 1.0
164 MIME-Version: 1.0
165 Subject: test
165 Subject: test
166 Message-Id: <patchbomb.180@
166 Message-Id: <patchbomb.180@
167 User-Agent: Mercurial-patchbomb
167 User-Agent: Mercurial-patchbomb
168 Date: Thu, 01 Jan 1970 00:03:00 +0000
168 Date: Thu, 01 Jan 1970 00:03:00 +0000
169 From: quux
169 From: quux
170 To: foo
170 To: foo
171 Cc: bar
171 Cc: bar
172
172
173 --===
173 --===
174 Content-Type: text/plain; charset="us-ascii"
174 Content-Type: text/plain; charset="us-ascii"
175 MIME-Version: 1.0
175 MIME-Version: 1.0
176 Content-Transfer-Encoding: 7bit
176 Content-Transfer-Encoding: 7bit
177
177
178 a multiline
178 a multiline
179
179
180 description
180 description
181
181
182 --===
182 --===
183 Content-Type: application/x-mercurial-bundle
183 Content-Type: application/x-mercurial-bundle
184 MIME-Version: 1.0
184 MIME-Version: 1.0
185 Content-Disposition: attachment; filename="bundle.hg"
185 Content-Disposition: attachment; filename="bundle.hg"
186 Content-Transfer-Encoding: base64
186 Content-Transfer-Encoding: base64
187
187
188 SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
188 SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
189 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
189 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
190 oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
190 oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
191 Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
191 Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
192 SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
192 SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
193 sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
193 sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
194 Q70eyNw=
194 Q70eyNw=
195 --===
195 --===
196
196
197 utf-8 patch:
197 utf-8 patch:
198 $ python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
198 $ python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
199 $ hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: base64'
199 $ hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: base64'
200 adding description
200 adding description
201 adding utf
201 adding utf
202
202
203 no mime encoding for email --test:
203 no mime encoding for email --test:
204 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | fixheaders > mailtest
204 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | fixheaders > mailtest
205
205
206 md5sum of 8-bit output:
206 md5sum of 8-bit output:
207 $ $TESTDIR/md5sum.py mailtest
207 $ $TESTDIR/md5sum.py mailtest
208 e726c29b3008e77994c7572563e57c34 mailtest
208 e726c29b3008e77994c7572563e57c34 mailtest
209
209
210 $ rm mailtest
210 $ rm mailtest
211
211
212 mime encoded mbox (base64):
212 mime encoded mbox (base64):
213 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
213 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
214 This patch series consists of 1 patches.
214 This patch series consists of 1 patches.
215
215
216
216
217 Writing [PATCH] charset=utf-8; content-transfer-encoding: base64 ...
217 Writing [PATCH] charset=utf-8; content-transfer-encoding: base64 ...
218
218
219 $ cat mbox
219 $ cat mbox
220 From quux Thu Jan 01 00:04:01 1970
220 From quux Thu Jan 01 00:04:01 1970
221 Content-Type: text/plain; charset="utf-8"
221 Content-Type: text/plain; charset="utf-8"
222 MIME-Version: 1.0
222 MIME-Version: 1.0
223 Content-Transfer-Encoding: base64
223 Content-Transfer-Encoding: base64
224 Subject: [PATCH] charset=utf-8; content-transfer-encoding: base64
224 Subject: [PATCH] charset=utf-8; content-transfer-encoding: base64
225 X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
225 X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
226 Message-Id: <c3c9e37db9f4fe4882cd.240@.*
226 Message-Id: <c3c9e37db9f4fe4882cd.240@.*
227 User-Agent: Mercurial-patchbomb/.*
227 User-Agent: Mercurial-patchbomb/.*
228 Date: Thu, 01 Jan 1970 00:04:00 +0000
228 Date: Thu, 01 Jan 1970 00:04:00 +0000
229 From: quux
229 From: quux
230 To: foo
230 To: foo
231 Cc: bar
231 Cc: bar
232
232
233 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojIE5vZGUgSUQgYzNj
233 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojIE5vZGUgSUQgYzNj
234 OWUzN2RiOWY0ZmU0ODgyY2RhMzliYWY0MmZlZDZiYWQ4YjE1YQojIFBhcmVudCAgZmYyYzlmYTIw
234 OWUzN2RiOWY0ZmU0ODgyY2RhMzliYWY0MmZlZDZiYWQ4YjE1YQojIFBhcmVudCAgZmYyYzlmYTIw
235 MThiMTVmYTc0YjMzMzYzYmRhOTUyNzMyM2UyYTk5ZgpjaGFyc2V0PXV0Zi04OyBjb250ZW50LXRy
235 MThiMTVmYTc0YjMzMzYzYmRhOTUyNzMyM2UyYTk5ZgpjaGFyc2V0PXV0Zi04OyBjb250ZW50LXRy
236 YW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIGMzYzllMzdk
236 YW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIGMzYzllMzdk
237 YjlmNCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
237 YjlmNCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
238 MDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
238 MDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
239 LTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5ZmEy
239 LTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5ZmEy
240 MDE4YiAtciBjM2M5ZTM3ZGI5ZjQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
240 MDE4YiAtciBjM2M5ZTM3ZGI5ZjQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
241 MCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
241 MCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
242 LTAsMCArMSwxIEBACitow7ZtbWEhCg==
242 LTAsMCArMSwxIEBACitow7ZtbWEhCg==
243
243
244
244
245 $ rm mbox
245 $ rm mbox
246
246
247 mime encoded mbox (quoted-printable):
247 mime encoded mbox (quoted-printable):
248 $ python -c 'fp = open("qp", "wb"); fp.write("%s\nfoo\n\nbar\n" % ("x" * 1024)); fp.close();'
248 $ python -c 'fp = open("qp", "wb"); fp.write("%s\nfoo\n\nbar\n" % ("x" * 1024)); fp.close();'
249 $ hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: quoted-printable'
249 $ hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: quoted-printable'
250 adding qp
250 adding qp
251
251
252 no mime encoding for email --test:
252 no mime encoding for email --test:
253 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
253 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
254 > fixheaders > mailtest
254 > fixheaders > mailtest
255 md5sum of qp output:
255 md5sum of qp output:
256 $ $TESTDIR/md5sum.py mailtest
256 $ $TESTDIR/md5sum.py mailtest
257 0402c7d033e04044e423bb04816f9dae mailtest
257 0402c7d033e04044e423bb04816f9dae mailtest
258 $ rm mailtest
258 $ rm mailtest
259
259
260 mime encoded mbox (quoted-printable):
260 mime encoded mbox (quoted-printable):
261 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
261 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
262 This patch series consists of 1 patches.
262 This patch series consists of 1 patches.
263
263
264
264
265 Writing [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable ...
265 Writing [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable ...
266 $ cat mbox | fixheaders
266 $ cat mbox | fixheaders
267 From quux Thu Jan 01 00:04:01 1970
267 From quux Thu Jan 01 00:04:01 1970
268 Content-Type: text/plain; charset="us-ascii"
268 Content-Type: text/plain; charset="us-ascii"
269 MIME-Version: 1.0
269 MIME-Version: 1.0
270 Content-Transfer-Encoding: quoted-printable
270 Content-Transfer-Encoding: quoted-printable
271 Subject: [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable
271 Subject: [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable
272 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
272 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
273 Message-Id: <c655633f8c87700bb38c.240@
273 Message-Id: <c655633f8c87700bb38c.240@
274 User-Agent: Mercurial-patchbomb
274 User-Agent: Mercurial-patchbomb
275 Date: Thu, 01 Jan 1970 00:04:00 +0000
275 Date: Thu, 01 Jan 1970 00:04:00 +0000
276 From: quux
276 From: quux
277 To: foo
277 To: foo
278 Cc: bar
278 Cc: bar
279
279
280 # HG changeset patch
280 # HG changeset patch
281 # User test
281 # User test
282 # Date 4 0
282 # Date 4 0
283 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
283 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
284 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
284 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
285 charset=3Dutf-8; content-transfer-encoding: quoted-printable
285 charset=3Dutf-8; content-transfer-encoding: quoted-printable
286
286
287 diff -r c3c9e37db9f4 -r c655633f8c87 qp
287 diff -r c3c9e37db9f4 -r c655633f8c87 qp
288 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
288 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
289 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
289 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
290 @@ -0,0 +1,4 @@
290 @@ -0,0 +1,4 @@
291 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
291 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
292 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
292 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
293 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
293 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
294 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
294 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
295 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
295 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
296 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
296 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
297 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
297 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
298 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
298 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
299 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
299 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
300 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
300 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
301 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
301 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
302 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
302 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
303 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
303 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
304 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
304 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
305 +foo
305 +foo
306 +
306 +
307 +bar
307 +bar
308
308
309
309
310
310
311 $ rm mbox
311 $ rm mbox
312
312
313 iso-8859-1 patch:
313 iso-8859-1 patch:
314 $ python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
314 $ python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
315 $ hg commit -A -d '5 0' -m 'charset=us-ascii; content-transfer-encoding: 8bit'
315 $ hg commit -A -d '5 0' -m 'charset=us-ascii; content-transfer-encoding: 8bit'
316 adding isolatin
316 adding isolatin
317
317
318 fake ascii mbox:
318 fake ascii mbox:
319 $ hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
319 $ hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
320 This patch series consists of 1 patches.
320 This patch series consists of 1 patches.
321
321
322
322
323 Writing [PATCH] charset=us-ascii; content-transfer-encoding: 8bit ...
323 Writing [PATCH] charset=us-ascii; content-transfer-encoding: 8bit ...
324 $ fixheaders < mbox > mboxfix
324 $ fixheaders < mbox > mboxfix
325
325
326 md5sum of 8-bit output:
326 md5sum of 8-bit output:
327 $ $TESTDIR/md5sum.py mboxfix
327 $ $TESTDIR/md5sum.py mboxfix
328 9ea043d8fc43a71045114508baed144b mboxfix
328 9ea043d8fc43a71045114508baed144b mboxfix
329
329
330 test diffstat for single patch:
330 test diffstat for single patch:
331 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | \
331 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | \
332 > fixheaders
332 > fixheaders
333 This patch series consists of 1 patches.
333 This patch series consists of 1 patches.
334
334
335 c
335 c
336
336
337 c | 1 +
337 c | 1 +
338 1 files changed, 1 insertions(+), 0 deletions(-)
338 1 files changed, 1 insertions(+), 0 deletions(-)
339
339
340 does the diffstat above look okay (yn)? y
340 does the diffstat above look okay (yn)? y
341
341
342 Displaying [PATCH] test ...
342 Displaying [PATCH] test ...
343 Content-Type: text/plain; charset="us-ascii"
343 Content-Type: text/plain; charset="us-ascii"
344 MIME-Version: 1.0
344 MIME-Version: 1.0
345 Content-Transfer-Encoding: 7bit
345 Content-Transfer-Encoding: 7bit
346 Subject: [PATCH] test
346 Subject: [PATCH] test
347 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
347 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
348 Message-Id: <ff2c9fa2018b15fa74b3.60@
348 Message-Id: <ff2c9fa2018b15fa74b3.60@
349 User-Agent: Mercurial-patchbomb
349 User-Agent: Mercurial-patchbomb
350 Date: Thu, 01 Jan 1970 00:01:00 +0000
350 Date: Thu, 01 Jan 1970 00:01:00 +0000
351 From: quux
351 From: quux
352 To: foo
352 To: foo
353 Cc: bar
353 Cc: bar
354
354
355 c | 1 +
355 c | 1 +
356 1 files changed, 1 insertions(+), 0 deletions(-)
356 1 files changed, 1 insertions(+), 0 deletions(-)
357
357
358
358
359 # HG changeset patch
359 # HG changeset patch
360 # User test
360 # User test
361 # Date 3 0
361 # Date 3 0
362 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
362 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
363 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
363 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
364 c
364 c
365
365
366 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
366 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
367 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
367 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
368 +++ b/c Thu Jan 01 00:00:03 1970 +0000
368 +++ b/c Thu Jan 01 00:00:03 1970 +0000
369 @@ -0,0 +1,1 @@
369 @@ -0,0 +1,1 @@
370 +c
370 +c
371
371
372
372
373 test diffstat for multiple patches:
373 test diffstat for multiple patches:
374 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
374 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
375 > -r 0:1 | fixheaders
375 > -r 0:1 | fixheaders
376 This patch series consists of 2 patches.
376 This patch series consists of 2 patches.
377
377
378 a
378 a
379
379
380 a | 1 +
380 a | 1 +
381 1 files changed, 1 insertions(+), 0 deletions(-)
381 1 files changed, 1 insertions(+), 0 deletions(-)
382
382
383 does the diffstat above look okay (yn)? y
383 does the diffstat above look okay (yn)? y
384 b
384 b
385
385
386 b | 1 +
386 b | 1 +
387 1 files changed, 1 insertions(+), 0 deletions(-)
387 1 files changed, 1 insertions(+), 0 deletions(-)
388
388
389 does the diffstat above look okay (yn)? y
389 does the diffstat above look okay (yn)? y
390 Final summary:
390 Final summary:
391
391
392 a | 1 +
392 a | 1 +
393 b | 1 +
393 b | 1 +
394 2 files changed, 2 insertions(+), 0 deletions(-)
394 2 files changed, 2 insertions(+), 0 deletions(-)
395
395
396 does the diffstat above look okay (yn)? y
396 does the diffstat above look okay (yn)? y
397
397
398 Write the introductory message for the patch series.
398 Write the introductory message for the patch series.
399
399
400
400
401 Displaying [PATCH 0 of 2] test ...
401 Displaying [PATCH 0 of 2] test ...
402 Content-Type: text/plain; charset="us-ascii"
402 Content-Type: text/plain; charset="us-ascii"
403 MIME-Version: 1.0
403 MIME-Version: 1.0
404 Content-Transfer-Encoding: 7bit
404 Content-Transfer-Encoding: 7bit
405 Subject: [PATCH 0 of 2] test
405 Subject: [PATCH 0 of 2] test
406 Message-Id: <patchbomb.60@
406 Message-Id: <patchbomb.60@
407 User-Agent: Mercurial-patchbomb
407 User-Agent: Mercurial-patchbomb
408 Date: Thu, 01 Jan 1970 00:01:00 +0000
408 Date: Thu, 01 Jan 1970 00:01:00 +0000
409 From: quux
409 From: quux
410 To: foo
410 To: foo
411 Cc: bar
411 Cc: bar
412
412
413
413
414 a | 1 +
414 a | 1 +
415 b | 1 +
415 b | 1 +
416 2 files changed, 2 insertions(+), 0 deletions(-)
416 2 files changed, 2 insertions(+), 0 deletions(-)
417
417
418 Displaying [PATCH 1 of 2] a ...
418 Displaying [PATCH 1 of 2] a ...
419 Content-Type: text/plain; charset="us-ascii"
419 Content-Type: text/plain; charset="us-ascii"
420 MIME-Version: 1.0
420 MIME-Version: 1.0
421 Content-Transfer-Encoding: 7bit
421 Content-Transfer-Encoding: 7bit
422 Subject: [PATCH 1 of 2] a
422 Subject: [PATCH 1 of 2] a
423 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
423 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
424 Message-Id: <8580ff50825a50c8f716.61@
424 Message-Id: <8580ff50825a50c8f716.61@
425 In-Reply-To: <patchbomb.60@
425 In-Reply-To: <patchbomb.60@
426 References: <patchbomb.60@
426 References: <patchbomb.60@
427 User-Agent: Mercurial-patchbomb
427 User-Agent: Mercurial-patchbomb
428 Date: Thu, 01 Jan 1970 00:01:01 +0000
428 Date: Thu, 01 Jan 1970 00:01:01 +0000
429 From: quux
429 From: quux
430 To: foo
430 To: foo
431 Cc: bar
431 Cc: bar
432
432
433 a | 1 +
433 a | 1 +
434 1 files changed, 1 insertions(+), 0 deletions(-)
434 1 files changed, 1 insertions(+), 0 deletions(-)
435
435
436
436
437 # HG changeset patch
437 # HG changeset patch
438 # User test
438 # User test
439 # Date 1 0
439 # Date 1 0
440 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
440 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
441 # Parent 0000000000000000000000000000000000000000
441 # Parent 0000000000000000000000000000000000000000
442 a
442 a
443
443
444 diff -r 000000000000 -r 8580ff50825a a
444 diff -r 000000000000 -r 8580ff50825a a
445 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
445 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
446 +++ b/a Thu Jan 01 00:00:01 1970 +0000
446 +++ b/a Thu Jan 01 00:00:01 1970 +0000
447 @@ -0,0 +1,1 @@
447 @@ -0,0 +1,1 @@
448 +a
448 +a
449
449
450 Displaying [PATCH 2 of 2] b ...
450 Displaying [PATCH 2 of 2] b ...
451 Content-Type: text/plain; charset="us-ascii"
451 Content-Type: text/plain; charset="us-ascii"
452 MIME-Version: 1.0
452 MIME-Version: 1.0
453 Content-Transfer-Encoding: 7bit
453 Content-Transfer-Encoding: 7bit
454 Subject: [PATCH 2 of 2] b
454 Subject: [PATCH 2 of 2] b
455 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
455 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
456 Message-Id: <97d72e5f12c7e84f8506.62@
456 Message-Id: <97d72e5f12c7e84f8506.62@
457 In-Reply-To: <patchbomb.60@
457 In-Reply-To: <patchbomb.60@
458 References: <patchbomb.60@
458 References: <patchbomb.60@
459 User-Agent: Mercurial-patchbomb
459 User-Agent: Mercurial-patchbomb
460 Date: Thu, 01 Jan 1970 00:01:02 +0000
460 Date: Thu, 01 Jan 1970 00:01:02 +0000
461 From: quux
461 From: quux
462 To: foo
462 To: foo
463 Cc: bar
463 Cc: bar
464
464
465 b | 1 +
465 b | 1 +
466 1 files changed, 1 insertions(+), 0 deletions(-)
466 1 files changed, 1 insertions(+), 0 deletions(-)
467
467
468
468
469 # HG changeset patch
469 # HG changeset patch
470 # User test
470 # User test
471 # Date 2 0
471 # Date 2 0
472 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
472 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
473 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
473 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
474 b
474 b
475
475
476 diff -r 8580ff50825a -r 97d72e5f12c7 b
476 diff -r 8580ff50825a -r 97d72e5f12c7 b
477 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
477 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
478 +++ b/b Thu Jan 01 00:00:02 1970 +0000
478 +++ b/b Thu Jan 01 00:00:02 1970 +0000
479 @@ -0,0 +1,1 @@
479 @@ -0,0 +1,1 @@
480 +b
480 +b
481
481
482
482
483 test inline for single patch:
483 test inline for single patch:
484 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
484 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
485 > fixheaders
485 > fixheaders
486 This patch series consists of 1 patches.
486 This patch series consists of 1 patches.
487
487
488
488
489 Displaying [PATCH] test ...
489 Displaying [PATCH] test ...
490 Content-Type: multipart/mixed; boundary="===
490 Content-Type: multipart/mixed; boundary="===
491 MIME-Version: 1.0
491 MIME-Version: 1.0
492 Subject: [PATCH] test
492 Subject: [PATCH] test
493 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
493 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
494 Message-Id: <ff2c9fa2018b15fa74b3.60@
494 Message-Id: <ff2c9fa2018b15fa74b3.60@
495 User-Agent: Mercurial-patchbomb
495 User-Agent: Mercurial-patchbomb
496 Date: Thu, 01 Jan 1970 00:01:00 +0000
496 Date: Thu, 01 Jan 1970 00:01:00 +0000
497 From: quux
497 From: quux
498 To: foo
498 To: foo
499 Cc: bar
499 Cc: bar
500
500
501 --===
501 --===
502 Content-Type: text/x-patch; charset="us-ascii"
502 Content-Type: text/x-patch; charset="us-ascii"
503 MIME-Version: 1.0
503 MIME-Version: 1.0
504 Content-Transfer-Encoding: 7bit
504 Content-Transfer-Encoding: 7bit
505 Content-Disposition: inline; filename=t2.patch
505 Content-Disposition: inline; filename=t2.patch
506
506
507 # HG changeset patch
507 # HG changeset patch
508 # User test
508 # User test
509 # Date 3 0
509 # Date 3 0
510 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
510 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
511 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
511 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
512 c
512 c
513
513
514 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
514 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
515 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
515 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
516 +++ b/c Thu Jan 01 00:00:03 1970 +0000
516 +++ b/c Thu Jan 01 00:00:03 1970 +0000
517 @@ -0,0 +1,1 @@
517 @@ -0,0 +1,1 @@
518 +c
518 +c
519
519
520 --===
520 --===
521
521
522
522
523 test inline for single patch (quoted-printable):
523 test inline for single patch (quoted-printable):
524 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | \
524 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | \
525 > fixheaders
525 > fixheaders
526 This patch series consists of 1 patches.
526 This patch series consists of 1 patches.
527
527
528
528
529 Displaying [PATCH] test ...
529 Displaying [PATCH] test ...
530 Content-Type: multipart/mixed; boundary="===
530 Content-Type: multipart/mixed; boundary="===
531 MIME-Version: 1.0
531 MIME-Version: 1.0
532 Subject: [PATCH] test
532 Subject: [PATCH] test
533 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
533 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
534 Message-Id: <c655633f8c87700bb38c.60@
534 Message-Id: <c655633f8c87700bb38c.60@
535 User-Agent: Mercurial-patchbomb
535 User-Agent: Mercurial-patchbomb
536 Date: Thu, 01 Jan 1970 00:01:00 +0000
536 Date: Thu, 01 Jan 1970 00:01:00 +0000
537 From: quux
537 From: quux
538 To: foo
538 To: foo
539 Cc: bar
539 Cc: bar
540
540
541 --===
541 --===
542 Content-Type: text/x-patch; charset="us-ascii"
542 Content-Type: text/x-patch; charset="us-ascii"
543 MIME-Version: 1.0
543 MIME-Version: 1.0
544 Content-Transfer-Encoding: quoted-printable
544 Content-Transfer-Encoding: quoted-printable
545 Content-Disposition: inline; filename=t2.patch
545 Content-Disposition: inline; filename=t2.patch
546
546
547 # HG changeset patch
547 # HG changeset patch
548 # User test
548 # User test
549 # Date 4 0
549 # Date 4 0
550 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
550 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
551 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
551 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
552 charset=3Dutf-8; content-transfer-encoding: quoted-printable
552 charset=3Dutf-8; content-transfer-encoding: quoted-printable
553
553
554 diff -r c3c9e37db9f4 -r c655633f8c87 qp
554 diff -r c3c9e37db9f4 -r c655633f8c87 qp
555 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
555 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
556 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
556 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
557 @@ -0,0 +1,4 @@
557 @@ -0,0 +1,4 @@
558 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
558 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
559 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
559 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
560 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
560 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
561 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
561 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
562 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
562 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
563 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
563 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
564 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
564 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
565 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
565 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
566 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
566 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
567 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
567 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
568 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
568 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
569 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
569 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
570 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
570 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
571 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
571 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
572 +foo
572 +foo
573 +
573 +
574 +bar
574 +bar
575
575
576 --===
576 --===
577
577
578 test inline for multiple patches:
578 test inline for multiple patches:
579 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
579 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
580 > -r 0:1 -r 4 | fixheaders
580 > -r 0:1 -r 4 | fixheaders
581 This patch series consists of 3 patches.
581 This patch series consists of 3 patches.
582
582
583
583
584 Write the introductory message for the patch series.
584 Write the introductory message for the patch series.
585
585
586
586
587 Displaying [PATCH 0 of 3] test ...
587 Displaying [PATCH 0 of 3] test ...
588 Content-Type: text/plain; charset="us-ascii"
588 Content-Type: text/plain; charset="us-ascii"
589 MIME-Version: 1.0
589 MIME-Version: 1.0
590 Content-Transfer-Encoding: 7bit
590 Content-Transfer-Encoding: 7bit
591 Subject: [PATCH 0 of 3] test
591 Subject: [PATCH 0 of 3] test
592 Message-Id: <patchbomb.60@
592 Message-Id: <patchbomb.60@
593 User-Agent: Mercurial-patchbomb
593 User-Agent: Mercurial-patchbomb
594 Date: Thu, 01 Jan 1970 00:01:00 +0000
594 Date: Thu, 01 Jan 1970 00:01:00 +0000
595 From: quux
595 From: quux
596 To: foo
596 To: foo
597 Cc: bar
597 Cc: bar
598
598
599
599
600 Displaying [PATCH 1 of 3] a ...
600 Displaying [PATCH 1 of 3] a ...
601 Content-Type: multipart/mixed; boundary="===
601 Content-Type: multipart/mixed; boundary="===
602 MIME-Version: 1.0
602 MIME-Version: 1.0
603 Subject: [PATCH 1 of 3] a
603 Subject: [PATCH 1 of 3] a
604 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
604 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
605 Message-Id: <8580ff50825a50c8f716.61@
605 Message-Id: <8580ff50825a50c8f716.61@
606 In-Reply-To: <patchbomb.60@
606 In-Reply-To: <patchbomb.60@
607 References: <patchbomb.60@
607 References: <patchbomb.60@
608 User-Agent: Mercurial-patchbomb
608 User-Agent: Mercurial-patchbomb
609 Date: Thu, 01 Jan 1970 00:01:01 +0000
609 Date: Thu, 01 Jan 1970 00:01:01 +0000
610 From: quux
610 From: quux
611 To: foo
611 To: foo
612 Cc: bar
612 Cc: bar
613
613
614 --===
614 --===
615 Content-Type: text/x-patch; charset="us-ascii"
615 Content-Type: text/x-patch; charset="us-ascii"
616 MIME-Version: 1.0
616 MIME-Version: 1.0
617 Content-Transfer-Encoding: 7bit
617 Content-Transfer-Encoding: 7bit
618 Content-Disposition: inline; filename=t2-1.patch
618 Content-Disposition: inline; filename=t2-1.patch
619
619
620 # HG changeset patch
620 # HG changeset patch
621 # User test
621 # User test
622 # Date 1 0
622 # Date 1 0
623 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
623 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
624 # Parent 0000000000000000000000000000000000000000
624 # Parent 0000000000000000000000000000000000000000
625 a
625 a
626
626
627 diff -r 000000000000 -r 8580ff50825a a
627 diff -r 000000000000 -r 8580ff50825a a
628 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
628 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
629 +++ b/a Thu Jan 01 00:00:01 1970 +0000
629 +++ b/a Thu Jan 01 00:00:01 1970 +0000
630 @@ -0,0 +1,1 @@
630 @@ -0,0 +1,1 @@
631 +a
631 +a
632
632
633 --===
633 --===
634 Displaying [PATCH 2 of 3] b ...
634 Displaying [PATCH 2 of 3] b ...
635 Content-Type: multipart/mixed; boundary="===
635 Content-Type: multipart/mixed; boundary="===
636 MIME-Version: 1.0
636 MIME-Version: 1.0
637 Subject: [PATCH 2 of 3] b
637 Subject: [PATCH 2 of 3] b
638 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
638 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
639 Message-Id: <97d72e5f12c7e84f8506.62@
639 Message-Id: <97d72e5f12c7e84f8506.62@
640 In-Reply-To: <patchbomb.60@
640 In-Reply-To: <patchbomb.60@
641 References: <patchbomb.60@
641 References: <patchbomb.60@
642 User-Agent: Mercurial-patchbomb
642 User-Agent: Mercurial-patchbomb
643 Date: Thu, 01 Jan 1970 00:01:02 +0000
643 Date: Thu, 01 Jan 1970 00:01:02 +0000
644 From: quux
644 From: quux
645 To: foo
645 To: foo
646 Cc: bar
646 Cc: bar
647
647
648 --===
648 --===
649 Content-Type: text/x-patch; charset="us-ascii"
649 Content-Type: text/x-patch; charset="us-ascii"
650 MIME-Version: 1.0
650 MIME-Version: 1.0
651 Content-Transfer-Encoding: 7bit
651 Content-Transfer-Encoding: 7bit
652 Content-Disposition: inline; filename=t2-2.patch
652 Content-Disposition: inline; filename=t2-2.patch
653
653
654 # HG changeset patch
654 # HG changeset patch
655 # User test
655 # User test
656 # Date 2 0
656 # Date 2 0
657 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
657 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
658 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
658 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
659 b
659 b
660
660
661 diff -r 8580ff50825a -r 97d72e5f12c7 b
661 diff -r 8580ff50825a -r 97d72e5f12c7 b
662 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
662 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
663 +++ b/b Thu Jan 01 00:00:02 1970 +0000
663 +++ b/b Thu Jan 01 00:00:02 1970 +0000
664 @@ -0,0 +1,1 @@
664 @@ -0,0 +1,1 @@
665 +b
665 +b
666
666
667 --===
667 --===
668 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
668 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
669 Content-Type: multipart/mixed; boundary="===
669 Content-Type: multipart/mixed; boundary="===
670 MIME-Version: 1.0
670 MIME-Version: 1.0
671 Subject: [PATCH 3 of 3] charset=utf-8;
671 Subject: [PATCH 3 of 3] charset=utf-8;
672 content-transfer-encoding: quoted-printable
672 content-transfer-encoding: quoted-printable
673 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
673 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
674 Message-Id: <c655633f8c87700bb38c.63@
674 Message-Id: <c655633f8c87700bb38c.63@
675 In-Reply-To: <patchbomb.60@
675 In-Reply-To: <patchbomb.60@
676 References: <patchbomb.60@
676 References: <patchbomb.60@
677 User-Agent: Mercurial-patchbomb
677 User-Agent: Mercurial-patchbomb
678 Date: Thu, 01 Jan 1970 00:01:03 +0000
678 Date: Thu, 01 Jan 1970 00:01:03 +0000
679 From: quux
679 From: quux
680 To: foo
680 To: foo
681 Cc: bar
681 Cc: bar
682
682
683 --===
683 --===
684 Content-Type: text/x-patch; charset="us-ascii"
684 Content-Type: text/x-patch; charset="us-ascii"
685 MIME-Version: 1.0
685 MIME-Version: 1.0
686 Content-Transfer-Encoding: quoted-printable
686 Content-Transfer-Encoding: quoted-printable
687 Content-Disposition: inline; filename=t2-3.patch
687 Content-Disposition: inline; filename=t2-3.patch
688
688
689 # HG changeset patch
689 # HG changeset patch
690 # User test
690 # User test
691 # Date 4 0
691 # Date 4 0
692 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
692 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
693 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
693 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
694 charset=3Dutf-8; content-transfer-encoding: quoted-printable
694 charset=3Dutf-8; content-transfer-encoding: quoted-printable
695
695
696 diff -r c3c9e37db9f4 -r c655633f8c87 qp
696 diff -r c3c9e37db9f4 -r c655633f8c87 qp
697 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
697 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
698 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
698 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
699 @@ -0,0 +1,4 @@
699 @@ -0,0 +1,4 @@
700 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
700 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
701 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
701 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
702 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
702 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
703 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
703 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
704 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
704 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
705 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
705 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
706 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
706 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
707 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
707 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
708 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
708 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
709 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
709 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
710 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
710 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
711 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
711 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
712 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
712 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
713 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
713 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
714 +foo
714 +foo
715 +
715 +
716 +bar
716 +bar
717
717
718 --===
718 --===
719
719
720 test attach for single patch:
720 test attach for single patch:
721 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | \
721 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | \
722 > fixheaders
722 > fixheaders
723 This patch series consists of 1 patches.
723 This patch series consists of 1 patches.
724
724
725
725
726 Displaying [PATCH] test ...
726 Displaying [PATCH] test ...
727 Content-Type: multipart/mixed; boundary="===
727 Content-Type: multipart/mixed; boundary="===
728 MIME-Version: 1.0
728 MIME-Version: 1.0
729 Subject: [PATCH] test
729 Subject: [PATCH] test
730 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
730 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
731 Message-Id: <ff2c9fa2018b15fa74b3.60@
731 Message-Id: <ff2c9fa2018b15fa74b3.60@
732 User-Agent: Mercurial-patchbomb
732 User-Agent: Mercurial-patchbomb
733 Date: Thu, 01 Jan 1970 00:01:00 +0000
733 Date: Thu, 01 Jan 1970 00:01:00 +0000
734 From: quux
734 From: quux
735 To: foo
735 To: foo
736 Cc: bar
736 Cc: bar
737
737
738 --===
738 --===
739 Content-Type: text/plain; charset="us-ascii"
739 Content-Type: text/plain; charset="us-ascii"
740 MIME-Version: 1.0
740 MIME-Version: 1.0
741 Content-Transfer-Encoding: 7bit
741 Content-Transfer-Encoding: 7bit
742
742
743 Patch subject is complete summary.
743 Patch subject is complete summary.
744
744
745
745
746
746
747 --===
747 --===
748 Content-Type: text/x-patch; charset="us-ascii"
748 Content-Type: text/x-patch; charset="us-ascii"
749 MIME-Version: 1.0
749 MIME-Version: 1.0
750 Content-Transfer-Encoding: 7bit
750 Content-Transfer-Encoding: 7bit
751 Content-Disposition: attachment; filename=t2.patch
751 Content-Disposition: attachment; filename=t2.patch
752
752
753 # HG changeset patch
753 # HG changeset patch
754 # User test
754 # User test
755 # Date 3 0
755 # Date 3 0
756 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
756 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
757 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
757 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
758 c
758 c
759
759
760 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
760 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
761 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
761 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
762 +++ b/c Thu Jan 01 00:00:03 1970 +0000
762 +++ b/c Thu Jan 01 00:00:03 1970 +0000
763 @@ -0,0 +1,1 @@
763 @@ -0,0 +1,1 @@
764 +c
764 +c
765
765
766 --===
766 --===
767
767
768 test attach for single patch (quoted-printable):
768 test attach for single patch (quoted-printable):
769 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | \
769 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | \
770 > fixheaders
770 > fixheaders
771 This patch series consists of 1 patches.
771 This patch series consists of 1 patches.
772
772
773
773
774 Displaying [PATCH] test ...
774 Displaying [PATCH] test ...
775 Content-Type: multipart/mixed; boundary="===
775 Content-Type: multipart/mixed; boundary="===
776 MIME-Version: 1.0
776 MIME-Version: 1.0
777 Subject: [PATCH] test
777 Subject: [PATCH] test
778 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
778 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
779 Message-Id: <c655633f8c87700bb38c.60@
779 Message-Id: <c655633f8c87700bb38c.60@
780 User-Agent: Mercurial-patchbomb
780 User-Agent: Mercurial-patchbomb
781 Date: Thu, 01 Jan 1970 00:01:00 +0000
781 Date: Thu, 01 Jan 1970 00:01:00 +0000
782 From: quux
782 From: quux
783 To: foo
783 To: foo
784 Cc: bar
784 Cc: bar
785
785
786 --===
786 --===
787 Content-Type: text/plain; charset="us-ascii"
787 Content-Type: text/plain; charset="us-ascii"
788 MIME-Version: 1.0
788 MIME-Version: 1.0
789 Content-Transfer-Encoding: 7bit
789 Content-Transfer-Encoding: 7bit
790
790
791 Patch subject is complete summary.
791 Patch subject is complete summary.
792
792
793
793
794
794
795 --===
795 --===
796 Content-Type: text/x-patch; charset="us-ascii"
796 Content-Type: text/x-patch; charset="us-ascii"
797 MIME-Version: 1.0
797 MIME-Version: 1.0
798 Content-Transfer-Encoding: quoted-printable
798 Content-Transfer-Encoding: quoted-printable
799 Content-Disposition: attachment; filename=t2.patch
799 Content-Disposition: attachment; filename=t2.patch
800
800
801 # HG changeset patch
801 # HG changeset patch
802 # User test
802 # User test
803 # Date 4 0
803 # Date 4 0
804 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
804 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
805 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
805 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
806 charset=3Dutf-8; content-transfer-encoding: quoted-printable
806 charset=3Dutf-8; content-transfer-encoding: quoted-printable
807
807
808 diff -r c3c9e37db9f4 -r c655633f8c87 qp
808 diff -r c3c9e37db9f4 -r c655633f8c87 qp
809 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
809 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
810 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
810 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
811 @@ -0,0 +1,4 @@
811 @@ -0,0 +1,4 @@
812 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
812 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
813 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
813 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
814 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
814 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
815 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
815 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
816 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
816 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
817 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
817 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
818 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
818 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
819 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
819 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
820 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
820 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
821 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
821 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
822 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
822 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
823 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
823 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
824 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
824 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
825 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
825 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
826 +foo
826 +foo
827 +
827 +
828 +bar
828 +bar
829
829
830 --===
830 --===
831
831
832 test attach for multiple patches:
832 test attach for multiple patches:
833 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
833 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
834 > -r 0:1 -r 4 | fixheaders
834 > -r 0:1 -r 4 | fixheaders
835 This patch series consists of 3 patches.
835 This patch series consists of 3 patches.
836
836
837
837
838 Write the introductory message for the patch series.
838 Write the introductory message for the patch series.
839
839
840
840
841 Displaying [PATCH 0 of 3] test ...
841 Displaying [PATCH 0 of 3] test ...
842 Content-Type: text/plain; charset="us-ascii"
842 Content-Type: text/plain; charset="us-ascii"
843 MIME-Version: 1.0
843 MIME-Version: 1.0
844 Content-Transfer-Encoding: 7bit
844 Content-Transfer-Encoding: 7bit
845 Subject: [PATCH 0 of 3] test
845 Subject: [PATCH 0 of 3] test
846 Message-Id: <patchbomb.60@
846 Message-Id: <patchbomb.60@
847 User-Agent: Mercurial-patchbomb
847 User-Agent: Mercurial-patchbomb
848 Date: Thu, 01 Jan 1970 00:01:00 +0000
848 Date: Thu, 01 Jan 1970 00:01:00 +0000
849 From: quux
849 From: quux
850 To: foo
850 To: foo
851 Cc: bar
851 Cc: bar
852
852
853
853
854 Displaying [PATCH 1 of 3] a ...
854 Displaying [PATCH 1 of 3] a ...
855 Content-Type: multipart/mixed; boundary="===
855 Content-Type: multipart/mixed; boundary="===
856 MIME-Version: 1.0
856 MIME-Version: 1.0
857 Subject: [PATCH 1 of 3] a
857 Subject: [PATCH 1 of 3] a
858 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
858 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
859 Message-Id: <8580ff50825a50c8f716.61@
859 Message-Id: <8580ff50825a50c8f716.61@
860 In-Reply-To: <patchbomb.60@
860 In-Reply-To: <patchbomb.60@
861 References: <patchbomb.60@
861 References: <patchbomb.60@
862 User-Agent: Mercurial-patchbomb
862 User-Agent: Mercurial-patchbomb
863 Date: Thu, 01 Jan 1970 00:01:01 +0000
863 Date: Thu, 01 Jan 1970 00:01:01 +0000
864 From: quux
864 From: quux
865 To: foo
865 To: foo
866 Cc: bar
866 Cc: bar
867
867
868 --===
868 --===
869 Content-Type: text/plain; charset="us-ascii"
869 Content-Type: text/plain; charset="us-ascii"
870 MIME-Version: 1.0
870 MIME-Version: 1.0
871 Content-Transfer-Encoding: 7bit
871 Content-Transfer-Encoding: 7bit
872
872
873 Patch subject is complete summary.
873 Patch subject is complete summary.
874
874
875
875
876
876
877 --===
877 --===
878 Content-Type: text/x-patch; charset="us-ascii"
878 Content-Type: text/x-patch; charset="us-ascii"
879 MIME-Version: 1.0
879 MIME-Version: 1.0
880 Content-Transfer-Encoding: 7bit
880 Content-Transfer-Encoding: 7bit
881 Content-Disposition: attachment; filename=t2-1.patch
881 Content-Disposition: attachment; filename=t2-1.patch
882
882
883 # HG changeset patch
883 # HG changeset patch
884 # User test
884 # User test
885 # Date 1 0
885 # Date 1 0
886 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
886 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
887 # Parent 0000000000000000000000000000000000000000
887 # Parent 0000000000000000000000000000000000000000
888 a
888 a
889
889
890 diff -r 000000000000 -r 8580ff50825a a
890 diff -r 000000000000 -r 8580ff50825a a
891 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
891 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
892 +++ b/a Thu Jan 01 00:00:01 1970 +0000
892 +++ b/a Thu Jan 01 00:00:01 1970 +0000
893 @@ -0,0 +1,1 @@
893 @@ -0,0 +1,1 @@
894 +a
894 +a
895
895
896 --===
896 --===
897 Displaying [PATCH 2 of 3] b ...
897 Displaying [PATCH 2 of 3] b ...
898 Content-Type: multipart/mixed; boundary="===
898 Content-Type: multipart/mixed; boundary="===
899 MIME-Version: 1.0
899 MIME-Version: 1.0
900 Subject: [PATCH 2 of 3] b
900 Subject: [PATCH 2 of 3] b
901 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
901 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
902 Message-Id: <97d72e5f12c7e84f8506.62@
902 Message-Id: <97d72e5f12c7e84f8506.62@
903 In-Reply-To: <patchbomb.60@
903 In-Reply-To: <patchbomb.60@
904 References: <patchbomb.60@
904 References: <patchbomb.60@
905 User-Agent: Mercurial-patchbomb
905 User-Agent: Mercurial-patchbomb
906 Date: Thu, 01 Jan 1970 00:01:02 +0000
906 Date: Thu, 01 Jan 1970 00:01:02 +0000
907 From: quux
907 From: quux
908 To: foo
908 To: foo
909 Cc: bar
909 Cc: bar
910
910
911 --===
911 --===
912 Content-Type: text/plain; charset="us-ascii"
912 Content-Type: text/plain; charset="us-ascii"
913 MIME-Version: 1.0
913 MIME-Version: 1.0
914 Content-Transfer-Encoding: 7bit
914 Content-Transfer-Encoding: 7bit
915
915
916 Patch subject is complete summary.
916 Patch subject is complete summary.
917
917
918
918
919
919
920 --===
920 --===
921 Content-Type: text/x-patch; charset="us-ascii"
921 Content-Type: text/x-patch; charset="us-ascii"
922 MIME-Version: 1.0
922 MIME-Version: 1.0
923 Content-Transfer-Encoding: 7bit
923 Content-Transfer-Encoding: 7bit
924 Content-Disposition: attachment; filename=t2-2.patch
924 Content-Disposition: attachment; filename=t2-2.patch
925
925
926 # HG changeset patch
926 # HG changeset patch
927 # User test
927 # User test
928 # Date 2 0
928 # Date 2 0
929 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
929 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
930 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
930 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
931 b
931 b
932
932
933 diff -r 8580ff50825a -r 97d72e5f12c7 b
933 diff -r 8580ff50825a -r 97d72e5f12c7 b
934 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
934 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
935 +++ b/b Thu Jan 01 00:00:02 1970 +0000
935 +++ b/b Thu Jan 01 00:00:02 1970 +0000
936 @@ -0,0 +1,1 @@
936 @@ -0,0 +1,1 @@
937 +b
937 +b
938
938
939 --===
939 --===
940 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
940 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
941 Content-Type: multipart/mixed; boundary="===
941 Content-Type: multipart/mixed; boundary="===
942 MIME-Version: 1.0
942 MIME-Version: 1.0
943 Subject: [PATCH 3 of 3] charset=utf-8;
943 Subject: [PATCH 3 of 3] charset=utf-8;
944 content-transfer-encoding: quoted-printable
944 content-transfer-encoding: quoted-printable
945 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
945 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
946 Message-Id: <c655633f8c87700bb38c.63@
946 Message-Id: <c655633f8c87700bb38c.63@
947 In-Reply-To: <patchbomb.60@
947 In-Reply-To: <patchbomb.60@
948 References: <patchbomb.60@
948 References: <patchbomb.60@
949 User-Agent: Mercurial-patchbomb
949 User-Agent: Mercurial-patchbomb
950 Date: Thu, 01 Jan 1970 00:01:03 +0000
950 Date: Thu, 01 Jan 1970 00:01:03 +0000
951 From: quux
951 From: quux
952 To: foo
952 To: foo
953 Cc: bar
953 Cc: bar
954
954
955 --===
955 --===
956 Content-Type: text/plain; charset="us-ascii"
956 Content-Type: text/plain; charset="us-ascii"
957 MIME-Version: 1.0
957 MIME-Version: 1.0
958 Content-Transfer-Encoding: 7bit
958 Content-Transfer-Encoding: 7bit
959
959
960 Patch subject is complete summary.
960 Patch subject is complete summary.
961
961
962
962
963
963
964 --===
964 --===
965 Content-Type: text/x-patch; charset="us-ascii"
965 Content-Type: text/x-patch; charset="us-ascii"
966 MIME-Version: 1.0
966 MIME-Version: 1.0
967 Content-Transfer-Encoding: quoted-printable
967 Content-Transfer-Encoding: quoted-printable
968 Content-Disposition: attachment; filename=t2-3.patch
968 Content-Disposition: attachment; filename=t2-3.patch
969
969
970 # HG changeset patch
970 # HG changeset patch
971 # User test
971 # User test
972 # Date 4 0
972 # Date 4 0
973 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
973 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
974 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
974 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
975 charset=3Dutf-8; content-transfer-encoding: quoted-printable
975 charset=3Dutf-8; content-transfer-encoding: quoted-printable
976
976
977 diff -r c3c9e37db9f4 -r c655633f8c87 qp
977 diff -r c3c9e37db9f4 -r c655633f8c87 qp
978 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
978 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
979 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
979 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
980 @@ -0,0 +1,4 @@
980 @@ -0,0 +1,4 @@
981 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
981 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
982 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
982 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
983 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
983 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
984 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
984 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
985 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
985 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
986 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
986 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
987 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
987 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
988 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
988 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
989 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
989 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
990 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
990 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
991 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
991 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
992 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
992 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
993 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
993 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
994 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
994 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
995 +foo
995 +foo
996 +
996 +
997 +bar
997 +bar
998
998
999 --===
999 --===
1000
1000
1001 test intro for single patch:
1001 test intro for single patch:
1002 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1002 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1003 > -r 2 | fixheaders
1003 > -r 2 | fixheaders
1004 This patch series consists of 1 patches.
1004 This patch series consists of 1 patches.
1005
1005
1006
1006
1007 Write the introductory message for the patch series.
1007 Write the introductory message for the patch series.
1008
1008
1009
1009
1010 Displaying [PATCH 0 of 1] test ...
1010 Displaying [PATCH 0 of 1] test ...
1011 Content-Type: text/plain; charset="us-ascii"
1011 Content-Type: text/plain; charset="us-ascii"
1012 MIME-Version: 1.0
1012 MIME-Version: 1.0
1013 Content-Transfer-Encoding: 7bit
1013 Content-Transfer-Encoding: 7bit
1014 Subject: [PATCH 0 of 1] test
1014 Subject: [PATCH 0 of 1] test
1015 Message-Id: <patchbomb.60@
1015 Message-Id: <patchbomb.60@
1016 User-Agent: Mercurial-patchbomb
1016 User-Agent: Mercurial-patchbomb
1017 Date: Thu, 01 Jan 1970 00:01:00 +0000
1017 Date: Thu, 01 Jan 1970 00:01:00 +0000
1018 From: quux
1018 From: quux
1019 To: foo
1019 To: foo
1020 Cc: bar
1020 Cc: bar
1021
1021
1022
1022
1023 Displaying [PATCH 1 of 1] c ...
1023 Displaying [PATCH 1 of 1] c ...
1024 Content-Type: text/plain; charset="us-ascii"
1024 Content-Type: text/plain; charset="us-ascii"
1025 MIME-Version: 1.0
1025 MIME-Version: 1.0
1026 Content-Transfer-Encoding: 7bit
1026 Content-Transfer-Encoding: 7bit
1027 Subject: [PATCH 1 of 1] c
1027 Subject: [PATCH 1 of 1] c
1028 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1028 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1029 Message-Id: <ff2c9fa2018b15fa74b3.61@
1029 Message-Id: <ff2c9fa2018b15fa74b3.61@
1030 In-Reply-To: <patchbomb.60@
1030 In-Reply-To: <patchbomb.60@
1031 References: <patchbomb.60@
1031 References: <patchbomb.60@
1032 User-Agent: Mercurial-patchbomb
1032 User-Agent: Mercurial-patchbomb
1033 Date: Thu, 01 Jan 1970 00:01:01 +0000
1033 Date: Thu, 01 Jan 1970 00:01:01 +0000
1034 From: quux
1034 From: quux
1035 To: foo
1035 To: foo
1036 Cc: bar
1036 Cc: bar
1037
1037
1038 # HG changeset patch
1038 # HG changeset patch
1039 # User test
1039 # User test
1040 # Date 3 0
1040 # Date 3 0
1041 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1041 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1042 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1042 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1043 c
1043 c
1044
1044
1045 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1045 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1046 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1046 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1047 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1047 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1048 @@ -0,0 +1,1 @@
1048 @@ -0,0 +1,1 @@
1049 +c
1049 +c
1050
1050
1051
1051
1052 test --desc without --intro for a single patch:
1052 test --desc without --intro for a single patch:
1053 $ echo foo > intro.text
1053 $ echo foo > intro.text
1054 $ hg email --date '1970-1-1 0:1' -n --desc intro.text -f quux -t foo -c bar \
1054 $ hg email --date '1970-1-1 0:1' -n --desc intro.text -f quux -t foo -c bar \
1055 > -s test -r 2 | fixheaders
1055 > -s test -r 2 | fixheaders
1056 This patch series consists of 1 patches.
1056 This patch series consists of 1 patches.
1057
1057
1058
1058
1059 Displaying [PATCH 0 of 1] test ...
1059 Displaying [PATCH 0 of 1] test ...
1060 Content-Type: text/plain; charset="us-ascii"
1060 Content-Type: text/plain; charset="us-ascii"
1061 MIME-Version: 1.0
1061 MIME-Version: 1.0
1062 Content-Transfer-Encoding: 7bit
1062 Content-Transfer-Encoding: 7bit
1063 Subject: [PATCH 0 of 1] test
1063 Subject: [PATCH 0 of 1] test
1064 Message-Id: <patchbomb.60@
1064 Message-Id: <patchbomb.60@
1065 User-Agent: Mercurial-patchbomb
1065 User-Agent: Mercurial-patchbomb
1066 Date: Thu, 01 Jan 1970 00:01:00 +0000
1066 Date: Thu, 01 Jan 1970 00:01:00 +0000
1067 From: quux
1067 From: quux
1068 To: foo
1068 To: foo
1069 Cc: bar
1069 Cc: bar
1070
1070
1071 foo
1071 foo
1072
1072
1073 Displaying [PATCH 1 of 1] c ...
1073 Displaying [PATCH 1 of 1] c ...
1074 Content-Type: text/plain; charset="us-ascii"
1074 Content-Type: text/plain; charset="us-ascii"
1075 MIME-Version: 1.0
1075 MIME-Version: 1.0
1076 Content-Transfer-Encoding: 7bit
1076 Content-Transfer-Encoding: 7bit
1077 Subject: [PATCH 1 of 1] c
1077 Subject: [PATCH 1 of 1] c
1078 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1078 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1079 Message-Id: <ff2c9fa2018b15fa74b3.61@
1079 Message-Id: <ff2c9fa2018b15fa74b3.61@
1080 In-Reply-To: <patchbomb.60@
1080 In-Reply-To: <patchbomb.60@
1081 References: <patchbomb.60@
1081 References: <patchbomb.60@
1082 User-Agent: Mercurial-patchbomb
1082 User-Agent: Mercurial-patchbomb
1083 Date: Thu, 01 Jan 1970 00:01:01 +0000
1083 Date: Thu, 01 Jan 1970 00:01:01 +0000
1084 From: quux
1084 From: quux
1085 To: foo
1085 To: foo
1086 Cc: bar
1086 Cc: bar
1087
1087
1088 # HG changeset patch
1088 # HG changeset patch
1089 # User test
1089 # User test
1090 # Date 3 0
1090 # Date 3 0
1091 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1091 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1092 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1092 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1093 c
1093 c
1094
1094
1095 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1095 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1096 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1096 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1097 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1097 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1098 @@ -0,0 +1,1 @@
1098 @@ -0,0 +1,1 @@
1099 +c
1099 +c
1100
1100
1101
1101
1102 test intro for multiple patches:
1102 test intro for multiple patches:
1103 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1103 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1104 > -r 0:1 | fixheaders
1104 > -r 0:1 | fixheaders
1105 This patch series consists of 2 patches.
1105 This patch series consists of 2 patches.
1106
1106
1107
1107
1108 Write the introductory message for the patch series.
1108 Write the introductory message for the patch series.
1109
1109
1110
1110
1111 Displaying [PATCH 0 of 2] test ...
1111 Displaying [PATCH 0 of 2] test ...
1112 Content-Type: text/plain; charset="us-ascii"
1112 Content-Type: text/plain; charset="us-ascii"
1113 MIME-Version: 1.0
1113 MIME-Version: 1.0
1114 Content-Transfer-Encoding: 7bit
1114 Content-Transfer-Encoding: 7bit
1115 Subject: [PATCH 0 of 2] test
1115 Subject: [PATCH 0 of 2] test
1116 Message-Id: <patchbomb.60@
1116 Message-Id: <patchbomb.60@
1117 User-Agent: Mercurial-patchbomb
1117 User-Agent: Mercurial-patchbomb
1118 Date: Thu, 01 Jan 1970 00:01:00 +0000
1118 Date: Thu, 01 Jan 1970 00:01:00 +0000
1119 From: quux
1119 From: quux
1120 To: foo
1120 To: foo
1121 Cc: bar
1121 Cc: bar
1122
1122
1123
1123
1124 Displaying [PATCH 1 of 2] a ...
1124 Displaying [PATCH 1 of 2] a ...
1125 Content-Type: text/plain; charset="us-ascii"
1125 Content-Type: text/plain; charset="us-ascii"
1126 MIME-Version: 1.0
1126 MIME-Version: 1.0
1127 Content-Transfer-Encoding: 7bit
1127 Content-Transfer-Encoding: 7bit
1128 Subject: [PATCH 1 of 2] a
1128 Subject: [PATCH 1 of 2] a
1129 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1129 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1130 Message-Id: <8580ff50825a50c8f716.61@
1130 Message-Id: <8580ff50825a50c8f716.61@
1131 In-Reply-To: <patchbomb.60@
1131 In-Reply-To: <patchbomb.60@
1132 References: <patchbomb.60@
1132 References: <patchbomb.60@
1133 User-Agent: Mercurial-patchbomb
1133 User-Agent: Mercurial-patchbomb
1134 Date: Thu, 01 Jan 1970 00:01:01 +0000
1134 Date: Thu, 01 Jan 1970 00:01:01 +0000
1135 From: quux
1135 From: quux
1136 To: foo
1136 To: foo
1137 Cc: bar
1137 Cc: bar
1138
1138
1139 # HG changeset patch
1139 # HG changeset patch
1140 # User test
1140 # User test
1141 # Date 1 0
1141 # Date 1 0
1142 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1142 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1143 # Parent 0000000000000000000000000000000000000000
1143 # Parent 0000000000000000000000000000000000000000
1144 a
1144 a
1145
1145
1146 diff -r 000000000000 -r 8580ff50825a a
1146 diff -r 000000000000 -r 8580ff50825a a
1147 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1147 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1148 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1148 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1149 @@ -0,0 +1,1 @@
1149 @@ -0,0 +1,1 @@
1150 +a
1150 +a
1151
1151
1152 Displaying [PATCH 2 of 2] b ...
1152 Displaying [PATCH 2 of 2] b ...
1153 Content-Type: text/plain; charset="us-ascii"
1153 Content-Type: text/plain; charset="us-ascii"
1154 MIME-Version: 1.0
1154 MIME-Version: 1.0
1155 Content-Transfer-Encoding: 7bit
1155 Content-Transfer-Encoding: 7bit
1156 Subject: [PATCH 2 of 2] b
1156 Subject: [PATCH 2 of 2] b
1157 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1157 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1158 Message-Id: <97d72e5f12c7e84f8506.62@
1158 Message-Id: <97d72e5f12c7e84f8506.62@
1159 In-Reply-To: <patchbomb.60@
1159 In-Reply-To: <patchbomb.60@
1160 References: <patchbomb.60@
1160 References: <patchbomb.60@
1161 User-Agent: Mercurial-patchbomb
1161 User-Agent: Mercurial-patchbomb
1162 Date: Thu, 01 Jan 1970 00:01:02 +0000
1162 Date: Thu, 01 Jan 1970 00:01:02 +0000
1163 From: quux
1163 From: quux
1164 To: foo
1164 To: foo
1165 Cc: bar
1165 Cc: bar
1166
1166
1167 # HG changeset patch
1167 # HG changeset patch
1168 # User test
1168 # User test
1169 # Date 2 0
1169 # Date 2 0
1170 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1170 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1171 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1171 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1172 b
1172 b
1173
1173
1174 diff -r 8580ff50825a -r 97d72e5f12c7 b
1174 diff -r 8580ff50825a -r 97d72e5f12c7 b
1175 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1175 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1176 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1176 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1177 @@ -0,0 +1,1 @@
1177 @@ -0,0 +1,1 @@
1178 +b
1178 +b
1179
1179
1180
1180
1181 test reply-to via config:
1181 test reply-to via config:
1182 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1182 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1183 > --config patchbomb.reply-to='baz@example.com' | fixheaders
1183 > --config patchbomb.reply-to='baz@example.com' | fixheaders
1184 This patch series consists of 1 patches.
1184 This patch series consists of 1 patches.
1185
1185
1186
1186
1187 Displaying [PATCH] test ...
1187 Displaying [PATCH] test ...
1188 Content-Type: text/plain; charset="us-ascii"
1188 Content-Type: text/plain; charset="us-ascii"
1189 MIME-Version: 1.0
1189 MIME-Version: 1.0
1190 Content-Transfer-Encoding: 7bit
1190 Content-Transfer-Encoding: 7bit
1191 Subject: [PATCH] test
1191 Subject: [PATCH] test
1192 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1192 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1193 Message-Id: <ff2c9fa2018b15fa74b3.60@
1193 Message-Id: <ff2c9fa2018b15fa74b3.60@
1194 User-Agent: Mercurial-patchbomb
1194 User-Agent: Mercurial-patchbomb
1195 Date: Thu, 01 Jan 1970 00:01:00 +0000
1195 Date: Thu, 01 Jan 1970 00:01:00 +0000
1196 From: quux
1196 From: quux
1197 To: foo
1197 To: foo
1198 Cc: bar
1198 Cc: bar
1199 Reply-To: baz@example.com
1199 Reply-To: baz@example.com
1200
1200
1201 # HG changeset patch
1201 # HG changeset patch
1202 # User test
1202 # User test
1203 # Date 3 0
1203 # Date 3 0
1204 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1204 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1205 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1205 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1206 c
1206 c
1207
1207
1208 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1208 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1209 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1209 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1210 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1210 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1211 @@ -0,0 +1,1 @@
1211 @@ -0,0 +1,1 @@
1212 +c
1212 +c
1213
1213
1214
1214
1215 test reply-to via command line:
1215 test reply-to via command line:
1216 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1216 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1217 > --reply-to baz --reply-to fred | fixheaders
1217 > --reply-to baz --reply-to fred | fixheaders
1218 This patch series consists of 1 patches.
1218 This patch series consists of 1 patches.
1219
1219
1220
1220
1221 Displaying [PATCH] test ...
1221 Displaying [PATCH] test ...
1222 Content-Type: text/plain; charset="us-ascii"
1222 Content-Type: text/plain; charset="us-ascii"
1223 MIME-Version: 1.0
1223 MIME-Version: 1.0
1224 Content-Transfer-Encoding: 7bit
1224 Content-Transfer-Encoding: 7bit
1225 Subject: [PATCH] test
1225 Subject: [PATCH] test
1226 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1226 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1227 Message-Id: <ff2c9fa2018b15fa74b3.60@
1227 Message-Id: <ff2c9fa2018b15fa74b3.60@
1228 User-Agent: Mercurial-patchbomb
1228 User-Agent: Mercurial-patchbomb
1229 Date: Thu, 01 Jan 1970 00:01:00 +0000
1229 Date: Thu, 01 Jan 1970 00:01:00 +0000
1230 From: quux
1230 From: quux
1231 To: foo
1231 To: foo
1232 Cc: bar
1232 Cc: bar
1233 Reply-To: baz, fred
1233 Reply-To: baz, fred
1234
1234
1235 # HG changeset patch
1235 # HG changeset patch
1236 # User test
1236 # User test
1237 # Date 3 0
1237 # Date 3 0
1238 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1238 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1239 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1239 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1240 c
1240 c
1241
1241
1242 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1242 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1243 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1243 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1244 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1244 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1245 @@ -0,0 +1,1 @@
1245 @@ -0,0 +1,1 @@
1246 +c
1246 +c
1247
1247
1248
1248
1249 tagging csets:
1249 tagging csets:
1250 $ hg tag -r0 zero zero.foo
1250 $ hg tag -r0 zero zero.foo
1251 $ hg tag -r1 one one.patch
1251 $ hg tag -r1 one one.patch
1252 $ hg tag -r2 two two.diff
1252 $ hg tag -r2 two two.diff
1253
1253
1254 test inline for single named patch:
1254 test inline for single named patch:
1255 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
1255 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
1256 > fixheaders
1256 > fixheaders
1257 This patch series consists of 1 patches.
1257 This patch series consists of 1 patches.
1258
1258
1259
1259
1260 Displaying [PATCH] test ...
1260 Displaying [PATCH] test ...
1261 Content-Type: multipart/mixed; boundary="===
1261 Content-Type: multipart/mixed; boundary="===
1262 MIME-Version: 1.0
1262 MIME-Version: 1.0
1263 Subject: [PATCH] test
1263 Subject: [PATCH] test
1264 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1264 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1265 Message-Id: <ff2c9fa2018b15fa74b3.60@
1265 Message-Id: <ff2c9fa2018b15fa74b3.60@
1266 User-Agent: Mercurial-patchbomb
1266 User-Agent: Mercurial-patchbomb
1267 Date: Thu, 01 Jan 1970 00:01:00 +0000
1267 Date: Thu, 01 Jan 1970 00:01:00 +0000
1268 From: quux
1268 From: quux
1269 To: foo
1269 To: foo
1270 Cc: bar
1270 Cc: bar
1271
1271
1272 --===
1272 --===
1273 Content-Type: text/x-patch; charset="us-ascii"
1273 Content-Type: text/x-patch; charset="us-ascii"
1274 MIME-Version: 1.0
1274 MIME-Version: 1.0
1275 Content-Transfer-Encoding: 7bit
1275 Content-Transfer-Encoding: 7bit
1276 Content-Disposition: inline; filename=two.diff
1276 Content-Disposition: inline; filename=two.diff
1277
1277
1278 # HG changeset patch
1278 # HG changeset patch
1279 # User test
1279 # User test
1280 # Date 3 0
1280 # Date 3 0
1281 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1281 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1282 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1282 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1283 c
1283 c
1284
1284
1285 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1285 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1286 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1286 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1287 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1287 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1288 @@ -0,0 +1,1 @@
1288 @@ -0,0 +1,1 @@
1289 +c
1289 +c
1290
1290
1291 --===
1291 --===
1292
1292
1293 test inline for multiple named/unnamed patches:
1293 test inline for multiple named/unnamed patches:
1294 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1 | \
1294 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1 | \
1295 > fixheaders
1295 > fixheaders
1296 This patch series consists of 2 patches.
1296 This patch series consists of 2 patches.
1297
1297
1298
1298
1299 Write the introductory message for the patch series.
1299 Write the introductory message for the patch series.
1300
1300
1301
1301
1302 Displaying [PATCH 0 of 2] test ...
1302 Displaying [PATCH 0 of 2] test ...
1303 Content-Type: text/plain; charset="us-ascii"
1303 Content-Type: text/plain; charset="us-ascii"
1304 MIME-Version: 1.0
1304 MIME-Version: 1.0
1305 Content-Transfer-Encoding: 7bit
1305 Content-Transfer-Encoding: 7bit
1306 Subject: [PATCH 0 of 2] test
1306 Subject: [PATCH 0 of 2] test
1307 Message-Id: <patchbomb.60@
1307 Message-Id: <patchbomb.60@
1308 User-Agent: Mercurial-patchbomb
1308 User-Agent: Mercurial-patchbomb
1309 Date: Thu, 01 Jan 1970 00:01:00 +0000
1309 Date: Thu, 01 Jan 1970 00:01:00 +0000
1310 From: quux
1310 From: quux
1311 To: foo
1311 To: foo
1312 Cc: bar
1312 Cc: bar
1313
1313
1314
1314
1315 Displaying [PATCH 1 of 2] a ...
1315 Displaying [PATCH 1 of 2] a ...
1316 Content-Type: multipart/mixed; boundary="===
1316 Content-Type: multipart/mixed; boundary="===
1317 MIME-Version: 1.0
1317 MIME-Version: 1.0
1318 Subject: [PATCH 1 of 2] a
1318 Subject: [PATCH 1 of 2] a
1319 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1319 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1320 Message-Id: <8580ff50825a50c8f716.61@
1320 Message-Id: <8580ff50825a50c8f716.61@
1321 In-Reply-To: <patchbomb.60@
1321 In-Reply-To: <patchbomb.60@
1322 References: <patchbomb.60@
1322 References: <patchbomb.60@
1323 User-Agent: Mercurial-patchbomb
1323 User-Agent: Mercurial-patchbomb
1324 Date: Thu, 01 Jan 1970 00:01:01 +0000
1324 Date: Thu, 01 Jan 1970 00:01:01 +0000
1325 From: quux
1325 From: quux
1326 To: foo
1326 To: foo
1327 Cc: bar
1327 Cc: bar
1328
1328
1329 --===
1329 --===
1330 Content-Type: text/x-patch; charset="us-ascii"
1330 Content-Type: text/x-patch; charset="us-ascii"
1331 MIME-Version: 1.0
1331 MIME-Version: 1.0
1332 Content-Transfer-Encoding: 7bit
1332 Content-Transfer-Encoding: 7bit
1333 Content-Disposition: inline; filename=t2-1.patch
1333 Content-Disposition: inline; filename=t2-1.patch
1334
1334
1335 # HG changeset patch
1335 # HG changeset patch
1336 # User test
1336 # User test
1337 # Date 1 0
1337 # Date 1 0
1338 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1338 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1339 # Parent 0000000000000000000000000000000000000000
1339 # Parent 0000000000000000000000000000000000000000
1340 a
1340 a
1341
1341
1342 diff -r 000000000000 -r 8580ff50825a a
1342 diff -r 000000000000 -r 8580ff50825a a
1343 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1343 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1344 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1344 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1345 @@ -0,0 +1,1 @@
1345 @@ -0,0 +1,1 @@
1346 +a
1346 +a
1347
1347
1348 --===
1348 --===
1349 Displaying [PATCH 2 of 2] b ...
1349 Displaying [PATCH 2 of 2] b ...
1350 Content-Type: multipart/mixed; boundary="===
1350 Content-Type: multipart/mixed; boundary="===
1351 MIME-Version: 1.0
1351 MIME-Version: 1.0
1352 Subject: [PATCH 2 of 2] b
1352 Subject: [PATCH 2 of 2] b
1353 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1353 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1354 Message-Id: <97d72e5f12c7e84f8506.62@
1354 Message-Id: <97d72e5f12c7e84f8506.62@
1355 In-Reply-To: <patchbomb.60@
1355 In-Reply-To: <patchbomb.60@
1356 References: <patchbomb.60@
1356 References: <patchbomb.60@
1357 User-Agent: Mercurial-patchbomb
1357 User-Agent: Mercurial-patchbomb
1358 Date: Thu, 01 Jan 1970 00:01:02 +0000
1358 Date: Thu, 01 Jan 1970 00:01:02 +0000
1359 From: quux
1359 From: quux
1360 To: foo
1360 To: foo
1361 Cc: bar
1361 Cc: bar
1362
1362
1363 --===
1363 --===
1364 Content-Type: text/x-patch; charset="us-ascii"
1364 Content-Type: text/x-patch; charset="us-ascii"
1365 MIME-Version: 1.0
1365 MIME-Version: 1.0
1366 Content-Transfer-Encoding: 7bit
1366 Content-Transfer-Encoding: 7bit
1367 Content-Disposition: inline; filename=one.patch
1367 Content-Disposition: inline; filename=one.patch
1368
1368
1369 # HG changeset patch
1369 # HG changeset patch
1370 # User test
1370 # User test
1371 # Date 2 0
1371 # Date 2 0
1372 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1372 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1373 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1373 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1374 b
1374 b
1375
1375
1376 diff -r 8580ff50825a -r 97d72e5f12c7 b
1376 diff -r 8580ff50825a -r 97d72e5f12c7 b
1377 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1377 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1378 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1378 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1379 @@ -0,0 +1,1 @@
1379 @@ -0,0 +1,1 @@
1380 +b
1380 +b
1381
1381
1382 --===
1382 --===
1383
1383
1384
1384
1385 test inreplyto:
1385 test inreplyto:
1386 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1386 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1387 > -r tip | fixheaders
1387 > -r tip | fixheaders
1388 This patch series consists of 1 patches.
1388 This patch series consists of 1 patches.
1389
1389
1390
1390
1391 Displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
1391 Displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
1392 Content-Type: text/plain; charset="us-ascii"
1392 Content-Type: text/plain; charset="us-ascii"
1393 MIME-Version: 1.0
1393 MIME-Version: 1.0
1394 Content-Transfer-Encoding: 7bit
1394 Content-Transfer-Encoding: 7bit
1395 Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
1395 Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
1396 X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
1396 X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
1397 Message-Id: <e317db6a6f288748d1f6.60@
1397 Message-Id: <e317db6a6f288748d1f6.60@
1398 In-Reply-To: <baz>
1398 In-Reply-To: <baz>
1399 References: <baz>
1399 References: <baz>
1400 User-Agent: Mercurial-patchbomb
1400 User-Agent: Mercurial-patchbomb
1401 Date: Thu, 01 Jan 1970 00:01:00 +0000
1401 Date: Thu, 01 Jan 1970 00:01:00 +0000
1402 From: quux
1402 From: quux
1403 To: foo
1403 To: foo
1404 Cc: bar
1404 Cc: bar
1405
1405
1406 # HG changeset patch
1406 # HG changeset patch
1407 # User test
1407 # User test
1408 # Date 0 0
1408 # Date 0 0
1409 # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
1409 # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
1410 # Parent eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
1410 # Parent eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
1411 Added tag two, two.diff for changeset ff2c9fa2018b
1411 Added tag two, two.diff for changeset ff2c9fa2018b
1412
1412
1413 diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
1413 diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
1414 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1414 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1415 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1415 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1416 @@ -2,3 +2,5 @@
1416 @@ -2,3 +2,5 @@
1417 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1417 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1418 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1418 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1419 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1419 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1420 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1420 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1421 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1421 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1422
1422
1423
1423
1424 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1424 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1425 > -r 0:1
1425 > -r 0:1
1426 This patch series consists of 2 patches.
1426 This patch series consists of 2 patches.
1427
1427
1428 abort: Subject: [PATCH 0 of 2] Please enter a valid value
1428 abort: Subject: [PATCH 0 of 2] Please enter a valid value
1429
1429
1430 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1430 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1431 > -s test -r 0:1 | fixheaders
1431 > -s test -r 0:1 | fixheaders
1432 This patch series consists of 2 patches.
1432 This patch series consists of 2 patches.
1433
1433
1434
1434
1435 Write the introductory message for the patch series.
1435 Write the introductory message for the patch series.
1436
1436
1437
1437
1438 Displaying [PATCH 0 of 2] test ...
1438 Displaying [PATCH 0 of 2] test ...
1439 Content-Type: text/plain; charset="us-ascii"
1439 Content-Type: text/plain; charset="us-ascii"
1440 MIME-Version: 1.0
1440 MIME-Version: 1.0
1441 Content-Transfer-Encoding: 7bit
1441 Content-Transfer-Encoding: 7bit
1442 Subject: [PATCH 0 of 2] test
1442 Subject: [PATCH 0 of 2] test
1443 Message-Id: <patchbomb.60@
1443 Message-Id: <patchbomb.60@
1444 In-Reply-To: <baz>
1444 In-Reply-To: <baz>
1445 References: <baz>
1445 References: <baz>
1446 User-Agent: Mercurial-patchbomb
1446 User-Agent: Mercurial-patchbomb
1447 Date: Thu, 01 Jan 1970 00:01:00 +0000
1447 Date: Thu, 01 Jan 1970 00:01:00 +0000
1448 From: quux
1448 From: quux
1449 To: foo
1449 To: foo
1450 Cc: bar
1450 Cc: bar
1451
1451
1452
1452
1453 Displaying [PATCH 1 of 2] a ...
1453 Displaying [PATCH 1 of 2] a ...
1454 Content-Type: text/plain; charset="us-ascii"
1454 Content-Type: text/plain; charset="us-ascii"
1455 MIME-Version: 1.0
1455 MIME-Version: 1.0
1456 Content-Transfer-Encoding: 7bit
1456 Content-Transfer-Encoding: 7bit
1457 Subject: [PATCH 1 of 2] a
1457 Subject: [PATCH 1 of 2] a
1458 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1458 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1459 Message-Id: <8580ff50825a50c8f716.61@
1459 Message-Id: <8580ff50825a50c8f716.61@
1460 In-Reply-To: <patchbomb.60@
1460 In-Reply-To: <patchbomb.60@
1461 References: <patchbomb.60@
1461 References: <patchbomb.60@
1462 User-Agent: Mercurial-patchbomb
1462 User-Agent: Mercurial-patchbomb
1463 Date: Thu, 01 Jan 1970 00:01:01 +0000
1463 Date: Thu, 01 Jan 1970 00:01:01 +0000
1464 From: quux
1464 From: quux
1465 To: foo
1465 To: foo
1466 Cc: bar
1466 Cc: bar
1467
1467
1468 # HG changeset patch
1468 # HG changeset patch
1469 # User test
1469 # User test
1470 # Date 1 0
1470 # Date 1 0
1471 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1471 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1472 # Parent 0000000000000000000000000000000000000000
1472 # Parent 0000000000000000000000000000000000000000
1473 a
1473 a
1474
1474
1475 diff -r 000000000000 -r 8580ff50825a a
1475 diff -r 000000000000 -r 8580ff50825a a
1476 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1476 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1477 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1477 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1478 @@ -0,0 +1,1 @@
1478 @@ -0,0 +1,1 @@
1479 +a
1479 +a
1480
1480
1481 Displaying [PATCH 2 of 2] b ...
1481 Displaying [PATCH 2 of 2] b ...
1482 Content-Type: text/plain; charset="us-ascii"
1482 Content-Type: text/plain; charset="us-ascii"
1483 MIME-Version: 1.0
1483 MIME-Version: 1.0
1484 Content-Transfer-Encoding: 7bit
1484 Content-Transfer-Encoding: 7bit
1485 Subject: [PATCH 2 of 2] b
1485 Subject: [PATCH 2 of 2] b
1486 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1486 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1487 Message-Id: <97d72e5f12c7e84f8506.62@
1487 Message-Id: <97d72e5f12c7e84f8506.62@
1488 In-Reply-To: <patchbomb.60@
1488 In-Reply-To: <patchbomb.60@
1489 References: <patchbomb.60@
1489 References: <patchbomb.60@
1490 User-Agent: Mercurial-patchbomb
1490 User-Agent: Mercurial-patchbomb
1491 Date: Thu, 01 Jan 1970 00:01:02 +0000
1491 Date: Thu, 01 Jan 1970 00:01:02 +0000
1492 From: quux
1492 From: quux
1493 To: foo
1493 To: foo
1494 Cc: bar
1494 Cc: bar
1495
1495
1496 # HG changeset patch
1496 # HG changeset patch
1497 # User test
1497 # User test
1498 # Date 2 0
1498 # Date 2 0
1499 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1499 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1500 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1500 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1501 b
1501 b
1502
1502
1503 diff -r 8580ff50825a -r 97d72e5f12c7 b
1503 diff -r 8580ff50825a -r 97d72e5f12c7 b
1504 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1504 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1505 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1505 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1506 @@ -0,0 +1,1 @@
1506 @@ -0,0 +1,1 @@
1507 +b
1507 +b
1508
1508
1509
1509
1510 test single flag for single patch:
1510 test single flag for single patch:
1511 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
1511 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
1512 > -r 2 | fixheaders
1512 > -r 2 | fixheaders
1513 This patch series consists of 1 patches.
1513 This patch series consists of 1 patches.
1514
1514
1515
1515
1516 Displaying [PATCH fooFlag] test ...
1516 Displaying [PATCH fooFlag] test ...
1517 Content-Type: text/plain; charset="us-ascii"
1517 Content-Type: text/plain; charset="us-ascii"
1518 MIME-Version: 1.0
1518 MIME-Version: 1.0
1519 Content-Transfer-Encoding: 7bit
1519 Content-Transfer-Encoding: 7bit
1520 Subject: [PATCH fooFlag] test
1520 Subject: [PATCH fooFlag] test
1521 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1521 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1522 Message-Id: <ff2c9fa2018b15fa74b3.60@
1522 Message-Id: <ff2c9fa2018b15fa74b3.60@
1523 User-Agent: Mercurial-patchbomb
1523 User-Agent: Mercurial-patchbomb
1524 Date: Thu, 01 Jan 1970 00:01:00 +0000
1524 Date: Thu, 01 Jan 1970 00:01:00 +0000
1525 From: quux
1525 From: quux
1526 To: foo
1526 To: foo
1527 Cc: bar
1527 Cc: bar
1528
1528
1529 # HG changeset patch
1529 # HG changeset patch
1530 # User test
1530 # User test
1531 # Date 3 0
1531 # Date 3 0
1532 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1532 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1533 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1533 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1534 c
1534 c
1535
1535
1536 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1536 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1537 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1537 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1538 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1538 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1539 @@ -0,0 +1,1 @@
1539 @@ -0,0 +1,1 @@
1540 +c
1540 +c
1541
1541
1542
1542
1543 test single flag for multiple patches:
1543 test single flag for multiple patches:
1544 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
1544 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
1545 > -r 0:1 | fixheaders
1545 > -r 0:1 | fixheaders
1546 This patch series consists of 2 patches.
1546 This patch series consists of 2 patches.
1547
1547
1548
1548
1549 Write the introductory message for the patch series.
1549 Write the introductory message for the patch series.
1550
1550
1551
1551
1552 Displaying [PATCH 0 of 2 fooFlag] test ...
1552 Displaying [PATCH 0 of 2 fooFlag] test ...
1553 Content-Type: text/plain; charset="us-ascii"
1553 Content-Type: text/plain; charset="us-ascii"
1554 MIME-Version: 1.0
1554 MIME-Version: 1.0
1555 Content-Transfer-Encoding: 7bit
1555 Content-Transfer-Encoding: 7bit
1556 Subject: [PATCH 0 of 2 fooFlag] test
1556 Subject: [PATCH 0 of 2 fooFlag] test
1557 Message-Id: <patchbomb.60@
1557 Message-Id: <patchbomb.60@
1558 User-Agent: Mercurial-patchbomb
1558 User-Agent: Mercurial-patchbomb
1559 Date: Thu, 01 Jan 1970 00:01:00 +0000
1559 Date: Thu, 01 Jan 1970 00:01:00 +0000
1560 From: quux
1560 From: quux
1561 To: foo
1561 To: foo
1562 Cc: bar
1562 Cc: bar
1563
1563
1564
1564
1565 Displaying [PATCH 1 of 2 fooFlag] a ...
1565 Displaying [PATCH 1 of 2 fooFlag] a ...
1566 Content-Type: text/plain; charset="us-ascii"
1566 Content-Type: text/plain; charset="us-ascii"
1567 MIME-Version: 1.0
1567 MIME-Version: 1.0
1568 Content-Transfer-Encoding: 7bit
1568 Content-Transfer-Encoding: 7bit
1569 Subject: [PATCH 1 of 2 fooFlag] a
1569 Subject: [PATCH 1 of 2 fooFlag] a
1570 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1570 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1571 Message-Id: <8580ff50825a50c8f716.61@
1571 Message-Id: <8580ff50825a50c8f716.61@
1572 In-Reply-To: <patchbomb.60@
1572 In-Reply-To: <patchbomb.60@
1573 References: <patchbomb.60@
1573 References: <patchbomb.60@
1574 User-Agent: Mercurial-patchbomb
1574 User-Agent: Mercurial-patchbomb
1575 Date: Thu, 01 Jan 1970 00:01:01 +0000
1575 Date: Thu, 01 Jan 1970 00:01:01 +0000
1576 From: quux
1576 From: quux
1577 To: foo
1577 To: foo
1578 Cc: bar
1578 Cc: bar
1579
1579
1580 # HG changeset patch
1580 # HG changeset patch
1581 # User test
1581 # User test
1582 # Date 1 0
1582 # Date 1 0
1583 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1583 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1584 # Parent 0000000000000000000000000000000000000000
1584 # Parent 0000000000000000000000000000000000000000
1585 a
1585 a
1586
1586
1587 diff -r 000000000000 -r 8580ff50825a a
1587 diff -r 000000000000 -r 8580ff50825a a
1588 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1588 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1589 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1589 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1590 @@ -0,0 +1,1 @@
1590 @@ -0,0 +1,1 @@
1591 +a
1591 +a
1592
1592
1593 Displaying [PATCH 2 of 2 fooFlag] b ...
1593 Displaying [PATCH 2 of 2 fooFlag] b ...
1594 Content-Type: text/plain; charset="us-ascii"
1594 Content-Type: text/plain; charset="us-ascii"
1595 MIME-Version: 1.0
1595 MIME-Version: 1.0
1596 Content-Transfer-Encoding: 7bit
1596 Content-Transfer-Encoding: 7bit
1597 Subject: [PATCH 2 of 2 fooFlag] b
1597 Subject: [PATCH 2 of 2 fooFlag] b
1598 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1598 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1599 Message-Id: <97d72e5f12c7e84f8506.62@
1599 Message-Id: <97d72e5f12c7e84f8506.62@
1600 In-Reply-To: <patchbomb.60@
1600 In-Reply-To: <patchbomb.60@
1601 References: <patchbomb.60@
1601 References: <patchbomb.60@
1602 User-Agent: Mercurial-patchbomb
1602 User-Agent: Mercurial-patchbomb
1603 Date: Thu, 01 Jan 1970 00:01:02 +0000
1603 Date: Thu, 01 Jan 1970 00:01:02 +0000
1604 From: quux
1604 From: quux
1605 To: foo
1605 To: foo
1606 Cc: bar
1606 Cc: bar
1607
1607
1608 # HG changeset patch
1608 # HG changeset patch
1609 # User test
1609 # User test
1610 # Date 2 0
1610 # Date 2 0
1611 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1611 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1612 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1612 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1613 b
1613 b
1614
1614
1615 diff -r 8580ff50825a -r 97d72e5f12c7 b
1615 diff -r 8580ff50825a -r 97d72e5f12c7 b
1616 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1616 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1617 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1617 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1618 @@ -0,0 +1,1 @@
1618 @@ -0,0 +1,1 @@
1619 +b
1619 +b
1620
1620
1621
1621
1622 test mutiple flags for single patch:
1622 test mutiple flags for single patch:
1623 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
1623 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
1624 > -c bar -s test -r 2 | fixheaders
1624 > -c bar -s test -r 2 | fixheaders
1625 This patch series consists of 1 patches.
1625 This patch series consists of 1 patches.
1626
1626
1627
1627
1628 Displaying [PATCH fooFlag barFlag] test ...
1628 Displaying [PATCH fooFlag barFlag] test ...
1629 Content-Type: text/plain; charset="us-ascii"
1629 Content-Type: text/plain; charset="us-ascii"
1630 MIME-Version: 1.0
1630 MIME-Version: 1.0
1631 Content-Transfer-Encoding: 7bit
1631 Content-Transfer-Encoding: 7bit
1632 Subject: [PATCH fooFlag barFlag] test
1632 Subject: [PATCH fooFlag barFlag] test
1633 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1633 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1634 Message-Id: <ff2c9fa2018b15fa74b3.60@
1634 Message-Id: <ff2c9fa2018b15fa74b3.60@
1635 User-Agent: Mercurial-patchbomb
1635 User-Agent: Mercurial-patchbomb
1636 Date: Thu, 01 Jan 1970 00:01:00 +0000
1636 Date: Thu, 01 Jan 1970 00:01:00 +0000
1637 From: quux
1637 From: quux
1638 To: foo
1638 To: foo
1639 Cc: bar
1639 Cc: bar
1640
1640
1641 # HG changeset patch
1641 # HG changeset patch
1642 # User test
1642 # User test
1643 # Date 3 0
1643 # Date 3 0
1644 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1644 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1645 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1645 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1646 c
1646 c
1647
1647
1648 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1648 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1649 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1649 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1650 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1650 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1651 @@ -0,0 +1,1 @@
1651 @@ -0,0 +1,1 @@
1652 +c
1652 +c
1653
1653
1654
1654
1655 test multiple flags for multiple patches:
1655 test multiple flags for multiple patches:
1656 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
1656 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
1657 > -c bar -s test -r 0:1 | fixheaders
1657 > -c bar -s test -r 0:1 | fixheaders
1658 This patch series consists of 2 patches.
1658 This patch series consists of 2 patches.
1659
1659
1660
1660
1661 Write the introductory message for the patch series.
1661 Write the introductory message for the patch series.
1662
1662
1663
1663
1664 Displaying [PATCH 0 of 2 fooFlag barFlag] test ...
1664 Displaying [PATCH 0 of 2 fooFlag barFlag] test ...
1665 Content-Type: text/plain; charset="us-ascii"
1665 Content-Type: text/plain; charset="us-ascii"
1666 MIME-Version: 1.0
1666 MIME-Version: 1.0
1667 Content-Transfer-Encoding: 7bit
1667 Content-Transfer-Encoding: 7bit
1668 Subject: [PATCH 0 of 2 fooFlag barFlag] test
1668 Subject: [PATCH 0 of 2 fooFlag barFlag] test
1669 Message-Id: <patchbomb.60@
1669 Message-Id: <patchbomb.60@
1670 User-Agent: Mercurial-patchbomb
1670 User-Agent: Mercurial-patchbomb
1671 Date: Thu, 01 Jan 1970 00:01:00 +0000
1671 Date: Thu, 01 Jan 1970 00:01:00 +0000
1672 From: quux
1672 From: quux
1673 To: foo
1673 To: foo
1674 Cc: bar
1674 Cc: bar
1675
1675
1676
1676
1677 Displaying [PATCH 1 of 2 fooFlag barFlag] a ...
1677 Displaying [PATCH 1 of 2 fooFlag barFlag] a ...
1678 Content-Type: text/plain; charset="us-ascii"
1678 Content-Type: text/plain; charset="us-ascii"
1679 MIME-Version: 1.0
1679 MIME-Version: 1.0
1680 Content-Transfer-Encoding: 7bit
1680 Content-Transfer-Encoding: 7bit
1681 Subject: [PATCH 1 of 2 fooFlag barFlag] a
1681 Subject: [PATCH 1 of 2 fooFlag barFlag] a
1682 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1682 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1683 Message-Id: <8580ff50825a50c8f716.61@
1683 Message-Id: <8580ff50825a50c8f716.61@
1684 In-Reply-To: <patchbomb.60@
1684 In-Reply-To: <patchbomb.60@
1685 References: <patchbomb.60@
1685 References: <patchbomb.60@
1686 User-Agent: Mercurial-patchbomb
1686 User-Agent: Mercurial-patchbomb
1687 Date: Thu, 01 Jan 1970 00:01:01 +0000
1687 Date: Thu, 01 Jan 1970 00:01:01 +0000
1688 From: quux
1688 From: quux
1689 To: foo
1689 To: foo
1690 Cc: bar
1690 Cc: bar
1691
1691
1692 # HG changeset patch
1692 # HG changeset patch
1693 # User test
1693 # User test
1694 # Date 1 0
1694 # Date 1 0
1695 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1695 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1696 # Parent 0000000000000000000000000000000000000000
1696 # Parent 0000000000000000000000000000000000000000
1697 a
1697 a
1698
1698
1699 diff -r 000000000000 -r 8580ff50825a a
1699 diff -r 000000000000 -r 8580ff50825a a
1700 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1700 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1701 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1701 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1702 @@ -0,0 +1,1 @@
1702 @@ -0,0 +1,1 @@
1703 +a
1703 +a
1704
1704
1705 Displaying [PATCH 2 of 2 fooFlag barFlag] b ...
1705 Displaying [PATCH 2 of 2 fooFlag barFlag] b ...
1706 Content-Type: text/plain; charset="us-ascii"
1706 Content-Type: text/plain; charset="us-ascii"
1707 MIME-Version: 1.0
1707 MIME-Version: 1.0
1708 Content-Transfer-Encoding: 7bit
1708 Content-Transfer-Encoding: 7bit
1709 Subject: [PATCH 2 of 2 fooFlag barFlag] b
1709 Subject: [PATCH 2 of 2 fooFlag barFlag] b
1710 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1710 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1711 Message-Id: <97d72e5f12c7e84f8506.62@
1711 Message-Id: <97d72e5f12c7e84f8506.62@
1712 In-Reply-To: <patchbomb.60@
1712 In-Reply-To: <patchbomb.60@
1713 References: <patchbomb.60@
1713 References: <patchbomb.60@
1714 User-Agent: Mercurial-patchbomb
1714 User-Agent: Mercurial-patchbomb
1715 Date: Thu, 01 Jan 1970 00:01:02 +0000
1715 Date: Thu, 01 Jan 1970 00:01:02 +0000
1716 From: quux
1716 From: quux
1717 To: foo
1717 To: foo
1718 Cc: bar
1718 Cc: bar
1719
1719
1720 # HG changeset patch
1720 # HG changeset patch
1721 # User test
1721 # User test
1722 # Date 2 0
1722 # Date 2 0
1723 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1723 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1724 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1724 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1725 b
1725 b
1726
1726
1727 diff -r 8580ff50825a -r 97d72e5f12c7 b
1727 diff -r 8580ff50825a -r 97d72e5f12c7 b
1728 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1728 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1729 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1729 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1730 @@ -0,0 +1,1 @@
1730 @@ -0,0 +1,1 @@
1731 +b
1731 +b
1732
1732
1733
1733
1734 test multi-address parsing:
1734 test multi-address parsing:
1735 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
1735 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
1736 > -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
1736 > -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
1737 > --config email.bcc='"Quux, A." <quux>'
1737 > --config email.bcc='"Quux, A." <quux>'
1738 This patch series consists of 1 patches.
1738 This patch series consists of 1 patches.
1739
1739
1740
1740
1741 Writing [PATCH] test ...
1741 Writing [PATCH] test ...
1742 $ fixheaders < tmp.mbox
1742 $ fixheaders < tmp.mbox
1743 From quux Tue Jan 01 00:01:01 1980
1743 From quux Tue Jan 01 00:01:01 1980
1744 Content-Type: text/plain; charset="us-ascii"
1744 Content-Type: text/plain; charset="us-ascii"
1745 MIME-Version: 1.0
1745 MIME-Version: 1.0
1746 Content-Transfer-Encoding: 7bit
1746 Content-Transfer-Encoding: 7bit
1747 Subject: [PATCH] test
1747 Subject: [PATCH] test
1748 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1748 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1749 Message-Id: <8580ff50825a50c8f716.315532860@
1749 Message-Id: <8580ff50825a50c8f716.315532860@
1750 User-Agent: Mercurial-patchbomb
1750 User-Agent: Mercurial-patchbomb
1751 Date: Tue, 01 Jan 1980 00:01:00 +0000
1751 Date: Tue, 01 Jan 1980 00:01:00 +0000
1752 From: quux
1752 From: quux
1753 To: spam <spam>, eggs, toast
1753 To: spam <spam>, eggs, toast
1754 Cc: foo, bar@example.com, "A, B <>" <a@example.com>
1754 Cc: foo, bar@example.com, "A, B <>" <a@example.com>
1755 Bcc: "Quux, A." <quux>
1755 Bcc: "Quux, A." <quux>
1756
1756
1757 # HG changeset patch
1757 # HG changeset patch
1758 # User test
1758 # User test
1759 # Date 1 0
1759 # Date 1 0
1760 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1760 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1761 # Parent 0000000000000000000000000000000000000000
1761 # Parent 0000000000000000000000000000000000000000
1762 a
1762 a
1763
1763
1764 diff -r 000000000000 -r 8580ff50825a a
1764 diff -r 000000000000 -r 8580ff50825a a
1765 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1765 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1766 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1766 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1767 @@ -0,0 +1,1 @@
1767 @@ -0,0 +1,1 @@
1768 +a
1768 +a
1769
1769
1770
1770
1771
1771
1772 test multi-byte domain parsing:
1772 test multi-byte domain parsing:
1773 $ UUML=`python -c 'import sys; sys.stdout.write("\374")'`
1773 $ UUML=`python -c 'import sys; sys.stdout.write("\374")'`
1774 $ HGENCODING=iso-8859-1
1774 $ HGENCODING=iso-8859-1
1775 $ export HGENCODING
1775 $ export HGENCODING
1776 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" -s test -r 0
1776 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" -s test -r 0
1777 This patch series consists of 1 patches.
1777 This patch series consists of 1 patches.
1778
1778
1779 Cc:
1779
1780
1780 Writing [PATCH] test ...
1781 Writing [PATCH] test ...
1781
1782
1782 $ cat tmp.mbox
1783 $ cat tmp.mbox
1783 From quux Tue Jan 01 00:01:01 1980
1784 From quux Tue Jan 01 00:01:01 1980
1784 Content-Type: text/plain; charset="us-ascii"
1785 Content-Type: text/plain; charset="us-ascii"
1785 MIME-Version: 1.0
1786 MIME-Version: 1.0
1786 Content-Transfer-Encoding: 7bit
1787 Content-Transfer-Encoding: 7bit
1787 Subject: [PATCH] test
1788 Subject: [PATCH] test
1788 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1789 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1789 Message-Id: <8580ff50825a50c8f716.315532860@.*
1790 Message-Id: <8580ff50825a50c8f716.315532860@.*
1790 User-Agent: Mercurial-patchbomb/.*
1791 User-Agent: Mercurial-patchbomb/.*
1791 Date: Tue, 01 Jan 1980 00:01:00 +0000
1792 Date: Tue, 01 Jan 1980 00:01:00 +0000
1792 From: quux
1793 From: quux
1793 To: bar@xn--nicode-2ya.com
1794 To: bar@xn--nicode-2ya.com
1794
1795
1795 # HG changeset patch
1796 # HG changeset patch
1796 # User test
1797 # User test
1797 # Date 1 0
1798 # Date 1 0
1798 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1799 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1799 # Parent 0000000000000000000000000000000000000000
1800 # Parent 0000000000000000000000000000000000000000
1800 a
1801 a
1801
1802
1802 diff -r 000000000000 -r 8580ff50825a a
1803 diff -r 000000000000 -r 8580ff50825a a
1803 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1804 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1804 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1805 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1805 @@ -0,0 +1,1 @@
1806 @@ -0,0 +1,1 @@
1806 +a
1807 +a
1807
1808
1808
1809
1809
1810
1810 test outgoing:
1811 test outgoing:
1811 $ hg up 1
1812 $ hg up 1
1812 0 files updated, 0 files merged, 6 files removed, 0 files unresolved
1813 0 files updated, 0 files merged, 6 files removed, 0 files unresolved
1813
1814
1814 $ hg branch test
1815 $ hg branch test
1815 marked working directory as branch test
1816 marked working directory as branch test
1816
1817
1817 $ echo d > d
1818 $ echo d > d
1818 $ hg add d
1819 $ hg add d
1819 $ hg ci -md -d '4 0'
1820 $ hg ci -md -d '4 0'
1820 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t
1821 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t
1821 comparing with ../t
1822 comparing with ../t
1822 searching for changes
1823 searching for changes
1824 From [test]: test
1823 This patch series consists of 8 patches.
1825 This patch series consists of 8 patches.
1824
1826
1825
1827
1826 Write the introductory message for the patch series.
1828 Write the introductory message for the patch series.
1827
1829
1830 Cc:
1828
1831
1829 Displaying [PATCH 0 of 8] test ...
1832 Displaying [PATCH 0 of 8] test ...
1830 Content-Type: text/plain; charset="us-ascii"
1833 Content-Type: text/plain; charset="us-ascii"
1831 MIME-Version: 1.0
1834 MIME-Version: 1.0
1832 Content-Transfer-Encoding: 7bit
1835 Content-Transfer-Encoding: 7bit
1833 Subject: [PATCH 0 of 8] test
1836 Subject: [PATCH 0 of 8] test
1834 Message-Id: <patchbomb.315532860@.*
1837 Message-Id: <patchbomb.315532860@.*
1835 User-Agent: Mercurial-patchbomb/.*
1838 User-Agent: Mercurial-patchbomb/.*
1836 Date: Tue, 01 Jan 1980 00:01:00 +0000
1839 Date: Tue, 01 Jan 1980 00:01:00 +0000
1837 From: test
1840 From: test
1838 To: foo
1841 To: foo
1839
1842
1840
1843
1841 Displaying [PATCH 1 of 8] c ...
1844 Displaying [PATCH 1 of 8] c ...
1842 Content-Type: text/plain; charset="us-ascii"
1845 Content-Type: text/plain; charset="us-ascii"
1843 MIME-Version: 1.0
1846 MIME-Version: 1.0
1844 Content-Transfer-Encoding: 7bit
1847 Content-Transfer-Encoding: 7bit
1845 Subject: [PATCH 1 of 8] c
1848 Subject: [PATCH 1 of 8] c
1846 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1849 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1847 Message-Id: <ff2c9fa2018b15fa74b3.315532861@.*
1850 Message-Id: <ff2c9fa2018b15fa74b3.315532861@.*
1848 In-Reply-To: <patchbomb.315532860@[^>]*>
1851 In-Reply-To: <patchbomb.315532860@[^>]*>
1849 References: <patchbomb.315532860@[^>]*>
1852 References: <patchbomb.315532860@[^>]*>
1850 User-Agent: Mercurial-patchbomb/.*
1853 User-Agent: Mercurial-patchbomb/.*
1851 Date: Tue, 01 Jan 1980 00:01:01 +0000
1854 Date: Tue, 01 Jan 1980 00:01:01 +0000
1852 From: test
1855 From: test
1853 To: foo
1856 To: foo
1854
1857
1855 # HG changeset patch
1858 # HG changeset patch
1856 # User test
1859 # User test
1857 # Date 3 0
1860 # Date 3 0
1858 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1861 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1859 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1862 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1860 c
1863 c
1861
1864
1862 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1865 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1863 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1866 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1864 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1867 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1865 @@ -0,0 +1,1 @@
1868 @@ -0,0 +1,1 @@
1866 +c
1869 +c
1867
1870
1868 Displaying [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64 ...
1871 Displaying [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64 ...
1869 Content-Type: text/plain; charset="us-ascii"
1872 Content-Type: text/plain; charset="us-ascii"
1870 MIME-Version: 1.0
1873 MIME-Version: 1.0
1871 Content-Transfer-Encoding: 8bit
1874 Content-Transfer-Encoding: 8bit
1872 Subject: [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64
1875 Subject: [PATCH 2 of 8] charset=utf-8; content-transfer-encoding: base64
1873 X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
1876 X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
1874 Message-Id: <c3c9e37db9f4fe4882cd.315532862@.*
1877 Message-Id: <c3c9e37db9f4fe4882cd.315532862@.*
1875 In-Reply-To: <patchbomb.315532860@[^>]*>
1878 In-Reply-To: <patchbomb.315532860@[^>]*>
1876 References: <patchbomb.315532860@[^>]*>
1879 References: <patchbomb.315532860@[^>]*>
1877 User-Agent: Mercurial-patchbomb/.*
1880 User-Agent: Mercurial-patchbomb/.*
1878 Date: Tue, 01 Jan 1980 00:01:02 +0000
1881 Date: Tue, 01 Jan 1980 00:01:02 +0000
1879 From: test
1882 From: test
1880 To: foo
1883 To: foo
1881
1884
1882 # HG changeset patch
1885 # HG changeset patch
1883 # User test
1886 # User test
1884 # Date 4 0
1887 # Date 4 0
1885 # Node ID c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
1888 # Node ID c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
1886 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
1889 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
1887 charset=utf-8; content-transfer-encoding: base64
1890 charset=utf-8; content-transfer-encoding: base64
1888
1891
1889 diff -r ff2c9fa2018b -r c3c9e37db9f4 description
1892 diff -r ff2c9fa2018b -r c3c9e37db9f4 description
1890 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1893 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1891 +++ b/description Thu Jan 01 00:00:04 1970 +0000
1894 +++ b/description Thu Jan 01 00:00:04 1970 +0000
1892 @@ -0,0 +1,3 @@
1895 @@ -0,0 +1,3 @@
1893 +a multiline
1896 +a multiline
1894 +
1897 +
1895 +description
1898 +description
1896 diff -r ff2c9fa2018b -r c3c9e37db9f4 utf
1899 diff -r ff2c9fa2018b -r c3c9e37db9f4 utf
1897 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1900 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1898 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
1901 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
1899 @@ -0,0 +1,1 @@
1902 @@ -0,0 +1,1 @@
1900 +hΓΆmma!
1903 +hΓΆmma!
1901
1904
1902 Displaying [PATCH 3 of 8] charset=utf-8; content-transfer-encoding: quoted-printable ...
1905 Displaying [PATCH 3 of 8] charset=utf-8; content-transfer-encoding: quoted-printable ...
1903 Content-Type: text/plain; charset="us-ascii"
1906 Content-Type: text/plain; charset="us-ascii"
1904 MIME-Version: 1.0
1907 MIME-Version: 1.0
1905 Content-Transfer-Encoding: quoted-printable
1908 Content-Transfer-Encoding: quoted-printable
1906 Subject: [PATCH 3 of 8] charset=utf-8;
1909 Subject: [PATCH 3 of 8] charset=utf-8;
1907 content-transfer-encoding: quoted-printable
1910 content-transfer-encoding: quoted-printable
1908 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
1911 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
1909 Message-Id: <c655633f8c87700bb38c.315532863@.*
1912 Message-Id: <c655633f8c87700bb38c.315532863@.*
1910 In-Reply-To: <patchbomb.315532860@[^>]*>
1913 In-Reply-To: <patchbomb.315532860@[^>]*>
1911 References: <patchbomb.315532860@[^>]*>
1914 References: <patchbomb.315532860@[^>]*>
1912 User-Agent: Mercurial-patchbomb/.*
1915 User-Agent: Mercurial-patchbomb/.*
1913 Date: Tue, 01 Jan 1980 00:01:03 +0000
1916 Date: Tue, 01 Jan 1980 00:01:03 +0000
1914 From: test
1917 From: test
1915 To: foo
1918 To: foo
1916
1919
1917 # HG changeset patch
1920 # HG changeset patch
1918 # User test
1921 # User test
1919 # Date 4 0
1922 # Date 4 0
1920 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
1923 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
1921 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
1924 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
1922 charset=3Dutf-8; content-transfer-encoding: quoted-printable
1925 charset=3Dutf-8; content-transfer-encoding: quoted-printable
1923
1926
1924 diff -r c3c9e37db9f4 -r c655633f8c87 qp
1927 diff -r c3c9e37db9f4 -r c655633f8c87 qp
1925 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1928 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1926 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
1929 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
1927 @@ -0,0 +1,4 @@
1930 @@ -0,0 +1,4 @@
1928 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1931 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1929 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1932 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1930 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1933 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1931 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1934 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1932 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1935 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1933 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1936 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1934 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1937 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1935 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1938 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1936 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1939 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1937 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1940 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1938 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1941 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1939 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1942 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1940 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1943 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1941 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1944 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1942 +foo
1945 +foo
1943 +
1946 +
1944 +bar
1947 +bar
1945
1948
1946 Displaying [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit ...
1949 Displaying [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit ...
1947 Content-Type: text/plain; charset="us-ascii"
1950 Content-Type: text/plain; charset="us-ascii"
1948 MIME-Version: 1.0
1951 MIME-Version: 1.0
1949 Content-Transfer-Encoding: 8bit
1952 Content-Transfer-Encoding: 8bit
1950 Subject: [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit
1953 Subject: [PATCH 4 of 8] charset=us-ascii; content-transfer-encoding: 8bit
1951 X-Mercurial-Node: 22d0f96be12f5945fd67d101af58f7bc8263c835
1954 X-Mercurial-Node: 22d0f96be12f5945fd67d101af58f7bc8263c835
1952 Message-Id: <22d0f96be12f5945fd67.315532864@.*
1955 Message-Id: <22d0f96be12f5945fd67.315532864@.*
1953 In-Reply-To: <patchbomb.315532860@[^>]*>
1956 In-Reply-To: <patchbomb.315532860@[^>]*>
1954 References: <patchbomb.315532860@[^>]*>
1957 References: <patchbomb.315532860@[^>]*>
1955 User-Agent: Mercurial-patchbomb/.*
1958 User-Agent: Mercurial-patchbomb/.*
1956 Date: Tue, 01 Jan 1980 00:01:04 +0000
1959 Date: Tue, 01 Jan 1980 00:01:04 +0000
1957 From: test
1960 From: test
1958 To: foo
1961 To: foo
1959
1962
1960 # HG changeset patch
1963 # HG changeset patch
1961 # User test
1964 # User test
1962 # Date 5 0
1965 # Date 5 0
1963 # Node ID 22d0f96be12f5945fd67d101af58f7bc8263c835
1966 # Node ID 22d0f96be12f5945fd67d101af58f7bc8263c835
1964 # Parent c655633f8c87700bb38cc6a59a2753bdc5a6c376
1967 # Parent c655633f8c87700bb38cc6a59a2753bdc5a6c376
1965 charset=us-ascii; content-transfer-encoding: 8bit
1968 charset=us-ascii; content-transfer-encoding: 8bit
1966
1969
1967 diff -r c655633f8c87 -r 22d0f96be12f isolatin
1970 diff -r c655633f8c87 -r 22d0f96be12f isolatin
1968 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1971 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1969 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
1972 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
1970 @@ -0,0 +1,1 @@
1973 @@ -0,0 +1,1 @@
1971 +hοΏ½mma!
1974 +hοΏ½mma!
1972
1975
1973 Displaying [PATCH 5 of 8] Added tag zero, zero.foo for changeset 8580ff50825a ...
1976 Displaying [PATCH 5 of 8] Added tag zero, zero.foo for changeset 8580ff50825a ...
1974 Content-Type: text/plain; charset="us-ascii"
1977 Content-Type: text/plain; charset="us-ascii"
1975 MIME-Version: 1.0
1978 MIME-Version: 1.0
1976 Content-Transfer-Encoding: 7bit
1979 Content-Transfer-Encoding: 7bit
1977 Subject: [PATCH 5 of 8] Added tag zero, zero.foo for changeset 8580ff50825a
1980 Subject: [PATCH 5 of 8] Added tag zero, zero.foo for changeset 8580ff50825a
1978 X-Mercurial-Node: dd9c2b4b8a8a0934d5523c15f2c119b362360903
1981 X-Mercurial-Node: dd9c2b4b8a8a0934d5523c15f2c119b362360903
1979 Message-Id: <dd9c2b4b8a8a0934d552.315532865@.*
1982 Message-Id: <dd9c2b4b8a8a0934d552.315532865@.*
1980 In-Reply-To: <patchbomb.315532860@[^>]*>
1983 In-Reply-To: <patchbomb.315532860@[^>]*>
1981 References: <patchbomb.315532860@[^>]*>
1984 References: <patchbomb.315532860@[^>]*>
1982 User-Agent: Mercurial-patchbomb/.*
1985 User-Agent: Mercurial-patchbomb/.*
1983 Date: Tue, 01 Jan 1980 00:01:05 +0000
1986 Date: Tue, 01 Jan 1980 00:01:05 +0000
1984 From: test
1987 From: test
1985 To: foo
1988 To: foo
1986
1989
1987 # HG changeset patch
1990 # HG changeset patch
1988 # User test
1991 # User test
1989 # Date 0 0
1992 # Date 0 0
1990 # Node ID dd9c2b4b8a8a0934d5523c15f2c119b362360903
1993 # Node ID dd9c2b4b8a8a0934d5523c15f2c119b362360903
1991 # Parent 22d0f96be12f5945fd67d101af58f7bc8263c835
1994 # Parent 22d0f96be12f5945fd67d101af58f7bc8263c835
1992 Added tag zero, zero.foo for changeset 8580ff50825a
1995 Added tag zero, zero.foo for changeset 8580ff50825a
1993
1996
1994 diff -r 22d0f96be12f -r dd9c2b4b8a8a .hgtags
1997 diff -r 22d0f96be12f -r dd9c2b4b8a8a .hgtags
1995 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1998 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1996 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1999 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1997 @@ -0,0 +1,2 @@
2000 @@ -0,0 +1,2 @@
1998 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero
2001 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero
1999 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2002 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2000
2003
2001 Displaying [PATCH 6 of 8] Added tag one, one.patch for changeset 97d72e5f12c7 ...
2004 Displaying [PATCH 6 of 8] Added tag one, one.patch for changeset 97d72e5f12c7 ...
2002 Content-Type: text/plain; charset="us-ascii"
2005 Content-Type: text/plain; charset="us-ascii"
2003 MIME-Version: 1.0
2006 MIME-Version: 1.0
2004 Content-Transfer-Encoding: 7bit
2007 Content-Transfer-Encoding: 7bit
2005 Subject: [PATCH 6 of 8] Added tag one, one.patch for changeset 97d72e5f12c7
2008 Subject: [PATCH 6 of 8] Added tag one, one.patch for changeset 97d72e5f12c7
2006 X-Mercurial-Node: eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
2009 X-Mercurial-Node: eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
2007 Message-Id: <eae5fcf795eee29d0e45.315532866@.*
2010 Message-Id: <eae5fcf795eee29d0e45.315532866@.*
2008 In-Reply-To: <patchbomb.315532860@[^>]*>
2011 In-Reply-To: <patchbomb.315532860@[^>]*>
2009 References: <patchbomb.315532860@[^>]*>
2012 References: <patchbomb.315532860@[^>]*>
2010 User-Agent: Mercurial-patchbomb/.*
2013 User-Agent: Mercurial-patchbomb/.*
2011 Date: Tue, 01 Jan 1980 00:01:06 +0000
2014 Date: Tue, 01 Jan 1980 00:01:06 +0000
2012 From: test
2015 From: test
2013 To: foo
2016 To: foo
2014
2017
2015 # HG changeset patch
2018 # HG changeset patch
2016 # User test
2019 # User test
2017 # Date 0 0
2020 # Date 0 0
2018 # Node ID eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
2021 # Node ID eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
2019 # Parent dd9c2b4b8a8a0934d5523c15f2c119b362360903
2022 # Parent dd9c2b4b8a8a0934d5523c15f2c119b362360903
2020 Added tag one, one.patch for changeset 97d72e5f12c7
2023 Added tag one, one.patch for changeset 97d72e5f12c7
2021
2024
2022 diff -r dd9c2b4b8a8a -r eae5fcf795ee .hgtags
2025 diff -r dd9c2b4b8a8a -r eae5fcf795ee .hgtags
2023 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
2026 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
2024 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2027 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2025 @@ -1,2 +1,4 @@
2028 @@ -1,2 +1,4 @@
2026 8580ff50825a50c8f716709acdf8de0deddcd6ab zero
2029 8580ff50825a50c8f716709acdf8de0deddcd6ab zero
2027 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2030 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2028 +97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
2031 +97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
2029 +97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
2032 +97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
2030
2033
2031 Displaying [PATCH 7 of 8] Added tag two, two.diff for changeset ff2c9fa2018b ...
2034 Displaying [PATCH 7 of 8] Added tag two, two.diff for changeset ff2c9fa2018b ...
2032 Content-Type: text/plain; charset="us-ascii"
2035 Content-Type: text/plain; charset="us-ascii"
2033 MIME-Version: 1.0
2036 MIME-Version: 1.0
2034 Content-Transfer-Encoding: 7bit
2037 Content-Transfer-Encoding: 7bit
2035 Subject: [PATCH 7 of 8] Added tag two, two.diff for changeset ff2c9fa2018b
2038 Subject: [PATCH 7 of 8] Added tag two, two.diff for changeset ff2c9fa2018b
2036 X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
2039 X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
2037 Message-Id: <e317db6a6f288748d1f6.315532867@.*
2040 Message-Id: <e317db6a6f288748d1f6.315532867@.*
2038 In-Reply-To: <patchbomb.315532860@[^>]*>
2041 In-Reply-To: <patchbomb.315532860@[^>]*>
2039 References: <patchbomb.315532860@[^>]*>
2042 References: <patchbomb.315532860@[^>]*>
2040 User-Agent: Mercurial-patchbomb/.*
2043 User-Agent: Mercurial-patchbomb/.*
2041 Date: Tue, 01 Jan 1980 00:01:07 +0000
2044 Date: Tue, 01 Jan 1980 00:01:07 +0000
2042 From: test
2045 From: test
2043 To: foo
2046 To: foo
2044
2047
2045 # HG changeset patch
2048 # HG changeset patch
2046 # User test
2049 # User test
2047 # Date 0 0
2050 # Date 0 0
2048 # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
2051 # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
2049 # Parent eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
2052 # Parent eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
2050 Added tag two, two.diff for changeset ff2c9fa2018b
2053 Added tag two, two.diff for changeset ff2c9fa2018b
2051
2054
2052 diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
2055 diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
2053 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
2056 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
2054 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2057 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2055 @@ -2,3 +2,5 @@
2058 @@ -2,3 +2,5 @@
2056 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2059 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2057 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
2060 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
2058 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
2061 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
2059 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
2062 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
2060 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
2063 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
2061
2064
2062 Displaying [PATCH 8 of 8] d ...
2065 Displaying [PATCH 8 of 8] d ...
2063 Content-Type: text/plain; charset="us-ascii"
2066 Content-Type: text/plain; charset="us-ascii"
2064 MIME-Version: 1.0
2067 MIME-Version: 1.0
2065 Content-Transfer-Encoding: 7bit
2068 Content-Transfer-Encoding: 7bit
2066 Subject: [PATCH 8 of 8] d
2069 Subject: [PATCH 8 of 8] d
2067 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2070 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2068 Message-Id: <2f9fa9b998c5fe3ac2bd.315532868[^>]*>
2071 Message-Id: <2f9fa9b998c5fe3ac2bd.315532868[^>]*>
2069 In-Reply-To: <patchbomb.315532860@[^>]*>
2072 In-Reply-To: <patchbomb.315532860@[^>]*>
2070 References: <patchbomb.315532860@[^>]*>
2073 References: <patchbomb.315532860@[^>]*>
2071 User-Agent: Mercurial-patchbomb/.*
2074 User-Agent: Mercurial-patchbomb/.*
2072 Date: Tue, 01 Jan 1980 00:01:08 +0000
2075 Date: Tue, 01 Jan 1980 00:01:08 +0000
2073 From: test
2076 From: test
2074 To: foo
2077 To: foo
2075
2078
2076 # HG changeset patch
2079 # HG changeset patch
2077 # User test
2080 # User test
2078 # Date 4 0
2081 # Date 4 0
2079 # Branch test
2082 # Branch test
2080 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2083 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2081 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2084 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2082 d
2085 d
2083
2086
2084 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2087 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2085 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2088 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2086 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2089 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2087 @@ -0,0 +1,1 @@
2090 @@ -0,0 +1,1 @@
2088 +d
2091 +d
2089
2092
2090
2093
2091 dest#branch URIs:
2094 dest#branch URIs:
2092 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test
2095 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test
2093 comparing with ../t
2096 comparing with ../t
2094 searching for changes
2097 searching for changes
2098 From [test]: test
2095 This patch series consists of 1 patches.
2099 This patch series consists of 1 patches.
2096
2100
2101 Cc:
2097
2102
2098 Displaying [PATCH] test ...
2103 Displaying [PATCH] test ...
2099 Content-Type: text/plain; charset="us-ascii"
2104 Content-Type: text/plain; charset="us-ascii"
2100 MIME-Version: 1.0
2105 MIME-Version: 1.0
2101 Content-Transfer-Encoding: 7bit
2106 Content-Transfer-Encoding: 7bit
2102 Subject: [PATCH] test
2107 Subject: [PATCH] test
2103 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2108 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2104 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@.*
2109 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@.*
2105 User-Agent: Mercurial-patchbomb/.*
2110 User-Agent: Mercurial-patchbomb/.*
2106 Date: Tue, 01 Jan 1980 00:01:00 +0000
2111 Date: Tue, 01 Jan 1980 00:01:00 +0000
2107 From: test
2112 From: test
2108 To: foo
2113 To: foo
2109
2114
2110 # HG changeset patch
2115 # HG changeset patch
2111 # User test
2116 # User test
2112 # Date 4 0
2117 # Date 4 0
2113 # Branch test
2118 # Branch test
2114 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2119 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2115 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2120 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2116 d
2121 d
2117
2122
2118 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2123 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2119 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2124 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2120 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2125 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2121 @@ -0,0 +1,1 @@
2126 @@ -0,0 +1,1 @@
2122 +d
2127 +d
2123
2128
General Comments 0
You need to be logged in to leave comments. Login now