##// END OF EJS Templates
Merge with stable
Sune Foldager -
r10019:4e3a8f3e merge default
parent child Browse files
Show More
@@ -1,517 +1,518 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, incorporated herein by reference.
6 # GNU General Public License version 2, incorporated herein by reference.
7
7
8 '''command to send changesets as (a series of) patch emails
8 '''command to send changesets as (a series of) patch emails
9
9
10 The series is started off with a "[PATCH 0 of N]" introduction, which
10 The series is started off with a "[PATCH 0 of N]" introduction, which
11 describes the series as a whole.
11 describes the series as a whole.
12
12
13 Each patch email has a Subject line of "[PATCH M of N] ...", using the
13 Each patch email has a Subject line of "[PATCH M of N] ...", using the
14 first line of the changeset description as the subject text. The
14 first line of the changeset description as the subject text. The
15 message contains two or three body parts:
15 message contains two or three body parts:
16
16
17 - The changeset description.
17 - The changeset description.
18 - [Optional] The result of running diffstat on the patch.
18 - [Optional] The result of running diffstat on the patch.
19 - The patch itself, as generated by "hg export".
19 - The patch itself, as generated by "hg export".
20
20
21 Each message refers to the first in the series using the In-Reply-To
21 Each message refers to the first in the series using the In-Reply-To
22 and References headers, so they will show up as a sequence in threaded
22 and References headers, so they will show up as a sequence in threaded
23 mail and news readers, and in mail archives.
23 mail and news readers, and in mail archives.
24
24
25 With the -d/--diffstat option, you will be prompted for each changeset
25 With the -d/--diffstat option, you will be prompted for each changeset
26 with a diffstat summary and the changeset summary, so you can be sure
26 with a diffstat summary and the changeset summary, so you can be sure
27 you are sending the right changes.
27 you are sending the right changes.
28
28
29 To configure other defaults, add a section like this to your hgrc
29 To configure other defaults, add a section like this to your hgrc
30 file::
30 file::
31
31
32 [email]
32 [email]
33 from = My Name <my@email>
33 from = My Name <my@email>
34 to = recipient1, recipient2, ...
34 to = recipient1, recipient2, ...
35 cc = cc1, cc2, ...
35 cc = cc1, cc2, ...
36 bcc = bcc1, bcc2, ...
36 bcc = bcc1, bcc2, ...
37
37
38 Then you can use the "hg email" command to mail a series of changesets
38 Then you can use the "hg email" command to mail a series of changesets
39 as a patchbomb.
39 as a patchbomb.
40
40
41 To avoid sending patches prematurely, it is a good idea to first run
41 To avoid sending patches prematurely, it is a good idea to first run
42 the "email" command with the "-n" option (test only). You will be
42 the "email" command with the "-n" option (test only). You will be
43 prompted for an email recipient address, a subject and an introductory
43 prompted for an email recipient address, a subject and an introductory
44 message describing the patches of your patchbomb. Then when all is
44 message describing the patches of your patchbomb. Then when all is
45 done, patchbomb messages are displayed. If the PAGER environment
45 done, patchbomb messages are displayed. If the PAGER environment
46 variable is set, your pager will be fired up once for each patchbomb
46 variable is set, your pager will be fired up once for each patchbomb
47 message, so you can verify everything is alright.
47 message, so you can verify everything is alright.
48
48
49 The -m/--mbox option is also very useful. Instead of previewing each
49 The -m/--mbox option is also very useful. Instead of previewing each
50 patchbomb message in a pager or sending the messages directly, it will
50 patchbomb message in a pager or sending the messages directly, it will
51 create a UNIX mailbox file with the patch emails. This mailbox file
51 create a UNIX mailbox file with the patch emails. This mailbox file
52 can be previewed with any mail user agent which supports UNIX mbox
52 can be previewed with any mail user agent which supports UNIX mbox
53 files, e.g. with mutt::
53 files, e.g. with mutt::
54
54
55 % mutt -R -f mbox
55 % mutt -R -f mbox
56
56
57 When you are previewing the patchbomb messages, you can use ``formail``
57 When you are previewing the patchbomb messages, you can use ``formail``
58 (a utility that is commonly installed as part of the procmail
58 (a utility that is commonly installed as part of the procmail
59 package), to send each message out::
59 package), to send each message out::
60
60
61 % formail -s sendmail -bm -t < mbox
61 % formail -s sendmail -bm -t < mbox
62
62
63 That should be all. Now your patchbomb is on its way out.
63 That should be all. Now your patchbomb is on its way out.
64
64
65 You can also either configure the method option in the email section
65 You can also either configure the method option in the email section
66 to be a sendmail compatible mailer or fill out the [smtp] section so
66 to be a sendmail compatible mailer or fill out the [smtp] section so
67 that the patchbomb extension can automatically send patchbombs
67 that the patchbomb extension can automatically send patchbombs
68 directly from the commandline. See the [email] and [smtp] sections in
68 directly from the commandline. See the [email] and [smtp] sections in
69 hgrc(5) for details.
69 hgrc(5) for details.
70 '''
70 '''
71
71
72 import os, errno, socket, tempfile, cStringIO, time
72 import os, errno, socket, tempfile, cStringIO, time
73 import email.MIMEMultipart, email.MIMEBase
73 import email.MIMEMultipart, email.MIMEBase
74 import email.Utils, email.Encoders, email.Generator
74 import email.Utils, email.Encoders, email.Generator
75 from mercurial import cmdutil, commands, hg, mail, patch, util
75 from mercurial import cmdutil, commands, hg, mail, patch, util
76 from mercurial.i18n import _
76 from mercurial.i18n import _
77 from mercurial.node import bin
77 from mercurial.node import bin
78
78
79 def prompt(ui, prompt, default=None, rest=':'):
79 def prompt(ui, prompt, default=None, rest=':'):
80 if not ui.interactive():
80 if not ui.interactive():
81 if default is not None:
81 if default is not None:
82 return default
82 return default
83 raise util.Abort(_("%s Please enter a valid value" % (prompt+rest)))
83 raise util.Abort(_("%s Please enter a valid value" % (prompt+rest)))
84 if default:
84 if default:
85 prompt += ' [%s]' % default
85 prompt += ' [%s]' % default
86 prompt += rest
86 prompt += rest
87 while True:
87 while True:
88 r = ui.prompt(prompt, default=default)
88 r = ui.prompt(prompt, default=default)
89 if r:
89 if r:
90 return r
90 return r
91 if default is not None:
91 if default is not None:
92 return default
92 return default
93 ui.warn(_('Please enter a valid value.\n'))
93 ui.warn(_('Please enter a valid value.\n'))
94
94
95 def cdiffstat(ui, summary, patchlines):
95 def cdiffstat(ui, summary, patchlines):
96 s = patch.diffstat(patchlines)
96 s = patch.diffstat(patchlines)
97 if summary:
97 if summary:
98 ui.write(summary, '\n')
98 ui.write(summary, '\n')
99 ui.write(s, '\n')
99 ui.write(s, '\n')
100 ans = prompt(ui, _('does the diffstat above look okay?'), 'y')
100 ans = prompt(ui, _('does the diffstat above look okay?'), 'y')
101 if not ans.lower().startswith('y'):
101 if not ans.lower().startswith('y'):
102 raise util.Abort(_('diffstat rejected'))
102 raise util.Abort(_('diffstat rejected'))
103 return s
103 return s
104
104
105 def makepatch(ui, repo, patch, opts, _charsets, idx, total, patchname=None):
105 def makepatch(ui, repo, patch, opts, _charsets, idx, total, patchname=None):
106
106
107 desc = []
107 desc = []
108 node = None
108 node = None
109 body = ''
109 body = ''
110
110
111 for line in patch:
111 for line in patch:
112 if line.startswith('#'):
112 if line.startswith('#'):
113 if line.startswith('# Node ID'):
113 if line.startswith('# Node ID'):
114 node = line.split()[-1]
114 node = line.split()[-1]
115 continue
115 continue
116 if line.startswith('diff -r') or line.startswith('diff --git'):
116 if line.startswith('diff -r') or line.startswith('diff --git'):
117 break
117 break
118 desc.append(line)
118 desc.append(line)
119
119
120 if not patchname and not node:
120 if not patchname and not node:
121 raise ValueError
121 raise ValueError
122
122
123 if opts.get('attach'):
123 if opts.get('attach'):
124 body = ('\n'.join(desc[1:]).strip() or
124 body = ('\n'.join(desc[1:]).strip() or
125 'Patch subject is complete summary.')
125 'Patch subject is complete summary.')
126 body += '\n\n\n'
126 body += '\n\n\n'
127
127
128 if opts.get('plain'):
128 if opts.get('plain'):
129 while patch and patch[0].startswith('# '):
129 while patch and patch[0].startswith('# '):
130 patch.pop(0)
130 patch.pop(0)
131 if patch:
131 if patch:
132 patch.pop(0)
132 patch.pop(0)
133 while patch and not patch[0].strip():
133 while patch and not patch[0].strip():
134 patch.pop(0)
134 patch.pop(0)
135
135
136 if opts.get('diffstat'):
136 if opts.get('diffstat'):
137 body += cdiffstat(ui, '\n'.join(desc), patch) + '\n\n'
137 body += cdiffstat(ui, '\n'.join(desc), patch) + '\n\n'
138
138
139 if opts.get('attach') or opts.get('inline'):
139 if opts.get('attach') or opts.get('inline'):
140 msg = email.MIMEMultipart.MIMEMultipart()
140 msg = email.MIMEMultipart.MIMEMultipart()
141 if body:
141 if body:
142 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
142 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
143 p = mail.mimetextpatch('\n'.join(patch), 'x-patch', opts.get('test'))
143 p = mail.mimetextpatch('\n'.join(patch), 'x-patch', opts.get('test'))
144 binnode = bin(node)
144 binnode = bin(node)
145 # if node is mq patch, it will have the patch file's name as a tag
145 # if node is mq patch, it will have the patch file's name as a tag
146 if not patchname:
146 if not patchname:
147 patchtags = [t for t in repo.nodetags(binnode)
147 patchtags = [t for t in repo.nodetags(binnode)
148 if t.endswith('.patch') or t.endswith('.diff')]
148 if t.endswith('.patch') or t.endswith('.diff')]
149 if patchtags:
149 if patchtags:
150 patchname = patchtags[0]
150 patchname = patchtags[0]
151 elif total > 1:
151 elif total > 1:
152 patchname = cmdutil.make_filename(repo, '%b-%n.patch',
152 patchname = cmdutil.make_filename(repo, '%b-%n.patch',
153 binnode, seqno=idx, total=total)
153 binnode, seqno=idx, total=total)
154 else:
154 else:
155 patchname = cmdutil.make_filename(repo, '%b.patch', binnode)
155 patchname = cmdutil.make_filename(repo, '%b.patch', binnode)
156 disposition = 'inline'
156 disposition = 'inline'
157 if opts.get('attach'):
157 if opts.get('attach'):
158 disposition = 'attachment'
158 disposition = 'attachment'
159 p['Content-Disposition'] = disposition + '; filename=' + patchname
159 p['Content-Disposition'] = disposition + '; filename=' + patchname
160 msg.attach(p)
160 msg.attach(p)
161 else:
161 else:
162 body += '\n'.join(patch)
162 body += '\n'.join(patch)
163 msg = mail.mimetextpatch(body, display=opts.get('test'))
163 msg = mail.mimetextpatch(body, display=opts.get('test'))
164
164
165 flag = ' '.join(opts.get('flag'))
165 flag = ' '.join(opts.get('flag'))
166 if flag:
166 if flag:
167 flag = ' ' + flag
167 flag = ' ' + flag
168
168
169 subj = desc[0].strip().rstrip('. ')
169 subj = desc[0].strip().rstrip('. ')
170 if total == 1 and not opts.get('intro'):
170 if total == 1 and not opts.get('intro'):
171 subj = '[PATCH%s] %s' % (flag, opts.get('subject') or subj)
171 subj = '[PATCH%s] %s' % (flag, opts.get('subject') or subj)
172 else:
172 else:
173 tlen = len(str(total))
173 tlen = len(str(total))
174 subj = '[PATCH %0*d of %d%s] %s' % (tlen, idx, total, flag, subj)
174 subj = '[PATCH %0*d of %d%s] %s' % (tlen, idx, total, flag, subj)
175 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
175 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
176 msg['X-Mercurial-Node'] = node
176 msg['X-Mercurial-Node'] = node
177 return msg, subj
177 return msg, subj
178
178
179 def patchbomb(ui, repo, *revs, **opts):
179 def patchbomb(ui, repo, *revs, **opts):
180 '''send changesets by email
180 '''send changesets by email
181
181
182 By default, diffs are sent in the format generated by hg export,
182 By default, diffs are sent in the format generated by hg export,
183 one per message. The series starts with a "[PATCH 0 of N]"
183 one per message. The series starts with a "[PATCH 0 of N]"
184 introduction, which describes the series as a whole.
184 introduction, which describes the series as a whole.
185
185
186 Each patch email has a Subject line of "[PATCH M of N] ...", using
186 Each patch email has a Subject line of "[PATCH M of N] ...", using
187 the first line of the changeset description as the subject text.
187 the first line of the changeset description as the subject text.
188 The message contains two or three parts. First, the changeset
188 The message contains two or three parts. First, the changeset
189 description. Next, (optionally) if the diffstat program is
189 description. Next, (optionally) if the diffstat program is
190 installed and -d/--diffstat is used, the result of running
190 installed and -d/--diffstat is used, the result of running
191 diffstat on the patch. Finally, the patch itself, as generated by
191 diffstat on the patch. Finally, the patch itself, as generated by
192 "hg export".
192 "hg export".
193
193
194 By default the patch is included as text in the email body for
194 By default the patch is included as text in the email body for
195 easy reviewing. Using the -a/--attach option will instead create
195 easy reviewing. Using the -a/--attach option will instead create
196 an attachment for the patch. With -i/--inline an inline attachment
196 an attachment for the patch. With -i/--inline an inline attachment
197 will be created.
197 will be created.
198
198
199 With -o/--outgoing, emails will be generated for patches not found
199 With -o/--outgoing, emails will be generated for patches not found
200 in the destination repository (or only those which are ancestors
200 in the destination repository (or only those which are ancestors
201 of the specified revisions if any are provided)
201 of the specified revisions if any are provided)
202
202
203 With -b/--bundle, changesets are selected as for --outgoing, but a
203 With -b/--bundle, changesets are selected as for --outgoing, but a
204 single email containing a binary Mercurial bundle as an attachment
204 single email containing a binary Mercurial bundle as an attachment
205 will be sent.
205 will be sent.
206
206
207 Examples::
207 Examples::
208
208
209 hg email -r 3000 # send patch 3000 only
209 hg email -r 3000 # send patch 3000 only
210 hg email -r 3000 -r 3001 # send patches 3000 and 3001
210 hg email -r 3000 -r 3001 # send patches 3000 and 3001
211 hg email -r 3000:3005 # send patches 3000 through 3005
211 hg email -r 3000:3005 # send patches 3000 through 3005
212 hg email 3000 # send patch 3000 (deprecated)
212 hg email 3000 # send patch 3000 (deprecated)
213
213
214 hg email -o # send all patches not in default
214 hg email -o # send all patches not in default
215 hg email -o DEST # send all patches not in DEST
215 hg email -o DEST # send all patches not in DEST
216 hg email -o -r 3000 # send all ancestors of 3000 not in default
216 hg email -o -r 3000 # send all ancestors of 3000 not in default
217 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
217 hg email -o -r 3000 DEST # send all ancestors of 3000 not in DEST
218
218
219 hg email -b # send bundle of all patches not in default
219 hg email -b # send bundle of all patches not in default
220 hg email -b DEST # send bundle of all patches not in DEST
220 hg email -b DEST # send bundle of all patches not in DEST
221 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
221 hg email -b -r 3000 # bundle of all ancestors of 3000 not in default
222 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST
222 hg email -b -r 3000 DEST # bundle of all ancestors of 3000 not in DEST
223
223
224 Before using this command, you will need to enable email in your
224 Before using this command, you will need to enable email in your
225 hgrc. See the [email] section in hgrc(5) for details.
225 hgrc. See the [email] section in hgrc(5) for details.
226 '''
226 '''
227
227
228 _charsets = mail._charsets(ui)
228 _charsets = mail._charsets(ui)
229
229
230 def outgoing(dest, revs):
230 def outgoing(dest, revs):
231 '''Return the revisions present locally but not in dest'''
231 '''Return the revisions present locally but not in dest'''
232 dest = ui.expandpath(dest or 'default-push', dest or 'default')
232 dest = ui.expandpath(dest or 'default-push', dest or 'default')
233 dest, revs, checkout = hg.parseurl(dest, revs)
233 revs = [repo.lookup(rev) for rev in revs]
234 revs = [repo.lookup(rev) for rev in revs]
234 other = hg.repository(cmdutil.remoteui(repo, opts), dest)
235 other = hg.repository(cmdutil.remoteui(repo, opts), dest)
235 ui.status(_('comparing with %s\n') % dest)
236 ui.status(_('comparing with %s\n') % dest)
236 o = repo.findoutgoing(other)
237 o = repo.findoutgoing(other)
237 if not o:
238 if not o:
238 ui.status(_("no changes found\n"))
239 ui.status(_("no changes found\n"))
239 return []
240 return []
240 o = repo.changelog.nodesbetween(o, revs or None)[0]
241 o = repo.changelog.nodesbetween(o, revs or None)[0]
241 return [str(repo.changelog.rev(r)) for r in o]
242 return [str(repo.changelog.rev(r)) for r in o]
242
243
243 def getpatches(revs):
244 def getpatches(revs):
244 for r in cmdutil.revrange(repo, revs):
245 for r in cmdutil.revrange(repo, revs):
245 output = cStringIO.StringIO()
246 output = cStringIO.StringIO()
246 patch.export(repo, [r], fp=output,
247 patch.export(repo, [r], fp=output,
247 opts=patch.diffopts(ui, opts))
248 opts=patch.diffopts(ui, opts))
248 yield output.getvalue().split('\n')
249 yield output.getvalue().split('\n')
249
250
250 def getbundle(dest):
251 def getbundle(dest):
251 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-')
252 tmpdir = tempfile.mkdtemp(prefix='hg-email-bundle-')
252 tmpfn = os.path.join(tmpdir, 'bundle')
253 tmpfn = os.path.join(tmpdir, 'bundle')
253 try:
254 try:
254 commands.bundle(ui, repo, tmpfn, dest, **opts)
255 commands.bundle(ui, repo, tmpfn, dest, **opts)
255 return open(tmpfn, 'rb').read()
256 return open(tmpfn, 'rb').read()
256 finally:
257 finally:
257 try:
258 try:
258 os.unlink(tmpfn)
259 os.unlink(tmpfn)
259 except:
260 except:
260 pass
261 pass
261 os.rmdir(tmpdir)
262 os.rmdir(tmpdir)
262
263
263 if not (opts.get('test') or opts.get('mbox')):
264 if not (opts.get('test') or opts.get('mbox')):
264 # really sending
265 # really sending
265 mail.validateconfig(ui)
266 mail.validateconfig(ui)
266
267
267 if not (revs or opts.get('rev')
268 if not (revs or opts.get('rev')
268 or opts.get('outgoing') or opts.get('bundle')
269 or opts.get('outgoing') or opts.get('bundle')
269 or opts.get('patches')):
270 or opts.get('patches')):
270 raise util.Abort(_('specify at least one changeset with -r or -o'))
271 raise util.Abort(_('specify at least one changeset with -r or -o'))
271
272
272 if opts.get('outgoing') and opts.get('bundle'):
273 if opts.get('outgoing') and opts.get('bundle'):
273 raise util.Abort(_("--outgoing mode always on with --bundle;"
274 raise util.Abort(_("--outgoing mode always on with --bundle;"
274 " do not re-specify --outgoing"))
275 " do not re-specify --outgoing"))
275
276
276 if opts.get('outgoing') or opts.get('bundle'):
277 if opts.get('outgoing') or opts.get('bundle'):
277 if len(revs) > 1:
278 if len(revs) > 1:
278 raise util.Abort(_("too many destinations"))
279 raise util.Abort(_("too many destinations"))
279 dest = revs and revs[0] or None
280 dest = revs and revs[0] or None
280 revs = []
281 revs = []
281
282
282 if opts.get('rev'):
283 if opts.get('rev'):
283 if revs:
284 if revs:
284 raise util.Abort(_('use only one form to specify the revision'))
285 raise util.Abort(_('use only one form to specify the revision'))
285 revs = opts.get('rev')
286 revs = opts.get('rev')
286
287
287 if opts.get('outgoing'):
288 if opts.get('outgoing'):
288 revs = outgoing(dest, opts.get('rev'))
289 revs = outgoing(dest, opts.get('rev'))
289 if opts.get('bundle'):
290 if opts.get('bundle'):
290 opts['revs'] = revs
291 opts['revs'] = revs
291
292
292 # start
293 # start
293 if opts.get('date'):
294 if opts.get('date'):
294 start_time = util.parsedate(opts.get('date'))
295 start_time = util.parsedate(opts.get('date'))
295 else:
296 else:
296 start_time = util.makedate()
297 start_time = util.makedate()
297
298
298 def genmsgid(id):
299 def genmsgid(id):
299 return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn())
300 return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn())
300
301
301 def getdescription(body, sender):
302 def getdescription(body, sender):
302 if opts.get('desc'):
303 if opts.get('desc'):
303 body = open(opts.get('desc')).read()
304 body = open(opts.get('desc')).read()
304 else:
305 else:
305 ui.write(_('\nWrite the introductory message for the '
306 ui.write(_('\nWrite the introductory message for the '
306 'patch series.\n\n'))
307 'patch series.\n\n'))
307 body = ui.edit(body, sender)
308 body = ui.edit(body, sender)
308 return body
309 return body
309
310
310 def getpatchmsgs(patches, patchnames=None):
311 def getpatchmsgs(patches, patchnames=None):
311 jumbo = []
312 jumbo = []
312 msgs = []
313 msgs = []
313
314
314 ui.write(_('This patch series consists of %d patches.\n\n')
315 ui.write(_('This patch series consists of %d patches.\n\n')
315 % len(patches))
316 % len(patches))
316
317
317 name = None
318 name = None
318 for i, p in enumerate(patches):
319 for i, p in enumerate(patches):
319 jumbo.extend(p)
320 jumbo.extend(p)
320 if patchnames:
321 if patchnames:
321 name = patchnames[i]
322 name = patchnames[i]
322 msg = makepatch(ui, repo, p, opts, _charsets, i + 1,
323 msg = makepatch(ui, repo, p, opts, _charsets, i + 1,
323 len(patches), name)
324 len(patches), name)
324 msgs.append(msg)
325 msgs.append(msg)
325
326
326 if len(patches) > 1 or opts.get('intro'):
327 if len(patches) > 1 or opts.get('intro'):
327 tlen = len(str(len(patches)))
328 tlen = len(str(len(patches)))
328
329
329 flag = ' '.join(opts.get('flag'))
330 flag = ' '.join(opts.get('flag'))
330 if flag:
331 if flag:
331 subj = '[PATCH %0*d of %d %s]' % (tlen, 0, len(patches), flag)
332 subj = '[PATCH %0*d of %d %s]' % (tlen, 0, len(patches), flag)
332 else:
333 else:
333 subj = '[PATCH %0*d of %d]' % (tlen, 0, len(patches))
334 subj = '[PATCH %0*d of %d]' % (tlen, 0, len(patches))
334 subj += ' ' + (opts.get('subject') or
335 subj += ' ' + (opts.get('subject') or
335 prompt(ui, 'Subject: ', rest=subj))
336 prompt(ui, 'Subject: ', rest=subj))
336
337
337 body = ''
338 body = ''
338 if opts.get('diffstat'):
339 if opts.get('diffstat'):
339 d = cdiffstat(ui, _('Final summary:\n'), jumbo)
340 d = cdiffstat(ui, _('Final summary:\n'), jumbo)
340 if d:
341 if d:
341 body = '\n' + d
342 body = '\n' + d
342
343
343 body = getdescription(body, sender)
344 body = getdescription(body, sender)
344 msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
345 msg = mail.mimeencode(ui, body, _charsets, opts.get('test'))
345 msg['Subject'] = mail.headencode(ui, subj, _charsets,
346 msg['Subject'] = mail.headencode(ui, subj, _charsets,
346 opts.get('test'))
347 opts.get('test'))
347
348
348 msgs.insert(0, (msg, subj))
349 msgs.insert(0, (msg, subj))
349 return msgs
350 return msgs
350
351
351 def getbundlemsgs(bundle):
352 def getbundlemsgs(bundle):
352 subj = (opts.get('subject')
353 subj = (opts.get('subject')
353 or prompt(ui, 'Subject:', 'A bundle for your repository'))
354 or prompt(ui, 'Subject:', 'A bundle for your repository'))
354
355
355 body = getdescription('', sender)
356 body = getdescription('', sender)
356 msg = email.MIMEMultipart.MIMEMultipart()
357 msg = email.MIMEMultipart.MIMEMultipart()
357 if body:
358 if body:
358 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
359 msg.attach(mail.mimeencode(ui, body, _charsets, opts.get('test')))
359 datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
360 datapart = email.MIMEBase.MIMEBase('application', 'x-mercurial-bundle')
360 datapart.set_payload(bundle)
361 datapart.set_payload(bundle)
361 bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
362 bundlename = '%s.hg' % opts.get('bundlename', 'bundle')
362 datapart.add_header('Content-Disposition', 'attachment',
363 datapart.add_header('Content-Disposition', 'attachment',
363 filename=bundlename)
364 filename=bundlename)
364 email.Encoders.encode_base64(datapart)
365 email.Encoders.encode_base64(datapart)
365 msg.attach(datapart)
366 msg.attach(datapart)
366 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
367 msg['Subject'] = mail.headencode(ui, subj, _charsets, opts.get('test'))
367 return [(msg, subj)]
368 return [(msg, subj)]
368
369
369 sender = (opts.get('from') or ui.config('email', 'from') or
370 sender = (opts.get('from') or ui.config('email', 'from') or
370 ui.config('patchbomb', 'from') or
371 ui.config('patchbomb', 'from') or
371 prompt(ui, 'From', ui.username()))
372 prompt(ui, 'From', ui.username()))
372
373
373 # internal option used by pbranches
374 # internal option used by pbranches
374 patches = opts.get('patches')
375 patches = opts.get('patches')
375 if patches:
376 if patches:
376 msgs = getpatchmsgs(patches, opts.get('patchnames'))
377 msgs = getpatchmsgs(patches, opts.get('patchnames'))
377 elif opts.get('bundle'):
378 elif opts.get('bundle'):
378 msgs = getbundlemsgs(getbundle(dest))
379 msgs = getbundlemsgs(getbundle(dest))
379 else:
380 else:
380 msgs = getpatchmsgs(list(getpatches(revs)))
381 msgs = getpatchmsgs(list(getpatches(revs)))
381
382
382 def getaddrs(opt, prpt=None, default=None):
383 def getaddrs(opt, prpt=None, default=None):
383 if opts.get(opt):
384 if opts.get(opt):
384 return mail.addrlistencode(ui, opts.get(opt), _charsets,
385 return mail.addrlistencode(ui, opts.get(opt), _charsets,
385 opts.get('test'))
386 opts.get('test'))
386
387
387 addrs = (ui.config('email', opt) or
388 addrs = (ui.config('email', opt) or
388 ui.config('patchbomb', opt) or '')
389 ui.config('patchbomb', opt) or '')
389 if not addrs and prpt:
390 if not addrs and prpt:
390 addrs = prompt(ui, prpt, default)
391 addrs = prompt(ui, prpt, default)
391
392
392 return mail.addrlistencode(ui, [addrs], _charsets, opts.get('test'))
393 return mail.addrlistencode(ui, [addrs], _charsets, opts.get('test'))
393
394
394 to = getaddrs('to', 'To')
395 to = getaddrs('to', 'To')
395 cc = getaddrs('cc', 'Cc', '')
396 cc = getaddrs('cc', 'Cc', '')
396 bcc = getaddrs('bcc')
397 bcc = getaddrs('bcc')
397
398
398 ui.write('\n')
399 ui.write('\n')
399
400
400 parent = opts.get('in_reply_to') or None
401 parent = opts.get('in_reply_to') or None
401 # angle brackets may be omitted, they're not semantically part of the msg-id
402 # angle brackets may be omitted, they're not semantically part of the msg-id
402 if parent is not None:
403 if parent is not None:
403 if not parent.startswith('<'):
404 if not parent.startswith('<'):
404 parent = '<' + parent
405 parent = '<' + parent
405 if not parent.endswith('>'):
406 if not parent.endswith('>'):
406 parent += '>'
407 parent += '>'
407
408
408 first = True
409 first = True
409
410
410 sender_addr = email.Utils.parseaddr(sender)[1]
411 sender_addr = email.Utils.parseaddr(sender)[1]
411 sender = mail.addressencode(ui, sender, _charsets, opts.get('test'))
412 sender = mail.addressencode(ui, sender, _charsets, opts.get('test'))
412 sendmail = None
413 sendmail = None
413 for m, subj in msgs:
414 for m, subj in msgs:
414 try:
415 try:
415 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
416 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
416 except TypeError:
417 except TypeError:
417 m['Message-Id'] = genmsgid('patchbomb')
418 m['Message-Id'] = genmsgid('patchbomb')
418 if parent:
419 if parent:
419 m['In-Reply-To'] = parent
420 m['In-Reply-To'] = parent
420 m['References'] = parent
421 m['References'] = parent
421 if first:
422 if first:
422 parent = m['Message-Id']
423 parent = m['Message-Id']
423 first = False
424 first = False
424
425
425 m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
426 m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
426 m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
427 m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
427
428
428 start_time = (start_time[0] + 1, start_time[1])
429 start_time = (start_time[0] + 1, start_time[1])
429 m['From'] = sender
430 m['From'] = sender
430 m['To'] = ', '.join(to)
431 m['To'] = ', '.join(to)
431 if cc:
432 if cc:
432 m['Cc'] = ', '.join(cc)
433 m['Cc'] = ', '.join(cc)
433 if bcc:
434 if bcc:
434 m['Bcc'] = ', '.join(bcc)
435 m['Bcc'] = ', '.join(bcc)
435 if opts.get('test'):
436 if opts.get('test'):
436 ui.status(_('Displaying '), subj, ' ...\n')
437 ui.status(_('Displaying '), subj, ' ...\n')
437 ui.flush()
438 ui.flush()
438 if 'PAGER' in os.environ:
439 if 'PAGER' in os.environ:
439 fp = util.popen(os.environ['PAGER'], 'w')
440 fp = util.popen(os.environ['PAGER'], 'w')
440 else:
441 else:
441 fp = ui
442 fp = ui
442 generator = email.Generator.Generator(fp, mangle_from_=False)
443 generator = email.Generator.Generator(fp, mangle_from_=False)
443 try:
444 try:
444 generator.flatten(m, 0)
445 generator.flatten(m, 0)
445 fp.write('\n')
446 fp.write('\n')
446 except IOError, inst:
447 except IOError, inst:
447 if inst.errno != errno.EPIPE:
448 if inst.errno != errno.EPIPE:
448 raise
449 raise
449 if fp is not ui:
450 if fp is not ui:
450 fp.close()
451 fp.close()
451 elif opts.get('mbox'):
452 elif opts.get('mbox'):
452 ui.status(_('Writing '), subj, ' ...\n')
453 ui.status(_('Writing '), subj, ' ...\n')
453 fp = open(opts.get('mbox'), 'In-Reply-To' in m and 'ab+' or 'wb+')
454 fp = open(opts.get('mbox'), 'In-Reply-To' in m and 'ab+' or 'wb+')
454 generator = email.Generator.Generator(fp, mangle_from_=True)
455 generator = email.Generator.Generator(fp, mangle_from_=True)
455 # Should be time.asctime(), but Windows prints 2-characters day
456 # Should be time.asctime(), but Windows prints 2-characters day
456 # of month instead of one. Make them print the same thing.
457 # of month instead of one. Make them print the same thing.
457 date = time.strftime('%a %b %d %H:%M:%S %Y',
458 date = time.strftime('%a %b %d %H:%M:%S %Y',
458 time.localtime(start_time[0]))
459 time.localtime(start_time[0]))
459 fp.write('From %s %s\n' % (sender_addr, date))
460 fp.write('From %s %s\n' % (sender_addr, date))
460 generator.flatten(m, 0)
461 generator.flatten(m, 0)
461 fp.write('\n\n')
462 fp.write('\n\n')
462 fp.close()
463 fp.close()
463 else:
464 else:
464 if not sendmail:
465 if not sendmail:
465 sendmail = mail.connect(ui)
466 sendmail = mail.connect(ui)
466 ui.status(_('Sending '), subj, ' ...\n')
467 ui.status(_('Sending '), subj, ' ...\n')
467 # Exim does not remove the Bcc field
468 # Exim does not remove the Bcc field
468 del m['Bcc']
469 del m['Bcc']
469 fp = cStringIO.StringIO()
470 fp = cStringIO.StringIO()
470 generator = email.Generator.Generator(fp, mangle_from_=False)
471 generator = email.Generator.Generator(fp, mangle_from_=False)
471 generator.flatten(m, 0)
472 generator.flatten(m, 0)
472 sendmail(sender, to + bcc + cc, fp.getvalue())
473 sendmail(sender, to + bcc + cc, fp.getvalue())
473
474
474 emailopts = [
475 emailopts = [
475 ('a', 'attach', None, _('send patches as attachments')),
476 ('a', 'attach', None, _('send patches as attachments')),
476 ('i', 'inline', None, _('send patches as inline attachments')),
477 ('i', 'inline', None, _('send patches as inline attachments')),
477 ('', 'bcc', [], _('email addresses of blind carbon copy recipients')),
478 ('', 'bcc', [], _('email addresses of blind carbon copy recipients')),
478 ('c', 'cc', [], _('email addresses of copy recipients')),
479 ('c', 'cc', [], _('email addresses of copy recipients')),
479 ('d', 'diffstat', None, _('add diffstat output to messages')),
480 ('d', 'diffstat', None, _('add diffstat output to messages')),
480 ('', 'date', '', _('use the given date as the sending date')),
481 ('', 'date', '', _('use the given date as the sending date')),
481 ('', 'desc', '', _('use the given file as the series description')),
482 ('', 'desc', '', _('use the given file as the series description')),
482 ('f', 'from', '', _('email address of sender')),
483 ('f', 'from', '', _('email address of sender')),
483 ('n', 'test', None, _('print messages that would be sent')),
484 ('n', 'test', None, _('print messages that would be sent')),
484 ('m', 'mbox', '',
485 ('m', 'mbox', '',
485 _('write messages to mbox file instead of sending them')),
486 _('write messages to mbox file instead of sending them')),
486 ('s', 'subject', '',
487 ('s', 'subject', '',
487 _('subject of first message (intro or single patch)')),
488 _('subject of first message (intro or single patch)')),
488 ('', 'in-reply-to', '',
489 ('', 'in-reply-to', '',
489 _('message identifier to reply to')),
490 _('message identifier to reply to')),
490 ('', 'flag', [], _('flags to add in subject prefixes')),
491 ('', 'flag', [], _('flags to add in subject prefixes')),
491 ('t', 'to', [], _('email addresses of recipients')),
492 ('t', 'to', [], _('email addresses of recipients')),
492 ]
493 ]
493
494
494
495
495 cmdtable = {
496 cmdtable = {
496 "email":
497 "email":
497 (patchbomb,
498 (patchbomb,
498 [('g', 'git', None, _('use git extended diff format')),
499 [('g', 'git', None, _('use git extended diff format')),
499 ('', 'plain', None, _('omit hg patch header')),
500 ('', 'plain', None, _('omit hg patch header')),
500 ('o', 'outgoing', None,
501 ('o', 'outgoing', None,
501 _('send changes not found in the target repository')),
502 _('send changes not found in the target repository')),
502 ('b', 'bundle', None,
503 ('b', 'bundle', None,
503 _('send changes not in target as a binary bundle')),
504 _('send changes not in target as a binary bundle')),
504 ('', 'bundlename', 'bundle',
505 ('', 'bundlename', 'bundle',
505 _('name of the bundle attachment file')),
506 _('name of the bundle attachment file')),
506 ('r', 'rev', [], _('a revision to send')),
507 ('r', 'rev', [], _('a revision to send')),
507 ('', 'force', None,
508 ('', 'force', None,
508 _('run even when remote repository is unrelated '
509 _('run even when remote repository is unrelated '
509 '(with -b/--bundle)')),
510 '(with -b/--bundle)')),
510 ('', 'base', [],
511 ('', 'base', [],
511 _('a base changeset to specify instead of a destination '
512 _('a base changeset to specify instead of a destination '
512 '(with -b/--bundle)')),
513 '(with -b/--bundle)')),
513 ('', 'intro', None,
514 ('', 'intro', None,
514 _('send an introduction email for a single patch')),
515 _('send an introduction email for a single patch')),
515 ] + emailopts + commands.remoteopts,
516 ] + emailopts + commands.remoteopts,
516 _('hg email [OPTION]... [DEST]...'))
517 _('hg email [OPTION]... [DEST]...'))
517 }
518 }
@@ -1,184 +1,192 b''
1 #!/bin/sh
1 #!/bin/sh
2
2
3 fixheaders()
3 fixheaders()
4 {
4 {
5 sed -e 's/\(Message-Id:.*@\).*/\1/' \
5 sed -e 's/\(Message-Id:.*@\).*/\1/' \
6 -e 's/\(In-Reply-To:.*@\).*/\1/' \
6 -e 's/\(In-Reply-To:.*@\).*/\1/' \
7 -e 's/\(References:.*@\).*/\1/' \
7 -e 's/\(References:.*@\).*/\1/' \
8 -e 's/\(User-Agent:.*\)\/.*/\1/' \
8 -e 's/\(User-Agent:.*\)\/.*/\1/' \
9 -e 's/===.*/===/'
9 -e 's/===.*/===/'
10 }
10 }
11
11
12 echo "[extensions]" >> $HGRCPATH
12 echo "[extensions]" >> $HGRCPATH
13 echo "patchbomb=" >> $HGRCPATH
13 echo "patchbomb=" >> $HGRCPATH
14
14
15 hg init t
15 hg init t
16 cd t
16 cd t
17 echo a > a
17 echo a > a
18 hg commit -Ama -d '1 0'
18 hg commit -Ama -d '1 0'
19
19
20 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip | \
20 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip | \
21 fixheaders
21 fixheaders
22
22
23 echo b > b
23 echo b > b
24 hg commit -Amb -d '2 0'
24 hg commit -Amb -d '2 0'
25
25
26 hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip | \
26 hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip | \
27 fixheaders
27 fixheaders
28
28
29 hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip
29 hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip
30
30
31 cd ..
31 cd ..
32
32
33 hg clone -q t t2
33 hg clone -q t t2
34 cd t2
34 cd t2
35 echo c > c
35 echo c > c
36 hg commit -Amc -d '3 0'
36 hg commit -Amc -d '3 0'
37
37
38 cat > description <<EOF
38 cat > description <<EOF
39 a multiline
39 a multiline
40
40
41 description
41 description
42 EOF
42 EOF
43
43
44 echo "% test bundle and description"
44 echo "% test bundle and description"
45 hg email --date '1970-1-1 0:3' -n -f quux -t foo \
45 hg email --date '1970-1-1 0:3' -n -f quux -t foo \
46 -c bar -s test -r tip -b --desc description | \
46 -c bar -s test -r tip -b --desc description | \
47 fixheaders
47 fixheaders
48
48
49 echo "% utf-8 patch"
49 echo "% utf-8 patch"
50 python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
50 python -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
51 hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: base64'
51 hg commit -A -d '4 0' -m 'charset=utf-8; content-transfer-encoding: base64'
52
52
53 echo "% no mime encoding for email --test"
53 echo "% no mime encoding for email --test"
54 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
54 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
55 fixheaders > mailtest
55 fixheaders > mailtest
56 echo "% md5sum of 8-bit output"
56 echo "% md5sum of 8-bit output"
57 $TESTDIR/md5sum.py mailtest
57 $TESTDIR/md5sum.py mailtest
58 rm mailtest
58 rm mailtest
59
59
60 echo "% mime encoded mbox (base64)"
60 echo "% mime encoded mbox (base64)"
61 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
61 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
62 cat mbox | fixheaders
62 cat mbox | fixheaders
63 rm mbox
63 rm mbox
64
64
65 echo "% mime encoded mbox (quoted-printable)"
65 echo "% mime encoded mbox (quoted-printable)"
66 python -c 'fp = open("qp", "wb"); fp.write("%s\nfoo\n\nbar\n" % \
66 python -c 'fp = open("qp", "wb"); fp.write("%s\nfoo\n\nbar\n" % \
67 ("x" * 1024)); fp.close();'
67 ("x" * 1024)); fp.close();'
68 hg commit -A -d '4 0' -m \
68 hg commit -A -d '4 0' -m \
69 'charset=utf-8; content-transfer-encoding: quoted-printable'
69 'charset=utf-8; content-transfer-encoding: quoted-printable'
70
70
71 echo "% no mime encoding for email --test"
71 echo "% no mime encoding for email --test"
72 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
72 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n | \
73 fixheaders > mailtest
73 fixheaders > mailtest
74 echo "% md5sum of qp output"
74 echo "% md5sum of qp output"
75 $TESTDIR/md5sum.py mailtest
75 $TESTDIR/md5sum.py mailtest
76 rm mailtest
76 rm mailtest
77
77
78 echo "% mime encoded mbox (quoted-printable)"
78 echo "% mime encoded mbox (quoted-printable)"
79 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
79 hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
80 cat mbox | fixheaders
80 cat mbox | fixheaders
81 rm mbox
81 rm mbox
82
82
83 echo "% iso-8859-1 patch"
83 echo "% iso-8859-1 patch"
84 python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
84 python -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
85 hg commit -A -d '5 0' -m 'charset=us-ascii; content-transfer-encoding: 8bit'
85 hg commit -A -d '5 0' -m 'charset=us-ascii; content-transfer-encoding: 8bit'
86
86
87 echo "% fake ascii mbox"
87 echo "% fake ascii mbox"
88 hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
88 hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
89 fixheaders < mbox > mboxfix
89 fixheaders < mbox > mboxfix
90 echo "% md5sum of 8-bit output"
90 echo "% md5sum of 8-bit output"
91 $TESTDIR/md5sum.py mboxfix
91 $TESTDIR/md5sum.py mboxfix
92
92
93 echo "% test diffstat for single patch"
93 echo "% test diffstat for single patch"
94 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | \
94 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2 | \
95 fixheaders
95 fixheaders
96
96
97 echo "% test diffstat for multiple patches"
97 echo "% test diffstat for multiple patches"
98 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
98 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
99 -r 0:1 | fixheaders
99 -r 0:1 | fixheaders
100
100
101 echo "% test inline for single patch"
101 echo "% test inline for single patch"
102 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
102 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
103 fixheaders
103 fixheaders
104
104
105 echo "% test inline for single patch (quoted-printable)"
105 echo "% test inline for single patch (quoted-printable)"
106 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | \
106 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | \
107 fixheaders
107 fixheaders
108
108
109 echo "% test inline for multiple patches"
109 echo "% test inline for multiple patches"
110 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
110 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
111 -r 0:1 -r 4 | fixheaders
111 -r 0:1 -r 4 | fixheaders
112
112
113 echo "% test attach for single patch"
113 echo "% test attach for single patch"
114 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | \
114 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | \
115 fixheaders
115 fixheaders
116
116
117 echo "% test attach for single patch (quoted-printable)"
117 echo "% test attach for single patch (quoted-printable)"
118 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | \
118 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | \
119 fixheaders
119 fixheaders
120
120
121 echo "% test attach for multiple patches"
121 echo "% test attach for multiple patches"
122 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
122 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
123 -r 0:1 -r 4 | fixheaders
123 -r 0:1 -r 4 | fixheaders
124
124
125 echo "% test intro for single patch"
125 echo "% test intro for single patch"
126 hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
126 hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
127 -r 2 | fixheaders
127 -r 2 | fixheaders
128
128
129 echo "% test intro for multiple patches"
129 echo "% test intro for multiple patches"
130 hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
130 hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
131 -r 0:1 | fixheaders
131 -r 0:1 | fixheaders
132
132
133 echo "% tagging csets"
133 echo "% tagging csets"
134 hg tag -r0 zero zero.foo
134 hg tag -r0 zero zero.foo
135 hg tag -r1 one one.patch
135 hg tag -r1 one one.patch
136 hg tag -r2 two two.diff
136 hg tag -r2 two two.diff
137
137
138 echo "% test inline for single named patch"
138 echo "% test inline for single named patch"
139 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
139 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | \
140 fixheaders
140 fixheaders
141
141
142 echo "% test inline for multiple named/unnamed patches"
142 echo "% test inline for multiple named/unnamed patches"
143 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1 | \
143 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 0:1 | \
144 fixheaders
144 fixheaders
145
145
146 echo "% test inreplyto"
146 echo "% test inreplyto"
147 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
147 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
148 -r tip | fixheaders
148 -r tip | fixheaders
149
149
150 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
150 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
151 -r 0:1 | fixheaders
151 -r 0:1 | fixheaders
152
152
153 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
153 hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
154 -s test -r 0:1 | fixheaders
154 -s test -r 0:1 | fixheaders
155
155
156 echo "% test single flag for single patch"
156 echo "% test single flag for single patch"
157 hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
157 hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
158 -r 2 | fixheaders
158 -r 2 | fixheaders
159
159
160 echo "% test single flag for multiple patches"
160 echo "% test single flag for multiple patches"
161 hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
161 hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
162 -r 0:1 | fixheaders
162 -r 0:1 | fixheaders
163
163
164 echo "% test mutiple flags for single patch"
164 echo "% test mutiple flags for single patch"
165 hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
165 hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
166 -c bar -s test -r 2 | fixheaders
166 -c bar -s test -r 2 | fixheaders
167
167
168 echo "% test multiple flags for multiple patches"
168 echo "% test multiple flags for multiple patches"
169 hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
169 hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
170 -c bar -s test -r 0:1 | fixheaders
170 -c bar -s test -r 0:1 | fixheaders
171
171
172 echo "% test multi-address parsing"
172 echo "% test multi-address parsing"
173 hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
173 hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
174 -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
174 -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
175 --config email.bcc='"Quux, A." <quux>'
175 --config email.bcc='"Quux, A." <quux>'
176 cat tmp.mbox | fixheaders
176 cat tmp.mbox | fixheaders
177
177
178 echo "% test multi-byte domain parsing"
178 echo "% test multi-byte domain parsing"
179 UUML=`printf '\374'`
179 UUML=`printf '\374'`
180 HGENCODING=iso-8859-1
180 HGENCODING=iso-8859-1
181 export HGENCODING
181 export HGENCODING
182 hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" \
182 hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" \
183 -s test -r 0
183 -s test -r 0
184 cat tmp.mbox | fixheaders
184 cat tmp.mbox | fixheaders
185
186 echo "% test outgoing and dest#branch URIs"
187 hg up 1
188 hg branch test
189 echo d > d
190 hg add d
191 hg ci -md -d '4 0'
192 hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test | fixheaders
@@ -1,1535 +1,1570 b''
1 adding a
1 adding a
2 This patch series consists of 1 patches.
2 This patch series consists of 1 patches.
3
3
4
4
5 Displaying [PATCH] a ...
5 Displaying [PATCH] a ...
6 Content-Type: text/plain; charset="us-ascii"
6 Content-Type: text/plain; charset="us-ascii"
7 MIME-Version: 1.0
7 MIME-Version: 1.0
8 Content-Transfer-Encoding: 7bit
8 Content-Transfer-Encoding: 7bit
9 Subject: [PATCH] a
9 Subject: [PATCH] a
10 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
10 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
11 Message-Id: <8580ff50825a50c8f716.60@
11 Message-Id: <8580ff50825a50c8f716.60@
12 User-Agent: Mercurial-patchbomb
12 User-Agent: Mercurial-patchbomb
13 Date: Thu, 01 Jan 1970 00:01:00 +0000
13 Date: Thu, 01 Jan 1970 00:01:00 +0000
14 From: quux
14 From: quux
15 To: foo
15 To: foo
16 Cc: bar
16 Cc: bar
17
17
18 # HG changeset patch
18 # HG changeset patch
19 # User test
19 # User test
20 # Date 1 0
20 # Date 1 0
21 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
21 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
22 # Parent 0000000000000000000000000000000000000000
22 # Parent 0000000000000000000000000000000000000000
23 a
23 a
24
24
25 diff -r 000000000000 -r 8580ff50825a a
25 diff -r 000000000000 -r 8580ff50825a a
26 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
27 +++ b/a Thu Jan 01 00:00:01 1970 +0000
27 +++ b/a Thu Jan 01 00:00:01 1970 +0000
28 @@ -0,0 +1,1 @@
28 @@ -0,0 +1,1 @@
29 +a
29 +a
30
30
31 adding b
31 adding b
32 This patch series consists of 2 patches.
32 This patch series consists of 2 patches.
33
33
34
34
35 Write the introductory message for the patch series.
35 Write the introductory message for the patch series.
36
36
37
37
38 Displaying [PATCH 0 of 2] test ...
38 Displaying [PATCH 0 of 2] test ...
39 Content-Type: text/plain; charset="us-ascii"
39 Content-Type: text/plain; charset="us-ascii"
40 MIME-Version: 1.0
40 MIME-Version: 1.0
41 Content-Transfer-Encoding: 7bit
41 Content-Transfer-Encoding: 7bit
42 Subject: [PATCH 0 of 2] test
42 Subject: [PATCH 0 of 2] test
43 Message-Id: <patchbomb.120@
43 Message-Id: <patchbomb.120@
44 User-Agent: Mercurial-patchbomb
44 User-Agent: Mercurial-patchbomb
45 Date: Thu, 01 Jan 1970 00:02:00 +0000
45 Date: Thu, 01 Jan 1970 00:02:00 +0000
46 From: quux
46 From: quux
47 To: foo
47 To: foo
48 Cc: bar
48 Cc: bar
49
49
50
50
51 Displaying [PATCH 1 of 2] a ...
51 Displaying [PATCH 1 of 2] a ...
52 Content-Type: text/plain; charset="us-ascii"
52 Content-Type: text/plain; charset="us-ascii"
53 MIME-Version: 1.0
53 MIME-Version: 1.0
54 Content-Transfer-Encoding: 7bit
54 Content-Transfer-Encoding: 7bit
55 Subject: [PATCH 1 of 2] a
55 Subject: [PATCH 1 of 2] a
56 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
56 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
57 Message-Id: <8580ff50825a50c8f716.121@
57 Message-Id: <8580ff50825a50c8f716.121@
58 In-Reply-To: <patchbomb.120@
58 In-Reply-To: <patchbomb.120@
59 References: <patchbomb.120@
59 References: <patchbomb.120@
60 User-Agent: Mercurial-patchbomb
60 User-Agent: Mercurial-patchbomb
61 Date: Thu, 01 Jan 1970 00:02:01 +0000
61 Date: Thu, 01 Jan 1970 00:02:01 +0000
62 From: quux
62 From: quux
63 To: foo
63 To: foo
64 Cc: bar
64 Cc: bar
65
65
66 # HG changeset patch
66 # HG changeset patch
67 # User test
67 # User test
68 # Date 1 0
68 # Date 1 0
69 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
69 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
70 # Parent 0000000000000000000000000000000000000000
70 # Parent 0000000000000000000000000000000000000000
71 a
71 a
72
72
73 diff -r 000000000000 -r 8580ff50825a a
73 diff -r 000000000000 -r 8580ff50825a a
74 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
74 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
75 +++ b/a Thu Jan 01 00:00:01 1970 +0000
75 +++ b/a Thu Jan 01 00:00:01 1970 +0000
76 @@ -0,0 +1,1 @@
76 @@ -0,0 +1,1 @@
77 +a
77 +a
78
78
79 Displaying [PATCH 2 of 2] b ...
79 Displaying [PATCH 2 of 2] b ...
80 Content-Type: text/plain; charset="us-ascii"
80 Content-Type: text/plain; charset="us-ascii"
81 MIME-Version: 1.0
81 MIME-Version: 1.0
82 Content-Transfer-Encoding: 7bit
82 Content-Transfer-Encoding: 7bit
83 Subject: [PATCH 2 of 2] b
83 Subject: [PATCH 2 of 2] b
84 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
84 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
85 Message-Id: <97d72e5f12c7e84f8506.122@
85 Message-Id: <97d72e5f12c7e84f8506.122@
86 In-Reply-To: <patchbomb.120@
86 In-Reply-To: <patchbomb.120@
87 References: <patchbomb.120@
87 References: <patchbomb.120@
88 User-Agent: Mercurial-patchbomb
88 User-Agent: Mercurial-patchbomb
89 Date: Thu, 01 Jan 1970 00:02:02 +0000
89 Date: Thu, 01 Jan 1970 00:02:02 +0000
90 From: quux
90 From: quux
91 To: foo
91 To: foo
92 Cc: bar
92 Cc: bar
93
93
94 # HG changeset patch
94 # HG changeset patch
95 # User test
95 # User test
96 # Date 2 0
96 # Date 2 0
97 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
97 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
98 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
98 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
99 b
99 b
100
100
101 diff -r 8580ff50825a -r 97d72e5f12c7 b
101 diff -r 8580ff50825a -r 97d72e5f12c7 b
102 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
102 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
103 +++ b/b Thu Jan 01 00:00:02 1970 +0000
103 +++ b/b Thu Jan 01 00:00:02 1970 +0000
104 @@ -0,0 +1,1 @@
104 @@ -0,0 +1,1 @@
105 +b
105 +b
106
106
107 This patch series consists of 2 patches.
107 This patch series consists of 2 patches.
108
108
109
109
110 Write the introductory message for the patch series.
110 Write the introductory message for the patch series.
111
111
112
112
113 Writing [PATCH 0 of 2] test ...
113 Writing [PATCH 0 of 2] test ...
114 Writing [PATCH 1 of 2] a ...
114 Writing [PATCH 1 of 2] a ...
115 Writing [PATCH 2 of 2] b ...
115 Writing [PATCH 2 of 2] b ...
116 adding c
116 adding c
117 % test bundle and description
117 % test bundle and description
118 searching for changes
118 searching for changes
119 1 changesets found
119 1 changesets found
120
120
121 Displaying test ...
121 Displaying test ...
122 Content-Type: multipart/mixed; boundary="===
122 Content-Type: multipart/mixed; boundary="===
123 MIME-Version: 1.0
123 MIME-Version: 1.0
124 Subject: test
124 Subject: test
125 Message-Id: <patchbomb.180@
125 Message-Id: <patchbomb.180@
126 User-Agent: Mercurial-patchbomb
126 User-Agent: Mercurial-patchbomb
127 Date: Thu, 01 Jan 1970 00:03:00 +0000
127 Date: Thu, 01 Jan 1970 00:03:00 +0000
128 From: quux
128 From: quux
129 To: foo
129 To: foo
130 Cc: bar
130 Cc: bar
131
131
132 --===
132 --===
133 Content-Type: text/plain; charset="us-ascii"
133 Content-Type: text/plain; charset="us-ascii"
134 MIME-Version: 1.0
134 MIME-Version: 1.0
135 Content-Transfer-Encoding: 7bit
135 Content-Transfer-Encoding: 7bit
136
136
137 a multiline
137 a multiline
138
138
139 description
139 description
140
140
141 --===
141 --===
142 Content-Type: application/x-mercurial-bundle
142 Content-Type: application/x-mercurial-bundle
143 MIME-Version: 1.0
143 MIME-Version: 1.0
144 Content-Disposition: attachment; filename="bundle.hg"
144 Content-Disposition: attachment; filename="bundle.hg"
145 Content-Transfer-Encoding: base64
145 Content-Transfer-Encoding: base64
146
146
147 SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
147 SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
148 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
148 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
149 oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
149 oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
150 Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
150 Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
151 SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
151 SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
152 sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
152 sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
153 Q70eyNw=
153 Q70eyNw=
154 --===
154 --===
155 % utf-8 patch
155 % utf-8 patch
156 adding description
156 adding description
157 adding utf
157 adding utf
158 % no mime encoding for email --test
158 % no mime encoding for email --test
159 % md5sum of 8-bit output
159 % md5sum of 8-bit output
160 e726c29b3008e77994c7572563e57c34 mailtest
160 e726c29b3008e77994c7572563e57c34 mailtest
161 % mime encoded mbox (base64)
161 % mime encoded mbox (base64)
162 This patch series consists of 1 patches.
162 This patch series consists of 1 patches.
163
163
164
164
165 Writing [PATCH] charset=utf-8; content-transfer-encoding: base64 ...
165 Writing [PATCH] charset=utf-8; content-transfer-encoding: base64 ...
166 From quux Thu Jan 01 00:04:01 1970
166 From quux Thu Jan 01 00:04:01 1970
167 Content-Type: text/plain; charset="utf-8"
167 Content-Type: text/plain; charset="utf-8"
168 MIME-Version: 1.0
168 MIME-Version: 1.0
169 Content-Transfer-Encoding: base64
169 Content-Transfer-Encoding: base64
170 Subject: [PATCH] charset=utf-8; content-transfer-encoding: base64
170 Subject: [PATCH] charset=utf-8; content-transfer-encoding: base64
171 X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
171 X-Mercurial-Node: c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
172 Message-Id: <c3c9e37db9f4fe4882cd.240@
172 Message-Id: <c3c9e37db9f4fe4882cd.240@
173 User-Agent: Mercurial-patchbomb
173 User-Agent: Mercurial-patchbomb
174 Date: Thu, 01 Jan 1970 00:04:00 +0000
174 Date: Thu, 01 Jan 1970 00:04:00 +0000
175 From: quux
175 From: quux
176 To: foo
176 To: foo
177 Cc: bar
177 Cc: bar
178
178
179 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojIE5vZGUgSUQgYzNj
179 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojIE5vZGUgSUQgYzNj
180 OWUzN2RiOWY0ZmU0ODgyY2RhMzliYWY0MmZlZDZiYWQ4YjE1YQojIFBhcmVudCAgZmYyYzlmYTIw
180 OWUzN2RiOWY0ZmU0ODgyY2RhMzliYWY0MmZlZDZiYWQ4YjE1YQojIFBhcmVudCAgZmYyYzlmYTIw
181 MThiMTVmYTc0YjMzMzYzYmRhOTUyNzMyM2UyYTk5ZgpjaGFyc2V0PXV0Zi04OyBjb250ZW50LXRy
181 MThiMTVmYTc0YjMzMzYzYmRhOTUyNzMyM2UyYTk5ZgpjaGFyc2V0PXV0Zi04OyBjb250ZW50LXRy
182 YW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIGMzYzllMzdk
182 YW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIGMzYzllMzdk
183 YjlmNCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
183 YjlmNCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCAr
184 MDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
184 MDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
185 LTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5ZmEy
185 LTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5ZmEy
186 MDE4YiAtciBjM2M5ZTM3ZGI5ZjQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
186 MDE4YiAtciBjM2M5ZTM3ZGI5ZjQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDowMDow
187 MCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
187 MCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAKQEAg
188 LTAsMCArMSwxIEBACitow7ZtbWEhCg==
188 LTAsMCArMSwxIEBACitow7ZtbWEhCg==
189
189
190
190
191 % mime encoded mbox (quoted-printable)
191 % mime encoded mbox (quoted-printable)
192 adding qp
192 adding qp
193 % no mime encoding for email --test
193 % no mime encoding for email --test
194 % md5sum of qp output
194 % md5sum of qp output
195 0402c7d033e04044e423bb04816f9dae mailtest
195 0402c7d033e04044e423bb04816f9dae mailtest
196 % mime encoded mbox (quoted-printable)
196 % mime encoded mbox (quoted-printable)
197 This patch series consists of 1 patches.
197 This patch series consists of 1 patches.
198
198
199
199
200 Writing [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable ...
200 Writing [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable ...
201 From quux Thu Jan 01 00:04:01 1970
201 From quux Thu Jan 01 00:04:01 1970
202 Content-Type: text/plain; charset="us-ascii"
202 Content-Type: text/plain; charset="us-ascii"
203 MIME-Version: 1.0
203 MIME-Version: 1.0
204 Content-Transfer-Encoding: quoted-printable
204 Content-Transfer-Encoding: quoted-printable
205 Subject: [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable
205 Subject: [PATCH] charset=utf-8; content-transfer-encoding: quoted-printable
206 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
206 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
207 Message-Id: <c655633f8c87700bb38c.240@
207 Message-Id: <c655633f8c87700bb38c.240@
208 User-Agent: Mercurial-patchbomb
208 User-Agent: Mercurial-patchbomb
209 Date: Thu, 01 Jan 1970 00:04:00 +0000
209 Date: Thu, 01 Jan 1970 00:04:00 +0000
210 From: quux
210 From: quux
211 To: foo
211 To: foo
212 Cc: bar
212 Cc: bar
213
213
214 # HG changeset patch
214 # HG changeset patch
215 # User test
215 # User test
216 # Date 4 0
216 # Date 4 0
217 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
217 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
218 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
218 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
219 charset=3Dutf-8; content-transfer-encoding: quoted-printable
219 charset=3Dutf-8; content-transfer-encoding: quoted-printable
220
220
221 diff -r c3c9e37db9f4 -r c655633f8c87 qp
221 diff -r c3c9e37db9f4 -r c655633f8c87 qp
222 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
222 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
223 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
223 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
224 @@ -0,0 +1,4 @@
224 @@ -0,0 +1,4 @@
225 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
225 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
226 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
226 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
227 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
227 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
228 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
228 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
229 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
229 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
230 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
230 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
231 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
231 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
232 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
232 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
233 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
233 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
234 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
234 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
235 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
235 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
236 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
236 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
237 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
237 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
238 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
238 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
239 +foo
239 +foo
240 +
240 +
241 +bar
241 +bar
242
242
243
243
244 % iso-8859-1 patch
244 % iso-8859-1 patch
245 adding isolatin
245 adding isolatin
246 % fake ascii mbox
246 % fake ascii mbox
247 This patch series consists of 1 patches.
247 This patch series consists of 1 patches.
248
248
249
249
250 Writing [PATCH] charset=us-ascii; content-transfer-encoding: 8bit ...
250 Writing [PATCH] charset=us-ascii; content-transfer-encoding: 8bit ...
251 % md5sum of 8-bit output
251 % md5sum of 8-bit output
252 9ea043d8fc43a71045114508baed144b mboxfix
252 9ea043d8fc43a71045114508baed144b mboxfix
253 % test diffstat for single patch
253 % test diffstat for single patch
254 This patch series consists of 1 patches.
254 This patch series consists of 1 patches.
255
255
256 c
256 c
257
257
258 c | 1 +
258 c | 1 +
259 1 files changed, 1 insertions(+), 0 deletions(-)
259 1 files changed, 1 insertions(+), 0 deletions(-)
260
260
261
261
262 Displaying [PATCH] test ...
262 Displaying [PATCH] test ...
263 Content-Type: text/plain; charset="us-ascii"
263 Content-Type: text/plain; charset="us-ascii"
264 MIME-Version: 1.0
264 MIME-Version: 1.0
265 Content-Transfer-Encoding: 7bit
265 Content-Transfer-Encoding: 7bit
266 Subject: [PATCH] test
266 Subject: [PATCH] test
267 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
267 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
268 Message-Id: <ff2c9fa2018b15fa74b3.60@
268 Message-Id: <ff2c9fa2018b15fa74b3.60@
269 User-Agent: Mercurial-patchbomb
269 User-Agent: Mercurial-patchbomb
270 Date: Thu, 01 Jan 1970 00:01:00 +0000
270 Date: Thu, 01 Jan 1970 00:01:00 +0000
271 From: quux
271 From: quux
272 To: foo
272 To: foo
273 Cc: bar
273 Cc: bar
274
274
275 c | 1 +
275 c | 1 +
276 1 files changed, 1 insertions(+), 0 deletions(-)
276 1 files changed, 1 insertions(+), 0 deletions(-)
277
277
278
278
279 # HG changeset patch
279 # HG changeset patch
280 # User test
280 # User test
281 # Date 3 0
281 # Date 3 0
282 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
282 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
283 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
283 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
284 c
284 c
285
285
286 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
286 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
287 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
287 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
288 +++ b/c Thu Jan 01 00:00:03 1970 +0000
288 +++ b/c Thu Jan 01 00:00:03 1970 +0000
289 @@ -0,0 +1,1 @@
289 @@ -0,0 +1,1 @@
290 +c
290 +c
291
291
292 % test diffstat for multiple patches
292 % test diffstat for multiple patches
293 This patch series consists of 2 patches.
293 This patch series consists of 2 patches.
294
294
295 a
295 a
296
296
297 a | 1 +
297 a | 1 +
298 1 files changed, 1 insertions(+), 0 deletions(-)
298 1 files changed, 1 insertions(+), 0 deletions(-)
299
299
300 b
300 b
301
301
302 b | 1 +
302 b | 1 +
303 1 files changed, 1 insertions(+), 0 deletions(-)
303 1 files changed, 1 insertions(+), 0 deletions(-)
304
304
305 Final summary:
305 Final summary:
306
306
307 a | 1 +
307 a | 1 +
308 b | 1 +
308 b | 1 +
309 2 files changed, 2 insertions(+), 0 deletions(-)
309 2 files changed, 2 insertions(+), 0 deletions(-)
310
310
311
311
312 Write the introductory message for the patch series.
312 Write the introductory message for the patch series.
313
313
314
314
315 Displaying [PATCH 0 of 2] test ...
315 Displaying [PATCH 0 of 2] test ...
316 Content-Type: text/plain; charset="us-ascii"
316 Content-Type: text/plain; charset="us-ascii"
317 MIME-Version: 1.0
317 MIME-Version: 1.0
318 Content-Transfer-Encoding: 7bit
318 Content-Transfer-Encoding: 7bit
319 Subject: [PATCH 0 of 2] test
319 Subject: [PATCH 0 of 2] test
320 Message-Id: <patchbomb.60@
320 Message-Id: <patchbomb.60@
321 User-Agent: Mercurial-patchbomb
321 User-Agent: Mercurial-patchbomb
322 Date: Thu, 01 Jan 1970 00:01:00 +0000
322 Date: Thu, 01 Jan 1970 00:01:00 +0000
323 From: quux
323 From: quux
324 To: foo
324 To: foo
325 Cc: bar
325 Cc: bar
326
326
327
327
328 a | 1 +
328 a | 1 +
329 b | 1 +
329 b | 1 +
330 2 files changed, 2 insertions(+), 0 deletions(-)
330 2 files changed, 2 insertions(+), 0 deletions(-)
331
331
332 Displaying [PATCH 1 of 2] a ...
332 Displaying [PATCH 1 of 2] a ...
333 Content-Type: text/plain; charset="us-ascii"
333 Content-Type: text/plain; charset="us-ascii"
334 MIME-Version: 1.0
334 MIME-Version: 1.0
335 Content-Transfer-Encoding: 7bit
335 Content-Transfer-Encoding: 7bit
336 Subject: [PATCH 1 of 2] a
336 Subject: [PATCH 1 of 2] a
337 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
337 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
338 Message-Id: <8580ff50825a50c8f716.61@
338 Message-Id: <8580ff50825a50c8f716.61@
339 In-Reply-To: <patchbomb.60@
339 In-Reply-To: <patchbomb.60@
340 References: <patchbomb.60@
340 References: <patchbomb.60@
341 User-Agent: Mercurial-patchbomb
341 User-Agent: Mercurial-patchbomb
342 Date: Thu, 01 Jan 1970 00:01:01 +0000
342 Date: Thu, 01 Jan 1970 00:01:01 +0000
343 From: quux
343 From: quux
344 To: foo
344 To: foo
345 Cc: bar
345 Cc: bar
346
346
347 a | 1 +
347 a | 1 +
348 1 files changed, 1 insertions(+), 0 deletions(-)
348 1 files changed, 1 insertions(+), 0 deletions(-)
349
349
350
350
351 # HG changeset patch
351 # HG changeset patch
352 # User test
352 # User test
353 # Date 1 0
353 # Date 1 0
354 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
354 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
355 # Parent 0000000000000000000000000000000000000000
355 # Parent 0000000000000000000000000000000000000000
356 a
356 a
357
357
358 diff -r 000000000000 -r 8580ff50825a a
358 diff -r 000000000000 -r 8580ff50825a a
359 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
359 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
360 +++ b/a Thu Jan 01 00:00:01 1970 +0000
360 +++ b/a Thu Jan 01 00:00:01 1970 +0000
361 @@ -0,0 +1,1 @@
361 @@ -0,0 +1,1 @@
362 +a
362 +a
363
363
364 Displaying [PATCH 2 of 2] b ...
364 Displaying [PATCH 2 of 2] b ...
365 Content-Type: text/plain; charset="us-ascii"
365 Content-Type: text/plain; charset="us-ascii"
366 MIME-Version: 1.0
366 MIME-Version: 1.0
367 Content-Transfer-Encoding: 7bit
367 Content-Transfer-Encoding: 7bit
368 Subject: [PATCH 2 of 2] b
368 Subject: [PATCH 2 of 2] b
369 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
369 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
370 Message-Id: <97d72e5f12c7e84f8506.62@
370 Message-Id: <97d72e5f12c7e84f8506.62@
371 In-Reply-To: <patchbomb.60@
371 In-Reply-To: <patchbomb.60@
372 References: <patchbomb.60@
372 References: <patchbomb.60@
373 User-Agent: Mercurial-patchbomb
373 User-Agent: Mercurial-patchbomb
374 Date: Thu, 01 Jan 1970 00:01:02 +0000
374 Date: Thu, 01 Jan 1970 00:01:02 +0000
375 From: quux
375 From: quux
376 To: foo
376 To: foo
377 Cc: bar
377 Cc: bar
378
378
379 b | 1 +
379 b | 1 +
380 1 files changed, 1 insertions(+), 0 deletions(-)
380 1 files changed, 1 insertions(+), 0 deletions(-)
381
381
382
382
383 # HG changeset patch
383 # HG changeset patch
384 # User test
384 # User test
385 # Date 2 0
385 # Date 2 0
386 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
386 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
387 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
387 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
388 b
388 b
389
389
390 diff -r 8580ff50825a -r 97d72e5f12c7 b
390 diff -r 8580ff50825a -r 97d72e5f12c7 b
391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
392 +++ b/b Thu Jan 01 00:00:02 1970 +0000
392 +++ b/b Thu Jan 01 00:00:02 1970 +0000
393 @@ -0,0 +1,1 @@
393 @@ -0,0 +1,1 @@
394 +b
394 +b
395
395
396 % test inline for single patch
396 % test inline for single patch
397 This patch series consists of 1 patches.
397 This patch series consists of 1 patches.
398
398
399
399
400 Displaying [PATCH] test ...
400 Displaying [PATCH] test ...
401 Content-Type: multipart/mixed; boundary="===
401 Content-Type: multipart/mixed; boundary="===
402 MIME-Version: 1.0
402 MIME-Version: 1.0
403 Subject: [PATCH] test
403 Subject: [PATCH] test
404 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
404 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
405 Message-Id: <ff2c9fa2018b15fa74b3.60@
405 Message-Id: <ff2c9fa2018b15fa74b3.60@
406 User-Agent: Mercurial-patchbomb
406 User-Agent: Mercurial-patchbomb
407 Date: Thu, 01 Jan 1970 00:01:00 +0000
407 Date: Thu, 01 Jan 1970 00:01:00 +0000
408 From: quux
408 From: quux
409 To: foo
409 To: foo
410 Cc: bar
410 Cc: bar
411
411
412 --===
412 --===
413 Content-Type: text/x-patch; charset="us-ascii"
413 Content-Type: text/x-patch; charset="us-ascii"
414 MIME-Version: 1.0
414 MIME-Version: 1.0
415 Content-Transfer-Encoding: 7bit
415 Content-Transfer-Encoding: 7bit
416 Content-Disposition: inline; filename=t2.patch
416 Content-Disposition: inline; filename=t2.patch
417
417
418 # HG changeset patch
418 # HG changeset patch
419 # User test
419 # User test
420 # Date 3 0
420 # Date 3 0
421 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
421 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
422 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
422 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
423 c
423 c
424
424
425 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
425 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
426 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
426 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
427 +++ b/c Thu Jan 01 00:00:03 1970 +0000
427 +++ b/c Thu Jan 01 00:00:03 1970 +0000
428 @@ -0,0 +1,1 @@
428 @@ -0,0 +1,1 @@
429 +c
429 +c
430
430
431 --===
431 --===
432 % test inline for single patch (quoted-printable)
432 % test inline for single patch (quoted-printable)
433 This patch series consists of 1 patches.
433 This patch series consists of 1 patches.
434
434
435
435
436 Displaying [PATCH] test ...
436 Displaying [PATCH] test ...
437 Content-Type: multipart/mixed; boundary="===
437 Content-Type: multipart/mixed; boundary="===
438 MIME-Version: 1.0
438 MIME-Version: 1.0
439 Subject: [PATCH] test
439 Subject: [PATCH] test
440 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
440 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
441 Message-Id: <c655633f8c87700bb38c.60@
441 Message-Id: <c655633f8c87700bb38c.60@
442 User-Agent: Mercurial-patchbomb
442 User-Agent: Mercurial-patchbomb
443 Date: Thu, 01 Jan 1970 00:01:00 +0000
443 Date: Thu, 01 Jan 1970 00:01:00 +0000
444 From: quux
444 From: quux
445 To: foo
445 To: foo
446 Cc: bar
446 Cc: bar
447
447
448 --===
448 --===
449 Content-Type: text/x-patch; charset="us-ascii"
449 Content-Type: text/x-patch; charset="us-ascii"
450 MIME-Version: 1.0
450 MIME-Version: 1.0
451 Content-Transfer-Encoding: quoted-printable
451 Content-Transfer-Encoding: quoted-printable
452 Content-Disposition: inline; filename=t2.patch
452 Content-Disposition: inline; filename=t2.patch
453
453
454 # HG changeset patch
454 # HG changeset patch
455 # User test
455 # User test
456 # Date 4 0
456 # Date 4 0
457 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
457 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
458 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
458 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
459 charset=3Dutf-8; content-transfer-encoding: quoted-printable
459 charset=3Dutf-8; content-transfer-encoding: quoted-printable
460
460
461 diff -r c3c9e37db9f4 -r c655633f8c87 qp
461 diff -r c3c9e37db9f4 -r c655633f8c87 qp
462 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
462 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
463 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
463 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
464 @@ -0,0 +1,4 @@
464 @@ -0,0 +1,4 @@
465 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
465 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
466 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
466 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
467 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
467 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
468 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
468 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
469 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
469 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
470 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
470 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
471 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
471 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
472 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
472 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
473 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
473 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
474 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
474 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
475 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
475 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
476 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
476 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
477 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
477 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
478 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
478 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
479 +foo
479 +foo
480 +
480 +
481 +bar
481 +bar
482
482
483 --===
483 --===
484 % test inline for multiple patches
484 % test inline for multiple patches
485 This patch series consists of 3 patches.
485 This patch series consists of 3 patches.
486
486
487
487
488 Write the introductory message for the patch series.
488 Write the introductory message for the patch series.
489
489
490
490
491 Displaying [PATCH 0 of 3] test ...
491 Displaying [PATCH 0 of 3] test ...
492 Content-Type: text/plain; charset="us-ascii"
492 Content-Type: text/plain; charset="us-ascii"
493 MIME-Version: 1.0
493 MIME-Version: 1.0
494 Content-Transfer-Encoding: 7bit
494 Content-Transfer-Encoding: 7bit
495 Subject: [PATCH 0 of 3] test
495 Subject: [PATCH 0 of 3] test
496 Message-Id: <patchbomb.60@
496 Message-Id: <patchbomb.60@
497 User-Agent: Mercurial-patchbomb
497 User-Agent: Mercurial-patchbomb
498 Date: Thu, 01 Jan 1970 00:01:00 +0000
498 Date: Thu, 01 Jan 1970 00:01:00 +0000
499 From: quux
499 From: quux
500 To: foo
500 To: foo
501 Cc: bar
501 Cc: bar
502
502
503
503
504 Displaying [PATCH 1 of 3] a ...
504 Displaying [PATCH 1 of 3] a ...
505 Content-Type: multipart/mixed; boundary="===
505 Content-Type: multipart/mixed; boundary="===
506 MIME-Version: 1.0
506 MIME-Version: 1.0
507 Subject: [PATCH 1 of 3] a
507 Subject: [PATCH 1 of 3] a
508 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
508 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
509 Message-Id: <8580ff50825a50c8f716.61@
509 Message-Id: <8580ff50825a50c8f716.61@
510 In-Reply-To: <patchbomb.60@
510 In-Reply-To: <patchbomb.60@
511 References: <patchbomb.60@
511 References: <patchbomb.60@
512 User-Agent: Mercurial-patchbomb
512 User-Agent: Mercurial-patchbomb
513 Date: Thu, 01 Jan 1970 00:01:01 +0000
513 Date: Thu, 01 Jan 1970 00:01:01 +0000
514 From: quux
514 From: quux
515 To: foo
515 To: foo
516 Cc: bar
516 Cc: bar
517
517
518 --===
518 --===
519 Content-Type: text/x-patch; charset="us-ascii"
519 Content-Type: text/x-patch; charset="us-ascii"
520 MIME-Version: 1.0
520 MIME-Version: 1.0
521 Content-Transfer-Encoding: 7bit
521 Content-Transfer-Encoding: 7bit
522 Content-Disposition: inline; filename=t2-1.patch
522 Content-Disposition: inline; filename=t2-1.patch
523
523
524 # HG changeset patch
524 # HG changeset patch
525 # User test
525 # User test
526 # Date 1 0
526 # Date 1 0
527 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
527 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
528 # Parent 0000000000000000000000000000000000000000
528 # Parent 0000000000000000000000000000000000000000
529 a
529 a
530
530
531 diff -r 000000000000 -r 8580ff50825a a
531 diff -r 000000000000 -r 8580ff50825a a
532 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
532 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
533 +++ b/a Thu Jan 01 00:00:01 1970 +0000
533 +++ b/a Thu Jan 01 00:00:01 1970 +0000
534 @@ -0,0 +1,1 @@
534 @@ -0,0 +1,1 @@
535 +a
535 +a
536
536
537 --===
537 --===
538 Displaying [PATCH 2 of 3] b ...
538 Displaying [PATCH 2 of 3] b ...
539 Content-Type: multipart/mixed; boundary="===
539 Content-Type: multipart/mixed; boundary="===
540 MIME-Version: 1.0
540 MIME-Version: 1.0
541 Subject: [PATCH 2 of 3] b
541 Subject: [PATCH 2 of 3] b
542 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
542 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
543 Message-Id: <97d72e5f12c7e84f8506.62@
543 Message-Id: <97d72e5f12c7e84f8506.62@
544 In-Reply-To: <patchbomb.60@
544 In-Reply-To: <patchbomb.60@
545 References: <patchbomb.60@
545 References: <patchbomb.60@
546 User-Agent: Mercurial-patchbomb
546 User-Agent: Mercurial-patchbomb
547 Date: Thu, 01 Jan 1970 00:01:02 +0000
547 Date: Thu, 01 Jan 1970 00:01:02 +0000
548 From: quux
548 From: quux
549 To: foo
549 To: foo
550 Cc: bar
550 Cc: bar
551
551
552 --===
552 --===
553 Content-Type: text/x-patch; charset="us-ascii"
553 Content-Type: text/x-patch; charset="us-ascii"
554 MIME-Version: 1.0
554 MIME-Version: 1.0
555 Content-Transfer-Encoding: 7bit
555 Content-Transfer-Encoding: 7bit
556 Content-Disposition: inline; filename=t2-2.patch
556 Content-Disposition: inline; filename=t2-2.patch
557
557
558 # HG changeset patch
558 # HG changeset patch
559 # User test
559 # User test
560 # Date 2 0
560 # Date 2 0
561 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
561 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
562 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
562 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
563 b
563 b
564
564
565 diff -r 8580ff50825a -r 97d72e5f12c7 b
565 diff -r 8580ff50825a -r 97d72e5f12c7 b
566 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
566 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
567 +++ b/b Thu Jan 01 00:00:02 1970 +0000
567 +++ b/b Thu Jan 01 00:00:02 1970 +0000
568 @@ -0,0 +1,1 @@
568 @@ -0,0 +1,1 @@
569 +b
569 +b
570
570
571 --===
571 --===
572 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
572 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
573 Content-Type: multipart/mixed; boundary="===
573 Content-Type: multipart/mixed; boundary="===
574 MIME-Version: 1.0
574 MIME-Version: 1.0
575 Subject: [PATCH 3 of 3] charset=utf-8;
575 Subject: [PATCH 3 of 3] charset=utf-8;
576 content-transfer-encoding: quoted-printable
576 content-transfer-encoding: quoted-printable
577 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
577 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
578 Message-Id: <c655633f8c87700bb38c.63@
578 Message-Id: <c655633f8c87700bb38c.63@
579 In-Reply-To: <patchbomb.60@
579 In-Reply-To: <patchbomb.60@
580 References: <patchbomb.60@
580 References: <patchbomb.60@
581 User-Agent: Mercurial-patchbomb
581 User-Agent: Mercurial-patchbomb
582 Date: Thu, 01 Jan 1970 00:01:03 +0000
582 Date: Thu, 01 Jan 1970 00:01:03 +0000
583 From: quux
583 From: quux
584 To: foo
584 To: foo
585 Cc: bar
585 Cc: bar
586
586
587 --===
587 --===
588 Content-Type: text/x-patch; charset="us-ascii"
588 Content-Type: text/x-patch; charset="us-ascii"
589 MIME-Version: 1.0
589 MIME-Version: 1.0
590 Content-Transfer-Encoding: quoted-printable
590 Content-Transfer-Encoding: quoted-printable
591 Content-Disposition: inline; filename=t2-3.patch
591 Content-Disposition: inline; filename=t2-3.patch
592
592
593 # HG changeset patch
593 # HG changeset patch
594 # User test
594 # User test
595 # Date 4 0
595 # Date 4 0
596 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
596 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
597 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
597 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
598 charset=3Dutf-8; content-transfer-encoding: quoted-printable
598 charset=3Dutf-8; content-transfer-encoding: quoted-printable
599
599
600 diff -r c3c9e37db9f4 -r c655633f8c87 qp
600 diff -r c3c9e37db9f4 -r c655633f8c87 qp
601 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
601 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
602 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
602 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
603 @@ -0,0 +1,4 @@
603 @@ -0,0 +1,4 @@
604 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
604 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
605 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
605 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
606 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
606 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
607 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
607 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
608 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
608 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
609 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
609 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
610 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
610 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
611 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
611 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
612 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
612 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
613 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
613 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
614 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
614 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
615 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
615 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
616 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
616 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
617 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
617 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
618 +foo
618 +foo
619 +
619 +
620 +bar
620 +bar
621
621
622 --===
622 --===
623 % test attach for single patch
623 % test attach for single patch
624 This patch series consists of 1 patches.
624 This patch series consists of 1 patches.
625
625
626
626
627 Displaying [PATCH] test ...
627 Displaying [PATCH] test ...
628 Content-Type: multipart/mixed; boundary="===
628 Content-Type: multipart/mixed; boundary="===
629 MIME-Version: 1.0
629 MIME-Version: 1.0
630 Subject: [PATCH] test
630 Subject: [PATCH] test
631 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
631 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
632 Message-Id: <ff2c9fa2018b15fa74b3.60@
632 Message-Id: <ff2c9fa2018b15fa74b3.60@
633 User-Agent: Mercurial-patchbomb
633 User-Agent: Mercurial-patchbomb
634 Date: Thu, 01 Jan 1970 00:01:00 +0000
634 Date: Thu, 01 Jan 1970 00:01:00 +0000
635 From: quux
635 From: quux
636 To: foo
636 To: foo
637 Cc: bar
637 Cc: bar
638
638
639 --===
639 --===
640 Content-Type: text/plain; charset="us-ascii"
640 Content-Type: text/plain; charset="us-ascii"
641 MIME-Version: 1.0
641 MIME-Version: 1.0
642 Content-Transfer-Encoding: 7bit
642 Content-Transfer-Encoding: 7bit
643
643
644 Patch subject is complete summary.
644 Patch subject is complete summary.
645
645
646
646
647
647
648 --===
648 --===
649 Content-Type: text/x-patch; charset="us-ascii"
649 Content-Type: text/x-patch; charset="us-ascii"
650 MIME-Version: 1.0
650 MIME-Version: 1.0
651 Content-Transfer-Encoding: 7bit
651 Content-Transfer-Encoding: 7bit
652 Content-Disposition: attachment; filename=t2.patch
652 Content-Disposition: attachment; filename=t2.patch
653
653
654 # HG changeset patch
654 # HG changeset patch
655 # User test
655 # User test
656 # Date 3 0
656 # Date 3 0
657 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
657 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
658 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
658 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
659 c
659 c
660
660
661 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
661 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
662 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
662 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
663 +++ b/c Thu Jan 01 00:00:03 1970 +0000
663 +++ b/c Thu Jan 01 00:00:03 1970 +0000
664 @@ -0,0 +1,1 @@
664 @@ -0,0 +1,1 @@
665 +c
665 +c
666
666
667 --===
667 --===
668 % test attach for single patch (quoted-printable)
668 % test attach for single patch (quoted-printable)
669 This patch series consists of 1 patches.
669 This patch series consists of 1 patches.
670
670
671
671
672 Displaying [PATCH] test ...
672 Displaying [PATCH] test ...
673 Content-Type: multipart/mixed; boundary="===
673 Content-Type: multipart/mixed; boundary="===
674 MIME-Version: 1.0
674 MIME-Version: 1.0
675 Subject: [PATCH] test
675 Subject: [PATCH] test
676 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
676 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
677 Message-Id: <c655633f8c87700bb38c.60@
677 Message-Id: <c655633f8c87700bb38c.60@
678 User-Agent: Mercurial-patchbomb
678 User-Agent: Mercurial-patchbomb
679 Date: Thu, 01 Jan 1970 00:01:00 +0000
679 Date: Thu, 01 Jan 1970 00:01:00 +0000
680 From: quux
680 From: quux
681 To: foo
681 To: foo
682 Cc: bar
682 Cc: bar
683
683
684 --===
684 --===
685 Content-Type: text/plain; charset="us-ascii"
685 Content-Type: text/plain; charset="us-ascii"
686 MIME-Version: 1.0
686 MIME-Version: 1.0
687 Content-Transfer-Encoding: 7bit
687 Content-Transfer-Encoding: 7bit
688
688
689 Patch subject is complete summary.
689 Patch subject is complete summary.
690
690
691
691
692
692
693 --===
693 --===
694 Content-Type: text/x-patch; charset="us-ascii"
694 Content-Type: text/x-patch; charset="us-ascii"
695 MIME-Version: 1.0
695 MIME-Version: 1.0
696 Content-Transfer-Encoding: quoted-printable
696 Content-Transfer-Encoding: quoted-printable
697 Content-Disposition: attachment; filename=t2.patch
697 Content-Disposition: attachment; filename=t2.patch
698
698
699 # HG changeset patch
699 # HG changeset patch
700 # User test
700 # User test
701 # Date 4 0
701 # Date 4 0
702 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
702 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
703 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
703 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
704 charset=3Dutf-8; content-transfer-encoding: quoted-printable
704 charset=3Dutf-8; content-transfer-encoding: quoted-printable
705
705
706 diff -r c3c9e37db9f4 -r c655633f8c87 qp
706 diff -r c3c9e37db9f4 -r c655633f8c87 qp
707 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
707 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
708 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
708 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
709 @@ -0,0 +1,4 @@
709 @@ -0,0 +1,4 @@
710 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
710 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
711 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
711 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
712 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
712 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
713 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
713 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
714 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
714 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
715 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
715 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
716 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
716 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
717 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
717 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
718 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
718 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
719 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
719 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
720 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
720 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
721 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
721 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
722 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
722 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
723 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
723 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
724 +foo
724 +foo
725 +
725 +
726 +bar
726 +bar
727
727
728 --===
728 --===
729 % test attach for multiple patches
729 % test attach for multiple patches
730 This patch series consists of 3 patches.
730 This patch series consists of 3 patches.
731
731
732
732
733 Write the introductory message for the patch series.
733 Write the introductory message for the patch series.
734
734
735
735
736 Displaying [PATCH 0 of 3] test ...
736 Displaying [PATCH 0 of 3] test ...
737 Content-Type: text/plain; charset="us-ascii"
737 Content-Type: text/plain; charset="us-ascii"
738 MIME-Version: 1.0
738 MIME-Version: 1.0
739 Content-Transfer-Encoding: 7bit
739 Content-Transfer-Encoding: 7bit
740 Subject: [PATCH 0 of 3] test
740 Subject: [PATCH 0 of 3] test
741 Message-Id: <patchbomb.60@
741 Message-Id: <patchbomb.60@
742 User-Agent: Mercurial-patchbomb
742 User-Agent: Mercurial-patchbomb
743 Date: Thu, 01 Jan 1970 00:01:00 +0000
743 Date: Thu, 01 Jan 1970 00:01:00 +0000
744 From: quux
744 From: quux
745 To: foo
745 To: foo
746 Cc: bar
746 Cc: bar
747
747
748
748
749 Displaying [PATCH 1 of 3] a ...
749 Displaying [PATCH 1 of 3] a ...
750 Content-Type: multipart/mixed; boundary="===
750 Content-Type: multipart/mixed; boundary="===
751 MIME-Version: 1.0
751 MIME-Version: 1.0
752 Subject: [PATCH 1 of 3] a
752 Subject: [PATCH 1 of 3] a
753 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
753 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
754 Message-Id: <8580ff50825a50c8f716.61@
754 Message-Id: <8580ff50825a50c8f716.61@
755 In-Reply-To: <patchbomb.60@
755 In-Reply-To: <patchbomb.60@
756 References: <patchbomb.60@
756 References: <patchbomb.60@
757 User-Agent: Mercurial-patchbomb
757 User-Agent: Mercurial-patchbomb
758 Date: Thu, 01 Jan 1970 00:01:01 +0000
758 Date: Thu, 01 Jan 1970 00:01:01 +0000
759 From: quux
759 From: quux
760 To: foo
760 To: foo
761 Cc: bar
761 Cc: bar
762
762
763 --===
763 --===
764 Content-Type: text/plain; charset="us-ascii"
764 Content-Type: text/plain; charset="us-ascii"
765 MIME-Version: 1.0
765 MIME-Version: 1.0
766 Content-Transfer-Encoding: 7bit
766 Content-Transfer-Encoding: 7bit
767
767
768 Patch subject is complete summary.
768 Patch subject is complete summary.
769
769
770
770
771
771
772 --===
772 --===
773 Content-Type: text/x-patch; charset="us-ascii"
773 Content-Type: text/x-patch; charset="us-ascii"
774 MIME-Version: 1.0
774 MIME-Version: 1.0
775 Content-Transfer-Encoding: 7bit
775 Content-Transfer-Encoding: 7bit
776 Content-Disposition: attachment; filename=t2-1.patch
776 Content-Disposition: attachment; filename=t2-1.patch
777
777
778 # HG changeset patch
778 # HG changeset patch
779 # User test
779 # User test
780 # Date 1 0
780 # Date 1 0
781 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
781 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
782 # Parent 0000000000000000000000000000000000000000
782 # Parent 0000000000000000000000000000000000000000
783 a
783 a
784
784
785 diff -r 000000000000 -r 8580ff50825a a
785 diff -r 000000000000 -r 8580ff50825a a
786 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
786 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
787 +++ b/a Thu Jan 01 00:00:01 1970 +0000
787 +++ b/a Thu Jan 01 00:00:01 1970 +0000
788 @@ -0,0 +1,1 @@
788 @@ -0,0 +1,1 @@
789 +a
789 +a
790
790
791 --===
791 --===
792 Displaying [PATCH 2 of 3] b ...
792 Displaying [PATCH 2 of 3] b ...
793 Content-Type: multipart/mixed; boundary="===
793 Content-Type: multipart/mixed; boundary="===
794 MIME-Version: 1.0
794 MIME-Version: 1.0
795 Subject: [PATCH 2 of 3] b
795 Subject: [PATCH 2 of 3] b
796 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
796 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
797 Message-Id: <97d72e5f12c7e84f8506.62@
797 Message-Id: <97d72e5f12c7e84f8506.62@
798 In-Reply-To: <patchbomb.60@
798 In-Reply-To: <patchbomb.60@
799 References: <patchbomb.60@
799 References: <patchbomb.60@
800 User-Agent: Mercurial-patchbomb
800 User-Agent: Mercurial-patchbomb
801 Date: Thu, 01 Jan 1970 00:01:02 +0000
801 Date: Thu, 01 Jan 1970 00:01:02 +0000
802 From: quux
802 From: quux
803 To: foo
803 To: foo
804 Cc: bar
804 Cc: bar
805
805
806 --===
806 --===
807 Content-Type: text/plain; charset="us-ascii"
807 Content-Type: text/plain; charset="us-ascii"
808 MIME-Version: 1.0
808 MIME-Version: 1.0
809 Content-Transfer-Encoding: 7bit
809 Content-Transfer-Encoding: 7bit
810
810
811 Patch subject is complete summary.
811 Patch subject is complete summary.
812
812
813
813
814
814
815 --===
815 --===
816 Content-Type: text/x-patch; charset="us-ascii"
816 Content-Type: text/x-patch; charset="us-ascii"
817 MIME-Version: 1.0
817 MIME-Version: 1.0
818 Content-Transfer-Encoding: 7bit
818 Content-Transfer-Encoding: 7bit
819 Content-Disposition: attachment; filename=t2-2.patch
819 Content-Disposition: attachment; filename=t2-2.patch
820
820
821 # HG changeset patch
821 # HG changeset patch
822 # User test
822 # User test
823 # Date 2 0
823 # Date 2 0
824 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
824 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
825 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
825 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
826 b
826 b
827
827
828 diff -r 8580ff50825a -r 97d72e5f12c7 b
828 diff -r 8580ff50825a -r 97d72e5f12c7 b
829 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
829 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
830 +++ b/b Thu Jan 01 00:00:02 1970 +0000
830 +++ b/b Thu Jan 01 00:00:02 1970 +0000
831 @@ -0,0 +1,1 @@
831 @@ -0,0 +1,1 @@
832 +b
832 +b
833
833
834 --===
834 --===
835 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
835 Displaying [PATCH 3 of 3] charset=utf-8; content-transfer-encoding: quoted-printable ...
836 Content-Type: multipart/mixed; boundary="===
836 Content-Type: multipart/mixed; boundary="===
837 MIME-Version: 1.0
837 MIME-Version: 1.0
838 Subject: [PATCH 3 of 3] charset=utf-8;
838 Subject: [PATCH 3 of 3] charset=utf-8;
839 content-transfer-encoding: quoted-printable
839 content-transfer-encoding: quoted-printable
840 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
840 X-Mercurial-Node: c655633f8c87700bb38cc6a59a2753bdc5a6c376
841 Message-Id: <c655633f8c87700bb38c.63@
841 Message-Id: <c655633f8c87700bb38c.63@
842 In-Reply-To: <patchbomb.60@
842 In-Reply-To: <patchbomb.60@
843 References: <patchbomb.60@
843 References: <patchbomb.60@
844 User-Agent: Mercurial-patchbomb
844 User-Agent: Mercurial-patchbomb
845 Date: Thu, 01 Jan 1970 00:01:03 +0000
845 Date: Thu, 01 Jan 1970 00:01:03 +0000
846 From: quux
846 From: quux
847 To: foo
847 To: foo
848 Cc: bar
848 Cc: bar
849
849
850 --===
850 --===
851 Content-Type: text/plain; charset="us-ascii"
851 Content-Type: text/plain; charset="us-ascii"
852 MIME-Version: 1.0
852 MIME-Version: 1.0
853 Content-Transfer-Encoding: 7bit
853 Content-Transfer-Encoding: 7bit
854
854
855 Patch subject is complete summary.
855 Patch subject is complete summary.
856
856
857
857
858
858
859 --===
859 --===
860 Content-Type: text/x-patch; charset="us-ascii"
860 Content-Type: text/x-patch; charset="us-ascii"
861 MIME-Version: 1.0
861 MIME-Version: 1.0
862 Content-Transfer-Encoding: quoted-printable
862 Content-Transfer-Encoding: quoted-printable
863 Content-Disposition: attachment; filename=t2-3.patch
863 Content-Disposition: attachment; filename=t2-3.patch
864
864
865 # HG changeset patch
865 # HG changeset patch
866 # User test
866 # User test
867 # Date 4 0
867 # Date 4 0
868 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
868 # Node ID c655633f8c87700bb38cc6a59a2753bdc5a6c376
869 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
869 # Parent c3c9e37db9f4fe4882cda39baf42fed6bad8b15a
870 charset=3Dutf-8; content-transfer-encoding: quoted-printable
870 charset=3Dutf-8; content-transfer-encoding: quoted-printable
871
871
872 diff -r c3c9e37db9f4 -r c655633f8c87 qp
872 diff -r c3c9e37db9f4 -r c655633f8c87 qp
873 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
873 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
874 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
874 +++ b/qp Thu Jan 01 00:00:04 1970 +0000
875 @@ -0,0 +1,4 @@
875 @@ -0,0 +1,4 @@
876 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
876 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
877 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
877 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
878 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
878 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
879 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
879 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
880 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
880 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
881 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
881 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
882 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
882 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
883 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
883 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
884 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
884 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
885 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
885 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
886 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
886 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
887 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
887 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
888 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
888 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
889 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
889 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
890 +foo
890 +foo
891 +
891 +
892 +bar
892 +bar
893
893
894 --===
894 --===
895 % test intro for single patch
895 % test intro for single patch
896 This patch series consists of 1 patches.
896 This patch series consists of 1 patches.
897
897
898
898
899 Write the introductory message for the patch series.
899 Write the introductory message for the patch series.
900
900
901
901
902 Displaying [PATCH 0 of 1] test ...
902 Displaying [PATCH 0 of 1] test ...
903 Content-Type: text/plain; charset="us-ascii"
903 Content-Type: text/plain; charset="us-ascii"
904 MIME-Version: 1.0
904 MIME-Version: 1.0
905 Content-Transfer-Encoding: 7bit
905 Content-Transfer-Encoding: 7bit
906 Subject: [PATCH 0 of 1] test
906 Subject: [PATCH 0 of 1] test
907 Message-Id: <patchbomb.60@
907 Message-Id: <patchbomb.60@
908 User-Agent: Mercurial-patchbomb
908 User-Agent: Mercurial-patchbomb
909 Date: Thu, 01 Jan 1970 00:01:00 +0000
909 Date: Thu, 01 Jan 1970 00:01:00 +0000
910 From: quux
910 From: quux
911 To: foo
911 To: foo
912 Cc: bar
912 Cc: bar
913
913
914
914
915 Displaying [PATCH 1 of 1] c ...
915 Displaying [PATCH 1 of 1] c ...
916 Content-Type: text/plain; charset="us-ascii"
916 Content-Type: text/plain; charset="us-ascii"
917 MIME-Version: 1.0
917 MIME-Version: 1.0
918 Content-Transfer-Encoding: 7bit
918 Content-Transfer-Encoding: 7bit
919 Subject: [PATCH 1 of 1] c
919 Subject: [PATCH 1 of 1] c
920 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
920 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
921 Message-Id: <ff2c9fa2018b15fa74b3.61@
921 Message-Id: <ff2c9fa2018b15fa74b3.61@
922 In-Reply-To: <patchbomb.60@
922 In-Reply-To: <patchbomb.60@
923 References: <patchbomb.60@
923 References: <patchbomb.60@
924 User-Agent: Mercurial-patchbomb
924 User-Agent: Mercurial-patchbomb
925 Date: Thu, 01 Jan 1970 00:01:01 +0000
925 Date: Thu, 01 Jan 1970 00:01:01 +0000
926 From: quux
926 From: quux
927 To: foo
927 To: foo
928 Cc: bar
928 Cc: bar
929
929
930 # HG changeset patch
930 # HG changeset patch
931 # User test
931 # User test
932 # Date 3 0
932 # Date 3 0
933 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
933 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
934 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
934 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
935 c
935 c
936
936
937 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
937 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
938 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
938 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
939 +++ b/c Thu Jan 01 00:00:03 1970 +0000
939 +++ b/c Thu Jan 01 00:00:03 1970 +0000
940 @@ -0,0 +1,1 @@
940 @@ -0,0 +1,1 @@
941 +c
941 +c
942
942
943 % test intro for multiple patches
943 % test intro for multiple patches
944 This patch series consists of 2 patches.
944 This patch series consists of 2 patches.
945
945
946
946
947 Write the introductory message for the patch series.
947 Write the introductory message for the patch series.
948
948
949
949
950 Displaying [PATCH 0 of 2] test ...
950 Displaying [PATCH 0 of 2] test ...
951 Content-Type: text/plain; charset="us-ascii"
951 Content-Type: text/plain; charset="us-ascii"
952 MIME-Version: 1.0
952 MIME-Version: 1.0
953 Content-Transfer-Encoding: 7bit
953 Content-Transfer-Encoding: 7bit
954 Subject: [PATCH 0 of 2] test
954 Subject: [PATCH 0 of 2] test
955 Message-Id: <patchbomb.60@
955 Message-Id: <patchbomb.60@
956 User-Agent: Mercurial-patchbomb
956 User-Agent: Mercurial-patchbomb
957 Date: Thu, 01 Jan 1970 00:01:00 +0000
957 Date: Thu, 01 Jan 1970 00:01:00 +0000
958 From: quux
958 From: quux
959 To: foo
959 To: foo
960 Cc: bar
960 Cc: bar
961
961
962
962
963 Displaying [PATCH 1 of 2] a ...
963 Displaying [PATCH 1 of 2] a ...
964 Content-Type: text/plain; charset="us-ascii"
964 Content-Type: text/plain; charset="us-ascii"
965 MIME-Version: 1.0
965 MIME-Version: 1.0
966 Content-Transfer-Encoding: 7bit
966 Content-Transfer-Encoding: 7bit
967 Subject: [PATCH 1 of 2] a
967 Subject: [PATCH 1 of 2] a
968 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
968 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
969 Message-Id: <8580ff50825a50c8f716.61@
969 Message-Id: <8580ff50825a50c8f716.61@
970 In-Reply-To: <patchbomb.60@
970 In-Reply-To: <patchbomb.60@
971 References: <patchbomb.60@
971 References: <patchbomb.60@
972 User-Agent: Mercurial-patchbomb
972 User-Agent: Mercurial-patchbomb
973 Date: Thu, 01 Jan 1970 00:01:01 +0000
973 Date: Thu, 01 Jan 1970 00:01:01 +0000
974 From: quux
974 From: quux
975 To: foo
975 To: foo
976 Cc: bar
976 Cc: bar
977
977
978 # HG changeset patch
978 # HG changeset patch
979 # User test
979 # User test
980 # Date 1 0
980 # Date 1 0
981 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
981 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
982 # Parent 0000000000000000000000000000000000000000
982 # Parent 0000000000000000000000000000000000000000
983 a
983 a
984
984
985 diff -r 000000000000 -r 8580ff50825a a
985 diff -r 000000000000 -r 8580ff50825a a
986 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
986 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
987 +++ b/a Thu Jan 01 00:00:01 1970 +0000
987 +++ b/a Thu Jan 01 00:00:01 1970 +0000
988 @@ -0,0 +1,1 @@
988 @@ -0,0 +1,1 @@
989 +a
989 +a
990
990
991 Displaying [PATCH 2 of 2] b ...
991 Displaying [PATCH 2 of 2] b ...
992 Content-Type: text/plain; charset="us-ascii"
992 Content-Type: text/plain; charset="us-ascii"
993 MIME-Version: 1.0
993 MIME-Version: 1.0
994 Content-Transfer-Encoding: 7bit
994 Content-Transfer-Encoding: 7bit
995 Subject: [PATCH 2 of 2] b
995 Subject: [PATCH 2 of 2] b
996 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
996 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
997 Message-Id: <97d72e5f12c7e84f8506.62@
997 Message-Id: <97d72e5f12c7e84f8506.62@
998 In-Reply-To: <patchbomb.60@
998 In-Reply-To: <patchbomb.60@
999 References: <patchbomb.60@
999 References: <patchbomb.60@
1000 User-Agent: Mercurial-patchbomb
1000 User-Agent: Mercurial-patchbomb
1001 Date: Thu, 01 Jan 1970 00:01:02 +0000
1001 Date: Thu, 01 Jan 1970 00:01:02 +0000
1002 From: quux
1002 From: quux
1003 To: foo
1003 To: foo
1004 Cc: bar
1004 Cc: bar
1005
1005
1006 # HG changeset patch
1006 # HG changeset patch
1007 # User test
1007 # User test
1008 # Date 2 0
1008 # Date 2 0
1009 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1009 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1010 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1010 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1011 b
1011 b
1012
1012
1013 diff -r 8580ff50825a -r 97d72e5f12c7 b
1013 diff -r 8580ff50825a -r 97d72e5f12c7 b
1014 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1014 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1015 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1015 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1016 @@ -0,0 +1,1 @@
1016 @@ -0,0 +1,1 @@
1017 +b
1017 +b
1018
1018
1019 % tagging csets
1019 % tagging csets
1020 % test inline for single named patch
1020 % test inline for single named patch
1021 This patch series consists of 1 patches.
1021 This patch series consists of 1 patches.
1022
1022
1023
1023
1024 Displaying [PATCH] test ...
1024 Displaying [PATCH] test ...
1025 Content-Type: multipart/mixed; boundary="===
1025 Content-Type: multipart/mixed; boundary="===
1026 MIME-Version: 1.0
1026 MIME-Version: 1.0
1027 Subject: [PATCH] test
1027 Subject: [PATCH] test
1028 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1028 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1029 Message-Id: <ff2c9fa2018b15fa74b3.60@
1029 Message-Id: <ff2c9fa2018b15fa74b3.60@
1030 User-Agent: Mercurial-patchbomb
1030 User-Agent: Mercurial-patchbomb
1031 Date: Thu, 01 Jan 1970 00:01:00 +0000
1031 Date: Thu, 01 Jan 1970 00:01:00 +0000
1032 From: quux
1032 From: quux
1033 To: foo
1033 To: foo
1034 Cc: bar
1034 Cc: bar
1035
1035
1036 --===
1036 --===
1037 Content-Type: text/x-patch; charset="us-ascii"
1037 Content-Type: text/x-patch; charset="us-ascii"
1038 MIME-Version: 1.0
1038 MIME-Version: 1.0
1039 Content-Transfer-Encoding: 7bit
1039 Content-Transfer-Encoding: 7bit
1040 Content-Disposition: inline; filename=two.diff
1040 Content-Disposition: inline; filename=two.diff
1041
1041
1042 # HG changeset patch
1042 # HG changeset patch
1043 # User test
1043 # User test
1044 # Date 3 0
1044 # Date 3 0
1045 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1045 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1046 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1046 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1047 c
1047 c
1048
1048
1049 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1049 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1050 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1050 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1051 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1051 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1052 @@ -0,0 +1,1 @@
1052 @@ -0,0 +1,1 @@
1053 +c
1053 +c
1054
1054
1055 --===
1055 --===
1056 % test inline for multiple named/unnamed patches
1056 % test inline for multiple named/unnamed patches
1057 This patch series consists of 2 patches.
1057 This patch series consists of 2 patches.
1058
1058
1059
1059
1060 Write the introductory message for the patch series.
1060 Write the introductory message for the patch series.
1061
1061
1062
1062
1063 Displaying [PATCH 0 of 2] test ...
1063 Displaying [PATCH 0 of 2] test ...
1064 Content-Type: text/plain; charset="us-ascii"
1064 Content-Type: text/plain; charset="us-ascii"
1065 MIME-Version: 1.0
1065 MIME-Version: 1.0
1066 Content-Transfer-Encoding: 7bit
1066 Content-Transfer-Encoding: 7bit
1067 Subject: [PATCH 0 of 2] test
1067 Subject: [PATCH 0 of 2] test
1068 Message-Id: <patchbomb.60@
1068 Message-Id: <patchbomb.60@
1069 User-Agent: Mercurial-patchbomb
1069 User-Agent: Mercurial-patchbomb
1070 Date: Thu, 01 Jan 1970 00:01:00 +0000
1070 Date: Thu, 01 Jan 1970 00:01:00 +0000
1071 From: quux
1071 From: quux
1072 To: foo
1072 To: foo
1073 Cc: bar
1073 Cc: bar
1074
1074
1075
1075
1076 Displaying [PATCH 1 of 2] a ...
1076 Displaying [PATCH 1 of 2] a ...
1077 Content-Type: multipart/mixed; boundary="===
1077 Content-Type: multipart/mixed; boundary="===
1078 MIME-Version: 1.0
1078 MIME-Version: 1.0
1079 Subject: [PATCH 1 of 2] a
1079 Subject: [PATCH 1 of 2] a
1080 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1080 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1081 Message-Id: <8580ff50825a50c8f716.61@
1081 Message-Id: <8580ff50825a50c8f716.61@
1082 In-Reply-To: <patchbomb.60@
1082 In-Reply-To: <patchbomb.60@
1083 References: <patchbomb.60@
1083 References: <patchbomb.60@
1084 User-Agent: Mercurial-patchbomb
1084 User-Agent: Mercurial-patchbomb
1085 Date: Thu, 01 Jan 1970 00:01:01 +0000
1085 Date: Thu, 01 Jan 1970 00:01:01 +0000
1086 From: quux
1086 From: quux
1087 To: foo
1087 To: foo
1088 Cc: bar
1088 Cc: bar
1089
1089
1090 --===
1090 --===
1091 Content-Type: text/x-patch; charset="us-ascii"
1091 Content-Type: text/x-patch; charset="us-ascii"
1092 MIME-Version: 1.0
1092 MIME-Version: 1.0
1093 Content-Transfer-Encoding: 7bit
1093 Content-Transfer-Encoding: 7bit
1094 Content-Disposition: inline; filename=t2-1.patch
1094 Content-Disposition: inline; filename=t2-1.patch
1095
1095
1096 # HG changeset patch
1096 # HG changeset patch
1097 # User test
1097 # User test
1098 # Date 1 0
1098 # Date 1 0
1099 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1099 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1100 # Parent 0000000000000000000000000000000000000000
1100 # Parent 0000000000000000000000000000000000000000
1101 a
1101 a
1102
1102
1103 diff -r 000000000000 -r 8580ff50825a a
1103 diff -r 000000000000 -r 8580ff50825a a
1104 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1104 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1105 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1105 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1106 @@ -0,0 +1,1 @@
1106 @@ -0,0 +1,1 @@
1107 +a
1107 +a
1108
1108
1109 --===
1109 --===
1110 Displaying [PATCH 2 of 2] b ...
1110 Displaying [PATCH 2 of 2] b ...
1111 Content-Type: multipart/mixed; boundary="===
1111 Content-Type: multipart/mixed; boundary="===
1112 MIME-Version: 1.0
1112 MIME-Version: 1.0
1113 Subject: [PATCH 2 of 2] b
1113 Subject: [PATCH 2 of 2] b
1114 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1114 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1115 Message-Id: <97d72e5f12c7e84f8506.62@
1115 Message-Id: <97d72e5f12c7e84f8506.62@
1116 In-Reply-To: <patchbomb.60@
1116 In-Reply-To: <patchbomb.60@
1117 References: <patchbomb.60@
1117 References: <patchbomb.60@
1118 User-Agent: Mercurial-patchbomb
1118 User-Agent: Mercurial-patchbomb
1119 Date: Thu, 01 Jan 1970 00:01:02 +0000
1119 Date: Thu, 01 Jan 1970 00:01:02 +0000
1120 From: quux
1120 From: quux
1121 To: foo
1121 To: foo
1122 Cc: bar
1122 Cc: bar
1123
1123
1124 --===
1124 --===
1125 Content-Type: text/x-patch; charset="us-ascii"
1125 Content-Type: text/x-patch; charset="us-ascii"
1126 MIME-Version: 1.0
1126 MIME-Version: 1.0
1127 Content-Transfer-Encoding: 7bit
1127 Content-Transfer-Encoding: 7bit
1128 Content-Disposition: inline; filename=one.patch
1128 Content-Disposition: inline; filename=one.patch
1129
1129
1130 # HG changeset patch
1130 # HG changeset patch
1131 # User test
1131 # User test
1132 # Date 2 0
1132 # Date 2 0
1133 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1133 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1134 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1134 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1135 b
1135 b
1136
1136
1137 diff -r 8580ff50825a -r 97d72e5f12c7 b
1137 diff -r 8580ff50825a -r 97d72e5f12c7 b
1138 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1138 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1139 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1139 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1140 @@ -0,0 +1,1 @@
1140 @@ -0,0 +1,1 @@
1141 +b
1141 +b
1142
1142
1143 --===
1143 --===
1144 % test inreplyto
1144 % test inreplyto
1145 This patch series consists of 1 patches.
1145 This patch series consists of 1 patches.
1146
1146
1147
1147
1148 Displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
1148 Displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
1149 Content-Type: text/plain; charset="us-ascii"
1149 Content-Type: text/plain; charset="us-ascii"
1150 MIME-Version: 1.0
1150 MIME-Version: 1.0
1151 Content-Transfer-Encoding: 7bit
1151 Content-Transfer-Encoding: 7bit
1152 Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
1152 Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
1153 X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
1153 X-Mercurial-Node: e317db6a6f288748d1f6cb064f3810fcba66b1b6
1154 Message-Id: <e317db6a6f288748d1f6.60@
1154 Message-Id: <e317db6a6f288748d1f6.60@
1155 In-Reply-To: <baz>
1155 In-Reply-To: <baz>
1156 References: <baz>
1156 References: <baz>
1157 User-Agent: Mercurial-patchbomb
1157 User-Agent: Mercurial-patchbomb
1158 Date: Thu, 01 Jan 1970 00:01:00 +0000
1158 Date: Thu, 01 Jan 1970 00:01:00 +0000
1159 From: quux
1159 From: quux
1160 To: foo
1160 To: foo
1161 Cc: bar
1161 Cc: bar
1162
1162
1163 # HG changeset patch
1163 # HG changeset patch
1164 # User test
1164 # User test
1165 # Date 0 0
1165 # Date 0 0
1166 # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
1166 # Node ID e317db6a6f288748d1f6cb064f3810fcba66b1b6
1167 # Parent eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
1167 # Parent eae5fcf795eee29d0e45ffc9f519a91cd79fc9ff
1168 Added tag two, two.diff for changeset ff2c9fa2018b
1168 Added tag two, two.diff for changeset ff2c9fa2018b
1169
1169
1170 diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
1170 diff -r eae5fcf795ee -r e317db6a6f28 .hgtags
1171 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1171 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1172 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1172 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1173 @@ -2,3 +2,5 @@
1173 @@ -2,3 +2,5 @@
1174 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1174 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1175 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1175 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1176 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1176 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1177 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1177 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1178 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1178 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1179
1179
1180 abort: Subject: [PATCH 0 of 2] Please enter a valid value
1180 abort: Subject: [PATCH 0 of 2] Please enter a valid value
1181 This patch series consists of 2 patches.
1181 This patch series consists of 2 patches.
1182
1182
1183 This patch series consists of 2 patches.
1183 This patch series consists of 2 patches.
1184
1184
1185
1185
1186 Write the introductory message for the patch series.
1186 Write the introductory message for the patch series.
1187
1187
1188
1188
1189 Displaying [PATCH 0 of 2] test ...
1189 Displaying [PATCH 0 of 2] test ...
1190 Content-Type: text/plain; charset="us-ascii"
1190 Content-Type: text/plain; charset="us-ascii"
1191 MIME-Version: 1.0
1191 MIME-Version: 1.0
1192 Content-Transfer-Encoding: 7bit
1192 Content-Transfer-Encoding: 7bit
1193 Subject: [PATCH 0 of 2] test
1193 Subject: [PATCH 0 of 2] test
1194 Message-Id: <patchbomb.60@
1194 Message-Id: <patchbomb.60@
1195 In-Reply-To: <baz>
1195 In-Reply-To: <baz>
1196 References: <baz>
1196 References: <baz>
1197 User-Agent: Mercurial-patchbomb
1197 User-Agent: Mercurial-patchbomb
1198 Date: Thu, 01 Jan 1970 00:01:00 +0000
1198 Date: Thu, 01 Jan 1970 00:01:00 +0000
1199 From: quux
1199 From: quux
1200 To: foo
1200 To: foo
1201 Cc: bar
1201 Cc: bar
1202
1202
1203
1203
1204 Displaying [PATCH 1 of 2] a ...
1204 Displaying [PATCH 1 of 2] a ...
1205 Content-Type: text/plain; charset="us-ascii"
1205 Content-Type: text/plain; charset="us-ascii"
1206 MIME-Version: 1.0
1206 MIME-Version: 1.0
1207 Content-Transfer-Encoding: 7bit
1207 Content-Transfer-Encoding: 7bit
1208 Subject: [PATCH 1 of 2] a
1208 Subject: [PATCH 1 of 2] a
1209 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1209 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1210 Message-Id: <8580ff50825a50c8f716.61@
1210 Message-Id: <8580ff50825a50c8f716.61@
1211 In-Reply-To: <patchbomb.60@
1211 In-Reply-To: <patchbomb.60@
1212 References: <patchbomb.60@
1212 References: <patchbomb.60@
1213 User-Agent: Mercurial-patchbomb
1213 User-Agent: Mercurial-patchbomb
1214 Date: Thu, 01 Jan 1970 00:01:01 +0000
1214 Date: Thu, 01 Jan 1970 00:01:01 +0000
1215 From: quux
1215 From: quux
1216 To: foo
1216 To: foo
1217 Cc: bar
1217 Cc: bar
1218
1218
1219 # HG changeset patch
1219 # HG changeset patch
1220 # User test
1220 # User test
1221 # Date 1 0
1221 # Date 1 0
1222 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1222 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1223 # Parent 0000000000000000000000000000000000000000
1223 # Parent 0000000000000000000000000000000000000000
1224 a
1224 a
1225
1225
1226 diff -r 000000000000 -r 8580ff50825a a
1226 diff -r 000000000000 -r 8580ff50825a a
1227 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1227 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1228 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1228 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1229 @@ -0,0 +1,1 @@
1229 @@ -0,0 +1,1 @@
1230 +a
1230 +a
1231
1231
1232 Displaying [PATCH 2 of 2] b ...
1232 Displaying [PATCH 2 of 2] b ...
1233 Content-Type: text/plain; charset="us-ascii"
1233 Content-Type: text/plain; charset="us-ascii"
1234 MIME-Version: 1.0
1234 MIME-Version: 1.0
1235 Content-Transfer-Encoding: 7bit
1235 Content-Transfer-Encoding: 7bit
1236 Subject: [PATCH 2 of 2] b
1236 Subject: [PATCH 2 of 2] b
1237 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1237 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1238 Message-Id: <97d72e5f12c7e84f8506.62@
1238 Message-Id: <97d72e5f12c7e84f8506.62@
1239 In-Reply-To: <patchbomb.60@
1239 In-Reply-To: <patchbomb.60@
1240 References: <patchbomb.60@
1240 References: <patchbomb.60@
1241 User-Agent: Mercurial-patchbomb
1241 User-Agent: Mercurial-patchbomb
1242 Date: Thu, 01 Jan 1970 00:01:02 +0000
1242 Date: Thu, 01 Jan 1970 00:01:02 +0000
1243 From: quux
1243 From: quux
1244 To: foo
1244 To: foo
1245 Cc: bar
1245 Cc: bar
1246
1246
1247 # HG changeset patch
1247 # HG changeset patch
1248 # User test
1248 # User test
1249 # Date 2 0
1249 # Date 2 0
1250 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1250 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1251 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1251 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1252 b
1252 b
1253
1253
1254 diff -r 8580ff50825a -r 97d72e5f12c7 b
1254 diff -r 8580ff50825a -r 97d72e5f12c7 b
1255 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1255 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1256 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1256 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1257 @@ -0,0 +1,1 @@
1257 @@ -0,0 +1,1 @@
1258 +b
1258 +b
1259
1259
1260 % test single flag for single patch
1260 % test single flag for single patch
1261 This patch series consists of 1 patches.
1261 This patch series consists of 1 patches.
1262
1262
1263
1263
1264 Displaying [PATCH fooFlag] test ...
1264 Displaying [PATCH fooFlag] test ...
1265 Content-Type: text/plain; charset="us-ascii"
1265 Content-Type: text/plain; charset="us-ascii"
1266 MIME-Version: 1.0
1266 MIME-Version: 1.0
1267 Content-Transfer-Encoding: 7bit
1267 Content-Transfer-Encoding: 7bit
1268 Subject: [PATCH fooFlag] test
1268 Subject: [PATCH fooFlag] test
1269 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1269 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1270 Message-Id: <ff2c9fa2018b15fa74b3.60@
1270 Message-Id: <ff2c9fa2018b15fa74b3.60@
1271 User-Agent: Mercurial-patchbomb
1271 User-Agent: Mercurial-patchbomb
1272 Date: Thu, 01 Jan 1970 00:01:00 +0000
1272 Date: Thu, 01 Jan 1970 00:01:00 +0000
1273 From: quux
1273 From: quux
1274 To: foo
1274 To: foo
1275 Cc: bar
1275 Cc: bar
1276
1276
1277 # HG changeset patch
1277 # HG changeset patch
1278 # User test
1278 # User test
1279 # Date 3 0
1279 # Date 3 0
1280 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1280 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1281 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1281 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1282 c
1282 c
1283
1283
1284 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1284 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1285 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1285 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1286 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1286 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1287 @@ -0,0 +1,1 @@
1287 @@ -0,0 +1,1 @@
1288 +c
1288 +c
1289
1289
1290 % test single flag for multiple patches
1290 % test single flag for multiple patches
1291 This patch series consists of 2 patches.
1291 This patch series consists of 2 patches.
1292
1292
1293
1293
1294 Write the introductory message for the patch series.
1294 Write the introductory message for the patch series.
1295
1295
1296
1296
1297 Displaying [PATCH 0 of 2 fooFlag] test ...
1297 Displaying [PATCH 0 of 2 fooFlag] test ...
1298 Content-Type: text/plain; charset="us-ascii"
1298 Content-Type: text/plain; charset="us-ascii"
1299 MIME-Version: 1.0
1299 MIME-Version: 1.0
1300 Content-Transfer-Encoding: 7bit
1300 Content-Transfer-Encoding: 7bit
1301 Subject: [PATCH 0 of 2 fooFlag] test
1301 Subject: [PATCH 0 of 2 fooFlag] test
1302 Message-Id: <patchbomb.60@
1302 Message-Id: <patchbomb.60@
1303 User-Agent: Mercurial-patchbomb
1303 User-Agent: Mercurial-patchbomb
1304 Date: Thu, 01 Jan 1970 00:01:00 +0000
1304 Date: Thu, 01 Jan 1970 00:01:00 +0000
1305 From: quux
1305 From: quux
1306 To: foo
1306 To: foo
1307 Cc: bar
1307 Cc: bar
1308
1308
1309
1309
1310 Displaying [PATCH 1 of 2 fooFlag] a ...
1310 Displaying [PATCH 1 of 2 fooFlag] a ...
1311 Content-Type: text/plain; charset="us-ascii"
1311 Content-Type: text/plain; charset="us-ascii"
1312 MIME-Version: 1.0
1312 MIME-Version: 1.0
1313 Content-Transfer-Encoding: 7bit
1313 Content-Transfer-Encoding: 7bit
1314 Subject: [PATCH 1 of 2 fooFlag] a
1314 Subject: [PATCH 1 of 2 fooFlag] a
1315 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1315 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1316 Message-Id: <8580ff50825a50c8f716.61@
1316 Message-Id: <8580ff50825a50c8f716.61@
1317 In-Reply-To: <patchbomb.60@
1317 In-Reply-To: <patchbomb.60@
1318 References: <patchbomb.60@
1318 References: <patchbomb.60@
1319 User-Agent: Mercurial-patchbomb
1319 User-Agent: Mercurial-patchbomb
1320 Date: Thu, 01 Jan 1970 00:01:01 +0000
1320 Date: Thu, 01 Jan 1970 00:01:01 +0000
1321 From: quux
1321 From: quux
1322 To: foo
1322 To: foo
1323 Cc: bar
1323 Cc: bar
1324
1324
1325 # HG changeset patch
1325 # HG changeset patch
1326 # User test
1326 # User test
1327 # Date 1 0
1327 # Date 1 0
1328 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1328 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1329 # Parent 0000000000000000000000000000000000000000
1329 # Parent 0000000000000000000000000000000000000000
1330 a
1330 a
1331
1331
1332 diff -r 000000000000 -r 8580ff50825a a
1332 diff -r 000000000000 -r 8580ff50825a a
1333 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1333 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1334 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1334 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1335 @@ -0,0 +1,1 @@
1335 @@ -0,0 +1,1 @@
1336 +a
1336 +a
1337
1337
1338 Displaying [PATCH 2 of 2 fooFlag] b ...
1338 Displaying [PATCH 2 of 2 fooFlag] b ...
1339 Content-Type: text/plain; charset="us-ascii"
1339 Content-Type: text/plain; charset="us-ascii"
1340 MIME-Version: 1.0
1340 MIME-Version: 1.0
1341 Content-Transfer-Encoding: 7bit
1341 Content-Transfer-Encoding: 7bit
1342 Subject: [PATCH 2 of 2 fooFlag] b
1342 Subject: [PATCH 2 of 2 fooFlag] b
1343 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1343 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1344 Message-Id: <97d72e5f12c7e84f8506.62@
1344 Message-Id: <97d72e5f12c7e84f8506.62@
1345 In-Reply-To: <patchbomb.60@
1345 In-Reply-To: <patchbomb.60@
1346 References: <patchbomb.60@
1346 References: <patchbomb.60@
1347 User-Agent: Mercurial-patchbomb
1347 User-Agent: Mercurial-patchbomb
1348 Date: Thu, 01 Jan 1970 00:01:02 +0000
1348 Date: Thu, 01 Jan 1970 00:01:02 +0000
1349 From: quux
1349 From: quux
1350 To: foo
1350 To: foo
1351 Cc: bar
1351 Cc: bar
1352
1352
1353 # HG changeset patch
1353 # HG changeset patch
1354 # User test
1354 # User test
1355 # Date 2 0
1355 # Date 2 0
1356 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1356 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1357 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1357 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1358 b
1358 b
1359
1359
1360 diff -r 8580ff50825a -r 97d72e5f12c7 b
1360 diff -r 8580ff50825a -r 97d72e5f12c7 b
1361 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1361 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1362 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1362 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1363 @@ -0,0 +1,1 @@
1363 @@ -0,0 +1,1 @@
1364 +b
1364 +b
1365
1365
1366 % test mutiple flags for single patch
1366 % test mutiple flags for single patch
1367 This patch series consists of 1 patches.
1367 This patch series consists of 1 patches.
1368
1368
1369
1369
1370 Displaying [PATCH fooFlag barFlag] test ...
1370 Displaying [PATCH fooFlag barFlag] test ...
1371 Content-Type: text/plain; charset="us-ascii"
1371 Content-Type: text/plain; charset="us-ascii"
1372 MIME-Version: 1.0
1372 MIME-Version: 1.0
1373 Content-Transfer-Encoding: 7bit
1373 Content-Transfer-Encoding: 7bit
1374 Subject: [PATCH fooFlag barFlag] test
1374 Subject: [PATCH fooFlag barFlag] test
1375 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1375 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1376 Message-Id: <ff2c9fa2018b15fa74b3.60@
1376 Message-Id: <ff2c9fa2018b15fa74b3.60@
1377 User-Agent: Mercurial-patchbomb
1377 User-Agent: Mercurial-patchbomb
1378 Date: Thu, 01 Jan 1970 00:01:00 +0000
1378 Date: Thu, 01 Jan 1970 00:01:00 +0000
1379 From: quux
1379 From: quux
1380 To: foo
1380 To: foo
1381 Cc: bar
1381 Cc: bar
1382
1382
1383 # HG changeset patch
1383 # HG changeset patch
1384 # User test
1384 # User test
1385 # Date 3 0
1385 # Date 3 0
1386 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1386 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1387 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1387 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1388 c
1388 c
1389
1389
1390 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1390 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1392 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1392 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1393 @@ -0,0 +1,1 @@
1393 @@ -0,0 +1,1 @@
1394 +c
1394 +c
1395
1395
1396 % test multiple flags for multiple patches
1396 % test multiple flags for multiple patches
1397 This patch series consists of 2 patches.
1397 This patch series consists of 2 patches.
1398
1398
1399
1399
1400 Write the introductory message for the patch series.
1400 Write the introductory message for the patch series.
1401
1401
1402
1402
1403 Displaying [PATCH 0 of 2 fooFlag barFlag] test ...
1403 Displaying [PATCH 0 of 2 fooFlag barFlag] test ...
1404 Content-Type: text/plain; charset="us-ascii"
1404 Content-Type: text/plain; charset="us-ascii"
1405 MIME-Version: 1.0
1405 MIME-Version: 1.0
1406 Content-Transfer-Encoding: 7bit
1406 Content-Transfer-Encoding: 7bit
1407 Subject: [PATCH 0 of 2 fooFlag barFlag] test
1407 Subject: [PATCH 0 of 2 fooFlag barFlag] test
1408 Message-Id: <patchbomb.60@
1408 Message-Id: <patchbomb.60@
1409 User-Agent: Mercurial-patchbomb
1409 User-Agent: Mercurial-patchbomb
1410 Date: Thu, 01 Jan 1970 00:01:00 +0000
1410 Date: Thu, 01 Jan 1970 00:01:00 +0000
1411 From: quux
1411 From: quux
1412 To: foo
1412 To: foo
1413 Cc: bar
1413 Cc: bar
1414
1414
1415
1415
1416 Displaying [PATCH 1 of 2 fooFlag barFlag] a ...
1416 Displaying [PATCH 1 of 2 fooFlag barFlag] a ...
1417 Content-Type: text/plain; charset="us-ascii"
1417 Content-Type: text/plain; charset="us-ascii"
1418 MIME-Version: 1.0
1418 MIME-Version: 1.0
1419 Content-Transfer-Encoding: 7bit
1419 Content-Transfer-Encoding: 7bit
1420 Subject: [PATCH 1 of 2 fooFlag barFlag] a
1420 Subject: [PATCH 1 of 2 fooFlag barFlag] a
1421 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1421 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1422 Message-Id: <8580ff50825a50c8f716.61@
1422 Message-Id: <8580ff50825a50c8f716.61@
1423 In-Reply-To: <patchbomb.60@
1423 In-Reply-To: <patchbomb.60@
1424 References: <patchbomb.60@
1424 References: <patchbomb.60@
1425 User-Agent: Mercurial-patchbomb
1425 User-Agent: Mercurial-patchbomb
1426 Date: Thu, 01 Jan 1970 00:01:01 +0000
1426 Date: Thu, 01 Jan 1970 00:01:01 +0000
1427 From: quux
1427 From: quux
1428 To: foo
1428 To: foo
1429 Cc: bar
1429 Cc: bar
1430
1430
1431 # HG changeset patch
1431 # HG changeset patch
1432 # User test
1432 # User test
1433 # Date 1 0
1433 # Date 1 0
1434 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1434 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1435 # Parent 0000000000000000000000000000000000000000
1435 # Parent 0000000000000000000000000000000000000000
1436 a
1436 a
1437
1437
1438 diff -r 000000000000 -r 8580ff50825a a
1438 diff -r 000000000000 -r 8580ff50825a a
1439 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1439 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1440 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1440 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1441 @@ -0,0 +1,1 @@
1441 @@ -0,0 +1,1 @@
1442 +a
1442 +a
1443
1443
1444 Displaying [PATCH 2 of 2 fooFlag barFlag] b ...
1444 Displaying [PATCH 2 of 2 fooFlag barFlag] b ...
1445 Content-Type: text/plain; charset="us-ascii"
1445 Content-Type: text/plain; charset="us-ascii"
1446 MIME-Version: 1.0
1446 MIME-Version: 1.0
1447 Content-Transfer-Encoding: 7bit
1447 Content-Transfer-Encoding: 7bit
1448 Subject: [PATCH 2 of 2 fooFlag barFlag] b
1448 Subject: [PATCH 2 of 2 fooFlag barFlag] b
1449 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1449 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1450 Message-Id: <97d72e5f12c7e84f8506.62@
1450 Message-Id: <97d72e5f12c7e84f8506.62@
1451 In-Reply-To: <patchbomb.60@
1451 In-Reply-To: <patchbomb.60@
1452 References: <patchbomb.60@
1452 References: <patchbomb.60@
1453 User-Agent: Mercurial-patchbomb
1453 User-Agent: Mercurial-patchbomb
1454 Date: Thu, 01 Jan 1970 00:01:02 +0000
1454 Date: Thu, 01 Jan 1970 00:01:02 +0000
1455 From: quux
1455 From: quux
1456 To: foo
1456 To: foo
1457 Cc: bar
1457 Cc: bar
1458
1458
1459 # HG changeset patch
1459 # HG changeset patch
1460 # User test
1460 # User test
1461 # Date 2 0
1461 # Date 2 0
1462 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1462 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1463 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1463 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1464 b
1464 b
1465
1465
1466 diff -r 8580ff50825a -r 97d72e5f12c7 b
1466 diff -r 8580ff50825a -r 97d72e5f12c7 b
1467 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1467 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1468 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1468 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1469 @@ -0,0 +1,1 @@
1469 @@ -0,0 +1,1 @@
1470 +b
1470 +b
1471
1471
1472 % test multi-address parsing
1472 % test multi-address parsing
1473 This patch series consists of 1 patches.
1473 This patch series consists of 1 patches.
1474
1474
1475
1475
1476 Writing [PATCH] test ...
1476 Writing [PATCH] test ...
1477 From quux Tue Jan 01 00:01:01 1980
1477 From quux Tue Jan 01 00:01:01 1980
1478 Content-Type: text/plain; charset="us-ascii"
1478 Content-Type: text/plain; charset="us-ascii"
1479 MIME-Version: 1.0
1479 MIME-Version: 1.0
1480 Content-Transfer-Encoding: 7bit
1480 Content-Transfer-Encoding: 7bit
1481 Subject: [PATCH] test
1481 Subject: [PATCH] test
1482 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1482 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1483 Message-Id: <8580ff50825a50c8f716.315532860@
1483 Message-Id: <8580ff50825a50c8f716.315532860@
1484 User-Agent: Mercurial-patchbomb
1484 User-Agent: Mercurial-patchbomb
1485 Date: Tue, 01 Jan 1980 00:01:00 +0000
1485 Date: Tue, 01 Jan 1980 00:01:00 +0000
1486 From: quux
1486 From: quux
1487 To: spam <spam>, eggs, toast
1487 To: spam <spam>, eggs, toast
1488 Cc: foo, bar@example.com, "A, B <>" <a@example.com>
1488 Cc: foo, bar@example.com, "A, B <>" <a@example.com>
1489 Bcc: "Quux, A." <quux>
1489 Bcc: "Quux, A." <quux>
1490
1490
1491 # HG changeset patch
1491 # HG changeset patch
1492 # User test
1492 # User test
1493 # Date 1 0
1493 # Date 1 0
1494 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1494 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1495 # Parent 0000000000000000000000000000000000000000
1495 # Parent 0000000000000000000000000000000000000000
1496 a
1496 a
1497
1497
1498 diff -r 000000000000 -r 8580ff50825a a
1498 diff -r 000000000000 -r 8580ff50825a a
1499 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1499 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1500 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1500 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1501 @@ -0,0 +1,1 @@
1501 @@ -0,0 +1,1 @@
1502 +a
1502 +a
1503
1503
1504
1504
1505 % test multi-byte domain parsing
1505 % test multi-byte domain parsing
1506 This patch series consists of 1 patches.
1506 This patch series consists of 1 patches.
1507
1507
1508
1508
1509 Writing [PATCH] test ...
1509 Writing [PATCH] test ...
1510 From quux Tue Jan 01 00:01:01 1980
1510 From quux Tue Jan 01 00:01:01 1980
1511 Content-Type: text/plain; charset="us-ascii"
1511 Content-Type: text/plain; charset="us-ascii"
1512 MIME-Version: 1.0
1512 MIME-Version: 1.0
1513 Content-Transfer-Encoding: 7bit
1513 Content-Transfer-Encoding: 7bit
1514 Subject: [PATCH] test
1514 Subject: [PATCH] test
1515 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1515 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1516 Message-Id: <8580ff50825a50c8f716.315532860@
1516 Message-Id: <8580ff50825a50c8f716.315532860@
1517 User-Agent: Mercurial-patchbomb
1517 User-Agent: Mercurial-patchbomb
1518 Date: Tue, 01 Jan 1980 00:01:00 +0000
1518 Date: Tue, 01 Jan 1980 00:01:00 +0000
1519 From: quux
1519 From: quux
1520 To: bar@xn--nicode-2ya.com
1520 To: bar@xn--nicode-2ya.com
1521
1521
1522 # HG changeset patch
1522 # HG changeset patch
1523 # User test
1523 # User test
1524 # Date 1 0
1524 # Date 1 0
1525 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1525 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1526 # Parent 0000000000000000000000000000000000000000
1526 # Parent 0000000000000000000000000000000000000000
1527 a
1527 a
1528
1528
1529 diff -r 000000000000 -r 8580ff50825a a
1529 diff -r 000000000000 -r 8580ff50825a a
1530 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1530 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1531 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1531 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1532 @@ -0,0 +1,1 @@
1532 @@ -0,0 +1,1 @@
1533 +a
1533 +a
1534
1534
1535
1535
1536 % test outgoing and dest#branch URIs
1537 0 files updated, 0 files merged, 6 files removed, 0 files unresolved
1538 marked working directory as branch test
1539 created new head
1540 comparing with ../t
1541 searching for changes
1542 This patch series consists of 1 patches.
1543
1544
1545 Displaying [PATCH] test ...
1546 Content-Type: text/plain; charset="us-ascii"
1547 MIME-Version: 1.0
1548 Content-Transfer-Encoding: 7bit
1549 Subject: [PATCH] test
1550 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
1551 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@
1552 User-Agent: Mercurial-patchbomb
1553 Date: Tue, 01 Jan 1980 00:01:00 +0000
1554 From: test
1555 To: foo
1556
1557 # HG changeset patch
1558 # User test
1559 # Date 4 0
1560 # Branch test
1561 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
1562 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1563 d
1564
1565 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
1566 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1567 +++ b/d Thu Jan 01 00:00:04 1970 +0000
1568 @@ -0,0 +1,1 @@
1569 +d
1570
General Comments 0
You need to be logged in to leave comments. Login now