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