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