##// END OF EJS Templates
progress: stop double-wrapping of ui class...
Pierre-Yves David -
r25482:95f49013 default
parent child Browse files
Show More
@@ -1,324 +1,326
1 # progress.py show progress bars for some actions
1 # progress.py show progress bars for some actions
2 #
2 #
3 # Copyright (C) 2010 Augie Fackler <durin42@gmail.com>
3 # Copyright (C) 2010 Augie Fackler <durin42@gmail.com>
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
7
7
8 """show progress bars for some actions
8 """show progress bars for some actions
9
9
10 This extension uses the progress information logged by hg commands
10 This extension uses the progress information logged by hg commands
11 to draw progress bars that are as informative as possible. Some progress
11 to draw progress bars that are as informative as possible. Some progress
12 bars only offer indeterminate information, while others have a definite
12 bars only offer indeterminate information, while others have a definite
13 end point.
13 end point.
14
14
15 The following settings are available::
15 The following settings are available::
16
16
17 [progress]
17 [progress]
18 delay = 3 # number of seconds (float) before showing the progress bar
18 delay = 3 # number of seconds (float) before showing the progress bar
19 changedelay = 1 # changedelay: minimum delay before showing a new topic.
19 changedelay = 1 # changedelay: minimum delay before showing a new topic.
20 # If set to less than 3 * refresh, that value will
20 # If set to less than 3 * refresh, that value will
21 # be used instead.
21 # be used instead.
22 refresh = 0.1 # time in seconds between refreshes of the progress bar
22 refresh = 0.1 # time in seconds between refreshes of the progress bar
23 format = topic bar number estimate # format of the progress bar
23 format = topic bar number estimate # format of the progress bar
24 width = <none> # if set, the maximum width of the progress information
24 width = <none> # if set, the maximum width of the progress information
25 # (that is, min(width, term width) will be used)
25 # (that is, min(width, term width) will be used)
26 clear-complete = True # clear the progress bar after it's done
26 clear-complete = True # clear the progress bar after it's done
27 disable = False # if true, don't show a progress bar
27 disable = False # if true, don't show a progress bar
28 assume-tty = False # if true, ALWAYS show a progress bar, unless
28 assume-tty = False # if true, ALWAYS show a progress bar, unless
29 # disable is given
29 # disable is given
30
30
31 Valid entries for the format field are topic, bar, number, unit,
31 Valid entries for the format field are topic, bar, number, unit,
32 estimate, speed, and item. item defaults to the last 20 characters of
32 estimate, speed, and item. item defaults to the last 20 characters of
33 the item, but this can be changed by adding either ``-<num>`` which
33 the item, but this can be changed by adding either ``-<num>`` which
34 would take the last num characters, or ``+<num>`` for the first num
34 would take the last num characters, or ``+<num>`` for the first num
35 characters.
35 characters.
36 """
36 """
37
37
38 import sys
38 import sys
39 import time
39 import time
40 import threading
40 import threading
41
41
42 from mercurial.i18n import _
42 from mercurial.i18n import _
43 # Note for extension authors: ONLY specify testedwith = 'internal' for
43 # Note for extension authors: ONLY specify testedwith = 'internal' for
44 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
44 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
45 # be specifying the version(s) of Mercurial they are tested with, or
45 # be specifying the version(s) of Mercurial they are tested with, or
46 # leave the attribute unspecified.
46 # leave the attribute unspecified.
47 testedwith = 'internal'
47 testedwith = 'internal'
48
48
49 from mercurial import encoding
49 from mercurial import encoding
50
50
51 def spacejoin(*args):
51 def spacejoin(*args):
52 return ' '.join(s for s in args if s)
52 return ' '.join(s for s in args if s)
53
53
54 def shouldprint(ui):
54 def shouldprint(ui):
55 return not ui.plain() and (ui._isatty(sys.stderr) or
55 return not ui.plain() and (ui._isatty(sys.stderr) or
56 ui.configbool('progress', 'assume-tty'))
56 ui.configbool('progress', 'assume-tty'))
57
57
58 def fmtremaining(seconds):
58 def fmtremaining(seconds):
59 if seconds < 60:
59 if seconds < 60:
60 # i18n: format XX seconds as "XXs"
60 # i18n: format XX seconds as "XXs"
61 return _("%02ds") % (seconds)
61 return _("%02ds") % (seconds)
62 minutes = seconds // 60
62 minutes = seconds // 60
63 if minutes < 60:
63 if minutes < 60:
64 seconds -= minutes * 60
64 seconds -= minutes * 60
65 # i18n: format X minutes and YY seconds as "XmYYs"
65 # i18n: format X minutes and YY seconds as "XmYYs"
66 return _("%dm%02ds") % (minutes, seconds)
66 return _("%dm%02ds") % (minutes, seconds)
67 # we're going to ignore seconds in this case
67 # we're going to ignore seconds in this case
68 minutes += 1
68 minutes += 1
69 hours = minutes // 60
69 hours = minutes // 60
70 minutes -= hours * 60
70 minutes -= hours * 60
71 if hours < 30:
71 if hours < 30:
72 # i18n: format X hours and YY minutes as "XhYYm"
72 # i18n: format X hours and YY minutes as "XhYYm"
73 return _("%dh%02dm") % (hours, minutes)
73 return _("%dh%02dm") % (hours, minutes)
74 # we're going to ignore minutes in this case
74 # we're going to ignore minutes in this case
75 hours += 1
75 hours += 1
76 days = hours // 24
76 days = hours // 24
77 hours -= days * 24
77 hours -= days * 24
78 if days < 15:
78 if days < 15:
79 # i18n: format X days and YY hours as "XdYYh"
79 # i18n: format X days and YY hours as "XdYYh"
80 return _("%dd%02dh") % (days, hours)
80 return _("%dd%02dh") % (days, hours)
81 # we're going to ignore hours in this case
81 # we're going to ignore hours in this case
82 days += 1
82 days += 1
83 weeks = days // 7
83 weeks = days // 7
84 days -= weeks * 7
84 days -= weeks * 7
85 if weeks < 55:
85 if weeks < 55:
86 # i18n: format X weeks and YY days as "XwYYd"
86 # i18n: format X weeks and YY days as "XwYYd"
87 return _("%dw%02dd") % (weeks, days)
87 return _("%dw%02dd") % (weeks, days)
88 # we're going to ignore days and treat a year as 52 weeks
88 # we're going to ignore days and treat a year as 52 weeks
89 weeks += 1
89 weeks += 1
90 years = weeks // 52
90 years = weeks // 52
91 weeks -= years * 52
91 weeks -= years * 52
92 # i18n: format X years and YY weeks as "XyYYw"
92 # i18n: format X years and YY weeks as "XyYYw"
93 return _("%dy%02dw") % (years, weeks)
93 return _("%dy%02dw") % (years, weeks)
94
94
95 class progbar(object):
95 class progbar(object):
96 def __init__(self, ui):
96 def __init__(self, ui):
97 self.ui = ui
97 self.ui = ui
98 self._refreshlock = threading.Lock()
98 self._refreshlock = threading.Lock()
99 self.resetstate()
99 self.resetstate()
100
100
101 def resetstate(self):
101 def resetstate(self):
102 self.topics = []
102 self.topics = []
103 self.topicstates = {}
103 self.topicstates = {}
104 self.starttimes = {}
104 self.starttimes = {}
105 self.startvals = {}
105 self.startvals = {}
106 self.printed = False
106 self.printed = False
107 self.lastprint = time.time() + float(self.ui.config(
107 self.lastprint = time.time() + float(self.ui.config(
108 'progress', 'delay', default=3))
108 'progress', 'delay', default=3))
109 self.curtopic = None
109 self.curtopic = None
110 self.lasttopic = None
110 self.lasttopic = None
111 self.indetcount = 0
111 self.indetcount = 0
112 self.refresh = float(self.ui.config(
112 self.refresh = float(self.ui.config(
113 'progress', 'refresh', default=0.1))
113 'progress', 'refresh', default=0.1))
114 self.changedelay = max(3 * self.refresh,
114 self.changedelay = max(3 * self.refresh,
115 float(self.ui.config(
115 float(self.ui.config(
116 'progress', 'changedelay', default=1)))
116 'progress', 'changedelay', default=1)))
117 self.order = self.ui.configlist(
117 self.order = self.ui.configlist(
118 'progress', 'format',
118 'progress', 'format',
119 default=['topic', 'bar', 'number', 'estimate'])
119 default=['topic', 'bar', 'number', 'estimate'])
120
120
121 def show(self, now, topic, pos, item, unit, total):
121 def show(self, now, topic, pos, item, unit, total):
122 if not shouldprint(self.ui):
122 if not shouldprint(self.ui):
123 return
123 return
124 termwidth = self.width()
124 termwidth = self.width()
125 self.printed = True
125 self.printed = True
126 head = ''
126 head = ''
127 needprogress = False
127 needprogress = False
128 tail = ''
128 tail = ''
129 for indicator in self.order:
129 for indicator in self.order:
130 add = ''
130 add = ''
131 if indicator == 'topic':
131 if indicator == 'topic':
132 add = topic
132 add = topic
133 elif indicator == 'number':
133 elif indicator == 'number':
134 if total:
134 if total:
135 add = ('% ' + str(len(str(total))) +
135 add = ('% ' + str(len(str(total))) +
136 's/%s') % (pos, total)
136 's/%s') % (pos, total)
137 else:
137 else:
138 add = str(pos)
138 add = str(pos)
139 elif indicator.startswith('item') and item:
139 elif indicator.startswith('item') and item:
140 slice = 'end'
140 slice = 'end'
141 if '-' in indicator:
141 if '-' in indicator:
142 wid = int(indicator.split('-')[1])
142 wid = int(indicator.split('-')[1])
143 elif '+' in indicator:
143 elif '+' in indicator:
144 slice = 'beginning'
144 slice = 'beginning'
145 wid = int(indicator.split('+')[1])
145 wid = int(indicator.split('+')[1])
146 else:
146 else:
147 wid = 20
147 wid = 20
148 if slice == 'end':
148 if slice == 'end':
149 add = encoding.trim(item, wid, leftside=True)
149 add = encoding.trim(item, wid, leftside=True)
150 else:
150 else:
151 add = encoding.trim(item, wid)
151 add = encoding.trim(item, wid)
152 add += (wid - encoding.colwidth(add)) * ' '
152 add += (wid - encoding.colwidth(add)) * ' '
153 elif indicator == 'bar':
153 elif indicator == 'bar':
154 add = ''
154 add = ''
155 needprogress = True
155 needprogress = True
156 elif indicator == 'unit' and unit:
156 elif indicator == 'unit' and unit:
157 add = unit
157 add = unit
158 elif indicator == 'estimate':
158 elif indicator == 'estimate':
159 add = self.estimate(topic, pos, total, now)
159 add = self.estimate(topic, pos, total, now)
160 elif indicator == 'speed':
160 elif indicator == 'speed':
161 add = self.speed(topic, pos, unit, now)
161 add = self.speed(topic, pos, unit, now)
162 if not needprogress:
162 if not needprogress:
163 head = spacejoin(head, add)
163 head = spacejoin(head, add)
164 else:
164 else:
165 tail = spacejoin(tail, add)
165 tail = spacejoin(tail, add)
166 if needprogress:
166 if needprogress:
167 used = 0
167 used = 0
168 if head:
168 if head:
169 used += encoding.colwidth(head) + 1
169 used += encoding.colwidth(head) + 1
170 if tail:
170 if tail:
171 used += encoding.colwidth(tail) + 1
171 used += encoding.colwidth(tail) + 1
172 progwidth = termwidth - used - 3
172 progwidth = termwidth - used - 3
173 if total and pos <= total:
173 if total and pos <= total:
174 amt = pos * progwidth // total
174 amt = pos * progwidth // total
175 bar = '=' * (amt - 1)
175 bar = '=' * (amt - 1)
176 if amt > 0:
176 if amt > 0:
177 bar += '>'
177 bar += '>'
178 bar += ' ' * (progwidth - amt)
178 bar += ' ' * (progwidth - amt)
179 else:
179 else:
180 progwidth -= 3
180 progwidth -= 3
181 self.indetcount += 1
181 self.indetcount += 1
182 # mod the count by twice the width so we can make the
182 # mod the count by twice the width so we can make the
183 # cursor bounce between the right and left sides
183 # cursor bounce between the right and left sides
184 amt = self.indetcount % (2 * progwidth)
184 amt = self.indetcount % (2 * progwidth)
185 amt -= progwidth
185 amt -= progwidth
186 bar = (' ' * int(progwidth - abs(amt)) + '<=>' +
186 bar = (' ' * int(progwidth - abs(amt)) + '<=>' +
187 ' ' * int(abs(amt)))
187 ' ' * int(abs(amt)))
188 prog = ''.join(('[', bar , ']'))
188 prog = ''.join(('[', bar , ']'))
189 out = spacejoin(head, prog, tail)
189 out = spacejoin(head, prog, tail)
190 else:
190 else:
191 out = spacejoin(head, tail)
191 out = spacejoin(head, tail)
192 sys.stderr.write('\r' + encoding.trim(out, termwidth))
192 sys.stderr.write('\r' + encoding.trim(out, termwidth))
193 self.lasttopic = topic
193 self.lasttopic = topic
194 sys.stderr.flush()
194 sys.stderr.flush()
195
195
196 def clear(self):
196 def clear(self):
197 if not shouldprint(self.ui):
197 if not shouldprint(self.ui):
198 return
198 return
199 sys.stderr.write('\r%s\r' % (' ' * self.width()))
199 sys.stderr.write('\r%s\r' % (' ' * self.width()))
200
200
201 def complete(self):
201 def complete(self):
202 if not shouldprint(self.ui):
202 if not shouldprint(self.ui):
203 return
203 return
204 if self.ui.configbool('progress', 'clear-complete', default=True):
204 if self.ui.configbool('progress', 'clear-complete', default=True):
205 self.clear()
205 self.clear()
206 else:
206 else:
207 sys.stderr.write('\n')
207 sys.stderr.write('\n')
208 sys.stderr.flush()
208 sys.stderr.flush()
209
209
210 def width(self):
210 def width(self):
211 tw = self.ui.termwidth()
211 tw = self.ui.termwidth()
212 return min(int(self.ui.config('progress', 'width', default=tw)), tw)
212 return min(int(self.ui.config('progress', 'width', default=tw)), tw)
213
213
214 def estimate(self, topic, pos, total, now):
214 def estimate(self, topic, pos, total, now):
215 if total is None:
215 if total is None:
216 return ''
216 return ''
217 initialpos = self.startvals[topic]
217 initialpos = self.startvals[topic]
218 target = total - initialpos
218 target = total - initialpos
219 delta = pos - initialpos
219 delta = pos - initialpos
220 if delta > 0:
220 if delta > 0:
221 elapsed = now - self.starttimes[topic]
221 elapsed = now - self.starttimes[topic]
222 if elapsed > float(
222 if elapsed > float(
223 self.ui.config('progress', 'estimate', default=2)):
223 self.ui.config('progress', 'estimate', default=2)):
224 seconds = (elapsed * (target - delta)) // delta + 1
224 seconds = (elapsed * (target - delta)) // delta + 1
225 return fmtremaining(seconds)
225 return fmtremaining(seconds)
226 return ''
226 return ''
227
227
228 def speed(self, topic, pos, unit, now):
228 def speed(self, topic, pos, unit, now):
229 initialpos = self.startvals[topic]
229 initialpos = self.startvals[topic]
230 delta = pos - initialpos
230 delta = pos - initialpos
231 elapsed = now - self.starttimes[topic]
231 elapsed = now - self.starttimes[topic]
232 if elapsed > float(
232 if elapsed > float(
233 self.ui.config('progress', 'estimate', default=2)):
233 self.ui.config('progress', 'estimate', default=2)):
234 return _('%d %s/sec') % (delta / elapsed, unit)
234 return _('%d %s/sec') % (delta / elapsed, unit)
235 return ''
235 return ''
236
236
237 def _oktoprint(self, now):
237 def _oktoprint(self, now):
238 '''Check if conditions are met to print - e.g. changedelay elapsed'''
238 '''Check if conditions are met to print - e.g. changedelay elapsed'''
239 if (self.lasttopic is None # first time we printed
239 if (self.lasttopic is None # first time we printed
240 # not a topic change
240 # not a topic change
241 or self.curtopic == self.lasttopic
241 or self.curtopic == self.lasttopic
242 # it's been long enough we should print anyway
242 # it's been long enough we should print anyway
243 or now - self.lastprint >= self.changedelay):
243 or now - self.lastprint >= self.changedelay):
244 return True
244 return True
245 else:
245 else:
246 return False
246 return False
247
247
248 def progress(self, topic, pos, item='', unit='', total=None):
248 def progress(self, topic, pos, item='', unit='', total=None):
249 now = time.time()
249 now = time.time()
250 self._refreshlock.acquire()
250 self._refreshlock.acquire()
251 try:
251 try:
252 if pos is None:
252 if pos is None:
253 self.starttimes.pop(topic, None)
253 self.starttimes.pop(topic, None)
254 self.startvals.pop(topic, None)
254 self.startvals.pop(topic, None)
255 self.topicstates.pop(topic, None)
255 self.topicstates.pop(topic, None)
256 # reset the progress bar if this is the outermost topic
256 # reset the progress bar if this is the outermost topic
257 if self.topics and self.topics[0] == topic and self.printed:
257 if self.topics and self.topics[0] == topic and self.printed:
258 self.complete()
258 self.complete()
259 self.resetstate()
259 self.resetstate()
260 # truncate the list of topics assuming all topics within
260 # truncate the list of topics assuming all topics within
261 # this one are also closed
261 # this one are also closed
262 if topic in self.topics:
262 if topic in self.topics:
263 self.topics = self.topics[:self.topics.index(topic)]
263 self.topics = self.topics[:self.topics.index(topic)]
264 # reset the last topic to the one we just unwound to,
264 # reset the last topic to the one we just unwound to,
265 # so that higher-level topics will be stickier than
265 # so that higher-level topics will be stickier than
266 # lower-level topics
266 # lower-level topics
267 if self.topics:
267 if self.topics:
268 self.lasttopic = self.topics[-1]
268 self.lasttopic = self.topics[-1]
269 else:
269 else:
270 self.lasttopic = None
270 self.lasttopic = None
271 else:
271 else:
272 if topic not in self.topics:
272 if topic not in self.topics:
273 self.starttimes[topic] = now
273 self.starttimes[topic] = now
274 self.startvals[topic] = pos
274 self.startvals[topic] = pos
275 self.topics.append(topic)
275 self.topics.append(topic)
276 self.topicstates[topic] = pos, item, unit, total
276 self.topicstates[topic] = pos, item, unit, total
277 self.curtopic = topic
277 self.curtopic = topic
278 if now - self.lastprint >= self.refresh and self.topics:
278 if now - self.lastprint >= self.refresh and self.topics:
279 if self._oktoprint(now):
279 if self._oktoprint(now):
280 self.lastprint = now
280 self.lastprint = now
281 self.show(now, topic, *self.topicstates[topic])
281 self.show(now, topic, *self.topicstates[topic])
282 finally:
282 finally:
283 self._refreshlock.release()
283 self._refreshlock.release()
284
284
285 _singleton = None
285 _singleton = None
286
286
287 def uisetup(ui):
287 def uisetup(ui):
288 global _singleton
288 global _singleton
289 class progressui(ui.__class__):
289 class progressui(ui.__class__):
290 _progbar = None
290 _progbar = None
291
291
292 def _quiet(self):
292 def _quiet(self):
293 return self.debugflag or self.quiet
293 return self.debugflag or self.quiet
294
294
295 def progress(self, *args, **opts):
295 def progress(self, *args, **opts):
296 if not self._quiet():
296 if not self._quiet():
297 self._progbar.progress(*args, **opts)
297 self._progbar.progress(*args, **opts)
298 return super(progressui, self).progress(*args, **opts)
298 return super(progressui, self).progress(*args, **opts)
299
299
300 def write(self, *args, **opts):
300 def write(self, *args, **opts):
301 if not self._quiet() and self._progbar.printed:
301 if not self._quiet() and self._progbar.printed:
302 self._progbar.clear()
302 self._progbar.clear()
303 return super(progressui, self).write(*args, **opts)
303 return super(progressui, self).write(*args, **opts)
304
304
305 def write_err(self, *args, **opts):
305 def write_err(self, *args, **opts):
306 if not self._quiet() and self._progbar.printed:
306 if not self._quiet() and self._progbar.printed:
307 self._progbar.clear()
307 self._progbar.clear()
308 return super(progressui, self).write_err(*args, **opts)
308 return super(progressui, self).write_err(*args, **opts)
309
309
310 # Apps that derive a class from ui.ui() can use
310 # Apps that derive a class from ui.ui() can use
311 # setconfig('progress', 'disable', 'True') to disable this extension
311 # setconfig('progress', 'disable', 'True') to disable this extension
312 if ui.configbool('progress', 'disable'):
312 if ui.configbool('progress', 'disable'):
313 return
313 return
314 if shouldprint(ui) and not ui.debugflag and not ui.quiet:
314 if shouldprint(ui) and not ui.debugflag and not ui.quiet:
315 ui.__class__ = progressui
315 dval = object()
316 # we instantiate one globally shared progress bar to avoid
316 if getattr(ui, '_progbar', dval) is dval:
317 # competing progress bars when multiple UI objects get created
317 ui.__class__ = progressui
318 if not progressui._progbar:
318 # we instantiate one globally-shared progress bar to avoid
319 if _singleton is None:
319 # competing progress bars when multiple UI objects get created
320 _singleton = progbar(ui)
320 if not progressui._progbar:
321 progressui._progbar = _singleton
321 if _singleton is None:
322 _singleton = progbar(ui)
323 progressui._progbar = _singleton
322
324
323 def reposetup(ui, repo):
325 def reposetup(ui, repo):
324 uisetup(repo.ui)
326 uisetup(repo.ui)
@@ -1,369 +1,362
1 #require serve
1 #require serve
2
2
3 $ hg init test
3 $ hg init test
4 $ cd test
4 $ cd test
5 $ echo foo>foo
5 $ echo foo>foo
6 $ hg commit -Am 1 -d '1 0'
6 $ hg commit -Am 1 -d '1 0'
7 adding foo
7 adding foo
8 $ echo bar>bar
8 $ echo bar>bar
9 $ hg commit -Am 2 -d '2 0'
9 $ hg commit -Am 2 -d '2 0'
10 adding bar
10 adding bar
11 $ mkdir baz
11 $ mkdir baz
12 $ echo bletch>baz/bletch
12 $ echo bletch>baz/bletch
13 $ hg commit -Am 3 -d '1000000000 0'
13 $ hg commit -Am 3 -d '1000000000 0'
14 adding baz/bletch
14 adding baz/bletch
15 $ hg init subrepo
15 $ hg init subrepo
16 $ touch subrepo/sub
16 $ touch subrepo/sub
17 $ hg -q -R subrepo ci -Am "init subrepo"
17 $ hg -q -R subrepo ci -Am "init subrepo"
18 $ echo "subrepo = subrepo" > .hgsub
18 $ echo "subrepo = subrepo" > .hgsub
19 $ hg add .hgsub
19 $ hg add .hgsub
20 $ hg ci -m "add subrepo"
20 $ hg ci -m "add subrepo"
21 $ echo "[web]" >> .hg/hgrc
21 $ echo "[web]" >> .hg/hgrc
22 $ echo "name = test-archive" >> .hg/hgrc
22 $ echo "name = test-archive" >> .hg/hgrc
23 $ echo "archivesubrepos = True" >> .hg/hgrc
23 $ echo "archivesubrepos = True" >> .hg/hgrc
24 $ cp .hg/hgrc .hg/hgrc-base
24 $ cp .hg/hgrc .hg/hgrc-base
25 > test_archtype() {
25 > test_archtype() {
26 > echo "allow_archive = $1" >> .hg/hgrc
26 > echo "allow_archive = $1" >> .hg/hgrc
27 > hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
27 > hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
28 > cat hg.pid >> $DAEMON_PIDS
28 > cat hg.pid >> $DAEMON_PIDS
29 > echo % $1 allowed should give 200
29 > echo % $1 allowed should give 200
30 > get-with-headers.py localhost:$HGPORT "archive/tip.$2" | head -n 1
30 > get-with-headers.py localhost:$HGPORT "archive/tip.$2" | head -n 1
31 > echo % $3 and $4 disallowed should both give 403
31 > echo % $3 and $4 disallowed should both give 403
32 > get-with-headers.py localhost:$HGPORT "archive/tip.$3" | head -n 1
32 > get-with-headers.py localhost:$HGPORT "archive/tip.$3" | head -n 1
33 > get-with-headers.py localhost:$HGPORT "archive/tip.$4" | head -n 1
33 > get-with-headers.py localhost:$HGPORT "archive/tip.$4" | head -n 1
34 > killdaemons.py
34 > killdaemons.py
35 > cat errors.log
35 > cat errors.log
36 > cp .hg/hgrc-base .hg/hgrc
36 > cp .hg/hgrc-base .hg/hgrc
37 > }
37 > }
38
38
39 check http return codes
39 check http return codes
40
40
41 $ test_archtype gz tar.gz tar.bz2 zip
41 $ test_archtype gz tar.gz tar.bz2 zip
42 % gz allowed should give 200
42 % gz allowed should give 200
43 200 Script output follows
43 200 Script output follows
44 % tar.bz2 and zip disallowed should both give 403
44 % tar.bz2 and zip disallowed should both give 403
45 403 Archive type not allowed: bz2
45 403 Archive type not allowed: bz2
46 403 Archive type not allowed: zip
46 403 Archive type not allowed: zip
47 $ test_archtype bz2 tar.bz2 zip tar.gz
47 $ test_archtype bz2 tar.bz2 zip tar.gz
48 % bz2 allowed should give 200
48 % bz2 allowed should give 200
49 200 Script output follows
49 200 Script output follows
50 % zip and tar.gz disallowed should both give 403
50 % zip and tar.gz disallowed should both give 403
51 403 Archive type not allowed: zip
51 403 Archive type not allowed: zip
52 403 Archive type not allowed: gz
52 403 Archive type not allowed: gz
53 $ test_archtype zip zip tar.gz tar.bz2
53 $ test_archtype zip zip tar.gz tar.bz2
54 % zip allowed should give 200
54 % zip allowed should give 200
55 200 Script output follows
55 200 Script output follows
56 % tar.gz and tar.bz2 disallowed should both give 403
56 % tar.gz and tar.bz2 disallowed should both give 403
57 403 Archive type not allowed: gz
57 403 Archive type not allowed: gz
58 403 Archive type not allowed: bz2
58 403 Archive type not allowed: bz2
59
59
60 $ echo "allow_archive = gz bz2 zip" >> .hg/hgrc
60 $ echo "allow_archive = gz bz2 zip" >> .hg/hgrc
61 $ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
61 $ hg serve -p $HGPORT -d --pid-file=hg.pid -E errors.log
62 $ cat hg.pid >> $DAEMON_PIDS
62 $ cat hg.pid >> $DAEMON_PIDS
63
63
64 invalid arch type should give 404
64 invalid arch type should give 404
65
65
66 $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
66 $ get-with-headers.py localhost:$HGPORT "archive/tip.invalid" | head -n 1
67 404 Unsupported archive type: None
67 404 Unsupported archive type: None
68
68
69 $ TIP=`hg id -v | cut -f1 -d' '`
69 $ TIP=`hg id -v | cut -f1 -d' '`
70 $ QTIP=`hg id -q`
70 $ QTIP=`hg id -q`
71 $ cat > getarchive.py <<EOF
71 $ cat > getarchive.py <<EOF
72 > import os, sys, urllib2
72 > import os, sys, urllib2
73 > try:
73 > try:
74 > # Set stdout to binary mode for win32 platforms
74 > # Set stdout to binary mode for win32 platforms
75 > import msvcrt
75 > import msvcrt
76 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
76 > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
77 > except ImportError:
77 > except ImportError:
78 > pass
78 > pass
79 > if len(sys.argv) <= 3:
79 > if len(sys.argv) <= 3:
80 > node, archive = sys.argv[1:]
80 > node, archive = sys.argv[1:]
81 > requeststr = 'cmd=archive;node=%s;type=%s' % (node, archive)
81 > requeststr = 'cmd=archive;node=%s;type=%s' % (node, archive)
82 > else:
82 > else:
83 > node, archive, file = sys.argv[1:]
83 > node, archive, file = sys.argv[1:]
84 > requeststr = 'cmd=archive;node=%s;type=%s;file=%s' % (node, archive, file)
84 > requeststr = 'cmd=archive;node=%s;type=%s;file=%s' % (node, archive, file)
85 > try:
85 > try:
86 > f = urllib2.urlopen('http://127.0.0.1:%s/?%s'
86 > f = urllib2.urlopen('http://127.0.0.1:%s/?%s'
87 > % (os.environ['HGPORT'], requeststr))
87 > % (os.environ['HGPORT'], requeststr))
88 > sys.stdout.write(f.read())
88 > sys.stdout.write(f.read())
89 > except urllib2.HTTPError, e:
89 > except urllib2.HTTPError, e:
90 > sys.stderr.write(str(e) + '\n')
90 > sys.stderr.write(str(e) + '\n')
91 > EOF
91 > EOF
92 $ python getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null
92 $ python getarchive.py "$TIP" gz | gunzip | tar tf - 2>/dev/null
93 test-archive-1701ef1f1510/.hg_archival.txt
93 test-archive-1701ef1f1510/.hg_archival.txt
94 test-archive-1701ef1f1510/.hgsub
94 test-archive-1701ef1f1510/.hgsub
95 test-archive-1701ef1f1510/.hgsubstate
95 test-archive-1701ef1f1510/.hgsubstate
96 test-archive-1701ef1f1510/bar
96 test-archive-1701ef1f1510/bar
97 test-archive-1701ef1f1510/baz/bletch
97 test-archive-1701ef1f1510/baz/bletch
98 test-archive-1701ef1f1510/foo
98 test-archive-1701ef1f1510/foo
99 test-archive-1701ef1f1510/subrepo/sub
99 test-archive-1701ef1f1510/subrepo/sub
100 $ python getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
100 $ python getarchive.py "$TIP" bz2 | bunzip2 | tar tf - 2>/dev/null
101 test-archive-1701ef1f1510/.hg_archival.txt
101 test-archive-1701ef1f1510/.hg_archival.txt
102 test-archive-1701ef1f1510/.hgsub
102 test-archive-1701ef1f1510/.hgsub
103 test-archive-1701ef1f1510/.hgsubstate
103 test-archive-1701ef1f1510/.hgsubstate
104 test-archive-1701ef1f1510/bar
104 test-archive-1701ef1f1510/bar
105 test-archive-1701ef1f1510/baz/bletch
105 test-archive-1701ef1f1510/baz/bletch
106 test-archive-1701ef1f1510/foo
106 test-archive-1701ef1f1510/foo
107 test-archive-1701ef1f1510/subrepo/sub
107 test-archive-1701ef1f1510/subrepo/sub
108 $ python getarchive.py "$TIP" zip > archive.zip
108 $ python getarchive.py "$TIP" zip > archive.zip
109 $ unzip -t archive.zip
109 $ unzip -t archive.zip
110 Archive: archive.zip
110 Archive: archive.zip
111 testing: test-archive-1701ef1f1510/.hg_archival.txt OK
111 testing: test-archive-1701ef1f1510/.hg_archival.txt OK
112 testing: test-archive-1701ef1f1510/.hgsub OK
112 testing: test-archive-1701ef1f1510/.hgsub OK
113 testing: test-archive-1701ef1f1510/.hgsubstate OK
113 testing: test-archive-1701ef1f1510/.hgsubstate OK
114 testing: test-archive-1701ef1f1510/bar OK
114 testing: test-archive-1701ef1f1510/bar OK
115 testing: test-archive-1701ef1f1510/baz/bletch OK
115 testing: test-archive-1701ef1f1510/baz/bletch OK
116 testing: test-archive-1701ef1f1510/foo OK
116 testing: test-archive-1701ef1f1510/foo OK
117 testing: test-archive-1701ef1f1510/subrepo/sub OK
117 testing: test-archive-1701ef1f1510/subrepo/sub OK
118 No errors detected in compressed data of archive.zip.
118 No errors detected in compressed data of archive.zip.
119
119
120 test that we can download single directories and files
120 test that we can download single directories and files
121
121
122 $ python getarchive.py "$TIP" gz baz | gunzip | tar tf - 2>/dev/null
122 $ python getarchive.py "$TIP" gz baz | gunzip | tar tf - 2>/dev/null
123 test-archive-1701ef1f1510/baz/bletch
123 test-archive-1701ef1f1510/baz/bletch
124 $ python getarchive.py "$TIP" gz foo | gunzip | tar tf - 2>/dev/null
124 $ python getarchive.py "$TIP" gz foo | gunzip | tar tf - 2>/dev/null
125 test-archive-1701ef1f1510/foo
125 test-archive-1701ef1f1510/foo
126
126
127 test that we detect file patterns that match no files
127 test that we detect file patterns that match no files
128
128
129 $ python getarchive.py "$TIP" gz foobar
129 $ python getarchive.py "$TIP" gz foobar
130 HTTP Error 404: file(s) not found: foobar
130 HTTP Error 404: file(s) not found: foobar
131
131
132 test that we reject unsafe patterns
132 test that we reject unsafe patterns
133
133
134 $ python getarchive.py "$TIP" gz relre:baz
134 $ python getarchive.py "$TIP" gz relre:baz
135 HTTP Error 404: file(s) not found: relre:baz
135 HTTP Error 404: file(s) not found: relre:baz
136
136
137 $ killdaemons.py
137 $ killdaemons.py
138
138
139 $ hg archive -t tar test.tar
139 $ hg archive -t tar test.tar
140 $ tar tf test.tar
140 $ tar tf test.tar
141 test/.hg_archival.txt
141 test/.hg_archival.txt
142 test/.hgsub
142 test/.hgsub
143 test/.hgsubstate
143 test/.hgsubstate
144 test/bar
144 test/bar
145 test/baz/bletch
145 test/baz/bletch
146 test/foo
146 test/foo
147
147
148 $ hg archive --debug -t tbz2 -X baz test.tar.bz2 --config progress.debug=true
148 $ hg archive --debug -t tbz2 -X baz test.tar.bz2 --config progress.debug=true
149 archiving: 0/4 files (0.00%)
149 archiving: 0/4 files (0.00%)
150 archiving: .hgsub 1/4 files (25.00%)
150 archiving: .hgsub 1/4 files (25.00%)
151 archiving: .hgsubstate 2/4 files (50.00%)
151 archiving: .hgsubstate 2/4 files (50.00%)
152 archiving: bar 3/4 files (75.00%)
152 archiving: bar 3/4 files (75.00%)
153 archiving: foo 4/4 files (100.00%)
153 archiving: foo 4/4 files (100.00%)
154 $ bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null
154 $ bunzip2 -dc test.tar.bz2 | tar tf - 2>/dev/null
155 test/.hg_archival.txt
155 test/.hg_archival.txt
156 test/.hgsub
156 test/.hgsub
157 test/.hgsubstate
157 test/.hgsubstate
158 test/bar
158 test/bar
159 test/foo
159 test/foo
160
160
161 $ hg archive -t tgz -p %b-%h test-%h.tar.gz
161 $ hg archive -t tgz -p %b-%h test-%h.tar.gz
162 $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null
162 $ gzip -dc test-$QTIP.tar.gz | tar tf - 2>/dev/null
163 test-1701ef1f1510/.hg_archival.txt
163 test-1701ef1f1510/.hg_archival.txt
164 test-1701ef1f1510/.hgsub
164 test-1701ef1f1510/.hgsub
165 test-1701ef1f1510/.hgsubstate
165 test-1701ef1f1510/.hgsubstate
166 test-1701ef1f1510/bar
166 test-1701ef1f1510/bar
167 test-1701ef1f1510/baz/bletch
167 test-1701ef1f1510/baz/bletch
168 test-1701ef1f1510/foo
168 test-1701ef1f1510/foo
169
169
170 $ hg archive autodetected_test.tar
170 $ hg archive autodetected_test.tar
171 $ tar tf autodetected_test.tar
171 $ tar tf autodetected_test.tar
172 autodetected_test/.hg_archival.txt
172 autodetected_test/.hg_archival.txt
173 autodetected_test/.hgsub
173 autodetected_test/.hgsub
174 autodetected_test/.hgsubstate
174 autodetected_test/.hgsubstate
175 autodetected_test/bar
175 autodetected_test/bar
176 autodetected_test/baz/bletch
176 autodetected_test/baz/bletch
177 autodetected_test/foo
177 autodetected_test/foo
178
178
179 The '-t' should override autodetection
179 The '-t' should override autodetection
180
180
181 $ hg archive -t tar autodetect_override_test.zip
181 $ hg archive -t tar autodetect_override_test.zip
182 $ tar tf autodetect_override_test.zip
182 $ tar tf autodetect_override_test.zip
183 autodetect_override_test.zip/.hg_archival.txt
183 autodetect_override_test.zip/.hg_archival.txt
184 autodetect_override_test.zip/.hgsub
184 autodetect_override_test.zip/.hgsub
185 autodetect_override_test.zip/.hgsubstate
185 autodetect_override_test.zip/.hgsubstate
186 autodetect_override_test.zip/bar
186 autodetect_override_test.zip/bar
187 autodetect_override_test.zip/baz/bletch
187 autodetect_override_test.zip/baz/bletch
188 autodetect_override_test.zip/foo
188 autodetect_override_test.zip/foo
189
189
190 $ for ext in tar tar.gz tgz tar.bz2 tbz2 zip; do
190 $ for ext in tar tar.gz tgz tar.bz2 tbz2 zip; do
191 > hg archive auto_test.$ext
191 > hg archive auto_test.$ext
192 > if [ -d auto_test.$ext ]; then
192 > if [ -d auto_test.$ext ]; then
193 > echo "extension $ext was not autodetected."
193 > echo "extension $ext was not autodetected."
194 > fi
194 > fi
195 > done
195 > done
196
196
197 $ cat > md5comp.py <<EOF
197 $ cat > md5comp.py <<EOF
198 > try:
198 > try:
199 > from hashlib import md5
199 > from hashlib import md5
200 > except ImportError:
200 > except ImportError:
201 > from md5 import md5
201 > from md5 import md5
202 > import sys
202 > import sys
203 > f1, f2 = sys.argv[1:3]
203 > f1, f2 = sys.argv[1:3]
204 > h1 = md5(file(f1, 'rb').read()).hexdigest()
204 > h1 = md5(file(f1, 'rb').read()).hexdigest()
205 > h2 = md5(file(f2, 'rb').read()).hexdigest()
205 > h2 = md5(file(f2, 'rb').read()).hexdigest()
206 > print h1 == h2 or "md5 differ: " + repr((h1, h2))
206 > print h1 == h2 or "md5 differ: " + repr((h1, h2))
207 > EOF
207 > EOF
208
208
209 archive name is stored in the archive, so create similar archives and
209 archive name is stored in the archive, so create similar archives and
210 rename them afterwards.
210 rename them afterwards.
211
211
212 $ hg archive -t tgz tip.tar.gz
212 $ hg archive -t tgz tip.tar.gz
213 $ mv tip.tar.gz tip1.tar.gz
213 $ mv tip.tar.gz tip1.tar.gz
214 $ sleep 1
214 $ sleep 1
215 $ hg archive -t tgz tip.tar.gz
215 $ hg archive -t tgz tip.tar.gz
216 $ mv tip.tar.gz tip2.tar.gz
216 $ mv tip.tar.gz tip2.tar.gz
217 $ python md5comp.py tip1.tar.gz tip2.tar.gz
217 $ python md5comp.py tip1.tar.gz tip2.tar.gz
218 True
218 True
219
219
220 $ hg archive -t zip -p /illegal test.zip
220 $ hg archive -t zip -p /illegal test.zip
221 abort: archive prefix contains illegal components
221 abort: archive prefix contains illegal components
222 [255]
222 [255]
223 $ hg archive -t zip -p very/../bad test.zip
223 $ hg archive -t zip -p very/../bad test.zip
224
224
225 $ hg archive --config ui.archivemeta=false -t zip -r 2 test.zip
225 $ hg archive --config ui.archivemeta=false -t zip -r 2 test.zip
226 $ unzip -t test.zip
226 $ unzip -t test.zip
227 Archive: test.zip
227 Archive: test.zip
228 testing: test/bar OK
228 testing: test/bar OK
229 testing: test/baz/bletch OK
229 testing: test/baz/bletch OK
230 testing: test/foo OK
230 testing: test/foo OK
231 No errors detected in compressed data of test.zip.
231 No errors detected in compressed data of test.zip.
232
232
233 $ hg archive -t tar - | tar tf - 2>/dev/null
233 $ hg archive -t tar - | tar tf - 2>/dev/null
234 test-1701ef1f1510/.hg_archival.txt
234 test-1701ef1f1510/.hg_archival.txt
235 test-1701ef1f1510/.hgsub
235 test-1701ef1f1510/.hgsub
236 test-1701ef1f1510/.hgsubstate
236 test-1701ef1f1510/.hgsubstate
237 test-1701ef1f1510/bar
237 test-1701ef1f1510/bar
238 test-1701ef1f1510/baz/bletch
238 test-1701ef1f1510/baz/bletch
239 test-1701ef1f1510/foo
239 test-1701ef1f1510/foo
240
240
241 $ hg archive -r 0 -t tar rev-%r.tar
241 $ hg archive -r 0 -t tar rev-%r.tar
242 $ [ -f rev-0.tar ]
242 $ [ -f rev-0.tar ]
243
243
244 test .hg_archival.txt
244 test .hg_archival.txt
245
245
246 $ hg archive ../test-tags
246 $ hg archive ../test-tags
247 $ cat ../test-tags/.hg_archival.txt
247 $ cat ../test-tags/.hg_archival.txt
248 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
248 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
249 node: 1701ef1f151069b8747038e93b5186bb43a47504
249 node: 1701ef1f151069b8747038e93b5186bb43a47504
250 branch: default
250 branch: default
251 latesttag: null
251 latesttag: null
252 latesttagdistance: 4
252 latesttagdistance: 4
253 changessincelatesttag: 4
253 changessincelatesttag: 4
254 $ hg tag -r 2 mytag
254 $ hg tag -r 2 mytag
255 $ hg tag -r 2 anothertag
255 $ hg tag -r 2 anothertag
256 $ hg archive -r 2 ../test-lasttag
256 $ hg archive -r 2 ../test-lasttag
257 $ cat ../test-lasttag/.hg_archival.txt
257 $ cat ../test-lasttag/.hg_archival.txt
258 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
258 repo: daa7f7c60e0a224faa4ff77ca41b2760562af264
259 node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
259 node: 2c0277f05ed49d1c8328fb9ba92fba7a5ebcb33e
260 branch: default
260 branch: default
261 tag: anothertag
261 tag: anothertag
262 tag: mytag
262 tag: mytag
263
263
264 $ hg archive -t bogus test.bogus
264 $ hg archive -t bogus test.bogus
265 abort: unknown archive type 'bogus'
265 abort: unknown archive type 'bogus'
266 [255]
266 [255]
267
267
268 enable progress extension:
268 enable progress extension:
269
269
270 $ cp $HGRCPATH $HGRCPATH.no-progress
270 $ cp $HGRCPATH $HGRCPATH.no-progress
271 $ cat >> $HGRCPATH <<EOF
271 $ cat >> $HGRCPATH <<EOF
272 > [extensions]
272 > [extensions]
273 > progress =
273 > progress =
274 > [progress]
274 > [progress]
275 > assume-tty = 1
275 > assume-tty = 1
276 > format = topic bar number
276 > format = topic bar number
277 > delay = 0
277 > delay = 0
278 > refresh = 0
278 > refresh = 0
279 > width = 60
279 > width = 60
280 > EOF
280 > EOF
281
281
282 $ hg archive ../with-progress
282 $ hg archive ../with-progress
283 \r (no-eol) (esc)
283 \r (no-eol) (esc)
284 archiving [ ] 0/6\r (no-eol) (esc)
284 archiving [ ] 0/6\r (no-eol) (esc)
285 archiving [ ] 0/6\r (no-eol) (esc)
286 archiving [======> ] 1/6\r (no-eol) (esc)
285 archiving [======> ] 1/6\r (no-eol) (esc)
287 archiving [======> ] 1/6\r (no-eol) (esc)
288 archiving [=============> ] 2/6\r (no-eol) (esc)
289 archiving [=============> ] 2/6\r (no-eol) (esc)
286 archiving [=============> ] 2/6\r (no-eol) (esc)
290 archiving [====================> ] 3/6\r (no-eol) (esc)
287 archiving [====================> ] 3/6\r (no-eol) (esc)
291 archiving [====================> ] 3/6\r (no-eol) (esc)
292 archiving [===========================> ] 4/6\r (no-eol) (esc)
293 archiving [===========================> ] 4/6\r (no-eol) (esc)
288 archiving [===========================> ] 4/6\r (no-eol) (esc)
294 archiving [==================================> ] 5/6\r (no-eol) (esc)
289 archiving [==================================> ] 5/6\r (no-eol) (esc)
295 archiving [==================================> ] 5/6\r (no-eol) (esc)
296 archiving [==========================================>] 6/6\r (no-eol) (esc)
297 archiving [==========================================>] 6/6\r (no-eol) (esc)
290 archiving [==========================================>] 6/6\r (no-eol) (esc)
298 \r (no-eol) (esc)
291 \r (no-eol) (esc)
299
292
300 cleanup after progress extension test:
293 cleanup after progress extension test:
301
294
302 $ cp $HGRCPATH.no-progress $HGRCPATH
295 $ cp $HGRCPATH.no-progress $HGRCPATH
303
296
304 server errors
297 server errors
305
298
306 $ cat errors.log
299 $ cat errors.log
307
300
308 empty repo
301 empty repo
309
302
310 $ hg init ../empty
303 $ hg init ../empty
311 $ cd ../empty
304 $ cd ../empty
312 $ hg archive ../test-empty
305 $ hg archive ../test-empty
313 abort: no working directory: please specify a revision
306 abort: no working directory: please specify a revision
314 [255]
307 [255]
315
308
316 old file -- date clamped to 1980
309 old file -- date clamped to 1980
317
310
318 $ touch -t 197501010000 old
311 $ touch -t 197501010000 old
319 $ hg add old
312 $ hg add old
320 $ hg commit -m old
313 $ hg commit -m old
321 $ hg archive ../old.zip
314 $ hg archive ../old.zip
322 $ unzip -l ../old.zip
315 $ unzip -l ../old.zip
323 Archive: ../old.zip
316 Archive: ../old.zip
324 \s*Length.* (re)
317 \s*Length.* (re)
325 *-----* (glob)
318 *-----* (glob)
326 *172*80*00:00*old/.hg_archival.txt (glob)
319 *172*80*00:00*old/.hg_archival.txt (glob)
327 *0*80*00:00*old/old (glob)
320 *0*80*00:00*old/old (glob)
328 *-----* (glob)
321 *-----* (glob)
329 \s*172\s+2 files (re)
322 \s*172\s+2 files (re)
330
323
331 show an error when a provided pattern matches no files
324 show an error when a provided pattern matches no files
332
325
333 $ hg archive -I file_that_does_not_exist.foo ../empty.zip
326 $ hg archive -I file_that_does_not_exist.foo ../empty.zip
334 abort: no files match the archive pattern
327 abort: no files match the archive pattern
335 [255]
328 [255]
336
329
337 $ hg archive -X * ../empty.zip
330 $ hg archive -X * ../empty.zip
338 abort: no files match the archive pattern
331 abort: no files match the archive pattern
339 [255]
332 [255]
340
333
341 $ cd ..
334 $ cd ..
342
335
343 issue3600: check whether "hg archive" can create archive files which
336 issue3600: check whether "hg archive" can create archive files which
344 are extracted with expected timestamp, even though TZ is not
337 are extracted with expected timestamp, even though TZ is not
345 configured as GMT.
338 configured as GMT.
346
339
347 $ mkdir issue3600
340 $ mkdir issue3600
348 $ cd issue3600
341 $ cd issue3600
349
342
350 $ hg init repo
343 $ hg init repo
351 $ echo a > repo/a
344 $ echo a > repo/a
352 $ hg -R repo add repo/a
345 $ hg -R repo add repo/a
353 $ hg -R repo commit -m '#0' -d '456789012 21600'
346 $ hg -R repo commit -m '#0' -d '456789012 21600'
354 $ cat > show_mtime.py <<EOF
347 $ cat > show_mtime.py <<EOF
355 > import sys, os
348 > import sys, os
356 > print int(os.stat(sys.argv[1]).st_mtime)
349 > print int(os.stat(sys.argv[1]).st_mtime)
357 > EOF
350 > EOF
358
351
359 $ hg -R repo archive --prefix tar-extracted archive.tar
352 $ hg -R repo archive --prefix tar-extracted archive.tar
360 $ (TZ=UTC-3; export TZ; tar xf archive.tar)
353 $ (TZ=UTC-3; export TZ; tar xf archive.tar)
361 $ python show_mtime.py tar-extracted/a
354 $ python show_mtime.py tar-extracted/a
362 456789012
355 456789012
363
356
364 $ hg -R repo archive --prefix zip-extracted archive.zip
357 $ hg -R repo archive --prefix zip-extracted archive.zip
365 $ (TZ=UTC-3; export TZ; unzip -q archive.zip)
358 $ (TZ=UTC-3; export TZ; unzip -q archive.zip)
366 $ python show_mtime.py zip-extracted/a
359 $ python show_mtime.py zip-extracted/a
367 456789012
360 456789012
368
361
369 $ cd ..
362 $ cd ..
@@ -1,347 +1,330
1
1
2 plain
2 plain
3
3
4 $ hg init
4 $ hg init
5 $ hg debugbuilddag '+2:f +3:p2 @temp <f+4 @default /p2 +2' \
5 $ hg debugbuilddag '+2:f +3:p2 @temp <f+4 @default /p2 +2' \
6 > --config extensions.progress= --config progress.assume-tty=1 \
6 > --config extensions.progress= --config progress.assume-tty=1 \
7 > --config progress.delay=0 --config progress.refresh=0 \
7 > --config progress.delay=0 --config progress.refresh=0 \
8 > --config progress.format=topic,bar,number \
8 > --config progress.format=topic,bar,number \
9 > --config progress.width=60
9 > --config progress.width=60
10 \r (no-eol) (esc)
10 \r (no-eol) (esc)
11 building [ ] 0/12\r (no-eol) (esc)
11 building [ ] 0/12\r (no-eol) (esc)
12 building [ ] 0/12\r (no-eol) (esc)
12 building [ ] 0/12\r (no-eol) (esc)
13 building [ ] 0/12\r (no-eol) (esc)
14 building [ ] 0/12\r (no-eol) (esc)
15 building [==> ] 1/12\r (no-eol) (esc)
16 building [==> ] 1/12\r (no-eol) (esc)
17 building [==> ] 1/12\r (no-eol) (esc)
13 building [==> ] 1/12\r (no-eol) (esc)
18 building [==> ] 1/12\r (no-eol) (esc)
14 building [==> ] 1/12\r (no-eol) (esc)
19 building [======> ] 2/12\r (no-eol) (esc)
15 building [======> ] 2/12\r (no-eol) (esc)
20 building [======> ] 2/12\r (no-eol) (esc)
21 building [=========> ] 3/12\r (no-eol) (esc)
22 building [=========> ] 3/12\r (no-eol) (esc)
16 building [=========> ] 3/12\r (no-eol) (esc)
23 building [=============> ] 4/12\r (no-eol) (esc)
17 building [=============> ] 4/12\r (no-eol) (esc)
24 building [=============> ] 4/12\r (no-eol) (esc)
18 building [=============> ] 4/12\r (no-eol) (esc)
25 building [=============> ] 4/12\r (no-eol) (esc)
19 building [=============> ] 4/12\r (no-eol) (esc)
26 building [=============> ] 4/12\r (no-eol) (esc)
27 building [=============> ] 4/12\r (no-eol) (esc)
28 building [=============> ] 4/12\r (no-eol) (esc)
29 building [================> ] 5/12\r (no-eol) (esc)
30 building [================> ] 5/12\r (no-eol) (esc)
20 building [================> ] 5/12\r (no-eol) (esc)
31 building [====================> ] 6/12\r (no-eol) (esc)
21 building [====================> ] 6/12\r (no-eol) (esc)
32 building [====================> ] 6/12\r (no-eol) (esc)
33 building [=======================> ] 7/12\r (no-eol) (esc)
34 building [=======================> ] 7/12\r (no-eol) (esc)
22 building [=======================> ] 7/12\r (no-eol) (esc)
35 building [===========================> ] 8/12\r (no-eol) (esc)
23 building [===========================> ] 8/12\r (no-eol) (esc)
36 building [===========================> ] 8/12\r (no-eol) (esc)
24 building [===========================> ] 8/12\r (no-eol) (esc)
37 building [===========================> ] 8/12\r (no-eol) (esc)
38 building [===========================> ] 8/12\r (no-eol) (esc)
39 building [==============================> ] 9/12\r (no-eol) (esc)
40 building [==============================> ] 9/12\r (no-eol) (esc)
25 building [==============================> ] 9/12\r (no-eol) (esc)
41 building [==================================> ] 10/12\r (no-eol) (esc)
26 building [==================================> ] 10/12\r (no-eol) (esc)
42 building [==================================> ] 10/12\r (no-eol) (esc)
43 building [=====================================> ] 11/12\r (no-eol) (esc)
44 building [=====================================> ] 11/12\r (no-eol) (esc)
27 building [=====================================> ] 11/12\r (no-eol) (esc)
45 \r (no-eol) (esc)
28 \r (no-eol) (esc)
46
29
47 tags
30 tags
48 $ cat .hg/localtags
31 $ cat .hg/localtags
49 66f7d451a68b85ed82ff5fcc254daf50c74144bd f
32 66f7d451a68b85ed82ff5fcc254daf50c74144bd f
50 bebd167eb94d257ace0e814aeb98e6972ed2970d p2
33 bebd167eb94d257ace0e814aeb98e6972ed2970d p2
51 dag
34 dag
52 $ hg debugdag -t -b
35 $ hg debugdag -t -b
53 +2:f
36 +2:f
54 +3:p2
37 +3:p2
55 @temp*f+3
38 @temp*f+3
56 @default*/p2+2:tip
39 @default*/p2+2:tip
57 tip
40 tip
58 $ hg id
41 $ hg id
59 000000000000
42 000000000000
60 glog
43 glog
61 $ hg log -G --template '{rev}: {desc} [{branches}] @ {date}\n'
44 $ hg log -G --template '{rev}: {desc} [{branches}] @ {date}\n'
62 o 11: r11 [] @ 11.00
45 o 11: r11 [] @ 11.00
63 |
46 |
64 o 10: r10 [] @ 10.00
47 o 10: r10 [] @ 10.00
65 |
48 |
66 o 9: r9 [] @ 9.00
49 o 9: r9 [] @ 9.00
67 |\
50 |\
68 | o 8: r8 [temp] @ 8.00
51 | o 8: r8 [temp] @ 8.00
69 | |
52 | |
70 | o 7: r7 [temp] @ 7.00
53 | o 7: r7 [temp] @ 7.00
71 | |
54 | |
72 | o 6: r6 [temp] @ 6.00
55 | o 6: r6 [temp] @ 6.00
73 | |
56 | |
74 | o 5: r5 [temp] @ 5.00
57 | o 5: r5 [temp] @ 5.00
75 | |
58 | |
76 o | 4: r4 [] @ 4.00
59 o | 4: r4 [] @ 4.00
77 | |
60 | |
78 o | 3: r3 [] @ 3.00
61 o | 3: r3 [] @ 3.00
79 | |
62 | |
80 o | 2: r2 [] @ 2.00
63 o | 2: r2 [] @ 2.00
81 |/
64 |/
82 o 1: r1 [] @ 1.00
65 o 1: r1 [] @ 1.00
83 |
66 |
84 o 0: r0 [] @ 0.00
67 o 0: r0 [] @ 0.00
85
68
86
69
87 overwritten files, starting on a non-default branch
70 overwritten files, starting on a non-default branch
88
71
89 $ rm -r .hg
72 $ rm -r .hg
90 $ hg init
73 $ hg init
91 $ hg debugbuilddag '@start.@default.:f +3:p2 @temp <f+4 @default /p2 +2' -q -o
74 $ hg debugbuilddag '@start.@default.:f +3:p2 @temp <f+4 @default /p2 +2' -q -o
92 tags
75 tags
93 $ cat .hg/localtags
76 $ cat .hg/localtags
94 f778700ebd50fcf282b23a4446bd155da6453eb6 f
77 f778700ebd50fcf282b23a4446bd155da6453eb6 f
95 bbccf169769006e2490efd2a02f11c3d38d462bd p2
78 bbccf169769006e2490efd2a02f11c3d38d462bd p2
96 dag
79 dag
97 $ hg debugdag -t -b
80 $ hg debugdag -t -b
98 @start+1
81 @start+1
99 @default+1:f
82 @default+1:f
100 +3:p2
83 +3:p2
101 @temp*f+3
84 @temp*f+3
102 @default*/p2+2:tip
85 @default*/p2+2:tip
103 tip
86 tip
104 $ hg id
87 $ hg id
105 000000000000
88 000000000000
106 glog
89 glog
107 $ hg log -G --template '{rev}: {desc} [{branches}] @ {date}\n'
90 $ hg log -G --template '{rev}: {desc} [{branches}] @ {date}\n'
108 o 11: r11 [] @ 11.00
91 o 11: r11 [] @ 11.00
109 |
92 |
110 o 10: r10 [] @ 10.00
93 o 10: r10 [] @ 10.00
111 |
94 |
112 o 9: r9 [] @ 9.00
95 o 9: r9 [] @ 9.00
113 |\
96 |\
114 | o 8: r8 [temp] @ 8.00
97 | o 8: r8 [temp] @ 8.00
115 | |
98 | |
116 | o 7: r7 [temp] @ 7.00
99 | o 7: r7 [temp] @ 7.00
117 | |
100 | |
118 | o 6: r6 [temp] @ 6.00
101 | o 6: r6 [temp] @ 6.00
119 | |
102 | |
120 | o 5: r5 [temp] @ 5.00
103 | o 5: r5 [temp] @ 5.00
121 | |
104 | |
122 o | 4: r4 [] @ 4.00
105 o | 4: r4 [] @ 4.00
123 | |
106 | |
124 o | 3: r3 [] @ 3.00
107 o | 3: r3 [] @ 3.00
125 | |
108 | |
126 o | 2: r2 [] @ 2.00
109 o | 2: r2 [] @ 2.00
127 |/
110 |/
128 o 1: r1 [] @ 1.00
111 o 1: r1 [] @ 1.00
129 |
112 |
130 o 0: r0 [start] @ 0.00
113 o 0: r0 [start] @ 0.00
131
114
132 glog of
115 glog of
133 $ hg log -G --template '{rev}: {desc} [{branches}]\n' of
116 $ hg log -G --template '{rev}: {desc} [{branches}]\n' of
134 o 11: r11 []
117 o 11: r11 []
135 |
118 |
136 o 10: r10 []
119 o 10: r10 []
137 |
120 |
138 o 9: r9 []
121 o 9: r9 []
139 |\
122 |\
140 | o 8: r8 [temp]
123 | o 8: r8 [temp]
141 | |
124 | |
142 | o 7: r7 [temp]
125 | o 7: r7 [temp]
143 | |
126 | |
144 | o 6: r6 [temp]
127 | o 6: r6 [temp]
145 | |
128 | |
146 | o 5: r5 [temp]
129 | o 5: r5 [temp]
147 | |
130 | |
148 o | 4: r4 []
131 o | 4: r4 []
149 | |
132 | |
150 o | 3: r3 []
133 o | 3: r3 []
151 | |
134 | |
152 o | 2: r2 []
135 o | 2: r2 []
153 |/
136 |/
154 o 1: r1 []
137 o 1: r1 []
155 |
138 |
156 o 0: r0 [start]
139 o 0: r0 [start]
157
140
158 tags
141 tags
159 $ hg tags -v
142 $ hg tags -v
160 tip 11:9ffe238a67a2
143 tip 11:9ffe238a67a2
161 p2 4:bbccf1697690 local
144 p2 4:bbccf1697690 local
162 f 1:f778700ebd50 local
145 f 1:f778700ebd50 local
163 cat of
146 cat of
164 $ hg cat of --rev tip
147 $ hg cat of --rev tip
165 r11
148 r11
166
149
167
150
168 new and mergeable files
151 new and mergeable files
169
152
170 $ rm -r .hg
153 $ rm -r .hg
171 $ hg init
154 $ hg init
172 $ hg debugbuilddag '+2:f +3:p2 @temp <f+4 @default /p2 +2' -q -mn
155 $ hg debugbuilddag '+2:f +3:p2 @temp <f+4 @default /p2 +2' -q -mn
173 dag
156 dag
174 $ hg debugdag -t -b
157 $ hg debugdag -t -b
175 +2:f
158 +2:f
176 +3:p2
159 +3:p2
177 @temp*f+3
160 @temp*f+3
178 @default*/p2+2:tip
161 @default*/p2+2:tip
179 tip
162 tip
180 $ hg id
163 $ hg id
181 000000000000
164 000000000000
182 glog
165 glog
183 $ hg log -G --template '{rev}: {desc} [{branches}] @ {date}\n'
166 $ hg log -G --template '{rev}: {desc} [{branches}] @ {date}\n'
184 o 11: r11 [] @ 11.00
167 o 11: r11 [] @ 11.00
185 |
168 |
186 o 10: r10 [] @ 10.00
169 o 10: r10 [] @ 10.00
187 |
170 |
188 o 9: r9 [] @ 9.00
171 o 9: r9 [] @ 9.00
189 |\
172 |\
190 | o 8: r8 [temp] @ 8.00
173 | o 8: r8 [temp] @ 8.00
191 | |
174 | |
192 | o 7: r7 [temp] @ 7.00
175 | o 7: r7 [temp] @ 7.00
193 | |
176 | |
194 | o 6: r6 [temp] @ 6.00
177 | o 6: r6 [temp] @ 6.00
195 | |
178 | |
196 | o 5: r5 [temp] @ 5.00
179 | o 5: r5 [temp] @ 5.00
197 | |
180 | |
198 o | 4: r4 [] @ 4.00
181 o | 4: r4 [] @ 4.00
199 | |
182 | |
200 o | 3: r3 [] @ 3.00
183 o | 3: r3 [] @ 3.00
201 | |
184 | |
202 o | 2: r2 [] @ 2.00
185 o | 2: r2 [] @ 2.00
203 |/
186 |/
204 o 1: r1 [] @ 1.00
187 o 1: r1 [] @ 1.00
205 |
188 |
206 o 0: r0 [] @ 0.00
189 o 0: r0 [] @ 0.00
207
190
208 glog mf
191 glog mf
209 $ hg log -G --template '{rev}: {desc} [{branches}]\n' mf
192 $ hg log -G --template '{rev}: {desc} [{branches}]\n' mf
210 o 11: r11 []
193 o 11: r11 []
211 |
194 |
212 o 10: r10 []
195 o 10: r10 []
213 |
196 |
214 o 9: r9 []
197 o 9: r9 []
215 |\
198 |\
216 | o 8: r8 [temp]
199 | o 8: r8 [temp]
217 | |
200 | |
218 | o 7: r7 [temp]
201 | o 7: r7 [temp]
219 | |
202 | |
220 | o 6: r6 [temp]
203 | o 6: r6 [temp]
221 | |
204 | |
222 | o 5: r5 [temp]
205 | o 5: r5 [temp]
223 | |
206 | |
224 o | 4: r4 []
207 o | 4: r4 []
225 | |
208 | |
226 o | 3: r3 []
209 o | 3: r3 []
227 | |
210 | |
228 o | 2: r2 []
211 o | 2: r2 []
229 |/
212 |/
230 o 1: r1 []
213 o 1: r1 []
231 |
214 |
232 o 0: r0 []
215 o 0: r0 []
233
216
234
217
235 man r4
218 man r4
236 $ hg manifest -r4
219 $ hg manifest -r4
237 mf
220 mf
238 nf0
221 nf0
239 nf1
222 nf1
240 nf2
223 nf2
241 nf3
224 nf3
242 nf4
225 nf4
243 cat r4 mf
226 cat r4 mf
244 $ hg cat -r4 mf
227 $ hg cat -r4 mf
245 0 r0
228 0 r0
246 1
229 1
247 2 r1
230 2 r1
248 3
231 3
249 4 r2
232 4 r2
250 5
233 5
251 6 r3
234 6 r3
252 7
235 7
253 8 r4
236 8 r4
254 9
237 9
255 10
238 10
256 11
239 11
257 12
240 12
258 13
241 13
259 14
242 14
260 15
243 15
261 16
244 16
262 17
245 17
263 18
246 18
264 19
247 19
265 20
248 20
266 21
249 21
267 22
250 22
268 23
251 23
269 man r8
252 man r8
270 $ hg manifest -r8
253 $ hg manifest -r8
271 mf
254 mf
272 nf0
255 nf0
273 nf1
256 nf1
274 nf5
257 nf5
275 nf6
258 nf6
276 nf7
259 nf7
277 nf8
260 nf8
278 cat r8 mf
261 cat r8 mf
279 $ hg cat -r8 mf
262 $ hg cat -r8 mf
280 0 r0
263 0 r0
281 1
264 1
282 2 r1
265 2 r1
283 3
266 3
284 4
267 4
285 5
268 5
286 6
269 6
287 7
270 7
288 8
271 8
289 9
272 9
290 10 r5
273 10 r5
291 11
274 11
292 12 r6
275 12 r6
293 13
276 13
294 14 r7
277 14 r7
295 15
278 15
296 16 r8
279 16 r8
297 17
280 17
298 18
281 18
299 19
282 19
300 20
283 20
301 21
284 21
302 22
285 22
303 23
286 23
304 man
287 man
305 $ hg manifest --rev tip
288 $ hg manifest --rev tip
306 mf
289 mf
307 nf0
290 nf0
308 nf1
291 nf1
309 nf10
292 nf10
310 nf11
293 nf11
311 nf2
294 nf2
312 nf3
295 nf3
313 nf4
296 nf4
314 nf5
297 nf5
315 nf6
298 nf6
316 nf7
299 nf7
317 nf8
300 nf8
318 nf9
301 nf9
319 cat mf
302 cat mf
320 $ hg cat mf --rev tip
303 $ hg cat mf --rev tip
321 0 r0
304 0 r0
322 1
305 1
323 2 r1
306 2 r1
324 3
307 3
325 4 r2
308 4 r2
326 5
309 5
327 6 r3
310 6 r3
328 7
311 7
329 8 r4
312 8 r4
330 9
313 9
331 10 r5
314 10 r5
332 11
315 11
333 12 r6
316 12 r6
334 13
317 13
335 14 r7
318 14 r7
336 15
319 15
337 16 r8
320 16 r8
338 17
321 17
339 18 r9
322 18 r9
340 19
323 19
341 20 r10
324 20 r10
342 21
325 21
343 22 r11
326 22 r11
344 23
327 23
345
328
346
329
347
330
@@ -1,2809 +1,2802
1 Note for future hackers of patchbomb: this file is a bit heavy on
1 Note for future hackers of patchbomb: this file is a bit heavy on
2 wildcards in test expectations due to how many things like hostnames
2 wildcards in test expectations due to how many things like hostnames
3 tend to make it into outputs. As a result, you may need to perform the
3 tend to make it into outputs. As a result, you may need to perform the
4 following regular expression substitutions:
4 following regular expression substitutions:
5 @$HOSTNAME> -> @*> (glob)
5 @$HOSTNAME> -> @*> (glob)
6 Mercurial-patchbomb/.* -> Mercurial-patchbomb/* (glob)
6 Mercurial-patchbomb/.* -> Mercurial-patchbomb/* (glob)
7 /mixed; boundary="===+[0-9]+==" -> /mixed; boundary="===*== (glob)"
7 /mixed; boundary="===+[0-9]+==" -> /mixed; boundary="===*== (glob)"
8 --===+[0-9]+=+--$ -> --===*=-- (glob)
8 --===+[0-9]+=+--$ -> --===*=-- (glob)
9 --===+[0-9]+=+$ -> --===*= (glob)
9 --===+[0-9]+=+$ -> --===*= (glob)
10
10
11 $ cat > prune-blank-after-boundary.py <<EOF
11 $ cat > prune-blank-after-boundary.py <<EOF
12 > import sys
12 > import sys
13 > skipblank = False
13 > skipblank = False
14 > trim = lambda x: x.strip(' \r\n')
14 > trim = lambda x: x.strip(' \r\n')
15 > for l in sys.stdin:
15 > for l in sys.stdin:
16 > if trim(l).endswith('=--') or trim(l).endswith('=='):
16 > if trim(l).endswith('=--') or trim(l).endswith('=='):
17 > skipblank = True
17 > skipblank = True
18 > print l,
18 > print l,
19 > continue
19 > continue
20 > if not trim(l) and skipblank:
20 > if not trim(l) and skipblank:
21 > continue
21 > continue
22 > skipblank = False
22 > skipblank = False
23 > print l,
23 > print l,
24 > EOF
24 > EOF
25 $ FILTERBOUNDARY="python `pwd`/prune-blank-after-boundary.py"
25 $ FILTERBOUNDARY="python `pwd`/prune-blank-after-boundary.py"
26 $ echo "[extensions]" >> $HGRCPATH
26 $ echo "[extensions]" >> $HGRCPATH
27 $ echo "patchbomb=" >> $HGRCPATH
27 $ echo "patchbomb=" >> $HGRCPATH
28
28
29 $ hg init t
29 $ hg init t
30 $ cd t
30 $ cd t
31 $ echo a > a
31 $ echo a > a
32 $ hg commit -Ama -d '1 0'
32 $ hg commit -Ama -d '1 0'
33 adding a
33 adding a
34
34
35 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
35 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
36 this patch series consists of 1 patches.
36 this patch series consists of 1 patches.
37
37
38
38
39 displaying [PATCH] a ...
39 displaying [PATCH] a ...
40 Content-Type: text/plain; charset="us-ascii"
40 Content-Type: text/plain; charset="us-ascii"
41 MIME-Version: 1.0
41 MIME-Version: 1.0
42 Content-Transfer-Encoding: 7bit
42 Content-Transfer-Encoding: 7bit
43 Subject: [PATCH] a
43 Subject: [PATCH] a
44 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
44 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
45 X-Mercurial-Series-Index: 1
45 X-Mercurial-Series-Index: 1
46 X-Mercurial-Series-Total: 1
46 X-Mercurial-Series-Total: 1
47 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
47 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
48 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
48 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
49 User-Agent: Mercurial-patchbomb/* (glob)
49 User-Agent: Mercurial-patchbomb/* (glob)
50 Date: Thu, 01 Jan 1970 00:01:00 +0000
50 Date: Thu, 01 Jan 1970 00:01:00 +0000
51 From: quux
51 From: quux
52 To: foo
52 To: foo
53 Cc: bar
53 Cc: bar
54
54
55 # HG changeset patch
55 # HG changeset patch
56 # User test
56 # User test
57 # Date 1 0
57 # Date 1 0
58 # Thu Jan 01 00:00:01 1970 +0000
58 # Thu Jan 01 00:00:01 1970 +0000
59 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
59 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
60 # Parent 0000000000000000000000000000000000000000
60 # Parent 0000000000000000000000000000000000000000
61 a
61 a
62
62
63 diff -r 000000000000 -r 8580ff50825a a
63 diff -r 000000000000 -r 8580ff50825a a
64 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
64 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
65 +++ b/a Thu Jan 01 00:00:01 1970 +0000
65 +++ b/a Thu Jan 01 00:00:01 1970 +0000
66 @@ -0,0 +1,1 @@
66 @@ -0,0 +1,1 @@
67 +a
67 +a
68
68
69
69
70 $ hg --config ui.interactive=1 email --confirm -n -f quux -t foo -c bar -r tip<<EOF
70 $ hg --config ui.interactive=1 email --confirm -n -f quux -t foo -c bar -r tip<<EOF
71 > n
71 > n
72 > EOF
72 > EOF
73 this patch series consists of 1 patches.
73 this patch series consists of 1 patches.
74
74
75
75
76 Final summary:
76 Final summary:
77
77
78 From: quux
78 From: quux
79 To: foo
79 To: foo
80 Cc: bar
80 Cc: bar
81 Subject: [PATCH] a
81 Subject: [PATCH] a
82 a | 1 +
82 a | 1 +
83 1 files changed, 1 insertions(+), 0 deletions(-)
83 1 files changed, 1 insertions(+), 0 deletions(-)
84
84
85 are you sure you want to send (yn)? n
85 are you sure you want to send (yn)? n
86 abort: patchbomb canceled
86 abort: patchbomb canceled
87 [255]
87 [255]
88
88
89 $ hg --config ui.interactive=1 --config patchbomb.confirm=true email -n -f quux -t foo -c bar -r tip<<EOF
89 $ hg --config ui.interactive=1 --config patchbomb.confirm=true email -n -f quux -t foo -c bar -r tip<<EOF
90 > n
90 > n
91 > EOF
91 > EOF
92 this patch series consists of 1 patches.
92 this patch series consists of 1 patches.
93
93
94
94
95 Final summary:
95 Final summary:
96
96
97 From: quux
97 From: quux
98 To: foo
98 To: foo
99 Cc: bar
99 Cc: bar
100 Subject: [PATCH] a
100 Subject: [PATCH] a
101 a | 1 +
101 a | 1 +
102 1 files changed, 1 insertions(+), 0 deletions(-)
102 1 files changed, 1 insertions(+), 0 deletions(-)
103
103
104 are you sure you want to send (yn)? n
104 are you sure you want to send (yn)? n
105 abort: patchbomb canceled
105 abort: patchbomb canceled
106 [255]
106 [255]
107
107
108
108
109 Test diff.git is respected
109 Test diff.git is respected
110 $ hg --config diff.git=True email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
110 $ hg --config diff.git=True email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
111 this patch series consists of 1 patches.
111 this patch series consists of 1 patches.
112
112
113
113
114 displaying [PATCH] a ...
114 displaying [PATCH] a ...
115 Content-Type: text/plain; charset="us-ascii"
115 Content-Type: text/plain; charset="us-ascii"
116 MIME-Version: 1.0
116 MIME-Version: 1.0
117 Content-Transfer-Encoding: 7bit
117 Content-Transfer-Encoding: 7bit
118 Subject: [PATCH] a
118 Subject: [PATCH] a
119 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
119 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
120 X-Mercurial-Series-Index: 1
120 X-Mercurial-Series-Index: 1
121 X-Mercurial-Series-Total: 1
121 X-Mercurial-Series-Total: 1
122 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
122 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
123 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
123 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
124 User-Agent: Mercurial-patchbomb/* (glob)
124 User-Agent: Mercurial-patchbomb/* (glob)
125 Date: Thu, 01 Jan 1970 00:01:00 +0000
125 Date: Thu, 01 Jan 1970 00:01:00 +0000
126 From: quux
126 From: quux
127 To: foo
127 To: foo
128 Cc: bar
128 Cc: bar
129
129
130 # HG changeset patch
130 # HG changeset patch
131 # User test
131 # User test
132 # Date 1 0
132 # Date 1 0
133 # Thu Jan 01 00:00:01 1970 +0000
133 # Thu Jan 01 00:00:01 1970 +0000
134 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
134 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
135 # Parent 0000000000000000000000000000000000000000
135 # Parent 0000000000000000000000000000000000000000
136 a
136 a
137
137
138 diff --git a/a b/a
138 diff --git a/a b/a
139 new file mode 100644
139 new file mode 100644
140 --- /dev/null
140 --- /dev/null
141 +++ b/a
141 +++ b/a
142 @@ -0,0 +1,1 @@
142 @@ -0,0 +1,1 @@
143 +a
143 +a
144
144
145
145
146
146
147 Test breaking format changes aren't
147 Test breaking format changes aren't
148 $ hg --config diff.noprefix=True email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
148 $ hg --config diff.noprefix=True email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -r tip
149 this patch series consists of 1 patches.
149 this patch series consists of 1 patches.
150
150
151
151
152 displaying [PATCH] a ...
152 displaying [PATCH] a ...
153 Content-Type: text/plain; charset="us-ascii"
153 Content-Type: text/plain; charset="us-ascii"
154 MIME-Version: 1.0
154 MIME-Version: 1.0
155 Content-Transfer-Encoding: 7bit
155 Content-Transfer-Encoding: 7bit
156 Subject: [PATCH] a
156 Subject: [PATCH] a
157 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
157 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
158 X-Mercurial-Series-Index: 1
158 X-Mercurial-Series-Index: 1
159 X-Mercurial-Series-Total: 1
159 X-Mercurial-Series-Total: 1
160 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
160 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
161 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
161 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
162 User-Agent: Mercurial-patchbomb/* (glob)
162 User-Agent: Mercurial-patchbomb/* (glob)
163 Date: Thu, 01 Jan 1970 00:01:00 +0000
163 Date: Thu, 01 Jan 1970 00:01:00 +0000
164 From: quux
164 From: quux
165 To: foo
165 To: foo
166 Cc: bar
166 Cc: bar
167
167
168 # HG changeset patch
168 # HG changeset patch
169 # User test
169 # User test
170 # Date 1 0
170 # Date 1 0
171 # Thu Jan 01 00:00:01 1970 +0000
171 # Thu Jan 01 00:00:01 1970 +0000
172 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
172 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
173 # Parent 0000000000000000000000000000000000000000
173 # Parent 0000000000000000000000000000000000000000
174 a
174 a
175
175
176 diff -r 000000000000 -r 8580ff50825a a
176 diff -r 000000000000 -r 8580ff50825a a
177 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
177 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
178 +++ b/a Thu Jan 01 00:00:01 1970 +0000
178 +++ b/a Thu Jan 01 00:00:01 1970 +0000
179 @@ -0,0 +1,1 @@
179 @@ -0,0 +1,1 @@
180 +a
180 +a
181
181
182
182
183 $ echo b > b
183 $ echo b > b
184 $ hg commit -Amb -d '2 0'
184 $ hg commit -Amb -d '2 0'
185 adding b
185 adding b
186
186
187 $ hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip
187 $ hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test -r 0:tip
188 this patch series consists of 2 patches.
188 this patch series consists of 2 patches.
189
189
190
190
191 Write the introductory message for the patch series.
191 Write the introductory message for the patch series.
192
192
193
193
194 displaying [PATCH 0 of 2] test ...
194 displaying [PATCH 0 of 2] test ...
195 Content-Type: text/plain; charset="us-ascii"
195 Content-Type: text/plain; charset="us-ascii"
196 MIME-Version: 1.0
196 MIME-Version: 1.0
197 Content-Transfer-Encoding: 7bit
197 Content-Transfer-Encoding: 7bit
198 Subject: [PATCH 0 of 2] test
198 Subject: [PATCH 0 of 2] test
199 Message-Id: <patchbomb.120@*> (glob)
199 Message-Id: <patchbomb.120@*> (glob)
200 User-Agent: Mercurial-patchbomb/* (glob)
200 User-Agent: Mercurial-patchbomb/* (glob)
201 Date: Thu, 01 Jan 1970 00:02:00 +0000
201 Date: Thu, 01 Jan 1970 00:02:00 +0000
202 From: quux
202 From: quux
203 To: foo
203 To: foo
204 Cc: bar
204 Cc: bar
205
205
206
206
207 displaying [PATCH 1 of 2] a ...
207 displaying [PATCH 1 of 2] a ...
208 Content-Type: text/plain; charset="us-ascii"
208 Content-Type: text/plain; charset="us-ascii"
209 MIME-Version: 1.0
209 MIME-Version: 1.0
210 Content-Transfer-Encoding: 7bit
210 Content-Transfer-Encoding: 7bit
211 Subject: [PATCH 1 of 2] a
211 Subject: [PATCH 1 of 2] a
212 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
212 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
213 X-Mercurial-Series-Index: 1
213 X-Mercurial-Series-Index: 1
214 X-Mercurial-Series-Total: 2
214 X-Mercurial-Series-Total: 2
215 Message-Id: <8580ff50825a50c8f716.121@*> (glob)
215 Message-Id: <8580ff50825a50c8f716.121@*> (glob)
216 X-Mercurial-Series-Id: <8580ff50825a50c8f716.121@*> (glob)
216 X-Mercurial-Series-Id: <8580ff50825a50c8f716.121@*> (glob)
217 In-Reply-To: <patchbomb.120@*> (glob)
217 In-Reply-To: <patchbomb.120@*> (glob)
218 References: <patchbomb.120@*> (glob)
218 References: <patchbomb.120@*> (glob)
219 User-Agent: Mercurial-patchbomb/* (glob)
219 User-Agent: Mercurial-patchbomb/* (glob)
220 Date: Thu, 01 Jan 1970 00:02:01 +0000
220 Date: Thu, 01 Jan 1970 00:02:01 +0000
221 From: quux
221 From: quux
222 To: foo
222 To: foo
223 Cc: bar
223 Cc: bar
224
224
225 # HG changeset patch
225 # HG changeset patch
226 # User test
226 # User test
227 # Date 1 0
227 # Date 1 0
228 # Thu Jan 01 00:00:01 1970 +0000
228 # Thu Jan 01 00:00:01 1970 +0000
229 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
229 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
230 # Parent 0000000000000000000000000000000000000000
230 # Parent 0000000000000000000000000000000000000000
231 a
231 a
232
232
233 diff -r 000000000000 -r 8580ff50825a a
233 diff -r 000000000000 -r 8580ff50825a a
234 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
234 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
235 +++ b/a Thu Jan 01 00:00:01 1970 +0000
235 +++ b/a Thu Jan 01 00:00:01 1970 +0000
236 @@ -0,0 +1,1 @@
236 @@ -0,0 +1,1 @@
237 +a
237 +a
238
238
239 displaying [PATCH 2 of 2] b ...
239 displaying [PATCH 2 of 2] b ...
240 Content-Type: text/plain; charset="us-ascii"
240 Content-Type: text/plain; charset="us-ascii"
241 MIME-Version: 1.0
241 MIME-Version: 1.0
242 Content-Transfer-Encoding: 7bit
242 Content-Transfer-Encoding: 7bit
243 Subject: [PATCH 2 of 2] b
243 Subject: [PATCH 2 of 2] b
244 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
244 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
245 X-Mercurial-Series-Index: 2
245 X-Mercurial-Series-Index: 2
246 X-Mercurial-Series-Total: 2
246 X-Mercurial-Series-Total: 2
247 Message-Id: <97d72e5f12c7e84f8506.122@*> (glob)
247 Message-Id: <97d72e5f12c7e84f8506.122@*> (glob)
248 X-Mercurial-Series-Id: <8580ff50825a50c8f716.121@*> (glob)
248 X-Mercurial-Series-Id: <8580ff50825a50c8f716.121@*> (glob)
249 In-Reply-To: <patchbomb.120@*> (glob)
249 In-Reply-To: <patchbomb.120@*> (glob)
250 References: <patchbomb.120@*> (glob)
250 References: <patchbomb.120@*> (glob)
251 User-Agent: Mercurial-patchbomb/* (glob)
251 User-Agent: Mercurial-patchbomb/* (glob)
252 Date: Thu, 01 Jan 1970 00:02:02 +0000
252 Date: Thu, 01 Jan 1970 00:02:02 +0000
253 From: quux
253 From: quux
254 To: foo
254 To: foo
255 Cc: bar
255 Cc: bar
256
256
257 # HG changeset patch
257 # HG changeset patch
258 # User test
258 # User test
259 # Date 2 0
259 # Date 2 0
260 # Thu Jan 01 00:00:02 1970 +0000
260 # Thu Jan 01 00:00:02 1970 +0000
261 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
261 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
262 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
262 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
263 b
263 b
264
264
265 diff -r 8580ff50825a -r 97d72e5f12c7 b
265 diff -r 8580ff50825a -r 97d72e5f12c7 b
266 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
266 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
267 +++ b/b Thu Jan 01 00:00:02 1970 +0000
267 +++ b/b Thu Jan 01 00:00:02 1970 +0000
268 @@ -0,0 +1,1 @@
268 @@ -0,0 +1,1 @@
269 +b
269 +b
270
270
271
271
272 .hg/last-email.txt
272 .hg/last-email.txt
273
273
274 $ cat > editor.sh << '__EOF__'
274 $ cat > editor.sh << '__EOF__'
275 > echo "a precious introductory message" > "$1"
275 > echo "a precious introductory message" > "$1"
276 > __EOF__
276 > __EOF__
277 $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg email -n -t foo -s test -r 0:tip > /dev/null
277 $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg email -n -t foo -s test -r 0:tip > /dev/null
278 $ cat .hg/last-email.txt
278 $ cat .hg/last-email.txt
279 a precious introductory message
279 a precious introductory message
280
280
281 $ hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip \
281 $ hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip \
282 > --config extensions.progress= --config progress.assume-tty=1 \
282 > --config extensions.progress= --config progress.assume-tty=1 \
283 > --config progress.delay=0 --config progress.refresh=0 \
283 > --config progress.delay=0 --config progress.refresh=0 \
284 > --config progress.width=60
284 > --config progress.width=60
285 this patch series consists of 2 patches.
285 this patch series consists of 2 patches.
286
286
287
287
288 Write the introductory message for the patch series.
288 Write the introductory message for the patch series.
289
289
290 \r (no-eol) (esc)
290 \r (no-eol) (esc)
291 sending [ ] 0/3\r (no-eol) (esc)
291 sending [ ] 0/3\r (no-eol) (esc)
292 sending [ ] 0/3\r (no-eol) (esc)
293 \r (no-eol) (esc)
294 \r (no-eol) (esc)
295 \r (no-eol) (esc)
292 \r (no-eol) (esc)
296 \r (no-eol) (esc)
293 \r (no-eol) (esc)
297 sending [==============> ] 1/3\r (no-eol) (esc)
294 sending [==============> ] 1/3\r (no-eol) (esc)
298 sending [==============> ] 1/3\r (no-eol) (esc)
299 \r (no-eol) (esc)
295 \r (no-eol) (esc)
300 \r (no-eol) (esc)
296 \r (no-eol) (esc)
301 \r (no-eol) (esc)
302 \r (no-eol) (esc)
303 sending [=============================> ] 2/3\r (no-eol) (esc)
304 sending [=============================> ] 2/3\r (no-eol) (esc)
297 sending [=============================> ] 2/3\r (no-eol) (esc)
305 \r (esc)
298 \r (esc)
306 sending [PATCH 0 of 2] test ...
299 sending [PATCH 0 of 2] test ...
307 sending [PATCH 1 of 2] a ...
300 sending [PATCH 1 of 2] a ...
308 sending [PATCH 2 of 2] b ...
301 sending [PATCH 2 of 2] b ...
309
302
310 $ cd ..
303 $ cd ..
311
304
312 $ hg clone -q t t2
305 $ hg clone -q t t2
313 $ cd t2
306 $ cd t2
314 $ echo c > c
307 $ echo c > c
315 $ hg commit -Amc -d '3 0'
308 $ hg commit -Amc -d '3 0'
316 adding c
309 adding c
317
310
318 $ cat > description <<EOF
311 $ cat > description <<EOF
319 > a multiline
312 > a multiline
320 >
313 >
321 > description
314 > description
322 > EOF
315 > EOF
323
316
324
317
325 test bundle and description:
318 test bundle and description:
326 $ hg email --date '1970-1-1 0:3' -n -f quux -t foo \
319 $ hg email --date '1970-1-1 0:3' -n -f quux -t foo \
327 > -c bar -s test -r tip -b --desc description | $FILTERBOUNDARY
320 > -c bar -s test -r tip -b --desc description | $FILTERBOUNDARY
328 searching for changes
321 searching for changes
329 1 changesets found
322 1 changesets found
330
323
331 displaying test ...
324 displaying test ...
332 Content-Type: multipart/mixed; boundary="===*==" (glob)
325 Content-Type: multipart/mixed; boundary="===*==" (glob)
333 MIME-Version: 1.0
326 MIME-Version: 1.0
334 Subject: test
327 Subject: test
335 Message-Id: <patchbomb.180@*> (glob)
328 Message-Id: <patchbomb.180@*> (glob)
336 User-Agent: Mercurial-patchbomb/* (glob)
329 User-Agent: Mercurial-patchbomb/* (glob)
337 Date: Thu, 01 Jan 1970 00:03:00 +0000
330 Date: Thu, 01 Jan 1970 00:03:00 +0000
338 From: quux
331 From: quux
339 To: foo
332 To: foo
340 Cc: bar
333 Cc: bar
341
334
342 --===*= (glob)
335 --===*= (glob)
343 Content-Type: text/plain; charset="us-ascii"
336 Content-Type: text/plain; charset="us-ascii"
344 MIME-Version: 1.0
337 MIME-Version: 1.0
345 Content-Transfer-Encoding: 7bit
338 Content-Transfer-Encoding: 7bit
346
339
347 a multiline
340 a multiline
348
341
349 description
342 description
350
343
351 --===*= (glob)
344 --===*= (glob)
352 Content-Type: application/x-mercurial-bundle
345 Content-Type: application/x-mercurial-bundle
353 MIME-Version: 1.0
346 MIME-Version: 1.0
354 Content-Disposition: attachment; filename="bundle.hg"
347 Content-Disposition: attachment; filename="bundle.hg"
355 Content-Transfer-Encoding: base64
348 Content-Transfer-Encoding: base64
356
349
357 SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
350 SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
358 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
351 2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
359 oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
352 oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
360 Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
353 Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
361 SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
354 SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
362 sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
355 sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
363 Q70eyNw=
356 Q70eyNw=
364 --===*=-- (glob)
357 --===*=-- (glob)
365
358
366 utf-8 patch:
359 utf-8 patch:
367 $ $PYTHON -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
360 $ $PYTHON -c 'fp = open("utf", "wb"); fp.write("h\xC3\xB6mma!\n"); fp.close();'
368 $ hg commit -A -d '4 0' -m 'utf-8 content'
361 $ hg commit -A -d '4 0' -m 'utf-8 content'
369 adding description
362 adding description
370 adding utf
363 adding utf
371
364
372 no mime encoding for email --test:
365 no mime encoding for email --test:
373 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n
366 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n
374 this patch series consists of 1 patches.
367 this patch series consists of 1 patches.
375
368
376
369
377 displaying [PATCH] utf-8 content ...
370 displaying [PATCH] utf-8 content ...
378 Content-Type: text/plain; charset="us-ascii"
371 Content-Type: text/plain; charset="us-ascii"
379 MIME-Version: 1.0
372 MIME-Version: 1.0
380 Content-Transfer-Encoding: 8bit
373 Content-Transfer-Encoding: 8bit
381 Subject: [PATCH] utf-8 content
374 Subject: [PATCH] utf-8 content
382 X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
375 X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
383 X-Mercurial-Series-Index: 1
376 X-Mercurial-Series-Index: 1
384 X-Mercurial-Series-Total: 1
377 X-Mercurial-Series-Total: 1
385 Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
378 Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
386 X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob)
379 X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob)
387 User-Agent: Mercurial-patchbomb/* (glob)
380 User-Agent: Mercurial-patchbomb/* (glob)
388 Date: Thu, 01 Jan 1970 00:04:00 +0000
381 Date: Thu, 01 Jan 1970 00:04:00 +0000
389 From: quux
382 From: quux
390 To: foo
383 To: foo
391 Cc: bar
384 Cc: bar
392
385
393 # HG changeset patch
386 # HG changeset patch
394 # User test
387 # User test
395 # Date 4 0
388 # Date 4 0
396 # Thu Jan 01 00:00:04 1970 +0000
389 # Thu Jan 01 00:00:04 1970 +0000
397 # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
390 # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
398 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
391 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
399 utf-8 content
392 utf-8 content
400
393
401 diff -r ff2c9fa2018b -r 909a00e13e9d description
394 diff -r ff2c9fa2018b -r 909a00e13e9d description
402 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
395 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
403 +++ b/description Thu Jan 01 00:00:04 1970 +0000
396 +++ b/description Thu Jan 01 00:00:04 1970 +0000
404 @@ -0,0 +1,3 @@
397 @@ -0,0 +1,3 @@
405 +a multiline
398 +a multiline
406 +
399 +
407 +description
400 +description
408 diff -r ff2c9fa2018b -r 909a00e13e9d utf
401 diff -r ff2c9fa2018b -r 909a00e13e9d utf
409 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
402 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
410 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
403 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
411 @@ -0,0 +1,1 @@
404 @@ -0,0 +1,1 @@
412 +h\xc3\xb6mma! (esc)
405 +h\xc3\xb6mma! (esc)
413
406
414
407
415 mime encoded mbox (base64):
408 mime encoded mbox (base64):
416 $ hg email --date '1970-1-1 0:4' -f 'Q <quux>' -t foo -c bar -r tip -m mbox
409 $ hg email --date '1970-1-1 0:4' -f 'Q <quux>' -t foo -c bar -r tip -m mbox
417 this patch series consists of 1 patches.
410 this patch series consists of 1 patches.
418
411
419
412
420 sending [PATCH] utf-8 content ...
413 sending [PATCH] utf-8 content ...
421
414
422 $ cat mbox
415 $ cat mbox
423 From quux ... ... .. ..:..:.. .... (re)
416 From quux ... ... .. ..:..:.. .... (re)
424 Content-Type: text/plain; charset="utf-8"
417 Content-Type: text/plain; charset="utf-8"
425 MIME-Version: 1.0
418 MIME-Version: 1.0
426 Content-Transfer-Encoding: base64
419 Content-Transfer-Encoding: base64
427 Subject: [PATCH] utf-8 content
420 Subject: [PATCH] utf-8 content
428 X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
421 X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
429 X-Mercurial-Series-Index: 1
422 X-Mercurial-Series-Index: 1
430 X-Mercurial-Series-Total: 1
423 X-Mercurial-Series-Total: 1
431 Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
424 Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
432 X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob)
425 X-Mercurial-Series-Id: <909a00e13e9d78b575ae.240@*> (glob)
433 User-Agent: Mercurial-patchbomb/* (glob)
426 User-Agent: Mercurial-patchbomb/* (glob)
434 Date: Thu, 01 Jan 1970 00:04:00 +0000
427 Date: Thu, 01 Jan 1970 00:04:00 +0000
435 From: Q <quux>
428 From: Q <quux>
436 To: foo
429 To: foo
437 Cc: bar
430 Cc: bar
438
431
439 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojICAgICAgVGh1IEph
432 IyBIRyBjaGFuZ2VzZXQgcGF0Y2gKIyBVc2VyIHRlc3QKIyBEYXRlIDQgMAojICAgICAgVGh1IEph
440 biAwMSAwMDowMDowNCAxOTcwICswMDAwCiMgTm9kZSBJRCA5MDlhMDBlMTNlOWQ3OGI1NzVhZWVl
433 biAwMSAwMDowMDowNCAxOTcwICswMDAwCiMgTm9kZSBJRCA5MDlhMDBlMTNlOWQ3OGI1NzVhZWVl
441 MjNkZGRiYWRhNDZkNWExNDNmCiMgUGFyZW50ICBmZjJjOWZhMjAxOGIxNWZhNzRiMzMzNjNiZGE5
434 MjNkZGRiYWRhNDZkNWExNDNmCiMgUGFyZW50ICBmZjJjOWZhMjAxOGIxNWZhNzRiMzMzNjNiZGE5
442 NTI3MzIzZTJhOTlmCnV0Zi04IGNvbnRlbnQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIDkwOWEw
435 NTI3MzIzZTJhOTlmCnV0Zi04IGNvbnRlbnQKCmRpZmYgLXIgZmYyYzlmYTIwMThiIC1yIDkwOWEw
443 MGUxM2U5ZCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
436 MGUxM2U5ZCBkZXNjcmlwdGlvbgotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3
444 MCArMDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK
437 MCArMDAwMAorKysgYi9kZXNjcmlwdGlvbglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK
445 QEAgLTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5
438 QEAgLTAsMCArMSwzIEBACithIG11bHRpbGluZQorCitkZXNjcmlwdGlvbgpkaWZmIC1yIGZmMmM5
446 ZmEyMDE4YiAtciA5MDlhMDBlMTNlOWQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
439 ZmEyMDE4YiAtciA5MDlhMDBlMTNlOWQgdXRmCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
447 MDowMCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK
440 MDowMCAxOTcwICswMDAwCisrKyBiL3V0ZglUaHUgSmFuIDAxIDAwOjAwOjA0IDE5NzAgKzAwMDAK
448 QEAgLTAsMCArMSwxIEBACitow7ZtbWEhCg==
441 QEAgLTAsMCArMSwxIEBACitow7ZtbWEhCg==
449
442
450
443
451 $ $PYTHON -c 'print open("mbox").read().split("\n\n")[1].decode("base64")'
444 $ $PYTHON -c 'print open("mbox").read().split("\n\n")[1].decode("base64")'
452 # HG changeset patch
445 # HG changeset patch
453 # User test
446 # User test
454 # Date 4 0
447 # Date 4 0
455 # Thu Jan 01 00:00:04 1970 +0000
448 # Thu Jan 01 00:00:04 1970 +0000
456 # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
449 # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
457 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
450 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
458 utf-8 content
451 utf-8 content
459
452
460 diff -r ff2c9fa2018b -r 909a00e13e9d description
453 diff -r ff2c9fa2018b -r 909a00e13e9d description
461 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
454 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
462 +++ b/description Thu Jan 01 00:00:04 1970 +0000
455 +++ b/description Thu Jan 01 00:00:04 1970 +0000
463 @@ -0,0 +1,3 @@
456 @@ -0,0 +1,3 @@
464 +a multiline
457 +a multiline
465 +
458 +
466 +description
459 +description
467 diff -r ff2c9fa2018b -r 909a00e13e9d utf
460 diff -r ff2c9fa2018b -r 909a00e13e9d utf
468 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
461 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
469 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
462 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
470 @@ -0,0 +1,1 @@
463 @@ -0,0 +1,1 @@
471 +h\xc3\xb6mma! (esc)
464 +h\xc3\xb6mma! (esc)
472
465
473 $ rm mbox
466 $ rm mbox
474
467
475 mime encoded mbox (quoted-printable):
468 mime encoded mbox (quoted-printable):
476 $ $PYTHON -c 'fp = open("long", "wb"); fp.write("%s\nfoo\n\nbar\n" % ("x" * 1024)); fp.close();'
469 $ $PYTHON -c 'fp = open("long", "wb"); fp.write("%s\nfoo\n\nbar\n" % ("x" * 1024)); fp.close();'
477 $ hg commit -A -d '4 0' -m 'long line'
470 $ hg commit -A -d '4 0' -m 'long line'
478 adding long
471 adding long
479
472
480 no mime encoding for email --test:
473 no mime encoding for email --test:
481 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n
474 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -n
482 this patch series consists of 1 patches.
475 this patch series consists of 1 patches.
483
476
484
477
485 displaying [PATCH] long line ...
478 displaying [PATCH] long line ...
486 Content-Type: text/plain; charset="us-ascii"
479 Content-Type: text/plain; charset="us-ascii"
487 MIME-Version: 1.0
480 MIME-Version: 1.0
488 Content-Transfer-Encoding: quoted-printable
481 Content-Transfer-Encoding: quoted-printable
489 Subject: [PATCH] long line
482 Subject: [PATCH] long line
490 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
483 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
491 X-Mercurial-Series-Index: 1
484 X-Mercurial-Series-Index: 1
492 X-Mercurial-Series-Total: 1
485 X-Mercurial-Series-Total: 1
493 Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
486 Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
494 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
487 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
495 User-Agent: Mercurial-patchbomb/* (glob)
488 User-Agent: Mercurial-patchbomb/* (glob)
496 Date: Thu, 01 Jan 1970 00:04:00 +0000
489 Date: Thu, 01 Jan 1970 00:04:00 +0000
497 From: quux
490 From: quux
498 To: foo
491 To: foo
499 Cc: bar
492 Cc: bar
500
493
501 # HG changeset patch
494 # HG changeset patch
502 # User test
495 # User test
503 # Date 4 0
496 # Date 4 0
504 # Thu Jan 01 00:00:04 1970 +0000
497 # Thu Jan 01 00:00:04 1970 +0000
505 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
498 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
506 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
499 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
507 long line
500 long line
508
501
509 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
502 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
510 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
503 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
511 +++ b/long Thu Jan 01 00:00:04 1970 +0000
504 +++ b/long Thu Jan 01 00:00:04 1970 +0000
512 @@ -0,0 +1,4 @@
505 @@ -0,0 +1,4 @@
513 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
506 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
514 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
507 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
515 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
508 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
516 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
509 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
517 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
510 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
518 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
511 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
512 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
520 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
513 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
521 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
514 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
522 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
515 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
523 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
516 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
524 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
517 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
525 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
518 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
526 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
527 +foo
520 +foo
528 +
521 +
529 +bar
522 +bar
530
523
531
524
532 mime encoded mbox (quoted-printable):
525 mime encoded mbox (quoted-printable):
533 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
526 $ hg email --date '1970-1-1 0:4' -f quux -t foo -c bar -r tip -m mbox
534 this patch series consists of 1 patches.
527 this patch series consists of 1 patches.
535
528
536
529
537 sending [PATCH] long line ...
530 sending [PATCH] long line ...
538 $ cat mbox
531 $ cat mbox
539 From quux ... ... .. ..:..:.. .... (re)
532 From quux ... ... .. ..:..:.. .... (re)
540 Content-Type: text/plain; charset="us-ascii"
533 Content-Type: text/plain; charset="us-ascii"
541 MIME-Version: 1.0
534 MIME-Version: 1.0
542 Content-Transfer-Encoding: quoted-printable
535 Content-Transfer-Encoding: quoted-printable
543 Subject: [PATCH] long line
536 Subject: [PATCH] long line
544 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
537 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
545 X-Mercurial-Series-Index: 1
538 X-Mercurial-Series-Index: 1
546 X-Mercurial-Series-Total: 1
539 X-Mercurial-Series-Total: 1
547 Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
540 Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
548 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
541 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
549 User-Agent: Mercurial-patchbomb/* (glob)
542 User-Agent: Mercurial-patchbomb/* (glob)
550 Date: Thu, 01 Jan 1970 00:04:00 +0000
543 Date: Thu, 01 Jan 1970 00:04:00 +0000
551 From: quux
544 From: quux
552 To: foo
545 To: foo
553 Cc: bar
546 Cc: bar
554
547
555 # HG changeset patch
548 # HG changeset patch
556 # User test
549 # User test
557 # Date 4 0
550 # Date 4 0
558 # Thu Jan 01 00:00:04 1970 +0000
551 # Thu Jan 01 00:00:04 1970 +0000
559 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
552 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
560 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
553 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
561 long line
554 long line
562
555
563 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
556 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
564 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
557 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
565 +++ b/long Thu Jan 01 00:00:04 1970 +0000
558 +++ b/long Thu Jan 01 00:00:04 1970 +0000
566 @@ -0,0 +1,4 @@
559 @@ -0,0 +1,4 @@
567 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
560 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
568 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
561 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
569 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
562 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
570 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
563 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
571 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
564 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
572 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
565 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
573 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
566 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
574 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
567 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
575 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
568 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
576 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
569 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
577 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
570 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
578 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
571 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
579 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
572 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
580 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
573 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
581 +foo
574 +foo
582 +
575 +
583 +bar
576 +bar
584
577
585
578
586
579
587 $ rm mbox
580 $ rm mbox
588
581
589 iso-8859-1 patch:
582 iso-8859-1 patch:
590 $ $PYTHON -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
583 $ $PYTHON -c 'fp = open("isolatin", "wb"); fp.write("h\xF6mma!\n"); fp.close();'
591 $ hg commit -A -d '5 0' -m 'isolatin 8-bit encoding'
584 $ hg commit -A -d '5 0' -m 'isolatin 8-bit encoding'
592 adding isolatin
585 adding isolatin
593
586
594 fake ascii mbox:
587 fake ascii mbox:
595 $ hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
588 $ hg email --date '1970-1-1 0:5' -f quux -t foo -c bar -r tip -m mbox
596 this patch series consists of 1 patches.
589 this patch series consists of 1 patches.
597
590
598
591
599 sending [PATCH] isolatin 8-bit encoding ...
592 sending [PATCH] isolatin 8-bit encoding ...
600 $ cat mbox
593 $ cat mbox
601 From quux ... ... .. ..:..:.. .... (re)
594 From quux ... ... .. ..:..:.. .... (re)
602 Content-Type: text/plain; charset="us-ascii"
595 Content-Type: text/plain; charset="us-ascii"
603 MIME-Version: 1.0
596 MIME-Version: 1.0
604 Content-Transfer-Encoding: 8bit
597 Content-Transfer-Encoding: 8bit
605 Subject: [PATCH] isolatin 8-bit encoding
598 Subject: [PATCH] isolatin 8-bit encoding
606 X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
599 X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
607 X-Mercurial-Series-Index: 1
600 X-Mercurial-Series-Index: 1
608 X-Mercurial-Series-Total: 1
601 X-Mercurial-Series-Total: 1
609 Message-Id: <240fb913fc1b7ff15ddb.300@*> (glob)
602 Message-Id: <240fb913fc1b7ff15ddb.300@*> (glob)
610 X-Mercurial-Series-Id: <240fb913fc1b7ff15ddb.300@*> (glob)
603 X-Mercurial-Series-Id: <240fb913fc1b7ff15ddb.300@*> (glob)
611 User-Agent: Mercurial-patchbomb/* (glob)
604 User-Agent: Mercurial-patchbomb/* (glob)
612 Date: Thu, 01 Jan 1970 00:05:00 +0000
605 Date: Thu, 01 Jan 1970 00:05:00 +0000
613 From: quux
606 From: quux
614 To: foo
607 To: foo
615 Cc: bar
608 Cc: bar
616
609
617 # HG changeset patch
610 # HG changeset patch
618 # User test
611 # User test
619 # Date 5 0
612 # Date 5 0
620 # Thu Jan 01 00:00:05 1970 +0000
613 # Thu Jan 01 00:00:05 1970 +0000
621 # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
614 # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
622 # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
615 # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
623 isolatin 8-bit encoding
616 isolatin 8-bit encoding
624
617
625 diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin
618 diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin
626 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
619 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
627 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
620 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
628 @@ -0,0 +1,1 @@
621 @@ -0,0 +1,1 @@
629 +h\xf6mma! (esc)
622 +h\xf6mma! (esc)
630
623
631
624
632
625
633 test diffstat for single patch:
626 test diffstat for single patch:
634 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2
627 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y -r 2
635 this patch series consists of 1 patches.
628 this patch series consists of 1 patches.
636
629
637
630
638 Final summary:
631 Final summary:
639
632
640 From: quux
633 From: quux
641 To: foo
634 To: foo
642 Cc: bar
635 Cc: bar
643 Subject: [PATCH] test
636 Subject: [PATCH] test
644 c | 1 +
637 c | 1 +
645 1 files changed, 1 insertions(+), 0 deletions(-)
638 1 files changed, 1 insertions(+), 0 deletions(-)
646
639
647 are you sure you want to send (yn)? y
640 are you sure you want to send (yn)? y
648
641
649 displaying [PATCH] test ...
642 displaying [PATCH] test ...
650 Content-Type: text/plain; charset="us-ascii"
643 Content-Type: text/plain; charset="us-ascii"
651 MIME-Version: 1.0
644 MIME-Version: 1.0
652 Content-Transfer-Encoding: 7bit
645 Content-Transfer-Encoding: 7bit
653 Subject: [PATCH] test
646 Subject: [PATCH] test
654 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
647 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
655 X-Mercurial-Series-Index: 1
648 X-Mercurial-Series-Index: 1
656 X-Mercurial-Series-Total: 1
649 X-Mercurial-Series-Total: 1
657 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
650 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
658 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
651 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
659 User-Agent: Mercurial-patchbomb/* (glob)
652 User-Agent: Mercurial-patchbomb/* (glob)
660 Date: Thu, 01 Jan 1970 00:01:00 +0000
653 Date: Thu, 01 Jan 1970 00:01:00 +0000
661 From: quux
654 From: quux
662 To: foo
655 To: foo
663 Cc: bar
656 Cc: bar
664
657
665 c | 1 +
658 c | 1 +
666 1 files changed, 1 insertions(+), 0 deletions(-)
659 1 files changed, 1 insertions(+), 0 deletions(-)
667
660
668
661
669 # HG changeset patch
662 # HG changeset patch
670 # User test
663 # User test
671 # Date 3 0
664 # Date 3 0
672 # Thu Jan 01 00:00:03 1970 +0000
665 # Thu Jan 01 00:00:03 1970 +0000
673 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
666 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
674 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
667 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
675 c
668 c
676
669
677 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
670 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
678 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
671 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
679 +++ b/c Thu Jan 01 00:00:03 1970 +0000
672 +++ b/c Thu Jan 01 00:00:03 1970 +0000
680 @@ -0,0 +1,1 @@
673 @@ -0,0 +1,1 @@
681 +c
674 +c
682
675
683
676
684 test diffstat for multiple patches:
677 test diffstat for multiple patches:
685 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
678 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -d -y \
686 > -r 0:1
679 > -r 0:1
687 this patch series consists of 2 patches.
680 this patch series consists of 2 patches.
688
681
689
682
690 Write the introductory message for the patch series.
683 Write the introductory message for the patch series.
691
684
692
685
693 Final summary:
686 Final summary:
694
687
695 From: quux
688 From: quux
696 To: foo
689 To: foo
697 Cc: bar
690 Cc: bar
698 Subject: [PATCH 0 of 2] test
691 Subject: [PATCH 0 of 2] test
699 a | 1 +
692 a | 1 +
700 b | 1 +
693 b | 1 +
701 2 files changed, 2 insertions(+), 0 deletions(-)
694 2 files changed, 2 insertions(+), 0 deletions(-)
702 Subject: [PATCH 1 of 2] a
695 Subject: [PATCH 1 of 2] a
703 a | 1 +
696 a | 1 +
704 1 files changed, 1 insertions(+), 0 deletions(-)
697 1 files changed, 1 insertions(+), 0 deletions(-)
705 Subject: [PATCH 2 of 2] b
698 Subject: [PATCH 2 of 2] b
706 b | 1 +
699 b | 1 +
707 1 files changed, 1 insertions(+), 0 deletions(-)
700 1 files changed, 1 insertions(+), 0 deletions(-)
708
701
709 are you sure you want to send (yn)? y
702 are you sure you want to send (yn)? y
710
703
711 displaying [PATCH 0 of 2] test ...
704 displaying [PATCH 0 of 2] test ...
712 Content-Type: text/plain; charset="us-ascii"
705 Content-Type: text/plain; charset="us-ascii"
713 MIME-Version: 1.0
706 MIME-Version: 1.0
714 Content-Transfer-Encoding: 7bit
707 Content-Transfer-Encoding: 7bit
715 Subject: [PATCH 0 of 2] test
708 Subject: [PATCH 0 of 2] test
716 Message-Id: <patchbomb.60@*> (glob)
709 Message-Id: <patchbomb.60@*> (glob)
717 User-Agent: Mercurial-patchbomb/* (glob)
710 User-Agent: Mercurial-patchbomb/* (glob)
718 Date: Thu, 01 Jan 1970 00:01:00 +0000
711 Date: Thu, 01 Jan 1970 00:01:00 +0000
719 From: quux
712 From: quux
720 To: foo
713 To: foo
721 Cc: bar
714 Cc: bar
722
715
723
716
724 a | 1 +
717 a | 1 +
725 b | 1 +
718 b | 1 +
726 2 files changed, 2 insertions(+), 0 deletions(-)
719 2 files changed, 2 insertions(+), 0 deletions(-)
727
720
728 displaying [PATCH 1 of 2] a ...
721 displaying [PATCH 1 of 2] a ...
729 Content-Type: text/plain; charset="us-ascii"
722 Content-Type: text/plain; charset="us-ascii"
730 MIME-Version: 1.0
723 MIME-Version: 1.0
731 Content-Transfer-Encoding: 7bit
724 Content-Transfer-Encoding: 7bit
732 Subject: [PATCH 1 of 2] a
725 Subject: [PATCH 1 of 2] a
733 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
726 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
734 X-Mercurial-Series-Index: 1
727 X-Mercurial-Series-Index: 1
735 X-Mercurial-Series-Total: 2
728 X-Mercurial-Series-Total: 2
736 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
729 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
737 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
730 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
738 In-Reply-To: <patchbomb.60@*> (glob)
731 In-Reply-To: <patchbomb.60@*> (glob)
739 References: <patchbomb.60@*> (glob)
732 References: <patchbomb.60@*> (glob)
740 User-Agent: Mercurial-patchbomb/* (glob)
733 User-Agent: Mercurial-patchbomb/* (glob)
741 Date: Thu, 01 Jan 1970 00:01:01 +0000
734 Date: Thu, 01 Jan 1970 00:01:01 +0000
742 From: quux
735 From: quux
743 To: foo
736 To: foo
744 Cc: bar
737 Cc: bar
745
738
746 a | 1 +
739 a | 1 +
747 1 files changed, 1 insertions(+), 0 deletions(-)
740 1 files changed, 1 insertions(+), 0 deletions(-)
748
741
749
742
750 # HG changeset patch
743 # HG changeset patch
751 # User test
744 # User test
752 # Date 1 0
745 # Date 1 0
753 # Thu Jan 01 00:00:01 1970 +0000
746 # Thu Jan 01 00:00:01 1970 +0000
754 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
747 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
755 # Parent 0000000000000000000000000000000000000000
748 # Parent 0000000000000000000000000000000000000000
756 a
749 a
757
750
758 diff -r 000000000000 -r 8580ff50825a a
751 diff -r 000000000000 -r 8580ff50825a a
759 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
752 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
760 +++ b/a Thu Jan 01 00:00:01 1970 +0000
753 +++ b/a Thu Jan 01 00:00:01 1970 +0000
761 @@ -0,0 +1,1 @@
754 @@ -0,0 +1,1 @@
762 +a
755 +a
763
756
764 displaying [PATCH 2 of 2] b ...
757 displaying [PATCH 2 of 2] b ...
765 Content-Type: text/plain; charset="us-ascii"
758 Content-Type: text/plain; charset="us-ascii"
766 MIME-Version: 1.0
759 MIME-Version: 1.0
767 Content-Transfer-Encoding: 7bit
760 Content-Transfer-Encoding: 7bit
768 Subject: [PATCH 2 of 2] b
761 Subject: [PATCH 2 of 2] b
769 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
762 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
770 X-Mercurial-Series-Index: 2
763 X-Mercurial-Series-Index: 2
771 X-Mercurial-Series-Total: 2
764 X-Mercurial-Series-Total: 2
772 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
765 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
773 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
766 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
774 In-Reply-To: <patchbomb.60@*> (glob)
767 In-Reply-To: <patchbomb.60@*> (glob)
775 References: <patchbomb.60@*> (glob)
768 References: <patchbomb.60@*> (glob)
776 User-Agent: Mercurial-patchbomb/* (glob)
769 User-Agent: Mercurial-patchbomb/* (glob)
777 Date: Thu, 01 Jan 1970 00:01:02 +0000
770 Date: Thu, 01 Jan 1970 00:01:02 +0000
778 From: quux
771 From: quux
779 To: foo
772 To: foo
780 Cc: bar
773 Cc: bar
781
774
782 b | 1 +
775 b | 1 +
783 1 files changed, 1 insertions(+), 0 deletions(-)
776 1 files changed, 1 insertions(+), 0 deletions(-)
784
777
785
778
786 # HG changeset patch
779 # HG changeset patch
787 # User test
780 # User test
788 # Date 2 0
781 # Date 2 0
789 # Thu Jan 01 00:00:02 1970 +0000
782 # Thu Jan 01 00:00:02 1970 +0000
790 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
783 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
791 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
784 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
792 b
785 b
793
786
794 diff -r 8580ff50825a -r 97d72e5f12c7 b
787 diff -r 8580ff50825a -r 97d72e5f12c7 b
795 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
788 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
796 +++ b/b Thu Jan 01 00:00:02 1970 +0000
789 +++ b/b Thu Jan 01 00:00:02 1970 +0000
797 @@ -0,0 +1,1 @@
790 @@ -0,0 +1,1 @@
798 +b
791 +b
799
792
800
793
801 test inline for single patch:
794 test inline for single patch:
802 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | $FILTERBOUNDARY
795 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 2 | $FILTERBOUNDARY
803 this patch series consists of 1 patches.
796 this patch series consists of 1 patches.
804
797
805
798
806 displaying [PATCH] test ...
799 displaying [PATCH] test ...
807 Content-Type: multipart/mixed; boundary="===*==" (glob)
800 Content-Type: multipart/mixed; boundary="===*==" (glob)
808 MIME-Version: 1.0
801 MIME-Version: 1.0
809 Subject: [PATCH] test
802 Subject: [PATCH] test
810 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
803 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
811 X-Mercurial-Series-Index: 1
804 X-Mercurial-Series-Index: 1
812 X-Mercurial-Series-Total: 1
805 X-Mercurial-Series-Total: 1
813 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
806 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
814 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
807 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
815 User-Agent: Mercurial-patchbomb/* (glob)
808 User-Agent: Mercurial-patchbomb/* (glob)
816 Date: Thu, 01 Jan 1970 00:01:00 +0000
809 Date: Thu, 01 Jan 1970 00:01:00 +0000
817 From: quux
810 From: quux
818 To: foo
811 To: foo
819 Cc: bar
812 Cc: bar
820
813
821 --===*= (glob)
814 --===*= (glob)
822 Content-Type: text/x-patch; charset="us-ascii"
815 Content-Type: text/x-patch; charset="us-ascii"
823 MIME-Version: 1.0
816 MIME-Version: 1.0
824 Content-Transfer-Encoding: 7bit
817 Content-Transfer-Encoding: 7bit
825 Content-Disposition: inline; filename=t2.patch
818 Content-Disposition: inline; filename=t2.patch
826
819
827 # HG changeset patch
820 # HG changeset patch
828 # User test
821 # User test
829 # Date 3 0
822 # Date 3 0
830 # Thu Jan 01 00:00:03 1970 +0000
823 # Thu Jan 01 00:00:03 1970 +0000
831 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
824 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
832 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
825 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
833 c
826 c
834
827
835 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
828 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
836 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
829 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
837 +++ b/c Thu Jan 01 00:00:03 1970 +0000
830 +++ b/c Thu Jan 01 00:00:03 1970 +0000
838 @@ -0,0 +1,1 @@
831 @@ -0,0 +1,1 @@
839 +c
832 +c
840
833
841 --===*=-- (glob)
834 --===*=-- (glob)
842
835
843
836
844 test inline for single patch (quoted-printable):
837 test inline for single patch (quoted-printable):
845 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | $FILTERBOUNDARY
838 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i -r 4 | $FILTERBOUNDARY
846 this patch series consists of 1 patches.
839 this patch series consists of 1 patches.
847
840
848
841
849 displaying [PATCH] test ...
842 displaying [PATCH] test ...
850 Content-Type: multipart/mixed; boundary="===*==" (glob)
843 Content-Type: multipart/mixed; boundary="===*==" (glob)
851 MIME-Version: 1.0
844 MIME-Version: 1.0
852 Subject: [PATCH] test
845 Subject: [PATCH] test
853 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
846 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
854 X-Mercurial-Series-Index: 1
847 X-Mercurial-Series-Index: 1
855 X-Mercurial-Series-Total: 1
848 X-Mercurial-Series-Total: 1
856 Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
849 Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
857 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
850 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
858 User-Agent: Mercurial-patchbomb/* (glob)
851 User-Agent: Mercurial-patchbomb/* (glob)
859 Date: Thu, 01 Jan 1970 00:01:00 +0000
852 Date: Thu, 01 Jan 1970 00:01:00 +0000
860 From: quux
853 From: quux
861 To: foo
854 To: foo
862 Cc: bar
855 Cc: bar
863
856
864 --===*= (glob)
857 --===*= (glob)
865 Content-Type: text/x-patch; charset="us-ascii"
858 Content-Type: text/x-patch; charset="us-ascii"
866 MIME-Version: 1.0
859 MIME-Version: 1.0
867 Content-Transfer-Encoding: quoted-printable
860 Content-Transfer-Encoding: quoted-printable
868 Content-Disposition: inline; filename=t2.patch
861 Content-Disposition: inline; filename=t2.patch
869
862
870 # HG changeset patch
863 # HG changeset patch
871 # User test
864 # User test
872 # Date 4 0
865 # Date 4 0
873 # Thu Jan 01 00:00:04 1970 +0000
866 # Thu Jan 01 00:00:04 1970 +0000
874 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
867 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
875 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
868 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
876 long line
869 long line
877
870
878 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
871 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
879 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
872 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
880 +++ b/long Thu Jan 01 00:00:04 1970 +0000
873 +++ b/long Thu Jan 01 00:00:04 1970 +0000
881 @@ -0,0 +1,4 @@
874 @@ -0,0 +1,4 @@
882 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
875 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
883 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
876 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
884 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
877 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
885 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
878 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
886 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
879 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
887 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
880 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
888 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
881 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
889 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
882 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
890 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
883 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
891 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
884 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
892 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
885 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
893 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
886 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
894 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
887 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
895 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
888 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
896 +foo
889 +foo
897 +
890 +
898 +bar
891 +bar
899
892
900 --===*=-- (glob)
893 --===*=-- (glob)
901
894
902 test inline for multiple patches:
895 test inline for multiple patches:
903 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
896 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
904 > -r 0:1 -r 4 | $FILTERBOUNDARY
897 > -r 0:1 -r 4 | $FILTERBOUNDARY
905 this patch series consists of 3 patches.
898 this patch series consists of 3 patches.
906
899
907
900
908 Write the introductory message for the patch series.
901 Write the introductory message for the patch series.
909
902
910
903
911 displaying [PATCH 0 of 3] test ...
904 displaying [PATCH 0 of 3] test ...
912 Content-Type: text/plain; charset="us-ascii"
905 Content-Type: text/plain; charset="us-ascii"
913 MIME-Version: 1.0
906 MIME-Version: 1.0
914 Content-Transfer-Encoding: 7bit
907 Content-Transfer-Encoding: 7bit
915 Subject: [PATCH 0 of 3] test
908 Subject: [PATCH 0 of 3] test
916 Message-Id: <patchbomb.60@*> (glob)
909 Message-Id: <patchbomb.60@*> (glob)
917 User-Agent: Mercurial-patchbomb/* (glob)
910 User-Agent: Mercurial-patchbomb/* (glob)
918 Date: Thu, 01 Jan 1970 00:01:00 +0000
911 Date: Thu, 01 Jan 1970 00:01:00 +0000
919 From: quux
912 From: quux
920 To: foo
913 To: foo
921 Cc: bar
914 Cc: bar
922
915
923
916
924 displaying [PATCH 1 of 3] a ...
917 displaying [PATCH 1 of 3] a ...
925 Content-Type: multipart/mixed; boundary="===*==" (glob)
918 Content-Type: multipart/mixed; boundary="===*==" (glob)
926 MIME-Version: 1.0
919 MIME-Version: 1.0
927 Subject: [PATCH 1 of 3] a
920 Subject: [PATCH 1 of 3] a
928 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
921 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
929 X-Mercurial-Series-Index: 1
922 X-Mercurial-Series-Index: 1
930 X-Mercurial-Series-Total: 3
923 X-Mercurial-Series-Total: 3
931 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
924 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
932 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
925 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
933 In-Reply-To: <patchbomb.60@*> (glob)
926 In-Reply-To: <patchbomb.60@*> (glob)
934 References: <patchbomb.60@*> (glob)
927 References: <patchbomb.60@*> (glob)
935 User-Agent: Mercurial-patchbomb/* (glob)
928 User-Agent: Mercurial-patchbomb/* (glob)
936 Date: Thu, 01 Jan 1970 00:01:01 +0000
929 Date: Thu, 01 Jan 1970 00:01:01 +0000
937 From: quux
930 From: quux
938 To: foo
931 To: foo
939 Cc: bar
932 Cc: bar
940
933
941 --===*= (glob)
934 --===*= (glob)
942 Content-Type: text/x-patch; charset="us-ascii"
935 Content-Type: text/x-patch; charset="us-ascii"
943 MIME-Version: 1.0
936 MIME-Version: 1.0
944 Content-Transfer-Encoding: 7bit
937 Content-Transfer-Encoding: 7bit
945 Content-Disposition: inline; filename=t2-1.patch
938 Content-Disposition: inline; filename=t2-1.patch
946
939
947 # HG changeset patch
940 # HG changeset patch
948 # User test
941 # User test
949 # Date 1 0
942 # Date 1 0
950 # Thu Jan 01 00:00:01 1970 +0000
943 # Thu Jan 01 00:00:01 1970 +0000
951 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
944 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
952 # Parent 0000000000000000000000000000000000000000
945 # Parent 0000000000000000000000000000000000000000
953 a
946 a
954
947
955 diff -r 000000000000 -r 8580ff50825a a
948 diff -r 000000000000 -r 8580ff50825a a
956 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
949 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
957 +++ b/a Thu Jan 01 00:00:01 1970 +0000
950 +++ b/a Thu Jan 01 00:00:01 1970 +0000
958 @@ -0,0 +1,1 @@
951 @@ -0,0 +1,1 @@
959 +a
952 +a
960
953
961 --===*=-- (glob)
954 --===*=-- (glob)
962 displaying [PATCH 2 of 3] b ...
955 displaying [PATCH 2 of 3] b ...
963 Content-Type: multipart/mixed; boundary="===*==" (glob)
956 Content-Type: multipart/mixed; boundary="===*==" (glob)
964 MIME-Version: 1.0
957 MIME-Version: 1.0
965 Subject: [PATCH 2 of 3] b
958 Subject: [PATCH 2 of 3] b
966 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
959 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
967 X-Mercurial-Series-Index: 2
960 X-Mercurial-Series-Index: 2
968 X-Mercurial-Series-Total: 3
961 X-Mercurial-Series-Total: 3
969 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
962 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
970 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
963 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
971 In-Reply-To: <patchbomb.60@*> (glob)
964 In-Reply-To: <patchbomb.60@*> (glob)
972 References: <patchbomb.60@*> (glob)
965 References: <patchbomb.60@*> (glob)
973 User-Agent: Mercurial-patchbomb/* (glob)
966 User-Agent: Mercurial-patchbomb/* (glob)
974 Date: Thu, 01 Jan 1970 00:01:02 +0000
967 Date: Thu, 01 Jan 1970 00:01:02 +0000
975 From: quux
968 From: quux
976 To: foo
969 To: foo
977 Cc: bar
970 Cc: bar
978
971
979 --===*= (glob)
972 --===*= (glob)
980 Content-Type: text/x-patch; charset="us-ascii"
973 Content-Type: text/x-patch; charset="us-ascii"
981 MIME-Version: 1.0
974 MIME-Version: 1.0
982 Content-Transfer-Encoding: 7bit
975 Content-Transfer-Encoding: 7bit
983 Content-Disposition: inline; filename=t2-2.patch
976 Content-Disposition: inline; filename=t2-2.patch
984
977
985 # HG changeset patch
978 # HG changeset patch
986 # User test
979 # User test
987 # Date 2 0
980 # Date 2 0
988 # Thu Jan 01 00:00:02 1970 +0000
981 # Thu Jan 01 00:00:02 1970 +0000
989 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
982 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
990 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
983 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
991 b
984 b
992
985
993 diff -r 8580ff50825a -r 97d72e5f12c7 b
986 diff -r 8580ff50825a -r 97d72e5f12c7 b
994 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
987 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
995 +++ b/b Thu Jan 01 00:00:02 1970 +0000
988 +++ b/b Thu Jan 01 00:00:02 1970 +0000
996 @@ -0,0 +1,1 @@
989 @@ -0,0 +1,1 @@
997 +b
990 +b
998
991
999 --===*=-- (glob)
992 --===*=-- (glob)
1000 displaying [PATCH 3 of 3] long line ...
993 displaying [PATCH 3 of 3] long line ...
1001 Content-Type: multipart/mixed; boundary="===*==" (glob)
994 Content-Type: multipart/mixed; boundary="===*==" (glob)
1002 MIME-Version: 1.0
995 MIME-Version: 1.0
1003 Subject: [PATCH 3 of 3] long line
996 Subject: [PATCH 3 of 3] long line
1004 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
997 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1005 X-Mercurial-Series-Index: 3
998 X-Mercurial-Series-Index: 3
1006 X-Mercurial-Series-Total: 3
999 X-Mercurial-Series-Total: 3
1007 Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
1000 Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
1008 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1001 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1009 In-Reply-To: <patchbomb.60@*> (glob)
1002 In-Reply-To: <patchbomb.60@*> (glob)
1010 References: <patchbomb.60@*> (glob)
1003 References: <patchbomb.60@*> (glob)
1011 User-Agent: Mercurial-patchbomb/* (glob)
1004 User-Agent: Mercurial-patchbomb/* (glob)
1012 Date: Thu, 01 Jan 1970 00:01:03 +0000
1005 Date: Thu, 01 Jan 1970 00:01:03 +0000
1013 From: quux
1006 From: quux
1014 To: foo
1007 To: foo
1015 Cc: bar
1008 Cc: bar
1016
1009
1017 --===*= (glob)
1010 --===*= (glob)
1018 Content-Type: text/x-patch; charset="us-ascii"
1011 Content-Type: text/x-patch; charset="us-ascii"
1019 MIME-Version: 1.0
1012 MIME-Version: 1.0
1020 Content-Transfer-Encoding: quoted-printable
1013 Content-Transfer-Encoding: quoted-printable
1021 Content-Disposition: inline; filename=t2-3.patch
1014 Content-Disposition: inline; filename=t2-3.patch
1022
1015
1023 # HG changeset patch
1016 # HG changeset patch
1024 # User test
1017 # User test
1025 # Date 4 0
1018 # Date 4 0
1026 # Thu Jan 01 00:00:04 1970 +0000
1019 # Thu Jan 01 00:00:04 1970 +0000
1027 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1020 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1028 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
1021 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
1029 long line
1022 long line
1030
1023
1031 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
1024 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
1032 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1025 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1033 +++ b/long Thu Jan 01 00:00:04 1970 +0000
1026 +++ b/long Thu Jan 01 00:00:04 1970 +0000
1034 @@ -0,0 +1,4 @@
1027 @@ -0,0 +1,4 @@
1035 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1028 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1036 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1029 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1037 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1030 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1038 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1031 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1039 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1032 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1040 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1033 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1041 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1034 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1042 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1035 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1043 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1036 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1044 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1037 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1045 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1038 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1046 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1039 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1047 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1040 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1048 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1041 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1049 +foo
1042 +foo
1050 +
1043 +
1051 +bar
1044 +bar
1052
1045
1053 --===*=-- (glob)
1046 --===*=-- (glob)
1054
1047
1055 test attach for single patch:
1048 test attach for single patch:
1056 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | $FILTERBOUNDARY
1049 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 2 | $FILTERBOUNDARY
1057 this patch series consists of 1 patches.
1050 this patch series consists of 1 patches.
1058
1051
1059
1052
1060 displaying [PATCH] test ...
1053 displaying [PATCH] test ...
1061 Content-Type: multipart/mixed; boundary="===*==" (glob)
1054 Content-Type: multipart/mixed; boundary="===*==" (glob)
1062 MIME-Version: 1.0
1055 MIME-Version: 1.0
1063 Subject: [PATCH] test
1056 Subject: [PATCH] test
1064 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1057 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1065 X-Mercurial-Series-Index: 1
1058 X-Mercurial-Series-Index: 1
1066 X-Mercurial-Series-Total: 1
1059 X-Mercurial-Series-Total: 1
1067 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1060 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1068 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1061 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1069 User-Agent: Mercurial-patchbomb/* (glob)
1062 User-Agent: Mercurial-patchbomb/* (glob)
1070 Date: Thu, 01 Jan 1970 00:01:00 +0000
1063 Date: Thu, 01 Jan 1970 00:01:00 +0000
1071 From: quux
1064 From: quux
1072 To: foo
1065 To: foo
1073 Cc: bar
1066 Cc: bar
1074
1067
1075 --===*= (glob)
1068 --===*= (glob)
1076 Content-Type: text/plain; charset="us-ascii"
1069 Content-Type: text/plain; charset="us-ascii"
1077 MIME-Version: 1.0
1070 MIME-Version: 1.0
1078 Content-Transfer-Encoding: 7bit
1071 Content-Transfer-Encoding: 7bit
1079
1072
1080 Patch subject is complete summary.
1073 Patch subject is complete summary.
1081
1074
1082
1075
1083
1076
1084 --===*= (glob)
1077 --===*= (glob)
1085 Content-Type: text/x-patch; charset="us-ascii"
1078 Content-Type: text/x-patch; charset="us-ascii"
1086 MIME-Version: 1.0
1079 MIME-Version: 1.0
1087 Content-Transfer-Encoding: 7bit
1080 Content-Transfer-Encoding: 7bit
1088 Content-Disposition: attachment; filename=t2.patch
1081 Content-Disposition: attachment; filename=t2.patch
1089
1082
1090 # HG changeset patch
1083 # HG changeset patch
1091 # User test
1084 # User test
1092 # Date 3 0
1085 # Date 3 0
1093 # Thu Jan 01 00:00:03 1970 +0000
1086 # Thu Jan 01 00:00:03 1970 +0000
1094 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1087 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1095 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1088 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1096 c
1089 c
1097
1090
1098 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1091 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1099 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1092 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1100 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1093 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1101 @@ -0,0 +1,1 @@
1094 @@ -0,0 +1,1 @@
1102 +c
1095 +c
1103
1096
1104 --===*=-- (glob)
1097 --===*=-- (glob)
1105
1098
1106 test attach for single patch (quoted-printable):
1099 test attach for single patch (quoted-printable):
1107 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | $FILTERBOUNDARY
1100 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a -r 4 | $FILTERBOUNDARY
1108 this patch series consists of 1 patches.
1101 this patch series consists of 1 patches.
1109
1102
1110
1103
1111 displaying [PATCH] test ...
1104 displaying [PATCH] test ...
1112 Content-Type: multipart/mixed; boundary="===*==" (glob)
1105 Content-Type: multipart/mixed; boundary="===*==" (glob)
1113 MIME-Version: 1.0
1106 MIME-Version: 1.0
1114 Subject: [PATCH] test
1107 Subject: [PATCH] test
1115 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1108 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1116 X-Mercurial-Series-Index: 1
1109 X-Mercurial-Series-Index: 1
1117 X-Mercurial-Series-Total: 1
1110 X-Mercurial-Series-Total: 1
1118 Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
1111 Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
1119 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
1112 X-Mercurial-Series-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
1120 User-Agent: Mercurial-patchbomb/* (glob)
1113 User-Agent: Mercurial-patchbomb/* (glob)
1121 Date: Thu, 01 Jan 1970 00:01:00 +0000
1114 Date: Thu, 01 Jan 1970 00:01:00 +0000
1122 From: quux
1115 From: quux
1123 To: foo
1116 To: foo
1124 Cc: bar
1117 Cc: bar
1125
1118
1126 --===*= (glob)
1119 --===*= (glob)
1127 Content-Type: text/plain; charset="us-ascii"
1120 Content-Type: text/plain; charset="us-ascii"
1128 MIME-Version: 1.0
1121 MIME-Version: 1.0
1129 Content-Transfer-Encoding: 7bit
1122 Content-Transfer-Encoding: 7bit
1130
1123
1131 Patch subject is complete summary.
1124 Patch subject is complete summary.
1132
1125
1133
1126
1134
1127
1135 --===*= (glob)
1128 --===*= (glob)
1136 Content-Type: text/x-patch; charset="us-ascii"
1129 Content-Type: text/x-patch; charset="us-ascii"
1137 MIME-Version: 1.0
1130 MIME-Version: 1.0
1138 Content-Transfer-Encoding: quoted-printable
1131 Content-Transfer-Encoding: quoted-printable
1139 Content-Disposition: attachment; filename=t2.patch
1132 Content-Disposition: attachment; filename=t2.patch
1140
1133
1141 # HG changeset patch
1134 # HG changeset patch
1142 # User test
1135 # User test
1143 # Date 4 0
1136 # Date 4 0
1144 # Thu Jan 01 00:00:04 1970 +0000
1137 # Thu Jan 01 00:00:04 1970 +0000
1145 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1138 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1146 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
1139 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
1147 long line
1140 long line
1148
1141
1149 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
1142 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
1150 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1143 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1151 +++ b/long Thu Jan 01 00:00:04 1970 +0000
1144 +++ b/long Thu Jan 01 00:00:04 1970 +0000
1152 @@ -0,0 +1,4 @@
1145 @@ -0,0 +1,4 @@
1153 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1146 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1154 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1147 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1155 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1148 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1156 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1149 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1157 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1150 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1158 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1151 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1159 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1152 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1160 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1153 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1161 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1154 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1162 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1155 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1163 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1156 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1164 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1157 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1165 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1158 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1166 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1159 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1167 +foo
1160 +foo
1168 +
1161 +
1169 +bar
1162 +bar
1170
1163
1171 --===*=-- (glob)
1164 --===*=-- (glob)
1172
1165
1173 test attach and body for single patch:
1166 test attach and body for single patch:
1174 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a --body -r 2 | $FILTERBOUNDARY
1167 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a --body -r 2 | $FILTERBOUNDARY
1175 this patch series consists of 1 patches.
1168 this patch series consists of 1 patches.
1176
1169
1177
1170
1178 displaying [PATCH] test ...
1171 displaying [PATCH] test ...
1179 Content-Type: multipart/mixed; boundary="===*==" (glob)
1172 Content-Type: multipart/mixed; boundary="===*==" (glob)
1180 MIME-Version: 1.0
1173 MIME-Version: 1.0
1181 Subject: [PATCH] test
1174 Subject: [PATCH] test
1182 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1175 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1183 X-Mercurial-Series-Index: 1
1176 X-Mercurial-Series-Index: 1
1184 X-Mercurial-Series-Total: 1
1177 X-Mercurial-Series-Total: 1
1185 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1178 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1186 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1179 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1187 User-Agent: Mercurial-patchbomb/* (glob)
1180 User-Agent: Mercurial-patchbomb/* (glob)
1188 Date: Thu, 01 Jan 1970 00:01:00 +0000
1181 Date: Thu, 01 Jan 1970 00:01:00 +0000
1189 From: quux
1182 From: quux
1190 To: foo
1183 To: foo
1191 Cc: bar
1184 Cc: bar
1192
1185
1193 --===*= (glob)
1186 --===*= (glob)
1194 Content-Type: text/plain; charset="us-ascii"
1187 Content-Type: text/plain; charset="us-ascii"
1195 MIME-Version: 1.0
1188 MIME-Version: 1.0
1196 Content-Transfer-Encoding: 7bit
1189 Content-Transfer-Encoding: 7bit
1197
1190
1198 # HG changeset patch
1191 # HG changeset patch
1199 # User test
1192 # User test
1200 # Date 3 0
1193 # Date 3 0
1201 # Thu Jan 01 00:00:03 1970 +0000
1194 # Thu Jan 01 00:00:03 1970 +0000
1202 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1195 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1203 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1196 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1204 c
1197 c
1205
1198
1206 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1199 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1207 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1200 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1208 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1201 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1209 @@ -0,0 +1,1 @@
1202 @@ -0,0 +1,1 @@
1210 +c
1203 +c
1211
1204
1212 --===*= (glob)
1205 --===*= (glob)
1213 Content-Type: text/x-patch; charset="us-ascii"
1206 Content-Type: text/x-patch; charset="us-ascii"
1214 MIME-Version: 1.0
1207 MIME-Version: 1.0
1215 Content-Transfer-Encoding: 7bit
1208 Content-Transfer-Encoding: 7bit
1216 Content-Disposition: attachment; filename=t2.patch
1209 Content-Disposition: attachment; filename=t2.patch
1217
1210
1218 # HG changeset patch
1211 # HG changeset patch
1219 # User test
1212 # User test
1220 # Date 3 0
1213 # Date 3 0
1221 # Thu Jan 01 00:00:03 1970 +0000
1214 # Thu Jan 01 00:00:03 1970 +0000
1222 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1215 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1223 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1216 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1224 c
1217 c
1225
1218
1226 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1219 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1227 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1220 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1228 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1221 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1229 @@ -0,0 +1,1 @@
1222 @@ -0,0 +1,1 @@
1230 +c
1223 +c
1231
1224
1232 --===*=-- (glob)
1225 --===*=-- (glob)
1233
1226
1234 test attach for multiple patches:
1227 test attach for multiple patches:
1235 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
1228 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -a \
1236 > -r 0:1 -r 4 | $FILTERBOUNDARY
1229 > -r 0:1 -r 4 | $FILTERBOUNDARY
1237 this patch series consists of 3 patches.
1230 this patch series consists of 3 patches.
1238
1231
1239
1232
1240 Write the introductory message for the patch series.
1233 Write the introductory message for the patch series.
1241
1234
1242
1235
1243 displaying [PATCH 0 of 3] test ...
1236 displaying [PATCH 0 of 3] test ...
1244 Content-Type: text/plain; charset="us-ascii"
1237 Content-Type: text/plain; charset="us-ascii"
1245 MIME-Version: 1.0
1238 MIME-Version: 1.0
1246 Content-Transfer-Encoding: 7bit
1239 Content-Transfer-Encoding: 7bit
1247 Subject: [PATCH 0 of 3] test
1240 Subject: [PATCH 0 of 3] test
1248 Message-Id: <patchbomb.60@*> (glob)
1241 Message-Id: <patchbomb.60@*> (glob)
1249 User-Agent: Mercurial-patchbomb/* (glob)
1242 User-Agent: Mercurial-patchbomb/* (glob)
1250 Date: Thu, 01 Jan 1970 00:01:00 +0000
1243 Date: Thu, 01 Jan 1970 00:01:00 +0000
1251 From: quux
1244 From: quux
1252 To: foo
1245 To: foo
1253 Cc: bar
1246 Cc: bar
1254
1247
1255
1248
1256 displaying [PATCH 1 of 3] a ...
1249 displaying [PATCH 1 of 3] a ...
1257 Content-Type: multipart/mixed; boundary="===*==" (glob)
1250 Content-Type: multipart/mixed; boundary="===*==" (glob)
1258 MIME-Version: 1.0
1251 MIME-Version: 1.0
1259 Subject: [PATCH 1 of 3] a
1252 Subject: [PATCH 1 of 3] a
1260 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1253 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1261 X-Mercurial-Series-Index: 1
1254 X-Mercurial-Series-Index: 1
1262 X-Mercurial-Series-Total: 3
1255 X-Mercurial-Series-Total: 3
1263 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1256 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1264 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1257 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1265 In-Reply-To: <patchbomb.60@*> (glob)
1258 In-Reply-To: <patchbomb.60@*> (glob)
1266 References: <patchbomb.60@*> (glob)
1259 References: <patchbomb.60@*> (glob)
1267 User-Agent: Mercurial-patchbomb/* (glob)
1260 User-Agent: Mercurial-patchbomb/* (glob)
1268 Date: Thu, 01 Jan 1970 00:01:01 +0000
1261 Date: Thu, 01 Jan 1970 00:01:01 +0000
1269 From: quux
1262 From: quux
1270 To: foo
1263 To: foo
1271 Cc: bar
1264 Cc: bar
1272
1265
1273 --===*= (glob)
1266 --===*= (glob)
1274 Content-Type: text/plain; charset="us-ascii"
1267 Content-Type: text/plain; charset="us-ascii"
1275 MIME-Version: 1.0
1268 MIME-Version: 1.0
1276 Content-Transfer-Encoding: 7bit
1269 Content-Transfer-Encoding: 7bit
1277
1270
1278 Patch subject is complete summary.
1271 Patch subject is complete summary.
1279
1272
1280
1273
1281
1274
1282 --===*= (glob)
1275 --===*= (glob)
1283 Content-Type: text/x-patch; charset="us-ascii"
1276 Content-Type: text/x-patch; charset="us-ascii"
1284 MIME-Version: 1.0
1277 MIME-Version: 1.0
1285 Content-Transfer-Encoding: 7bit
1278 Content-Transfer-Encoding: 7bit
1286 Content-Disposition: attachment; filename=t2-1.patch
1279 Content-Disposition: attachment; filename=t2-1.patch
1287
1280
1288 # HG changeset patch
1281 # HG changeset patch
1289 # User test
1282 # User test
1290 # Date 1 0
1283 # Date 1 0
1291 # Thu Jan 01 00:00:01 1970 +0000
1284 # Thu Jan 01 00:00:01 1970 +0000
1292 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1285 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1293 # Parent 0000000000000000000000000000000000000000
1286 # Parent 0000000000000000000000000000000000000000
1294 a
1287 a
1295
1288
1296 diff -r 000000000000 -r 8580ff50825a a
1289 diff -r 000000000000 -r 8580ff50825a a
1297 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1290 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1298 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1291 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1299 @@ -0,0 +1,1 @@
1292 @@ -0,0 +1,1 @@
1300 +a
1293 +a
1301
1294
1302 --===*=-- (glob)
1295 --===*=-- (glob)
1303 displaying [PATCH 2 of 3] b ...
1296 displaying [PATCH 2 of 3] b ...
1304 Content-Type: multipart/mixed; boundary="===*==" (glob)
1297 Content-Type: multipart/mixed; boundary="===*==" (glob)
1305 MIME-Version: 1.0
1298 MIME-Version: 1.0
1306 Subject: [PATCH 2 of 3] b
1299 Subject: [PATCH 2 of 3] b
1307 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1300 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1308 X-Mercurial-Series-Index: 2
1301 X-Mercurial-Series-Index: 2
1309 X-Mercurial-Series-Total: 3
1302 X-Mercurial-Series-Total: 3
1310 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1303 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1311 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1304 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1312 In-Reply-To: <patchbomb.60@*> (glob)
1305 In-Reply-To: <patchbomb.60@*> (glob)
1313 References: <patchbomb.60@*> (glob)
1306 References: <patchbomb.60@*> (glob)
1314 User-Agent: Mercurial-patchbomb/* (glob)
1307 User-Agent: Mercurial-patchbomb/* (glob)
1315 Date: Thu, 01 Jan 1970 00:01:02 +0000
1308 Date: Thu, 01 Jan 1970 00:01:02 +0000
1316 From: quux
1309 From: quux
1317 To: foo
1310 To: foo
1318 Cc: bar
1311 Cc: bar
1319
1312
1320 --===*= (glob)
1313 --===*= (glob)
1321 Content-Type: text/plain; charset="us-ascii"
1314 Content-Type: text/plain; charset="us-ascii"
1322 MIME-Version: 1.0
1315 MIME-Version: 1.0
1323 Content-Transfer-Encoding: 7bit
1316 Content-Transfer-Encoding: 7bit
1324
1317
1325 Patch subject is complete summary.
1318 Patch subject is complete summary.
1326
1319
1327
1320
1328
1321
1329 --===*= (glob)
1322 --===*= (glob)
1330 Content-Type: text/x-patch; charset="us-ascii"
1323 Content-Type: text/x-patch; charset="us-ascii"
1331 MIME-Version: 1.0
1324 MIME-Version: 1.0
1332 Content-Transfer-Encoding: 7bit
1325 Content-Transfer-Encoding: 7bit
1333 Content-Disposition: attachment; filename=t2-2.patch
1326 Content-Disposition: attachment; filename=t2-2.patch
1334
1327
1335 # HG changeset patch
1328 # HG changeset patch
1336 # User test
1329 # User test
1337 # Date 2 0
1330 # Date 2 0
1338 # Thu Jan 01 00:00:02 1970 +0000
1331 # Thu Jan 01 00:00:02 1970 +0000
1339 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1332 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1340 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1333 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1341 b
1334 b
1342
1335
1343 diff -r 8580ff50825a -r 97d72e5f12c7 b
1336 diff -r 8580ff50825a -r 97d72e5f12c7 b
1344 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1337 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1345 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1338 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1346 @@ -0,0 +1,1 @@
1339 @@ -0,0 +1,1 @@
1347 +b
1340 +b
1348
1341
1349 --===*=-- (glob)
1342 --===*=-- (glob)
1350 displaying [PATCH 3 of 3] long line ...
1343 displaying [PATCH 3 of 3] long line ...
1351 Content-Type: multipart/mixed; boundary="===*==" (glob)
1344 Content-Type: multipart/mixed; boundary="===*==" (glob)
1352 MIME-Version: 1.0
1345 MIME-Version: 1.0
1353 Subject: [PATCH 3 of 3] long line
1346 Subject: [PATCH 3 of 3] long line
1354 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1347 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1355 X-Mercurial-Series-Index: 3
1348 X-Mercurial-Series-Index: 3
1356 X-Mercurial-Series-Total: 3
1349 X-Mercurial-Series-Total: 3
1357 Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
1350 Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
1358 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1351 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1359 In-Reply-To: <patchbomb.60@*> (glob)
1352 In-Reply-To: <patchbomb.60@*> (glob)
1360 References: <patchbomb.60@*> (glob)
1353 References: <patchbomb.60@*> (glob)
1361 User-Agent: Mercurial-patchbomb/* (glob)
1354 User-Agent: Mercurial-patchbomb/* (glob)
1362 Date: Thu, 01 Jan 1970 00:01:03 +0000
1355 Date: Thu, 01 Jan 1970 00:01:03 +0000
1363 From: quux
1356 From: quux
1364 To: foo
1357 To: foo
1365 Cc: bar
1358 Cc: bar
1366
1359
1367 --===*= (glob)
1360 --===*= (glob)
1368 Content-Type: text/plain; charset="us-ascii"
1361 Content-Type: text/plain; charset="us-ascii"
1369 MIME-Version: 1.0
1362 MIME-Version: 1.0
1370 Content-Transfer-Encoding: 7bit
1363 Content-Transfer-Encoding: 7bit
1371
1364
1372 Patch subject is complete summary.
1365 Patch subject is complete summary.
1373
1366
1374
1367
1375
1368
1376 --===*= (glob)
1369 --===*= (glob)
1377 Content-Type: text/x-patch; charset="us-ascii"
1370 Content-Type: text/x-patch; charset="us-ascii"
1378 MIME-Version: 1.0
1371 MIME-Version: 1.0
1379 Content-Transfer-Encoding: quoted-printable
1372 Content-Transfer-Encoding: quoted-printable
1380 Content-Disposition: attachment; filename=t2-3.patch
1373 Content-Disposition: attachment; filename=t2-3.patch
1381
1374
1382 # HG changeset patch
1375 # HG changeset patch
1383 # User test
1376 # User test
1384 # Date 4 0
1377 # Date 4 0
1385 # Thu Jan 01 00:00:04 1970 +0000
1378 # Thu Jan 01 00:00:04 1970 +0000
1386 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1379 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
1387 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
1380 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
1388 long line
1381 long line
1389
1382
1390 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
1383 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
1391 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1384 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1392 +++ b/long Thu Jan 01 00:00:04 1970 +0000
1385 +++ b/long Thu Jan 01 00:00:04 1970 +0000
1393 @@ -0,0 +1,4 @@
1386 @@ -0,0 +1,4 @@
1394 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1387 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1395 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1388 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1396 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1389 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1397 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1390 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1398 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1391 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1399 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1392 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1400 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1393 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1401 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1394 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1402 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1395 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1403 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1396 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1404 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1397 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1405 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1398 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1406 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1399 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
1407 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1400 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1408 +foo
1401 +foo
1409 +
1402 +
1410 +bar
1403 +bar
1411
1404
1412 --===*=-- (glob)
1405 --===*=-- (glob)
1413
1406
1414 test intro for single patch:
1407 test intro for single patch:
1415 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1408 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1416 > -r 2
1409 > -r 2
1417 this patch series consists of 1 patches.
1410 this patch series consists of 1 patches.
1418
1411
1419
1412
1420 Write the introductory message for the patch series.
1413 Write the introductory message for the patch series.
1421
1414
1422
1415
1423 displaying [PATCH 0 of 1] test ...
1416 displaying [PATCH 0 of 1] test ...
1424 Content-Type: text/plain; charset="us-ascii"
1417 Content-Type: text/plain; charset="us-ascii"
1425 MIME-Version: 1.0
1418 MIME-Version: 1.0
1426 Content-Transfer-Encoding: 7bit
1419 Content-Transfer-Encoding: 7bit
1427 Subject: [PATCH 0 of 1] test
1420 Subject: [PATCH 0 of 1] test
1428 Message-Id: <patchbomb.60@*> (glob)
1421 Message-Id: <patchbomb.60@*> (glob)
1429 User-Agent: Mercurial-patchbomb/* (glob)
1422 User-Agent: Mercurial-patchbomb/* (glob)
1430 Date: Thu, 01 Jan 1970 00:01:00 +0000
1423 Date: Thu, 01 Jan 1970 00:01:00 +0000
1431 From: quux
1424 From: quux
1432 To: foo
1425 To: foo
1433 Cc: bar
1426 Cc: bar
1434
1427
1435
1428
1436 displaying [PATCH 1 of 1] c ...
1429 displaying [PATCH 1 of 1] c ...
1437 Content-Type: text/plain; charset="us-ascii"
1430 Content-Type: text/plain; charset="us-ascii"
1438 MIME-Version: 1.0
1431 MIME-Version: 1.0
1439 Content-Transfer-Encoding: 7bit
1432 Content-Transfer-Encoding: 7bit
1440 Subject: [PATCH 1 of 1] c
1433 Subject: [PATCH 1 of 1] c
1441 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1434 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1442 X-Mercurial-Series-Index: 1
1435 X-Mercurial-Series-Index: 1
1443 X-Mercurial-Series-Total: 1
1436 X-Mercurial-Series-Total: 1
1444 Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1437 Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1445 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1438 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1446 In-Reply-To: <patchbomb.60@*> (glob)
1439 In-Reply-To: <patchbomb.60@*> (glob)
1447 References: <patchbomb.60@*> (glob)
1440 References: <patchbomb.60@*> (glob)
1448 User-Agent: Mercurial-patchbomb/* (glob)
1441 User-Agent: Mercurial-patchbomb/* (glob)
1449 Date: Thu, 01 Jan 1970 00:01:01 +0000
1442 Date: Thu, 01 Jan 1970 00:01:01 +0000
1450 From: quux
1443 From: quux
1451 To: foo
1444 To: foo
1452 Cc: bar
1445 Cc: bar
1453
1446
1454 # HG changeset patch
1447 # HG changeset patch
1455 # User test
1448 # User test
1456 # Date 3 0
1449 # Date 3 0
1457 # Thu Jan 01 00:00:03 1970 +0000
1450 # Thu Jan 01 00:00:03 1970 +0000
1458 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1451 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1459 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1452 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1460 c
1453 c
1461
1454
1462 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1455 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1463 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1456 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1464 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1457 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1465 @@ -0,0 +1,1 @@
1458 @@ -0,0 +1,1 @@
1466 +c
1459 +c
1467
1460
1468
1461
1469 test --desc without --intro for a single patch:
1462 test --desc without --intro for a single patch:
1470 $ echo foo > intro.text
1463 $ echo foo > intro.text
1471 $ hg email --date '1970-1-1 0:1' -n --desc intro.text -f quux -t foo -c bar \
1464 $ hg email --date '1970-1-1 0:1' -n --desc intro.text -f quux -t foo -c bar \
1472 > -s test -r 2
1465 > -s test -r 2
1473 this patch series consists of 1 patches.
1466 this patch series consists of 1 patches.
1474
1467
1475
1468
1476 displaying [PATCH 0 of 1] test ...
1469 displaying [PATCH 0 of 1] test ...
1477 Content-Type: text/plain; charset="us-ascii"
1470 Content-Type: text/plain; charset="us-ascii"
1478 MIME-Version: 1.0
1471 MIME-Version: 1.0
1479 Content-Transfer-Encoding: 7bit
1472 Content-Transfer-Encoding: 7bit
1480 Subject: [PATCH 0 of 1] test
1473 Subject: [PATCH 0 of 1] test
1481 Message-Id: <patchbomb.60@*> (glob)
1474 Message-Id: <patchbomb.60@*> (glob)
1482 User-Agent: Mercurial-patchbomb/* (glob)
1475 User-Agent: Mercurial-patchbomb/* (glob)
1483 Date: Thu, 01 Jan 1970 00:01:00 +0000
1476 Date: Thu, 01 Jan 1970 00:01:00 +0000
1484 From: quux
1477 From: quux
1485 To: foo
1478 To: foo
1486 Cc: bar
1479 Cc: bar
1487
1480
1488 foo
1481 foo
1489
1482
1490 displaying [PATCH 1 of 1] c ...
1483 displaying [PATCH 1 of 1] c ...
1491 Content-Type: text/plain; charset="us-ascii"
1484 Content-Type: text/plain; charset="us-ascii"
1492 MIME-Version: 1.0
1485 MIME-Version: 1.0
1493 Content-Transfer-Encoding: 7bit
1486 Content-Transfer-Encoding: 7bit
1494 Subject: [PATCH 1 of 1] c
1487 Subject: [PATCH 1 of 1] c
1495 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1488 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1496 X-Mercurial-Series-Index: 1
1489 X-Mercurial-Series-Index: 1
1497 X-Mercurial-Series-Total: 1
1490 X-Mercurial-Series-Total: 1
1498 Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1491 Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1499 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1492 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
1500 In-Reply-To: <patchbomb.60@*> (glob)
1493 In-Reply-To: <patchbomb.60@*> (glob)
1501 References: <patchbomb.60@*> (glob)
1494 References: <patchbomb.60@*> (glob)
1502 User-Agent: Mercurial-patchbomb/* (glob)
1495 User-Agent: Mercurial-patchbomb/* (glob)
1503 Date: Thu, 01 Jan 1970 00:01:01 +0000
1496 Date: Thu, 01 Jan 1970 00:01:01 +0000
1504 From: quux
1497 From: quux
1505 To: foo
1498 To: foo
1506 Cc: bar
1499 Cc: bar
1507
1500
1508 # HG changeset patch
1501 # HG changeset patch
1509 # User test
1502 # User test
1510 # Date 3 0
1503 # Date 3 0
1511 # Thu Jan 01 00:00:03 1970 +0000
1504 # Thu Jan 01 00:00:03 1970 +0000
1512 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1505 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1513 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1506 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1514 c
1507 c
1515
1508
1516 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1509 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1517 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1510 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1518 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1511 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1519 @@ -0,0 +1,1 @@
1512 @@ -0,0 +1,1 @@
1520 +c
1513 +c
1521
1514
1522
1515
1523 test intro for multiple patches:
1516 test intro for multiple patches:
1524 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1517 $ hg email --date '1970-1-1 0:1' -n --intro -f quux -t foo -c bar -s test \
1525 > -r 0:1
1518 > -r 0:1
1526 this patch series consists of 2 patches.
1519 this patch series consists of 2 patches.
1527
1520
1528
1521
1529 Write the introductory message for the patch series.
1522 Write the introductory message for the patch series.
1530
1523
1531
1524
1532 displaying [PATCH 0 of 2] test ...
1525 displaying [PATCH 0 of 2] test ...
1533 Content-Type: text/plain; charset="us-ascii"
1526 Content-Type: text/plain; charset="us-ascii"
1534 MIME-Version: 1.0
1527 MIME-Version: 1.0
1535 Content-Transfer-Encoding: 7bit
1528 Content-Transfer-Encoding: 7bit
1536 Subject: [PATCH 0 of 2] test
1529 Subject: [PATCH 0 of 2] test
1537 Message-Id: <patchbomb.60@*> (glob)
1530 Message-Id: <patchbomb.60@*> (glob)
1538 User-Agent: Mercurial-patchbomb/* (glob)
1531 User-Agent: Mercurial-patchbomb/* (glob)
1539 Date: Thu, 01 Jan 1970 00:01:00 +0000
1532 Date: Thu, 01 Jan 1970 00:01:00 +0000
1540 From: quux
1533 From: quux
1541 To: foo
1534 To: foo
1542 Cc: bar
1535 Cc: bar
1543
1536
1544
1537
1545 displaying [PATCH 1 of 2] a ...
1538 displaying [PATCH 1 of 2] a ...
1546 Content-Type: text/plain; charset="us-ascii"
1539 Content-Type: text/plain; charset="us-ascii"
1547 MIME-Version: 1.0
1540 MIME-Version: 1.0
1548 Content-Transfer-Encoding: 7bit
1541 Content-Transfer-Encoding: 7bit
1549 Subject: [PATCH 1 of 2] a
1542 Subject: [PATCH 1 of 2] a
1550 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1543 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1551 X-Mercurial-Series-Index: 1
1544 X-Mercurial-Series-Index: 1
1552 X-Mercurial-Series-Total: 2
1545 X-Mercurial-Series-Total: 2
1553 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1546 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1554 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1547 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1555 In-Reply-To: <patchbomb.60@*> (glob)
1548 In-Reply-To: <patchbomb.60@*> (glob)
1556 References: <patchbomb.60@*> (glob)
1549 References: <patchbomb.60@*> (glob)
1557 User-Agent: Mercurial-patchbomb/* (glob)
1550 User-Agent: Mercurial-patchbomb/* (glob)
1558 Date: Thu, 01 Jan 1970 00:01:01 +0000
1551 Date: Thu, 01 Jan 1970 00:01:01 +0000
1559 From: quux
1552 From: quux
1560 To: foo
1553 To: foo
1561 Cc: bar
1554 Cc: bar
1562
1555
1563 # HG changeset patch
1556 # HG changeset patch
1564 # User test
1557 # User test
1565 # Date 1 0
1558 # Date 1 0
1566 # Thu Jan 01 00:00:01 1970 +0000
1559 # Thu Jan 01 00:00:01 1970 +0000
1567 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1560 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1568 # Parent 0000000000000000000000000000000000000000
1561 # Parent 0000000000000000000000000000000000000000
1569 a
1562 a
1570
1563
1571 diff -r 000000000000 -r 8580ff50825a a
1564 diff -r 000000000000 -r 8580ff50825a a
1572 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1565 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1573 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1566 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1574 @@ -0,0 +1,1 @@
1567 @@ -0,0 +1,1 @@
1575 +a
1568 +a
1576
1569
1577 displaying [PATCH 2 of 2] b ...
1570 displaying [PATCH 2 of 2] b ...
1578 Content-Type: text/plain; charset="us-ascii"
1571 Content-Type: text/plain; charset="us-ascii"
1579 MIME-Version: 1.0
1572 MIME-Version: 1.0
1580 Content-Transfer-Encoding: 7bit
1573 Content-Transfer-Encoding: 7bit
1581 Subject: [PATCH 2 of 2] b
1574 Subject: [PATCH 2 of 2] b
1582 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1575 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1583 X-Mercurial-Series-Index: 2
1576 X-Mercurial-Series-Index: 2
1584 X-Mercurial-Series-Total: 2
1577 X-Mercurial-Series-Total: 2
1585 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1578 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1586 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1579 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1587 In-Reply-To: <patchbomb.60@*> (glob)
1580 In-Reply-To: <patchbomb.60@*> (glob)
1588 References: <patchbomb.60@*> (glob)
1581 References: <patchbomb.60@*> (glob)
1589 User-Agent: Mercurial-patchbomb/* (glob)
1582 User-Agent: Mercurial-patchbomb/* (glob)
1590 Date: Thu, 01 Jan 1970 00:01:02 +0000
1583 Date: Thu, 01 Jan 1970 00:01:02 +0000
1591 From: quux
1584 From: quux
1592 To: foo
1585 To: foo
1593 Cc: bar
1586 Cc: bar
1594
1587
1595 # HG changeset patch
1588 # HG changeset patch
1596 # User test
1589 # User test
1597 # Date 2 0
1590 # Date 2 0
1598 # Thu Jan 01 00:00:02 1970 +0000
1591 # Thu Jan 01 00:00:02 1970 +0000
1599 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1592 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1600 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1593 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1601 b
1594 b
1602
1595
1603 diff -r 8580ff50825a -r 97d72e5f12c7 b
1596 diff -r 8580ff50825a -r 97d72e5f12c7 b
1604 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1597 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1605 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1598 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1606 @@ -0,0 +1,1 @@
1599 @@ -0,0 +1,1 @@
1607 +b
1600 +b
1608
1601
1609
1602
1610 test reply-to via config:
1603 test reply-to via config:
1611 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1604 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1612 > --config patchbomb.reply-to='baz@example.com'
1605 > --config patchbomb.reply-to='baz@example.com'
1613 this patch series consists of 1 patches.
1606 this patch series consists of 1 patches.
1614
1607
1615
1608
1616 displaying [PATCH] test ...
1609 displaying [PATCH] test ...
1617 Content-Type: text/plain; charset="us-ascii"
1610 Content-Type: text/plain; charset="us-ascii"
1618 MIME-Version: 1.0
1611 MIME-Version: 1.0
1619 Content-Transfer-Encoding: 7bit
1612 Content-Transfer-Encoding: 7bit
1620 Subject: [PATCH] test
1613 Subject: [PATCH] test
1621 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1614 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1622 X-Mercurial-Series-Index: 1
1615 X-Mercurial-Series-Index: 1
1623 X-Mercurial-Series-Total: 1
1616 X-Mercurial-Series-Total: 1
1624 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1617 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1625 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1618 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1626 User-Agent: Mercurial-patchbomb/* (glob)
1619 User-Agent: Mercurial-patchbomb/* (glob)
1627 Date: Thu, 01 Jan 1970 00:01:00 +0000
1620 Date: Thu, 01 Jan 1970 00:01:00 +0000
1628 From: quux
1621 From: quux
1629 To: foo
1622 To: foo
1630 Cc: bar
1623 Cc: bar
1631 Reply-To: baz@example.com
1624 Reply-To: baz@example.com
1632
1625
1633 # HG changeset patch
1626 # HG changeset patch
1634 # User test
1627 # User test
1635 # Date 3 0
1628 # Date 3 0
1636 # Thu Jan 01 00:00:03 1970 +0000
1629 # Thu Jan 01 00:00:03 1970 +0000
1637 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1630 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1638 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1631 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1639 c
1632 c
1640
1633
1641 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1634 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1642 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1635 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1643 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1636 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1644 @@ -0,0 +1,1 @@
1637 @@ -0,0 +1,1 @@
1645 +c
1638 +c
1646
1639
1647
1640
1648 test reply-to via command line:
1641 test reply-to via command line:
1649 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1642 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -r 2 \
1650 > --reply-to baz --reply-to fred
1643 > --reply-to baz --reply-to fred
1651 this patch series consists of 1 patches.
1644 this patch series consists of 1 patches.
1652
1645
1653
1646
1654 displaying [PATCH] test ...
1647 displaying [PATCH] test ...
1655 Content-Type: text/plain; charset="us-ascii"
1648 Content-Type: text/plain; charset="us-ascii"
1656 MIME-Version: 1.0
1649 MIME-Version: 1.0
1657 Content-Transfer-Encoding: 7bit
1650 Content-Transfer-Encoding: 7bit
1658 Subject: [PATCH] test
1651 Subject: [PATCH] test
1659 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1652 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1660 X-Mercurial-Series-Index: 1
1653 X-Mercurial-Series-Index: 1
1661 X-Mercurial-Series-Total: 1
1654 X-Mercurial-Series-Total: 1
1662 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1655 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1663 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1656 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1664 User-Agent: Mercurial-patchbomb/* (glob)
1657 User-Agent: Mercurial-patchbomb/* (glob)
1665 Date: Thu, 01 Jan 1970 00:01:00 +0000
1658 Date: Thu, 01 Jan 1970 00:01:00 +0000
1666 From: quux
1659 From: quux
1667 To: foo
1660 To: foo
1668 Cc: bar
1661 Cc: bar
1669 Reply-To: baz, fred
1662 Reply-To: baz, fred
1670
1663
1671 # HG changeset patch
1664 # HG changeset patch
1672 # User test
1665 # User test
1673 # Date 3 0
1666 # Date 3 0
1674 # Thu Jan 01 00:00:03 1970 +0000
1667 # Thu Jan 01 00:00:03 1970 +0000
1675 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1668 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1676 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1669 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1677 c
1670 c
1678
1671
1679 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1672 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1680 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1673 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1681 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1674 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1682 @@ -0,0 +1,1 @@
1675 @@ -0,0 +1,1 @@
1683 +c
1676 +c
1684
1677
1685
1678
1686 tagging csets:
1679 tagging csets:
1687 $ hg tag -r0 zero zero.foo
1680 $ hg tag -r0 zero zero.foo
1688 $ hg tag -r1 one one.patch
1681 $ hg tag -r1 one one.patch
1689 $ hg tag -r2 two two.diff
1682 $ hg tag -r2 two two.diff
1690
1683
1691 test inline for single named patch:
1684 test inline for single named patch:
1692 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
1685 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
1693 > -r 2 | $FILTERBOUNDARY
1686 > -r 2 | $FILTERBOUNDARY
1694 this patch series consists of 1 patches.
1687 this patch series consists of 1 patches.
1695
1688
1696
1689
1697 displaying [PATCH] test ...
1690 displaying [PATCH] test ...
1698 Content-Type: multipart/mixed; boundary="===*==" (glob)
1691 Content-Type: multipart/mixed; boundary="===*==" (glob)
1699 MIME-Version: 1.0
1692 MIME-Version: 1.0
1700 Subject: [PATCH] test
1693 Subject: [PATCH] test
1701 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1694 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
1702 X-Mercurial-Series-Index: 1
1695 X-Mercurial-Series-Index: 1
1703 X-Mercurial-Series-Total: 1
1696 X-Mercurial-Series-Total: 1
1704 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1697 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1705 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1698 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
1706 User-Agent: Mercurial-patchbomb/* (glob)
1699 User-Agent: Mercurial-patchbomb/* (glob)
1707 Date: Thu, 01 Jan 1970 00:01:00 +0000
1700 Date: Thu, 01 Jan 1970 00:01:00 +0000
1708 From: quux
1701 From: quux
1709 To: foo
1702 To: foo
1710 Cc: bar
1703 Cc: bar
1711
1704
1712 --===*= (glob)
1705 --===*= (glob)
1713 Content-Type: text/x-patch; charset="us-ascii"
1706 Content-Type: text/x-patch; charset="us-ascii"
1714 MIME-Version: 1.0
1707 MIME-Version: 1.0
1715 Content-Transfer-Encoding: 7bit
1708 Content-Transfer-Encoding: 7bit
1716 Content-Disposition: inline; filename=two.diff
1709 Content-Disposition: inline; filename=two.diff
1717
1710
1718 # HG changeset patch
1711 # HG changeset patch
1719 # User test
1712 # User test
1720 # Date 3 0
1713 # Date 3 0
1721 # Thu Jan 01 00:00:03 1970 +0000
1714 # Thu Jan 01 00:00:03 1970 +0000
1722 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1715 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
1723 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1716 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1724 c
1717 c
1725
1718
1726 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1719 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
1727 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1720 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1728 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1721 +++ b/c Thu Jan 01 00:00:03 1970 +0000
1729 @@ -0,0 +1,1 @@
1722 @@ -0,0 +1,1 @@
1730 +c
1723 +c
1731
1724
1732 --===*=-- (glob)
1725 --===*=-- (glob)
1733
1726
1734 test inline for multiple named/unnamed patches:
1727 test inline for multiple named/unnamed patches:
1735 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
1728 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar -s test -i \
1736 > -r 0:1 | $FILTERBOUNDARY
1729 > -r 0:1 | $FILTERBOUNDARY
1737 this patch series consists of 2 patches.
1730 this patch series consists of 2 patches.
1738
1731
1739
1732
1740 Write the introductory message for the patch series.
1733 Write the introductory message for the patch series.
1741
1734
1742
1735
1743 displaying [PATCH 0 of 2] test ...
1736 displaying [PATCH 0 of 2] test ...
1744 Content-Type: text/plain; charset="us-ascii"
1737 Content-Type: text/plain; charset="us-ascii"
1745 MIME-Version: 1.0
1738 MIME-Version: 1.0
1746 Content-Transfer-Encoding: 7bit
1739 Content-Transfer-Encoding: 7bit
1747 Subject: [PATCH 0 of 2] test
1740 Subject: [PATCH 0 of 2] test
1748 Message-Id: <patchbomb.60@*> (glob)
1741 Message-Id: <patchbomb.60@*> (glob)
1749 User-Agent: Mercurial-patchbomb/* (glob)
1742 User-Agent: Mercurial-patchbomb/* (glob)
1750 Date: Thu, 01 Jan 1970 00:01:00 +0000
1743 Date: Thu, 01 Jan 1970 00:01:00 +0000
1751 From: quux
1744 From: quux
1752 To: foo
1745 To: foo
1753 Cc: bar
1746 Cc: bar
1754
1747
1755
1748
1756 displaying [PATCH 1 of 2] a ...
1749 displaying [PATCH 1 of 2] a ...
1757 Content-Type: multipart/mixed; boundary="===*==" (glob)
1750 Content-Type: multipart/mixed; boundary="===*==" (glob)
1758 MIME-Version: 1.0
1751 MIME-Version: 1.0
1759 Subject: [PATCH 1 of 2] a
1752 Subject: [PATCH 1 of 2] a
1760 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1753 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1761 X-Mercurial-Series-Index: 1
1754 X-Mercurial-Series-Index: 1
1762 X-Mercurial-Series-Total: 2
1755 X-Mercurial-Series-Total: 2
1763 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1756 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1764 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1757 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1765 In-Reply-To: <patchbomb.60@*> (glob)
1758 In-Reply-To: <patchbomb.60@*> (glob)
1766 References: <patchbomb.60@*> (glob)
1759 References: <patchbomb.60@*> (glob)
1767 User-Agent: Mercurial-patchbomb/* (glob)
1760 User-Agent: Mercurial-patchbomb/* (glob)
1768 Date: Thu, 01 Jan 1970 00:01:01 +0000
1761 Date: Thu, 01 Jan 1970 00:01:01 +0000
1769 From: quux
1762 From: quux
1770 To: foo
1763 To: foo
1771 Cc: bar
1764 Cc: bar
1772
1765
1773 --===*= (glob)
1766 --===*= (glob)
1774 Content-Type: text/x-patch; charset="us-ascii"
1767 Content-Type: text/x-patch; charset="us-ascii"
1775 MIME-Version: 1.0
1768 MIME-Version: 1.0
1776 Content-Transfer-Encoding: 7bit
1769 Content-Transfer-Encoding: 7bit
1777 Content-Disposition: inline; filename=t2-1.patch
1770 Content-Disposition: inline; filename=t2-1.patch
1778
1771
1779 # HG changeset patch
1772 # HG changeset patch
1780 # User test
1773 # User test
1781 # Date 1 0
1774 # Date 1 0
1782 # Thu Jan 01 00:00:01 1970 +0000
1775 # Thu Jan 01 00:00:01 1970 +0000
1783 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1776 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1784 # Parent 0000000000000000000000000000000000000000
1777 # Parent 0000000000000000000000000000000000000000
1785 a
1778 a
1786
1779
1787 diff -r 000000000000 -r 8580ff50825a a
1780 diff -r 000000000000 -r 8580ff50825a a
1788 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1781 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1789 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1782 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1790 @@ -0,0 +1,1 @@
1783 @@ -0,0 +1,1 @@
1791 +a
1784 +a
1792
1785
1793 --===*=-- (glob)
1786 --===*=-- (glob)
1794 displaying [PATCH 2 of 2] b ...
1787 displaying [PATCH 2 of 2] b ...
1795 Content-Type: multipart/mixed; boundary="===*==" (glob)
1788 Content-Type: multipart/mixed; boundary="===*==" (glob)
1796 MIME-Version: 1.0
1789 MIME-Version: 1.0
1797 Subject: [PATCH 2 of 2] b
1790 Subject: [PATCH 2 of 2] b
1798 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1791 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1799 X-Mercurial-Series-Index: 2
1792 X-Mercurial-Series-Index: 2
1800 X-Mercurial-Series-Total: 2
1793 X-Mercurial-Series-Total: 2
1801 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1794 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
1802 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1795 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1803 In-Reply-To: <patchbomb.60@*> (glob)
1796 In-Reply-To: <patchbomb.60@*> (glob)
1804 References: <patchbomb.60@*> (glob)
1797 References: <patchbomb.60@*> (glob)
1805 User-Agent: Mercurial-patchbomb/* (glob)
1798 User-Agent: Mercurial-patchbomb/* (glob)
1806 Date: Thu, 01 Jan 1970 00:01:02 +0000
1799 Date: Thu, 01 Jan 1970 00:01:02 +0000
1807 From: quux
1800 From: quux
1808 To: foo
1801 To: foo
1809 Cc: bar
1802 Cc: bar
1810
1803
1811 --===*= (glob)
1804 --===*= (glob)
1812 Content-Type: text/x-patch; charset="us-ascii"
1805 Content-Type: text/x-patch; charset="us-ascii"
1813 MIME-Version: 1.0
1806 MIME-Version: 1.0
1814 Content-Transfer-Encoding: 7bit
1807 Content-Transfer-Encoding: 7bit
1815 Content-Disposition: inline; filename=one.patch
1808 Content-Disposition: inline; filename=one.patch
1816
1809
1817 # HG changeset patch
1810 # HG changeset patch
1818 # User test
1811 # User test
1819 # Date 2 0
1812 # Date 2 0
1820 # Thu Jan 01 00:00:02 1970 +0000
1813 # Thu Jan 01 00:00:02 1970 +0000
1821 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1814 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1822 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1815 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1823 b
1816 b
1824
1817
1825 diff -r 8580ff50825a -r 97d72e5f12c7 b
1818 diff -r 8580ff50825a -r 97d72e5f12c7 b
1826 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1819 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1827 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1820 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1828 @@ -0,0 +1,1 @@
1821 @@ -0,0 +1,1 @@
1829 +b
1822 +b
1830
1823
1831 --===*=-- (glob)
1824 --===*=-- (glob)
1832
1825
1833
1826
1834 test inreplyto:
1827 test inreplyto:
1835 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1828 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1836 > -r tip
1829 > -r tip
1837 this patch series consists of 1 patches.
1830 this patch series consists of 1 patches.
1838
1831
1839
1832
1840 displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
1833 displaying [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b ...
1841 Content-Type: text/plain; charset="us-ascii"
1834 Content-Type: text/plain; charset="us-ascii"
1842 MIME-Version: 1.0
1835 MIME-Version: 1.0
1843 Content-Transfer-Encoding: 7bit
1836 Content-Transfer-Encoding: 7bit
1844 Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
1837 Subject: [PATCH] Added tag two, two.diff for changeset ff2c9fa2018b
1845 X-Mercurial-Node: 7aead2484924c445ad8ce2613df91f52f9e502ed
1838 X-Mercurial-Node: 7aead2484924c445ad8ce2613df91f52f9e502ed
1846 X-Mercurial-Series-Index: 1
1839 X-Mercurial-Series-Index: 1
1847 X-Mercurial-Series-Total: 1
1840 X-Mercurial-Series-Total: 1
1848 Message-Id: <7aead2484924c445ad8c.60@*> (glob)
1841 Message-Id: <7aead2484924c445ad8c.60@*> (glob)
1849 X-Mercurial-Series-Id: <7aead2484924c445ad8c.60@*> (glob)
1842 X-Mercurial-Series-Id: <7aead2484924c445ad8c.60@*> (glob)
1850 In-Reply-To: <baz>
1843 In-Reply-To: <baz>
1851 References: <baz>
1844 References: <baz>
1852 User-Agent: Mercurial-patchbomb/* (glob)
1845 User-Agent: Mercurial-patchbomb/* (glob)
1853 Date: Thu, 01 Jan 1970 00:01:00 +0000
1846 Date: Thu, 01 Jan 1970 00:01:00 +0000
1854 From: quux
1847 From: quux
1855 To: foo
1848 To: foo
1856 Cc: bar
1849 Cc: bar
1857
1850
1858 # HG changeset patch
1851 # HG changeset patch
1859 # User test
1852 # User test
1860 # Date 0 0
1853 # Date 0 0
1861 # Thu Jan 01 00:00:00 1970 +0000
1854 # Thu Jan 01 00:00:00 1970 +0000
1862 # Node ID 7aead2484924c445ad8ce2613df91f52f9e502ed
1855 # Node ID 7aead2484924c445ad8ce2613df91f52f9e502ed
1863 # Parent 045ca29b1ea20e4940411e695e20e521f2f0f98e
1856 # Parent 045ca29b1ea20e4940411e695e20e521f2f0f98e
1864 Added tag two, two.diff for changeset ff2c9fa2018b
1857 Added tag two, two.diff for changeset ff2c9fa2018b
1865
1858
1866 diff -r 045ca29b1ea2 -r 7aead2484924 .hgtags
1859 diff -r 045ca29b1ea2 -r 7aead2484924 .hgtags
1867 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1860 --- a/.hgtags Thu Jan 01 00:00:00 1970 +0000
1868 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1861 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
1869 @@ -2,3 +2,5 @@
1862 @@ -2,3 +2,5 @@
1870 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1863 8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
1871 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1864 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one
1872 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1865 97d72e5f12c7e84f85064aa72e5a297142c36ed9 one.patch
1873 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1866 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two
1874 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1867 +ff2c9fa2018b15fa74b33363bda9527323e2a99f two.diff
1875
1868
1876 no intro message in non-interactive mode
1869 no intro message in non-interactive mode
1877 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1870 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1878 > -r 0:1
1871 > -r 0:1
1879 this patch series consists of 2 patches.
1872 this patch series consists of 2 patches.
1880
1873
1881 (optional) Subject: [PATCH 0 of 2]
1874 (optional) Subject: [PATCH 0 of 2]
1882
1875
1883 displaying [PATCH 1 of 2] a ...
1876 displaying [PATCH 1 of 2] a ...
1884 Content-Type: text/plain; charset="us-ascii"
1877 Content-Type: text/plain; charset="us-ascii"
1885 MIME-Version: 1.0
1878 MIME-Version: 1.0
1886 Content-Transfer-Encoding: 7bit
1879 Content-Transfer-Encoding: 7bit
1887 Subject: [PATCH 1 of 2] a
1880 Subject: [PATCH 1 of 2] a
1888 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1881 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1889 X-Mercurial-Series-Index: 1
1882 X-Mercurial-Series-Index: 1
1890 X-Mercurial-Series-Total: 2
1883 X-Mercurial-Series-Total: 2
1891 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
1884 Message-Id: <8580ff50825a50c8f716.60@*> (glob)
1892 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
1885 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
1893 In-Reply-To: <baz>
1886 In-Reply-To: <baz>
1894 References: <baz>
1887 References: <baz>
1895 User-Agent: Mercurial-patchbomb/* (glob)
1888 User-Agent: Mercurial-patchbomb/* (glob)
1896 Date: Thu, 01 Jan 1970 00:01:00 +0000
1889 Date: Thu, 01 Jan 1970 00:01:00 +0000
1897 From: quux
1890 From: quux
1898 To: foo
1891 To: foo
1899 Cc: bar
1892 Cc: bar
1900
1893
1901 # HG changeset patch
1894 # HG changeset patch
1902 # User test
1895 # User test
1903 # Date 1 0
1896 # Date 1 0
1904 # Thu Jan 01 00:00:01 1970 +0000
1897 # Thu Jan 01 00:00:01 1970 +0000
1905 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1898 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1906 # Parent 0000000000000000000000000000000000000000
1899 # Parent 0000000000000000000000000000000000000000
1907 a
1900 a
1908
1901
1909 diff -r 000000000000 -r 8580ff50825a a
1902 diff -r 000000000000 -r 8580ff50825a a
1910 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1903 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1911 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1904 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1912 @@ -0,0 +1,1 @@
1905 @@ -0,0 +1,1 @@
1913 +a
1906 +a
1914
1907
1915 displaying [PATCH 2 of 2] b ...
1908 displaying [PATCH 2 of 2] b ...
1916 Content-Type: text/plain; charset="us-ascii"
1909 Content-Type: text/plain; charset="us-ascii"
1917 MIME-Version: 1.0
1910 MIME-Version: 1.0
1918 Content-Transfer-Encoding: 7bit
1911 Content-Transfer-Encoding: 7bit
1919 Subject: [PATCH 2 of 2] b
1912 Subject: [PATCH 2 of 2] b
1920 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1913 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1921 X-Mercurial-Series-Index: 2
1914 X-Mercurial-Series-Index: 2
1922 X-Mercurial-Series-Total: 2
1915 X-Mercurial-Series-Total: 2
1923 Message-Id: <97d72e5f12c7e84f8506.61@*> (glob)
1916 Message-Id: <97d72e5f12c7e84f8506.61@*> (glob)
1924 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
1917 X-Mercurial-Series-Id: <8580ff50825a50c8f716.60@*> (glob)
1925 In-Reply-To: <baz>
1918 In-Reply-To: <baz>
1926 References: <baz>
1919 References: <baz>
1927 User-Agent: Mercurial-patchbomb/* (glob)
1920 User-Agent: Mercurial-patchbomb/* (glob)
1928 Date: Thu, 01 Jan 1970 00:01:01 +0000
1921 Date: Thu, 01 Jan 1970 00:01:01 +0000
1929 From: quux
1922 From: quux
1930 To: foo
1923 To: foo
1931 Cc: bar
1924 Cc: bar
1932
1925
1933 # HG changeset patch
1926 # HG changeset patch
1934 # User test
1927 # User test
1935 # Date 2 0
1928 # Date 2 0
1936 # Thu Jan 01 00:00:02 1970 +0000
1929 # Thu Jan 01 00:00:02 1970 +0000
1937 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1930 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
1938 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1931 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
1939 b
1932 b
1940
1933
1941 diff -r 8580ff50825a -r 97d72e5f12c7 b
1934 diff -r 8580ff50825a -r 97d72e5f12c7 b
1942 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1935 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1943 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1936 +++ b/b Thu Jan 01 00:00:02 1970 +0000
1944 @@ -0,0 +1,1 @@
1937 @@ -0,0 +1,1 @@
1945 +b
1938 +b
1946
1939
1947
1940
1948
1941
1949
1942
1950 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1943 $ hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar --in-reply-to baz \
1951 > -s test -r 0:1
1944 > -s test -r 0:1
1952 this patch series consists of 2 patches.
1945 this patch series consists of 2 patches.
1953
1946
1954
1947
1955 Write the introductory message for the patch series.
1948 Write the introductory message for the patch series.
1956
1949
1957
1950
1958 displaying [PATCH 0 of 2] test ...
1951 displaying [PATCH 0 of 2] test ...
1959 Content-Type: text/plain; charset="us-ascii"
1952 Content-Type: text/plain; charset="us-ascii"
1960 MIME-Version: 1.0
1953 MIME-Version: 1.0
1961 Content-Transfer-Encoding: 7bit
1954 Content-Transfer-Encoding: 7bit
1962 Subject: [PATCH 0 of 2] test
1955 Subject: [PATCH 0 of 2] test
1963 Message-Id: <patchbomb.60@*> (glob)
1956 Message-Id: <patchbomb.60@*> (glob)
1964 In-Reply-To: <baz>
1957 In-Reply-To: <baz>
1965 References: <baz>
1958 References: <baz>
1966 User-Agent: Mercurial-patchbomb/* (glob)
1959 User-Agent: Mercurial-patchbomb/* (glob)
1967 Date: Thu, 01 Jan 1970 00:01:00 +0000
1960 Date: Thu, 01 Jan 1970 00:01:00 +0000
1968 From: quux
1961 From: quux
1969 To: foo
1962 To: foo
1970 Cc: bar
1963 Cc: bar
1971
1964
1972
1965
1973 displaying [PATCH 1 of 2] a ...
1966 displaying [PATCH 1 of 2] a ...
1974 Content-Type: text/plain; charset="us-ascii"
1967 Content-Type: text/plain; charset="us-ascii"
1975 MIME-Version: 1.0
1968 MIME-Version: 1.0
1976 Content-Transfer-Encoding: 7bit
1969 Content-Transfer-Encoding: 7bit
1977 Subject: [PATCH 1 of 2] a
1970 Subject: [PATCH 1 of 2] a
1978 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1971 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
1979 X-Mercurial-Series-Index: 1
1972 X-Mercurial-Series-Index: 1
1980 X-Mercurial-Series-Total: 2
1973 X-Mercurial-Series-Total: 2
1981 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1974 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
1982 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1975 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
1983 In-Reply-To: <patchbomb.60@*> (glob)
1976 In-Reply-To: <patchbomb.60@*> (glob)
1984 References: <patchbomb.60@*> (glob)
1977 References: <patchbomb.60@*> (glob)
1985 User-Agent: Mercurial-patchbomb/* (glob)
1978 User-Agent: Mercurial-patchbomb/* (glob)
1986 Date: Thu, 01 Jan 1970 00:01:01 +0000
1979 Date: Thu, 01 Jan 1970 00:01:01 +0000
1987 From: quux
1980 From: quux
1988 To: foo
1981 To: foo
1989 Cc: bar
1982 Cc: bar
1990
1983
1991 # HG changeset patch
1984 # HG changeset patch
1992 # User test
1985 # User test
1993 # Date 1 0
1986 # Date 1 0
1994 # Thu Jan 01 00:00:01 1970 +0000
1987 # Thu Jan 01 00:00:01 1970 +0000
1995 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1988 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
1996 # Parent 0000000000000000000000000000000000000000
1989 # Parent 0000000000000000000000000000000000000000
1997 a
1990 a
1998
1991
1999 diff -r 000000000000 -r 8580ff50825a a
1992 diff -r 000000000000 -r 8580ff50825a a
2000 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1993 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2001 +++ b/a Thu Jan 01 00:00:01 1970 +0000
1994 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2002 @@ -0,0 +1,1 @@
1995 @@ -0,0 +1,1 @@
2003 +a
1996 +a
2004
1997
2005 displaying [PATCH 2 of 2] b ...
1998 displaying [PATCH 2 of 2] b ...
2006 Content-Type: text/plain; charset="us-ascii"
1999 Content-Type: text/plain; charset="us-ascii"
2007 MIME-Version: 1.0
2000 MIME-Version: 1.0
2008 Content-Transfer-Encoding: 7bit
2001 Content-Transfer-Encoding: 7bit
2009 Subject: [PATCH 2 of 2] b
2002 Subject: [PATCH 2 of 2] b
2010 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2003 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2011 X-Mercurial-Series-Index: 2
2004 X-Mercurial-Series-Index: 2
2012 X-Mercurial-Series-Total: 2
2005 X-Mercurial-Series-Total: 2
2013 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
2006 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
2014 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2007 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2015 In-Reply-To: <patchbomb.60@*> (glob)
2008 In-Reply-To: <patchbomb.60@*> (glob)
2016 References: <patchbomb.60@*> (glob)
2009 References: <patchbomb.60@*> (glob)
2017 User-Agent: Mercurial-patchbomb/* (glob)
2010 User-Agent: Mercurial-patchbomb/* (glob)
2018 Date: Thu, 01 Jan 1970 00:01:02 +0000
2011 Date: Thu, 01 Jan 1970 00:01:02 +0000
2019 From: quux
2012 From: quux
2020 To: foo
2013 To: foo
2021 Cc: bar
2014 Cc: bar
2022
2015
2023 # HG changeset patch
2016 # HG changeset patch
2024 # User test
2017 # User test
2025 # Date 2 0
2018 # Date 2 0
2026 # Thu Jan 01 00:00:02 1970 +0000
2019 # Thu Jan 01 00:00:02 1970 +0000
2027 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2020 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2028 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
2021 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
2029 b
2022 b
2030
2023
2031 diff -r 8580ff50825a -r 97d72e5f12c7 b
2024 diff -r 8580ff50825a -r 97d72e5f12c7 b
2032 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2025 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2033 +++ b/b Thu Jan 01 00:00:02 1970 +0000
2026 +++ b/b Thu Jan 01 00:00:02 1970 +0000
2034 @@ -0,0 +1,1 @@
2027 @@ -0,0 +1,1 @@
2035 +b
2028 +b
2036
2029
2037
2030
2038 test single flag for single patch (and no warning when not mailing dirty rev):
2031 test single flag for single patch (and no warning when not mailing dirty rev):
2039 $ hg up -qr1
2032 $ hg up -qr1
2040 $ echo dirt > a
2033 $ echo dirt > a
2041 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
2034 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
2042 > -r 2 | $FILTERBOUNDARY
2035 > -r 2 | $FILTERBOUNDARY
2043 this patch series consists of 1 patches.
2036 this patch series consists of 1 patches.
2044
2037
2045
2038
2046 displaying [PATCH fooFlag] test ...
2039 displaying [PATCH fooFlag] test ...
2047 Content-Type: text/plain; charset="us-ascii"
2040 Content-Type: text/plain; charset="us-ascii"
2048 MIME-Version: 1.0
2041 MIME-Version: 1.0
2049 Content-Transfer-Encoding: 7bit
2042 Content-Transfer-Encoding: 7bit
2050 Subject: [PATCH fooFlag] test
2043 Subject: [PATCH fooFlag] test
2051 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2044 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2052 X-Mercurial-Series-Index: 1
2045 X-Mercurial-Series-Index: 1
2053 X-Mercurial-Series-Total: 1
2046 X-Mercurial-Series-Total: 1
2054 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2047 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2055 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2048 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2056 User-Agent: Mercurial-patchbomb/* (glob)
2049 User-Agent: Mercurial-patchbomb/* (glob)
2057 Date: Thu, 01 Jan 1970 00:01:00 +0000
2050 Date: Thu, 01 Jan 1970 00:01:00 +0000
2058 From: quux
2051 From: quux
2059 To: foo
2052 To: foo
2060 Cc: bar
2053 Cc: bar
2061
2054
2062 # HG changeset patch
2055 # HG changeset patch
2063 # User test
2056 # User test
2064 # Date 3 0
2057 # Date 3 0
2065 # Thu Jan 01 00:00:03 1970 +0000
2058 # Thu Jan 01 00:00:03 1970 +0000
2066 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2059 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2067 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2060 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2068 c
2061 c
2069
2062
2070 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2063 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2071 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2064 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2072 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2065 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2073 @@ -0,0 +1,1 @@
2066 @@ -0,0 +1,1 @@
2074 +c
2067 +c
2075
2068
2076
2069
2077 test single flag for multiple patches (and warning when mailing dirty rev):
2070 test single flag for multiple patches (and warning when mailing dirty rev):
2078 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
2071 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag -f quux -t foo -c bar -s test \
2079 > -r 0:1
2072 > -r 0:1
2080 warning: working directory has uncommitted changes
2073 warning: working directory has uncommitted changes
2081 this patch series consists of 2 patches.
2074 this patch series consists of 2 patches.
2082
2075
2083
2076
2084 Write the introductory message for the patch series.
2077 Write the introductory message for the patch series.
2085
2078
2086
2079
2087 displaying [PATCH 0 of 2 fooFlag] test ...
2080 displaying [PATCH 0 of 2 fooFlag] test ...
2088 Content-Type: text/plain; charset="us-ascii"
2081 Content-Type: text/plain; charset="us-ascii"
2089 MIME-Version: 1.0
2082 MIME-Version: 1.0
2090 Content-Transfer-Encoding: 7bit
2083 Content-Transfer-Encoding: 7bit
2091 Subject: [PATCH 0 of 2 fooFlag] test
2084 Subject: [PATCH 0 of 2 fooFlag] test
2092 Message-Id: <patchbomb.60@*> (glob)
2085 Message-Id: <patchbomb.60@*> (glob)
2093 User-Agent: Mercurial-patchbomb/* (glob)
2086 User-Agent: Mercurial-patchbomb/* (glob)
2094 Date: Thu, 01 Jan 1970 00:01:00 +0000
2087 Date: Thu, 01 Jan 1970 00:01:00 +0000
2095 From: quux
2088 From: quux
2096 To: foo
2089 To: foo
2097 Cc: bar
2090 Cc: bar
2098
2091
2099
2092
2100 displaying [PATCH 1 of 2 fooFlag] a ...
2093 displaying [PATCH 1 of 2 fooFlag] a ...
2101 Content-Type: text/plain; charset="us-ascii"
2094 Content-Type: text/plain; charset="us-ascii"
2102 MIME-Version: 1.0
2095 MIME-Version: 1.0
2103 Content-Transfer-Encoding: 7bit
2096 Content-Transfer-Encoding: 7bit
2104 Subject: [PATCH 1 of 2 fooFlag] a
2097 Subject: [PATCH 1 of 2 fooFlag] a
2105 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2098 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2106 X-Mercurial-Series-Index: 1
2099 X-Mercurial-Series-Index: 1
2107 X-Mercurial-Series-Total: 2
2100 X-Mercurial-Series-Total: 2
2108 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
2101 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
2109 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2102 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2110 In-Reply-To: <patchbomb.60@*> (glob)
2103 In-Reply-To: <patchbomb.60@*> (glob)
2111 References: <patchbomb.60@*> (glob)
2104 References: <patchbomb.60@*> (glob)
2112 User-Agent: Mercurial-patchbomb/* (glob)
2105 User-Agent: Mercurial-patchbomb/* (glob)
2113 Date: Thu, 01 Jan 1970 00:01:01 +0000
2106 Date: Thu, 01 Jan 1970 00:01:01 +0000
2114 From: quux
2107 From: quux
2115 To: foo
2108 To: foo
2116 Cc: bar
2109 Cc: bar
2117
2110
2118 # HG changeset patch
2111 # HG changeset patch
2119 # User test
2112 # User test
2120 # Date 1 0
2113 # Date 1 0
2121 # Thu Jan 01 00:00:01 1970 +0000
2114 # Thu Jan 01 00:00:01 1970 +0000
2122 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2115 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2123 # Parent 0000000000000000000000000000000000000000
2116 # Parent 0000000000000000000000000000000000000000
2124 a
2117 a
2125
2118
2126 diff -r 000000000000 -r 8580ff50825a a
2119 diff -r 000000000000 -r 8580ff50825a a
2127 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2120 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2128 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2121 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2129 @@ -0,0 +1,1 @@
2122 @@ -0,0 +1,1 @@
2130 +a
2123 +a
2131
2124
2132 displaying [PATCH 2 of 2 fooFlag] b ...
2125 displaying [PATCH 2 of 2 fooFlag] b ...
2133 Content-Type: text/plain; charset="us-ascii"
2126 Content-Type: text/plain; charset="us-ascii"
2134 MIME-Version: 1.0
2127 MIME-Version: 1.0
2135 Content-Transfer-Encoding: 7bit
2128 Content-Transfer-Encoding: 7bit
2136 Subject: [PATCH 2 of 2 fooFlag] b
2129 Subject: [PATCH 2 of 2 fooFlag] b
2137 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2130 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2138 X-Mercurial-Series-Index: 2
2131 X-Mercurial-Series-Index: 2
2139 X-Mercurial-Series-Total: 2
2132 X-Mercurial-Series-Total: 2
2140 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
2133 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
2141 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2134 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2142 In-Reply-To: <patchbomb.60@*> (glob)
2135 In-Reply-To: <patchbomb.60@*> (glob)
2143 References: <patchbomb.60@*> (glob)
2136 References: <patchbomb.60@*> (glob)
2144 User-Agent: Mercurial-patchbomb/* (glob)
2137 User-Agent: Mercurial-patchbomb/* (glob)
2145 Date: Thu, 01 Jan 1970 00:01:02 +0000
2138 Date: Thu, 01 Jan 1970 00:01:02 +0000
2146 From: quux
2139 From: quux
2147 To: foo
2140 To: foo
2148 Cc: bar
2141 Cc: bar
2149
2142
2150 # HG changeset patch
2143 # HG changeset patch
2151 # User test
2144 # User test
2152 # Date 2 0
2145 # Date 2 0
2153 # Thu Jan 01 00:00:02 1970 +0000
2146 # Thu Jan 01 00:00:02 1970 +0000
2154 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2147 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2155 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
2148 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
2156 b
2149 b
2157
2150
2158 diff -r 8580ff50825a -r 97d72e5f12c7 b
2151 diff -r 8580ff50825a -r 97d72e5f12c7 b
2159 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2152 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2160 +++ b/b Thu Jan 01 00:00:02 1970 +0000
2153 +++ b/b Thu Jan 01 00:00:02 1970 +0000
2161 @@ -0,0 +1,1 @@
2154 @@ -0,0 +1,1 @@
2162 +b
2155 +b
2163
2156
2164 $ hg revert --no-b a
2157 $ hg revert --no-b a
2165 $ hg up -q
2158 $ hg up -q
2166
2159
2167 test multiple flags for single patch:
2160 test multiple flags for single patch:
2168 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
2161 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
2169 > -c bar -s test -r 2
2162 > -c bar -s test -r 2
2170 this patch series consists of 1 patches.
2163 this patch series consists of 1 patches.
2171
2164
2172
2165
2173 displaying [PATCH fooFlag barFlag] test ...
2166 displaying [PATCH fooFlag barFlag] test ...
2174 Content-Type: text/plain; charset="us-ascii"
2167 Content-Type: text/plain; charset="us-ascii"
2175 MIME-Version: 1.0
2168 MIME-Version: 1.0
2176 Content-Transfer-Encoding: 7bit
2169 Content-Transfer-Encoding: 7bit
2177 Subject: [PATCH fooFlag barFlag] test
2170 Subject: [PATCH fooFlag barFlag] test
2178 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2171 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2179 X-Mercurial-Series-Index: 1
2172 X-Mercurial-Series-Index: 1
2180 X-Mercurial-Series-Total: 1
2173 X-Mercurial-Series-Total: 1
2181 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2174 Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2182 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2175 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
2183 User-Agent: Mercurial-patchbomb/* (glob)
2176 User-Agent: Mercurial-patchbomb/* (glob)
2184 Date: Thu, 01 Jan 1970 00:01:00 +0000
2177 Date: Thu, 01 Jan 1970 00:01:00 +0000
2185 From: quux
2178 From: quux
2186 To: foo
2179 To: foo
2187 Cc: bar
2180 Cc: bar
2188
2181
2189 # HG changeset patch
2182 # HG changeset patch
2190 # User test
2183 # User test
2191 # Date 3 0
2184 # Date 3 0
2192 # Thu Jan 01 00:00:03 1970 +0000
2185 # Thu Jan 01 00:00:03 1970 +0000
2193 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2186 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2194 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2187 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2195 c
2188 c
2196
2189
2197 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2190 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2198 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2191 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2199 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2192 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2200 @@ -0,0 +1,1 @@
2193 @@ -0,0 +1,1 @@
2201 +c
2194 +c
2202
2195
2203
2196
2204 test multiple flags for multiple patches:
2197 test multiple flags for multiple patches:
2205 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
2198 $ hg email --date '1970-1-1 0:1' -n --flag fooFlag --flag barFlag -f quux -t foo \
2206 > -c bar -s test -r 0:1
2199 > -c bar -s test -r 0:1
2207 this patch series consists of 2 patches.
2200 this patch series consists of 2 patches.
2208
2201
2209
2202
2210 Write the introductory message for the patch series.
2203 Write the introductory message for the patch series.
2211
2204
2212
2205
2213 displaying [PATCH 0 of 2 fooFlag barFlag] test ...
2206 displaying [PATCH 0 of 2 fooFlag barFlag] test ...
2214 Content-Type: text/plain; charset="us-ascii"
2207 Content-Type: text/plain; charset="us-ascii"
2215 MIME-Version: 1.0
2208 MIME-Version: 1.0
2216 Content-Transfer-Encoding: 7bit
2209 Content-Transfer-Encoding: 7bit
2217 Subject: [PATCH 0 of 2 fooFlag barFlag] test
2210 Subject: [PATCH 0 of 2 fooFlag barFlag] test
2218 Message-Id: <patchbomb.60@*> (glob)
2211 Message-Id: <patchbomb.60@*> (glob)
2219 User-Agent: Mercurial-patchbomb/* (glob)
2212 User-Agent: Mercurial-patchbomb/* (glob)
2220 Date: Thu, 01 Jan 1970 00:01:00 +0000
2213 Date: Thu, 01 Jan 1970 00:01:00 +0000
2221 From: quux
2214 From: quux
2222 To: foo
2215 To: foo
2223 Cc: bar
2216 Cc: bar
2224
2217
2225
2218
2226 displaying [PATCH 1 of 2 fooFlag barFlag] a ...
2219 displaying [PATCH 1 of 2 fooFlag barFlag] a ...
2227 Content-Type: text/plain; charset="us-ascii"
2220 Content-Type: text/plain; charset="us-ascii"
2228 MIME-Version: 1.0
2221 MIME-Version: 1.0
2229 Content-Transfer-Encoding: 7bit
2222 Content-Transfer-Encoding: 7bit
2230 Subject: [PATCH 1 of 2 fooFlag barFlag] a
2223 Subject: [PATCH 1 of 2 fooFlag barFlag] a
2231 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2224 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2232 X-Mercurial-Series-Index: 1
2225 X-Mercurial-Series-Index: 1
2233 X-Mercurial-Series-Total: 2
2226 X-Mercurial-Series-Total: 2
2234 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
2227 Message-Id: <8580ff50825a50c8f716.61@*> (glob)
2235 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2228 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2236 In-Reply-To: <patchbomb.60@*> (glob)
2229 In-Reply-To: <patchbomb.60@*> (glob)
2237 References: <patchbomb.60@*> (glob)
2230 References: <patchbomb.60@*> (glob)
2238 User-Agent: Mercurial-patchbomb/* (glob)
2231 User-Agent: Mercurial-patchbomb/* (glob)
2239 Date: Thu, 01 Jan 1970 00:01:01 +0000
2232 Date: Thu, 01 Jan 1970 00:01:01 +0000
2240 From: quux
2233 From: quux
2241 To: foo
2234 To: foo
2242 Cc: bar
2235 Cc: bar
2243
2236
2244 # HG changeset patch
2237 # HG changeset patch
2245 # User test
2238 # User test
2246 # Date 1 0
2239 # Date 1 0
2247 # Thu Jan 01 00:00:01 1970 +0000
2240 # Thu Jan 01 00:00:01 1970 +0000
2248 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2241 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2249 # Parent 0000000000000000000000000000000000000000
2242 # Parent 0000000000000000000000000000000000000000
2250 a
2243 a
2251
2244
2252 diff -r 000000000000 -r 8580ff50825a a
2245 diff -r 000000000000 -r 8580ff50825a a
2253 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2246 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2254 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2247 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2255 @@ -0,0 +1,1 @@
2248 @@ -0,0 +1,1 @@
2256 +a
2249 +a
2257
2250
2258 displaying [PATCH 2 of 2 fooFlag barFlag] b ...
2251 displaying [PATCH 2 of 2 fooFlag barFlag] b ...
2259 Content-Type: text/plain; charset="us-ascii"
2252 Content-Type: text/plain; charset="us-ascii"
2260 MIME-Version: 1.0
2253 MIME-Version: 1.0
2261 Content-Transfer-Encoding: 7bit
2254 Content-Transfer-Encoding: 7bit
2262 Subject: [PATCH 2 of 2 fooFlag barFlag] b
2255 Subject: [PATCH 2 of 2 fooFlag barFlag] b
2263 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2256 X-Mercurial-Node: 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2264 X-Mercurial-Series-Index: 2
2257 X-Mercurial-Series-Index: 2
2265 X-Mercurial-Series-Total: 2
2258 X-Mercurial-Series-Total: 2
2266 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
2259 Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
2267 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2260 X-Mercurial-Series-Id: <8580ff50825a50c8f716.61@*> (glob)
2268 In-Reply-To: <patchbomb.60@*> (glob)
2261 In-Reply-To: <patchbomb.60@*> (glob)
2269 References: <patchbomb.60@*> (glob)
2262 References: <patchbomb.60@*> (glob)
2270 User-Agent: Mercurial-patchbomb/* (glob)
2263 User-Agent: Mercurial-patchbomb/* (glob)
2271 Date: Thu, 01 Jan 1970 00:01:02 +0000
2264 Date: Thu, 01 Jan 1970 00:01:02 +0000
2272 From: quux
2265 From: quux
2273 To: foo
2266 To: foo
2274 Cc: bar
2267 Cc: bar
2275
2268
2276 # HG changeset patch
2269 # HG changeset patch
2277 # User test
2270 # User test
2278 # Date 2 0
2271 # Date 2 0
2279 # Thu Jan 01 00:00:02 1970 +0000
2272 # Thu Jan 01 00:00:02 1970 +0000
2280 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2273 # Node ID 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2281 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
2274 # Parent 8580ff50825a50c8f716709acdf8de0deddcd6ab
2282 b
2275 b
2283
2276
2284 diff -r 8580ff50825a -r 97d72e5f12c7 b
2277 diff -r 8580ff50825a -r 97d72e5f12c7 b
2285 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2278 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2286 +++ b/b Thu Jan 01 00:00:02 1970 +0000
2279 +++ b/b Thu Jan 01 00:00:02 1970 +0000
2287 @@ -0,0 +1,1 @@
2280 @@ -0,0 +1,1 @@
2288 +b
2281 +b
2289
2282
2290
2283
2291 test multi-address parsing:
2284 test multi-address parsing:
2292 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
2285 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t 'spam<spam><eggs>' \
2293 > -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
2286 > -t toast -c 'foo,bar@example.com' -c '"A, B <>" <a@example.com>' -s test -r 0 \
2294 > --config email.bcc='"Quux, A." <quux>'
2287 > --config email.bcc='"Quux, A." <quux>'
2295 this patch series consists of 1 patches.
2288 this patch series consists of 1 patches.
2296
2289
2297
2290
2298 sending [PATCH] test ...
2291 sending [PATCH] test ...
2299 $ cat < tmp.mbox
2292 $ cat < tmp.mbox
2300 From quux ... ... .. ..:..:.. .... (re)
2293 From quux ... ... .. ..:..:.. .... (re)
2301 Content-Type: text/plain; charset="us-ascii"
2294 Content-Type: text/plain; charset="us-ascii"
2302 MIME-Version: 1.0
2295 MIME-Version: 1.0
2303 Content-Transfer-Encoding: 7bit
2296 Content-Transfer-Encoding: 7bit
2304 Subject: [PATCH] test
2297 Subject: [PATCH] test
2305 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2298 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2306 X-Mercurial-Series-Index: 1
2299 X-Mercurial-Series-Index: 1
2307 X-Mercurial-Series-Total: 1
2300 X-Mercurial-Series-Total: 1
2308 Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2301 Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2309 X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2302 X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2310 User-Agent: Mercurial-patchbomb/* (glob)
2303 User-Agent: Mercurial-patchbomb/* (glob)
2311 Date: Tue, 01 Jan 1980 00:01:00 +0000
2304 Date: Tue, 01 Jan 1980 00:01:00 +0000
2312 From: quux
2305 From: quux
2313 To: spam <spam>, eggs, toast
2306 To: spam <spam>, eggs, toast
2314 Cc: foo, bar@example.com, "A, B <>" <a@example.com>
2307 Cc: foo, bar@example.com, "A, B <>" <a@example.com>
2315 Bcc: "Quux, A." <quux>
2308 Bcc: "Quux, A." <quux>
2316
2309
2317 # HG changeset patch
2310 # HG changeset patch
2318 # User test
2311 # User test
2319 # Date 1 0
2312 # Date 1 0
2320 # Thu Jan 01 00:00:01 1970 +0000
2313 # Thu Jan 01 00:00:01 1970 +0000
2321 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2314 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2322 # Parent 0000000000000000000000000000000000000000
2315 # Parent 0000000000000000000000000000000000000000
2323 a
2316 a
2324
2317
2325 diff -r 000000000000 -r 8580ff50825a a
2318 diff -r 000000000000 -r 8580ff50825a a
2326 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2319 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2327 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2320 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2328 @@ -0,0 +1,1 @@
2321 @@ -0,0 +1,1 @@
2329 +a
2322 +a
2330
2323
2331
2324
2332
2325
2333 test multi-byte domain parsing:
2326 test multi-byte domain parsing:
2334 $ UUML=`$PYTHON -c 'import sys; sys.stdout.write("\374")'`
2327 $ UUML=`$PYTHON -c 'import sys; sys.stdout.write("\374")'`
2335 $ HGENCODING=iso-8859-1
2328 $ HGENCODING=iso-8859-1
2336 $ export HGENCODING
2329 $ export HGENCODING
2337 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" -s test -r 0
2330 $ hg email --date '1980-1-1 0:1' -m tmp.mbox -f quux -t "bar@${UUML}nicode.com" -s test -r 0
2338 this patch series consists of 1 patches.
2331 this patch series consists of 1 patches.
2339
2332
2340 Cc:
2333 Cc:
2341
2334
2342 sending [PATCH] test ...
2335 sending [PATCH] test ...
2343
2336
2344 $ cat tmp.mbox
2337 $ cat tmp.mbox
2345 From quux ... ... .. ..:..:.. .... (re)
2338 From quux ... ... .. ..:..:.. .... (re)
2346 Content-Type: text/plain; charset="us-ascii"
2339 Content-Type: text/plain; charset="us-ascii"
2347 MIME-Version: 1.0
2340 MIME-Version: 1.0
2348 Content-Transfer-Encoding: 7bit
2341 Content-Transfer-Encoding: 7bit
2349 Subject: [PATCH] test
2342 Subject: [PATCH] test
2350 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2343 X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
2351 X-Mercurial-Series-Index: 1
2344 X-Mercurial-Series-Index: 1
2352 X-Mercurial-Series-Total: 1
2345 X-Mercurial-Series-Total: 1
2353 Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2346 Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2354 X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2347 X-Mercurial-Series-Id: <8580ff50825a50c8f716.315532860@*> (glob)
2355 User-Agent: Mercurial-patchbomb/* (glob)
2348 User-Agent: Mercurial-patchbomb/* (glob)
2356 Date: Tue, 01 Jan 1980 00:01:00 +0000
2349 Date: Tue, 01 Jan 1980 00:01:00 +0000
2357 From: quux
2350 From: quux
2358 To: bar@xn--nicode-2ya.com
2351 To: bar@xn--nicode-2ya.com
2359
2352
2360 # HG changeset patch
2353 # HG changeset patch
2361 # User test
2354 # User test
2362 # Date 1 0
2355 # Date 1 0
2363 # Thu Jan 01 00:00:01 1970 +0000
2356 # Thu Jan 01 00:00:01 1970 +0000
2364 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2357 # Node ID 8580ff50825a50c8f716709acdf8de0deddcd6ab
2365 # Parent 0000000000000000000000000000000000000000
2358 # Parent 0000000000000000000000000000000000000000
2366 a
2359 a
2367
2360
2368 diff -r 000000000000 -r 8580ff50825a a
2361 diff -r 000000000000 -r 8580ff50825a a
2369 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2362 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2370 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2363 +++ b/a Thu Jan 01 00:00:01 1970 +0000
2371 @@ -0,0 +1,1 @@
2364 @@ -0,0 +1,1 @@
2372 +a
2365 +a
2373
2366
2374
2367
2375
2368
2376 test outgoing:
2369 test outgoing:
2377 $ hg up 1
2370 $ hg up 1
2378 0 files updated, 0 files merged, 6 files removed, 0 files unresolved
2371 0 files updated, 0 files merged, 6 files removed, 0 files unresolved
2379
2372
2380 $ hg branch test
2373 $ hg branch test
2381 marked working directory as branch test
2374 marked working directory as branch test
2382 (branches are permanent and global, did you want a bookmark?)
2375 (branches are permanent and global, did you want a bookmark?)
2383
2376
2384 $ echo d > d
2377 $ echo d > d
2385 $ hg add d
2378 $ hg add d
2386 $ hg ci -md -d '4 0'
2379 $ hg ci -md -d '4 0'
2387 $ echo d >> d
2380 $ echo d >> d
2388 $ hg ci -mdd -d '5 0'
2381 $ hg ci -mdd -d '5 0'
2389 $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
2382 $ hg log -G --template "{rev}:{node|short} {desc|firstline}\n"
2390 @ 10:3b6f1ec9dde9 dd
2383 @ 10:3b6f1ec9dde9 dd
2391 |
2384 |
2392 o 9:2f9fa9b998c5 d
2385 o 9:2f9fa9b998c5 d
2393 |
2386 |
2394 | o 8:7aead2484924 Added tag two, two.diff for changeset ff2c9fa2018b
2387 | o 8:7aead2484924 Added tag two, two.diff for changeset ff2c9fa2018b
2395 | |
2388 | |
2396 | o 7:045ca29b1ea2 Added tag one, one.patch for changeset 97d72e5f12c7
2389 | o 7:045ca29b1ea2 Added tag one, one.patch for changeset 97d72e5f12c7
2397 | |
2390 | |
2398 | o 6:5d5ef15dfe5e Added tag zero, zero.foo for changeset 8580ff50825a
2391 | o 6:5d5ef15dfe5e Added tag zero, zero.foo for changeset 8580ff50825a
2399 | |
2392 | |
2400 | o 5:240fb913fc1b isolatin 8-bit encoding
2393 | o 5:240fb913fc1b isolatin 8-bit encoding
2401 | |
2394 | |
2402 | o 4:a2ea8fc83dd8 long line
2395 | o 4:a2ea8fc83dd8 long line
2403 | |
2396 | |
2404 | o 3:909a00e13e9d utf-8 content
2397 | o 3:909a00e13e9d utf-8 content
2405 | |
2398 | |
2406 | o 2:ff2c9fa2018b c
2399 | o 2:ff2c9fa2018b c
2407 |/
2400 |/
2408 o 1:97d72e5f12c7 b
2401 o 1:97d72e5f12c7 b
2409 |
2402 |
2410 o 0:8580ff50825a a
2403 o 0:8580ff50825a a
2411
2404
2412 $ hg phase --force --secret -r 10
2405 $ hg phase --force --secret -r 10
2413 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t -r 'rev(10) or rev(6)'
2406 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t -r 'rev(10) or rev(6)'
2414 comparing with ../t
2407 comparing with ../t
2415 From [test]: test
2408 From [test]: test
2416 this patch series consists of 6 patches.
2409 this patch series consists of 6 patches.
2417
2410
2418
2411
2419 Write the introductory message for the patch series.
2412 Write the introductory message for the patch series.
2420
2413
2421 Cc:
2414 Cc:
2422
2415
2423 displaying [PATCH 0 of 6] test ...
2416 displaying [PATCH 0 of 6] test ...
2424 Content-Type: text/plain; charset="us-ascii"
2417 Content-Type: text/plain; charset="us-ascii"
2425 MIME-Version: 1.0
2418 MIME-Version: 1.0
2426 Content-Transfer-Encoding: 7bit
2419 Content-Transfer-Encoding: 7bit
2427 Subject: [PATCH 0 of 6] test
2420 Subject: [PATCH 0 of 6] test
2428 Message-Id: <patchbomb.315532860@*> (glob)
2421 Message-Id: <patchbomb.315532860@*> (glob)
2429 User-Agent: Mercurial-patchbomb/* (glob)
2422 User-Agent: Mercurial-patchbomb/* (glob)
2430 Date: Tue, 01 Jan 1980 00:01:00 +0000
2423 Date: Tue, 01 Jan 1980 00:01:00 +0000
2431 From: test
2424 From: test
2432 To: foo
2425 To: foo
2433
2426
2434
2427
2435 displaying [PATCH 1 of 6] c ...
2428 displaying [PATCH 1 of 6] c ...
2436 Content-Type: text/plain; charset="us-ascii"
2429 Content-Type: text/plain; charset="us-ascii"
2437 MIME-Version: 1.0
2430 MIME-Version: 1.0
2438 Content-Transfer-Encoding: 7bit
2431 Content-Transfer-Encoding: 7bit
2439 Subject: [PATCH 1 of 6] c
2432 Subject: [PATCH 1 of 6] c
2440 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2433 X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
2441 X-Mercurial-Series-Index: 1
2434 X-Mercurial-Series-Index: 1
2442 X-Mercurial-Series-Total: 6
2435 X-Mercurial-Series-Total: 6
2443 Message-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2436 Message-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2444 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2437 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2445 In-Reply-To: <patchbomb.315532860@*> (glob)
2438 In-Reply-To: <patchbomb.315532860@*> (glob)
2446 References: <patchbomb.315532860@*> (glob)
2439 References: <patchbomb.315532860@*> (glob)
2447 User-Agent: Mercurial-patchbomb/* (glob)
2440 User-Agent: Mercurial-patchbomb/* (glob)
2448 Date: Tue, 01 Jan 1980 00:01:01 +0000
2441 Date: Tue, 01 Jan 1980 00:01:01 +0000
2449 From: test
2442 From: test
2450 To: foo
2443 To: foo
2451
2444
2452 # HG changeset patch
2445 # HG changeset patch
2453 # User test
2446 # User test
2454 # Date 3 0
2447 # Date 3 0
2455 # Thu Jan 01 00:00:03 1970 +0000
2448 # Thu Jan 01 00:00:03 1970 +0000
2456 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2449 # Node ID ff2c9fa2018b15fa74b33363bda9527323e2a99f
2457 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2450 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2458 c
2451 c
2459
2452
2460 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2453 diff -r 97d72e5f12c7 -r ff2c9fa2018b c
2461 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2454 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2462 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2455 +++ b/c Thu Jan 01 00:00:03 1970 +0000
2463 @@ -0,0 +1,1 @@
2456 @@ -0,0 +1,1 @@
2464 +c
2457 +c
2465
2458
2466 displaying [PATCH 2 of 6] utf-8 content ...
2459 displaying [PATCH 2 of 6] utf-8 content ...
2467 Content-Type: text/plain; charset="us-ascii"
2460 Content-Type: text/plain; charset="us-ascii"
2468 MIME-Version: 1.0
2461 MIME-Version: 1.0
2469 Content-Transfer-Encoding: 8bit
2462 Content-Transfer-Encoding: 8bit
2470 Subject: [PATCH 2 of 6] utf-8 content
2463 Subject: [PATCH 2 of 6] utf-8 content
2471 X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
2464 X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
2472 X-Mercurial-Series-Index: 2
2465 X-Mercurial-Series-Index: 2
2473 X-Mercurial-Series-Total: 6
2466 X-Mercurial-Series-Total: 6
2474 Message-Id: <909a00e13e9d78b575ae.315532862@*> (glob)
2467 Message-Id: <909a00e13e9d78b575ae.315532862@*> (glob)
2475 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2468 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2476 In-Reply-To: <patchbomb.315532860@*> (glob)
2469 In-Reply-To: <patchbomb.315532860@*> (glob)
2477 References: <patchbomb.315532860@*> (glob)
2470 References: <patchbomb.315532860@*> (glob)
2478 User-Agent: Mercurial-patchbomb/* (glob)
2471 User-Agent: Mercurial-patchbomb/* (glob)
2479 Date: Tue, 01 Jan 1980 00:01:02 +0000
2472 Date: Tue, 01 Jan 1980 00:01:02 +0000
2480 From: test
2473 From: test
2481 To: foo
2474 To: foo
2482
2475
2483 # HG changeset patch
2476 # HG changeset patch
2484 # User test
2477 # User test
2485 # Date 4 0
2478 # Date 4 0
2486 # Thu Jan 01 00:00:04 1970 +0000
2479 # Thu Jan 01 00:00:04 1970 +0000
2487 # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
2480 # Node ID 909a00e13e9d78b575aeee23dddbada46d5a143f
2488 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
2481 # Parent ff2c9fa2018b15fa74b33363bda9527323e2a99f
2489 utf-8 content
2482 utf-8 content
2490
2483
2491 diff -r ff2c9fa2018b -r 909a00e13e9d description
2484 diff -r ff2c9fa2018b -r 909a00e13e9d description
2492 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2485 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2493 +++ b/description Thu Jan 01 00:00:04 1970 +0000
2486 +++ b/description Thu Jan 01 00:00:04 1970 +0000
2494 @@ -0,0 +1,3 @@
2487 @@ -0,0 +1,3 @@
2495 +a multiline
2488 +a multiline
2496 +
2489 +
2497 +description
2490 +description
2498 diff -r ff2c9fa2018b -r 909a00e13e9d utf
2491 diff -r ff2c9fa2018b -r 909a00e13e9d utf
2499 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2492 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2500 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
2493 +++ b/utf Thu Jan 01 00:00:04 1970 +0000
2501 @@ -0,0 +1,1 @@
2494 @@ -0,0 +1,1 @@
2502 +h\xc3\xb6mma! (esc)
2495 +h\xc3\xb6mma! (esc)
2503
2496
2504 displaying [PATCH 3 of 6] long line ...
2497 displaying [PATCH 3 of 6] long line ...
2505 Content-Type: text/plain; charset="us-ascii"
2498 Content-Type: text/plain; charset="us-ascii"
2506 MIME-Version: 1.0
2499 MIME-Version: 1.0
2507 Content-Transfer-Encoding: quoted-printable
2500 Content-Transfer-Encoding: quoted-printable
2508 Subject: [PATCH 3 of 6] long line
2501 Subject: [PATCH 3 of 6] long line
2509 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
2502 X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
2510 X-Mercurial-Series-Index: 3
2503 X-Mercurial-Series-Index: 3
2511 X-Mercurial-Series-Total: 6
2504 X-Mercurial-Series-Total: 6
2512 Message-Id: <a2ea8fc83dd8b93cfd86.315532863@*> (glob)
2505 Message-Id: <a2ea8fc83dd8b93cfd86.315532863@*> (glob)
2513 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2506 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2514 In-Reply-To: <patchbomb.315532860@*> (glob)
2507 In-Reply-To: <patchbomb.315532860@*> (glob)
2515 References: <patchbomb.315532860@*> (glob)
2508 References: <patchbomb.315532860@*> (glob)
2516 User-Agent: Mercurial-patchbomb/* (glob)
2509 User-Agent: Mercurial-patchbomb/* (glob)
2517 Date: Tue, 01 Jan 1980 00:01:03 +0000
2510 Date: Tue, 01 Jan 1980 00:01:03 +0000
2518 From: test
2511 From: test
2519 To: foo
2512 To: foo
2520
2513
2521 # HG changeset patch
2514 # HG changeset patch
2522 # User test
2515 # User test
2523 # Date 4 0
2516 # Date 4 0
2524 # Thu Jan 01 00:00:04 1970 +0000
2517 # Thu Jan 01 00:00:04 1970 +0000
2525 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
2518 # Node ID a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
2526 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
2519 # Parent 909a00e13e9d78b575aeee23dddbada46d5a143f
2527 long line
2520 long line
2528
2521
2529 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
2522 diff -r 909a00e13e9d -r a2ea8fc83dd8 long
2530 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2523 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2531 +++ b/long Thu Jan 01 00:00:04 1970 +0000
2524 +++ b/long Thu Jan 01 00:00:04 1970 +0000
2532 @@ -0,0 +1,4 @@
2525 @@ -0,0 +1,4 @@
2533 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2526 +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2534 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2527 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2535 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2528 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2536 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2529 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2537 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2530 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2538 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2531 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2539 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2532 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2540 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2533 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2541 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2534 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2542 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2535 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2543 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2536 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2544 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2537 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2545 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2538 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
2546 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2539 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2547 +foo
2540 +foo
2548 +
2541 +
2549 +bar
2542 +bar
2550
2543
2551 displaying [PATCH 4 of 6] isolatin 8-bit encoding ...
2544 displaying [PATCH 4 of 6] isolatin 8-bit encoding ...
2552 Content-Type: text/plain; charset="us-ascii"
2545 Content-Type: text/plain; charset="us-ascii"
2553 MIME-Version: 1.0
2546 MIME-Version: 1.0
2554 Content-Transfer-Encoding: 8bit
2547 Content-Transfer-Encoding: 8bit
2555 Subject: [PATCH 4 of 6] isolatin 8-bit encoding
2548 Subject: [PATCH 4 of 6] isolatin 8-bit encoding
2556 X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
2549 X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
2557 X-Mercurial-Series-Index: 4
2550 X-Mercurial-Series-Index: 4
2558 X-Mercurial-Series-Total: 6
2551 X-Mercurial-Series-Total: 6
2559 Message-Id: <240fb913fc1b7ff15ddb.315532864@*> (glob)
2552 Message-Id: <240fb913fc1b7ff15ddb.315532864@*> (glob)
2560 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2553 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2561 In-Reply-To: <patchbomb.315532860@*> (glob)
2554 In-Reply-To: <patchbomb.315532860@*> (glob)
2562 References: <patchbomb.315532860@*> (glob)
2555 References: <patchbomb.315532860@*> (glob)
2563 User-Agent: Mercurial-patchbomb/* (glob)
2556 User-Agent: Mercurial-patchbomb/* (glob)
2564 Date: Tue, 01 Jan 1980 00:01:04 +0000
2557 Date: Tue, 01 Jan 1980 00:01:04 +0000
2565 From: test
2558 From: test
2566 To: foo
2559 To: foo
2567
2560
2568 # HG changeset patch
2561 # HG changeset patch
2569 # User test
2562 # User test
2570 # Date 5 0
2563 # Date 5 0
2571 # Thu Jan 01 00:00:05 1970 +0000
2564 # Thu Jan 01 00:00:05 1970 +0000
2572 # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
2565 # Node ID 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
2573 # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
2566 # Parent a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
2574 isolatin 8-bit encoding
2567 isolatin 8-bit encoding
2575
2568
2576 diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin
2569 diff -r a2ea8fc83dd8 -r 240fb913fc1b isolatin
2577 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2570 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2578 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
2571 +++ b/isolatin Thu Jan 01 00:00:05 1970 +0000
2579 @@ -0,0 +1,1 @@
2572 @@ -0,0 +1,1 @@
2580 +h\xf6mma! (esc)
2573 +h\xf6mma! (esc)
2581
2574
2582 displaying [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a ...
2575 displaying [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a ...
2583 Content-Type: text/plain; charset="us-ascii"
2576 Content-Type: text/plain; charset="us-ascii"
2584 MIME-Version: 1.0
2577 MIME-Version: 1.0
2585 Content-Transfer-Encoding: 7bit
2578 Content-Transfer-Encoding: 7bit
2586 Subject: [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a
2579 Subject: [PATCH 5 of 6] Added tag zero, zero.foo for changeset 8580ff50825a
2587 X-Mercurial-Node: 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433
2580 X-Mercurial-Node: 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433
2588 X-Mercurial-Series-Index: 5
2581 X-Mercurial-Series-Index: 5
2589 X-Mercurial-Series-Total: 6
2582 X-Mercurial-Series-Total: 6
2590 Message-Id: <5d5ef15dfe5e7bd3a4ee.315532865@*> (glob)
2583 Message-Id: <5d5ef15dfe5e7bd3a4ee.315532865@*> (glob)
2591 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2584 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2592 In-Reply-To: <patchbomb.315532860@*> (glob)
2585 In-Reply-To: <patchbomb.315532860@*> (glob)
2593 References: <patchbomb.315532860@*> (glob)
2586 References: <patchbomb.315532860@*> (glob)
2594 User-Agent: Mercurial-patchbomb/* (glob)
2587 User-Agent: Mercurial-patchbomb/* (glob)
2595 Date: Tue, 01 Jan 1980 00:01:05 +0000
2588 Date: Tue, 01 Jan 1980 00:01:05 +0000
2596 From: test
2589 From: test
2597 To: foo
2590 To: foo
2598
2591
2599 # HG changeset patch
2592 # HG changeset patch
2600 # User test
2593 # User test
2601 # Date 0 0
2594 # Date 0 0
2602 # Thu Jan 01 00:00:00 1970 +0000
2595 # Thu Jan 01 00:00:00 1970 +0000
2603 # Node ID 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433
2596 # Node ID 5d5ef15dfe5e7bd3a4ee154b5fff76c7945ec433
2604 # Parent 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
2597 # Parent 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
2605 Added tag zero, zero.foo for changeset 8580ff50825a
2598 Added tag zero, zero.foo for changeset 8580ff50825a
2606
2599
2607 diff -r 240fb913fc1b -r 5d5ef15dfe5e .hgtags
2600 diff -r 240fb913fc1b -r 5d5ef15dfe5e .hgtags
2608 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2601 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2609 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2602 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2610 @@ -0,0 +1,2 @@
2603 @@ -0,0 +1,2 @@
2611 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero
2604 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero
2612 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2605 +8580ff50825a50c8f716709acdf8de0deddcd6ab zero.foo
2613
2606
2614 displaying [PATCH 6 of 6] d ...
2607 displaying [PATCH 6 of 6] d ...
2615 Content-Type: text/plain; charset="us-ascii"
2608 Content-Type: text/plain; charset="us-ascii"
2616 MIME-Version: 1.0
2609 MIME-Version: 1.0
2617 Content-Transfer-Encoding: 7bit
2610 Content-Transfer-Encoding: 7bit
2618 Subject: [PATCH 6 of 6] d
2611 Subject: [PATCH 6 of 6] d
2619 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2612 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2620 X-Mercurial-Series-Index: 6
2613 X-Mercurial-Series-Index: 6
2621 X-Mercurial-Series-Total: 6
2614 X-Mercurial-Series-Total: 6
2622 Message-Id: <2f9fa9b998c5fe3ac2bd.315532866@*> (glob)
2615 Message-Id: <2f9fa9b998c5fe3ac2bd.315532866@*> (glob)
2623 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2616 X-Mercurial-Series-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
2624 In-Reply-To: <patchbomb.315532860@*> (glob)
2617 In-Reply-To: <patchbomb.315532860@*> (glob)
2625 References: <patchbomb.315532860@*> (glob)
2618 References: <patchbomb.315532860@*> (glob)
2626 User-Agent: Mercurial-patchbomb/* (glob)
2619 User-Agent: Mercurial-patchbomb/* (glob)
2627 Date: Tue, 01 Jan 1980 00:01:06 +0000
2620 Date: Tue, 01 Jan 1980 00:01:06 +0000
2628 From: test
2621 From: test
2629 To: foo
2622 To: foo
2630
2623
2631 # HG changeset patch
2624 # HG changeset patch
2632 # User test
2625 # User test
2633 # Date 4 0
2626 # Date 4 0
2634 # Thu Jan 01 00:00:04 1970 +0000
2627 # Thu Jan 01 00:00:04 1970 +0000
2635 # Branch test
2628 # Branch test
2636 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2629 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2637 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2630 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2638 d
2631 d
2639
2632
2640 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2633 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2641 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2634 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2642 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2635 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2643 @@ -0,0 +1,1 @@
2636 @@ -0,0 +1,1 @@
2644 +d
2637 +d
2645
2638
2646
2639
2647 dest#branch URIs:
2640 dest#branch URIs:
2648 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test
2641 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -o ../t#test
2649 comparing with ../t
2642 comparing with ../t
2650 From [test]: test
2643 From [test]: test
2651 this patch series consists of 1 patches.
2644 this patch series consists of 1 patches.
2652
2645
2653 Cc:
2646 Cc:
2654
2647
2655 displaying [PATCH] test ...
2648 displaying [PATCH] test ...
2656 Content-Type: text/plain; charset="us-ascii"
2649 Content-Type: text/plain; charset="us-ascii"
2657 MIME-Version: 1.0
2650 MIME-Version: 1.0
2658 Content-Transfer-Encoding: 7bit
2651 Content-Transfer-Encoding: 7bit
2659 Subject: [PATCH] test
2652 Subject: [PATCH] test
2660 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2653 X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2661 X-Mercurial-Series-Index: 1
2654 X-Mercurial-Series-Index: 1
2662 X-Mercurial-Series-Total: 1
2655 X-Mercurial-Series-Total: 1
2663 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob)
2656 Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob)
2664 X-Mercurial-Series-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob)
2657 X-Mercurial-Series-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob)
2665 User-Agent: Mercurial-patchbomb/* (glob)
2658 User-Agent: Mercurial-patchbomb/* (glob)
2666 Date: Tue, 01 Jan 1980 00:01:00 +0000
2659 Date: Tue, 01 Jan 1980 00:01:00 +0000
2667 From: test
2660 From: test
2668 To: foo
2661 To: foo
2669
2662
2670 # HG changeset patch
2663 # HG changeset patch
2671 # User test
2664 # User test
2672 # Date 4 0
2665 # Date 4 0
2673 # Thu Jan 01 00:00:04 1970 +0000
2666 # Thu Jan 01 00:00:04 1970 +0000
2674 # Branch test
2667 # Branch test
2675 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2668 # Node ID 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2676 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2669 # Parent 97d72e5f12c7e84f85064aa72e5a297142c36ed9
2677 d
2670 d
2678
2671
2679 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2672 diff -r 97d72e5f12c7 -r 2f9fa9b998c5 d
2680 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2673 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2681 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2674 +++ b/d Thu Jan 01 00:00:04 1970 +0000
2682 @@ -0,0 +1,1 @@
2675 @@ -0,0 +1,1 @@
2683 +d
2676 +d
2684
2677
2685
2678
2686 Test introduction configuration
2679 Test introduction configuration
2687 =================================
2680 =================================
2688
2681
2689 $ echo '[patchbomb]' >> $HGRCPATH
2682 $ echo '[patchbomb]' >> $HGRCPATH
2690
2683
2691 "auto" setting
2684 "auto" setting
2692 ----------------
2685 ----------------
2693
2686
2694 $ echo 'intro=auto' >> $HGRCPATH
2687 $ echo 'intro=auto' >> $HGRCPATH
2695
2688
2696 single rev
2689 single rev
2697
2690
2698 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2691 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2699 [1]
2692 [1]
2700
2693
2701 single rev + flag
2694 single rev + flag
2702
2695
2703 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' --intro | grep "Write the introductory message for the patch series."
2696 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' --intro | grep "Write the introductory message for the patch series."
2704 Write the introductory message for the patch series.
2697 Write the introductory message for the patch series.
2705
2698
2706
2699
2707 Multi rev
2700 Multi rev
2708
2701
2709 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2702 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2710 Write the introductory message for the patch series.
2703 Write the introductory message for the patch series.
2711
2704
2712 "never" setting
2705 "never" setting
2713 -----------------
2706 -----------------
2714
2707
2715 $ echo 'intro=never' >> $HGRCPATH
2708 $ echo 'intro=never' >> $HGRCPATH
2716
2709
2717 single rev
2710 single rev
2718
2711
2719 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2712 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2720 [1]
2713 [1]
2721
2714
2722 single rev + flag
2715 single rev + flag
2723
2716
2724 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' --intro | grep "Write the introductory message for the patch series."
2717 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' --intro | grep "Write the introductory message for the patch series."
2725 Write the introductory message for the patch series.
2718 Write the introductory message for the patch series.
2726
2719
2727
2720
2728 Multi rev
2721 Multi rev
2729
2722
2730 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2723 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2731 [1]
2724 [1]
2732
2725
2733 Multi rev + flag
2726 Multi rev + flag
2734
2727
2735 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' --intro | grep "Write the introductory message for the patch series."
2728 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' --intro | grep "Write the introductory message for the patch series."
2736 Write the introductory message for the patch series.
2729 Write the introductory message for the patch series.
2737
2730
2738 "always" setting
2731 "always" setting
2739 -----------------
2732 -----------------
2740
2733
2741 $ echo 'intro=always' >> $HGRCPATH
2734 $ echo 'intro=always' >> $HGRCPATH
2742
2735
2743 single rev
2736 single rev
2744
2737
2745 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2738 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2746 Write the introductory message for the patch series.
2739 Write the introductory message for the patch series.
2747
2740
2748 single rev + flag
2741 single rev + flag
2749
2742
2750 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' --intro | grep "Write the introductory message for the patch series."
2743 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' --intro | grep "Write the introductory message for the patch series."
2751 Write the introductory message for the patch series.
2744 Write the introductory message for the patch series.
2752
2745
2753
2746
2754 Multi rev
2747 Multi rev
2755
2748
2756 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2749 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2757 Write the introductory message for the patch series.
2750 Write the introductory message for the patch series.
2758
2751
2759 Multi rev + flag
2752 Multi rev + flag
2760
2753
2761 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' --intro | grep "Write the introductory message for the patch series."
2754 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' --intro | grep "Write the introductory message for the patch series."
2762 Write the introductory message for the patch series.
2755 Write the introductory message for the patch series.
2763
2756
2764 bad value setting
2757 bad value setting
2765 -----------------
2758 -----------------
2766
2759
2767 $ echo 'intro=mpmwearaclownnose' >> $HGRCPATH
2760 $ echo 'intro=mpmwearaclownnose' >> $HGRCPATH
2768
2761
2769 single rev
2762 single rev
2770
2763
2771 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10'
2764 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10'
2772 From [test]: test
2765 From [test]: test
2773 this patch series consists of 1 patches.
2766 this patch series consists of 1 patches.
2774
2767
2775 warning: invalid patchbomb.intro value "mpmwearaclownnose"
2768 warning: invalid patchbomb.intro value "mpmwearaclownnose"
2776 (should be one of always, never, auto)
2769 (should be one of always, never, auto)
2777 Cc:
2770 Cc:
2778
2771
2779 displaying [PATCH] test ...
2772 displaying [PATCH] test ...
2780 Content-Type: text/plain; charset="us-ascii"
2773 Content-Type: text/plain; charset="us-ascii"
2781 MIME-Version: 1.0
2774 MIME-Version: 1.0
2782 Content-Transfer-Encoding: 7bit
2775 Content-Transfer-Encoding: 7bit
2783 Subject: [PATCH] test
2776 Subject: [PATCH] test
2784 X-Mercurial-Node: 3b6f1ec9dde933a40a115a7990f8b320477231af
2777 X-Mercurial-Node: 3b6f1ec9dde933a40a115a7990f8b320477231af
2785 X-Mercurial-Series-Index: 1
2778 X-Mercurial-Series-Index: 1
2786 X-Mercurial-Series-Total: 1
2779 X-Mercurial-Series-Total: 1
2787 Message-Id: <3b6f1ec9dde933a40a11*> (glob)
2780 Message-Id: <3b6f1ec9dde933a40a11*> (glob)
2788 X-Mercurial-Series-Id: <3b6f1ec9dde933a40a11.*> (glob)
2781 X-Mercurial-Series-Id: <3b6f1ec9dde933a40a11.*> (glob)
2789 User-Agent: Mercurial-patchbomb/* (glob)
2782 User-Agent: Mercurial-patchbomb/* (glob)
2790 Date: Tue, 01 Jan 1980 00:01:00 +0000
2783 Date: Tue, 01 Jan 1980 00:01:00 +0000
2791 From: test
2784 From: test
2792 To: foo
2785 To: foo
2793
2786
2794 # HG changeset patch
2787 # HG changeset patch
2795 # User test
2788 # User test
2796 # Date 5 0
2789 # Date 5 0
2797 # Thu Jan 01 00:00:05 1970 +0000
2790 # Thu Jan 01 00:00:05 1970 +0000
2798 # Branch test
2791 # Branch test
2799 # Node ID 3b6f1ec9dde933a40a115a7990f8b320477231af
2792 # Node ID 3b6f1ec9dde933a40a115a7990f8b320477231af
2800 # Parent 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2793 # Parent 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2801 dd
2794 dd
2802
2795
2803 diff -r 2f9fa9b998c5 -r 3b6f1ec9dde9 d
2796 diff -r 2f9fa9b998c5 -r 3b6f1ec9dde9 d
2804 --- a/d Thu Jan 01 00:00:04 1970 +0000
2797 --- a/d Thu Jan 01 00:00:04 1970 +0000
2805 +++ b/d Thu Jan 01 00:00:05 1970 +0000
2798 +++ b/d Thu Jan 01 00:00:05 1970 +0000
2806 @@ -1,1 +1,2 @@
2799 @@ -1,1 +1,2 @@
2807 d
2800 d
2808 +d
2801 +d
2809
2802
@@ -1,608 +1,578
1 Create test repository:
1 Create test repository:
2
2
3 $ hg init repo
3 $ hg init repo
4 $ cd repo
4 $ cd repo
5 $ echo x1 > x.txt
5 $ echo x1 > x.txt
6
6
7 $ hg init foo
7 $ hg init foo
8 $ cd foo
8 $ cd foo
9 $ echo y1 > y.txt
9 $ echo y1 > y.txt
10
10
11 $ hg init bar
11 $ hg init bar
12 $ cd bar
12 $ cd bar
13 $ echo z1 > z.txt
13 $ echo z1 > z.txt
14
14
15 $ cd ..
15 $ cd ..
16 $ echo 'bar = bar' > .hgsub
16 $ echo 'bar = bar' > .hgsub
17
17
18 $ cd ..
18 $ cd ..
19 $ echo 'foo = foo' > .hgsub
19 $ echo 'foo = foo' > .hgsub
20
20
21 Add files --- .hgsub files must go first to trigger subrepos:
21 Add files --- .hgsub files must go first to trigger subrepos:
22
22
23 $ hg add -S .hgsub
23 $ hg add -S .hgsub
24 $ hg add -S foo/.hgsub
24 $ hg add -S foo/.hgsub
25 $ hg add -S foo/bar
25 $ hg add -S foo/bar
26 adding foo/bar/z.txt (glob)
26 adding foo/bar/z.txt (glob)
27 $ hg add -S
27 $ hg add -S
28 adding x.txt
28 adding x.txt
29 adding foo/y.txt (glob)
29 adding foo/y.txt (glob)
30
30
31 Test recursive status without committing anything:
31 Test recursive status without committing anything:
32
32
33 $ hg status -S
33 $ hg status -S
34 A .hgsub
34 A .hgsub
35 A foo/.hgsub
35 A foo/.hgsub
36 A foo/bar/z.txt
36 A foo/bar/z.txt
37 A foo/y.txt
37 A foo/y.txt
38 A x.txt
38 A x.txt
39
39
40 Test recursive diff without committing anything:
40 Test recursive diff without committing anything:
41
41
42 $ hg diff --nodates -S foo
42 $ hg diff --nodates -S foo
43 diff -r 000000000000 foo/.hgsub
43 diff -r 000000000000 foo/.hgsub
44 --- /dev/null
44 --- /dev/null
45 +++ b/foo/.hgsub
45 +++ b/foo/.hgsub
46 @@ -0,0 +1,1 @@
46 @@ -0,0 +1,1 @@
47 +bar = bar
47 +bar = bar
48 diff -r 000000000000 foo/y.txt
48 diff -r 000000000000 foo/y.txt
49 --- /dev/null
49 --- /dev/null
50 +++ b/foo/y.txt
50 +++ b/foo/y.txt
51 @@ -0,0 +1,1 @@
51 @@ -0,0 +1,1 @@
52 +y1
52 +y1
53 diff -r 000000000000 foo/bar/z.txt
53 diff -r 000000000000 foo/bar/z.txt
54 --- /dev/null
54 --- /dev/null
55 +++ b/foo/bar/z.txt
55 +++ b/foo/bar/z.txt
56 @@ -0,0 +1,1 @@
56 @@ -0,0 +1,1 @@
57 +z1
57 +z1
58
58
59 Commits:
59 Commits:
60
60
61 $ hg commit -m fails
61 $ hg commit -m fails
62 abort: uncommitted changes in subrepository 'foo'
62 abort: uncommitted changes in subrepository 'foo'
63 (use --subrepos for recursive commit)
63 (use --subrepos for recursive commit)
64 [255]
64 [255]
65
65
66 The --subrepos flag overwrite the config setting:
66 The --subrepos flag overwrite the config setting:
67
67
68 $ hg commit -m 0-0-0 --config ui.commitsubrepos=No --subrepos
68 $ hg commit -m 0-0-0 --config ui.commitsubrepos=No --subrepos
69 committing subrepository foo
69 committing subrepository foo
70 committing subrepository foo/bar (glob)
70 committing subrepository foo/bar (glob)
71
71
72 $ cd foo
72 $ cd foo
73 $ echo y2 >> y.txt
73 $ echo y2 >> y.txt
74 $ hg commit -m 0-1-0
74 $ hg commit -m 0-1-0
75
75
76 $ cd bar
76 $ cd bar
77 $ echo z2 >> z.txt
77 $ echo z2 >> z.txt
78 $ hg commit -m 0-1-1
78 $ hg commit -m 0-1-1
79
79
80 $ cd ..
80 $ cd ..
81 $ hg commit -m 0-2-1
81 $ hg commit -m 0-2-1
82
82
83 $ cd ..
83 $ cd ..
84 $ hg commit -m 1-2-1
84 $ hg commit -m 1-2-1
85
85
86 Change working directory:
86 Change working directory:
87
87
88 $ echo y3 >> foo/y.txt
88 $ echo y3 >> foo/y.txt
89 $ echo z3 >> foo/bar/z.txt
89 $ echo z3 >> foo/bar/z.txt
90 $ hg status -S
90 $ hg status -S
91 M foo/bar/z.txt
91 M foo/bar/z.txt
92 M foo/y.txt
92 M foo/y.txt
93 $ hg diff --nodates -S
93 $ hg diff --nodates -S
94 diff -r d254738c5f5e foo/y.txt
94 diff -r d254738c5f5e foo/y.txt
95 --- a/foo/y.txt
95 --- a/foo/y.txt
96 +++ b/foo/y.txt
96 +++ b/foo/y.txt
97 @@ -1,2 +1,3 @@
97 @@ -1,2 +1,3 @@
98 y1
98 y1
99 y2
99 y2
100 +y3
100 +y3
101 diff -r 9647f22de499 foo/bar/z.txt
101 diff -r 9647f22de499 foo/bar/z.txt
102 --- a/foo/bar/z.txt
102 --- a/foo/bar/z.txt
103 +++ b/foo/bar/z.txt
103 +++ b/foo/bar/z.txt
104 @@ -1,2 +1,3 @@
104 @@ -1,2 +1,3 @@
105 z1
105 z1
106 z2
106 z2
107 +z3
107 +z3
108
108
109 Status call crossing repository boundaries:
109 Status call crossing repository boundaries:
110
110
111 $ hg status -S foo/bar/z.txt
111 $ hg status -S foo/bar/z.txt
112 M foo/bar/z.txt
112 M foo/bar/z.txt
113 $ hg status -S -I 'foo/?.txt'
113 $ hg status -S -I 'foo/?.txt'
114 M foo/y.txt
114 M foo/y.txt
115 $ hg status -S -I '**/?.txt'
115 $ hg status -S -I '**/?.txt'
116 M foo/bar/z.txt
116 M foo/bar/z.txt
117 M foo/y.txt
117 M foo/y.txt
118 $ hg diff --nodates -S -I '**/?.txt'
118 $ hg diff --nodates -S -I '**/?.txt'
119 diff -r d254738c5f5e foo/y.txt
119 diff -r d254738c5f5e foo/y.txt
120 --- a/foo/y.txt
120 --- a/foo/y.txt
121 +++ b/foo/y.txt
121 +++ b/foo/y.txt
122 @@ -1,2 +1,3 @@
122 @@ -1,2 +1,3 @@
123 y1
123 y1
124 y2
124 y2
125 +y3
125 +y3
126 diff -r 9647f22de499 foo/bar/z.txt
126 diff -r 9647f22de499 foo/bar/z.txt
127 --- a/foo/bar/z.txt
127 --- a/foo/bar/z.txt
128 +++ b/foo/bar/z.txt
128 +++ b/foo/bar/z.txt
129 @@ -1,2 +1,3 @@
129 @@ -1,2 +1,3 @@
130 z1
130 z1
131 z2
131 z2
132 +z3
132 +z3
133
133
134 Status from within a subdirectory:
134 Status from within a subdirectory:
135
135
136 $ mkdir dir
136 $ mkdir dir
137 $ cd dir
137 $ cd dir
138 $ echo a1 > a.txt
138 $ echo a1 > a.txt
139 $ hg status -S
139 $ hg status -S
140 M foo/bar/z.txt
140 M foo/bar/z.txt
141 M foo/y.txt
141 M foo/y.txt
142 ? dir/a.txt
142 ? dir/a.txt
143 $ hg diff --nodates -S
143 $ hg diff --nodates -S
144 diff -r d254738c5f5e foo/y.txt
144 diff -r d254738c5f5e foo/y.txt
145 --- a/foo/y.txt
145 --- a/foo/y.txt
146 +++ b/foo/y.txt
146 +++ b/foo/y.txt
147 @@ -1,2 +1,3 @@
147 @@ -1,2 +1,3 @@
148 y1
148 y1
149 y2
149 y2
150 +y3
150 +y3
151 diff -r 9647f22de499 foo/bar/z.txt
151 diff -r 9647f22de499 foo/bar/z.txt
152 --- a/foo/bar/z.txt
152 --- a/foo/bar/z.txt
153 +++ b/foo/bar/z.txt
153 +++ b/foo/bar/z.txt
154 @@ -1,2 +1,3 @@
154 @@ -1,2 +1,3 @@
155 z1
155 z1
156 z2
156 z2
157 +z3
157 +z3
158
158
159 Status with relative path:
159 Status with relative path:
160
160
161 $ hg status -S ..
161 $ hg status -S ..
162 M ../foo/bar/z.txt
162 M ../foo/bar/z.txt
163 M ../foo/y.txt
163 M ../foo/y.txt
164 ? a.txt
164 ? a.txt
165
165
166 XXX: filtering lfilesrepo.status() in 3.3-rc causes these files to be listed as
166 XXX: filtering lfilesrepo.status() in 3.3-rc causes these files to be listed as
167 added instead of modified.
167 added instead of modified.
168 $ hg status -S .. --config extensions.largefiles=
168 $ hg status -S .. --config extensions.largefiles=
169 M ../foo/bar/z.txt
169 M ../foo/bar/z.txt
170 M ../foo/y.txt
170 M ../foo/y.txt
171 ? a.txt
171 ? a.txt
172
172
173 $ hg diff --nodates -S ..
173 $ hg diff --nodates -S ..
174 diff -r d254738c5f5e foo/y.txt
174 diff -r d254738c5f5e foo/y.txt
175 --- a/foo/y.txt
175 --- a/foo/y.txt
176 +++ b/foo/y.txt
176 +++ b/foo/y.txt
177 @@ -1,2 +1,3 @@
177 @@ -1,2 +1,3 @@
178 y1
178 y1
179 y2
179 y2
180 +y3
180 +y3
181 diff -r 9647f22de499 foo/bar/z.txt
181 diff -r 9647f22de499 foo/bar/z.txt
182 --- a/foo/bar/z.txt
182 --- a/foo/bar/z.txt
183 +++ b/foo/bar/z.txt
183 +++ b/foo/bar/z.txt
184 @@ -1,2 +1,3 @@
184 @@ -1,2 +1,3 @@
185 z1
185 z1
186 z2
186 z2
187 +z3
187 +z3
188 $ cd ..
188 $ cd ..
189
189
190 Cleanup and final commit:
190 Cleanup and final commit:
191
191
192 $ rm -r dir
192 $ rm -r dir
193 $ hg commit --subrepos -m 2-3-2
193 $ hg commit --subrepos -m 2-3-2
194 committing subrepository foo
194 committing subrepository foo
195 committing subrepository foo/bar (glob)
195 committing subrepository foo/bar (glob)
196
196
197 Test explicit path commands within subrepos: add/forget
197 Test explicit path commands within subrepos: add/forget
198 $ echo z1 > foo/bar/z2.txt
198 $ echo z1 > foo/bar/z2.txt
199 $ hg status -S
199 $ hg status -S
200 ? foo/bar/z2.txt
200 ? foo/bar/z2.txt
201 $ hg add foo/bar/z2.txt
201 $ hg add foo/bar/z2.txt
202 $ hg status -S
202 $ hg status -S
203 A foo/bar/z2.txt
203 A foo/bar/z2.txt
204 $ hg forget foo/bar/z2.txt
204 $ hg forget foo/bar/z2.txt
205 $ hg status -S
205 $ hg status -S
206 ? foo/bar/z2.txt
206 ? foo/bar/z2.txt
207 $ hg forget foo/bar/z2.txt
207 $ hg forget foo/bar/z2.txt
208 not removing foo/bar/z2.txt: file is already untracked (glob)
208 not removing foo/bar/z2.txt: file is already untracked (glob)
209 [1]
209 [1]
210 $ hg status -S
210 $ hg status -S
211 ? foo/bar/z2.txt
211 ? foo/bar/z2.txt
212 $ rm foo/bar/z2.txt
212 $ rm foo/bar/z2.txt
213
213
214 Log with the relationships between repo and its subrepo:
214 Log with the relationships between repo and its subrepo:
215
215
216 $ hg log --template '{rev}:{node|short} {desc}\n'
216 $ hg log --template '{rev}:{node|short} {desc}\n'
217 2:1326fa26d0c0 2-3-2
217 2:1326fa26d0c0 2-3-2
218 1:4b3c9ff4f66b 1-2-1
218 1:4b3c9ff4f66b 1-2-1
219 0:23376cbba0d8 0-0-0
219 0:23376cbba0d8 0-0-0
220
220
221 $ hg -R foo log --template '{rev}:{node|short} {desc}\n'
221 $ hg -R foo log --template '{rev}:{node|short} {desc}\n'
222 3:65903cebad86 2-3-2
222 3:65903cebad86 2-3-2
223 2:d254738c5f5e 0-2-1
223 2:d254738c5f5e 0-2-1
224 1:8629ce7dcc39 0-1-0
224 1:8629ce7dcc39 0-1-0
225 0:af048e97ade2 0-0-0
225 0:af048e97ade2 0-0-0
226
226
227 $ hg -R foo/bar log --template '{rev}:{node|short} {desc}\n'
227 $ hg -R foo/bar log --template '{rev}:{node|short} {desc}\n'
228 2:31ecbdafd357 2-3-2
228 2:31ecbdafd357 2-3-2
229 1:9647f22de499 0-1-1
229 1:9647f22de499 0-1-1
230 0:4904098473f9 0-0-0
230 0:4904098473f9 0-0-0
231
231
232 Status between revisions:
232 Status between revisions:
233
233
234 $ hg status -S
234 $ hg status -S
235 $ hg status -S --rev 0:1
235 $ hg status -S --rev 0:1
236 M .hgsubstate
236 M .hgsubstate
237 M foo/.hgsubstate
237 M foo/.hgsubstate
238 M foo/bar/z.txt
238 M foo/bar/z.txt
239 M foo/y.txt
239 M foo/y.txt
240 $ hg diff --nodates -S -I '**/?.txt' --rev 0:1
240 $ hg diff --nodates -S -I '**/?.txt' --rev 0:1
241 diff -r af048e97ade2 -r d254738c5f5e foo/y.txt
241 diff -r af048e97ade2 -r d254738c5f5e foo/y.txt
242 --- a/foo/y.txt
242 --- a/foo/y.txt
243 +++ b/foo/y.txt
243 +++ b/foo/y.txt
244 @@ -1,1 +1,2 @@
244 @@ -1,1 +1,2 @@
245 y1
245 y1
246 +y2
246 +y2
247 diff -r 4904098473f9 -r 9647f22de499 foo/bar/z.txt
247 diff -r 4904098473f9 -r 9647f22de499 foo/bar/z.txt
248 --- a/foo/bar/z.txt
248 --- a/foo/bar/z.txt
249 +++ b/foo/bar/z.txt
249 +++ b/foo/bar/z.txt
250 @@ -1,1 +1,2 @@
250 @@ -1,1 +1,2 @@
251 z1
251 z1
252 +z2
252 +z2
253
253
254 Enable progress extension for archive tests:
254 Enable progress extension for archive tests:
255
255
256 $ cp $HGRCPATH $HGRCPATH.no-progress
256 $ cp $HGRCPATH $HGRCPATH.no-progress
257 $ cat >> $HGRCPATH <<EOF
257 $ cat >> $HGRCPATH <<EOF
258 > [extensions]
258 > [extensions]
259 > progress =
259 > progress =
260 > [progress]
260 > [progress]
261 > assume-tty = 1
261 > assume-tty = 1
262 > delay = 0
262 > delay = 0
263 > # set changedelay really large so we don't see nested topics
263 > # set changedelay really large so we don't see nested topics
264 > changedelay = 30000
264 > changedelay = 30000
265 > format = topic bar number
265 > format = topic bar number
266 > refresh = 0
266 > refresh = 0
267 > width = 60
267 > width = 60
268 > EOF
268 > EOF
269
269
270 Test archiving to a directory tree (the doubled lines in the output
270 Test archiving to a directory tree (the doubled lines in the output
271 only show up in the test output, not in real usage):
271 only show up in the test output, not in real usage):
272
272
273 $ hg archive --subrepos ../archive
273 $ hg archive --subrepos ../archive
274 \r (no-eol) (esc)
274 \r (no-eol) (esc)
275 archiving [ ] 0/3\r (no-eol) (esc)
275 archiving [ ] 0/3\r (no-eol) (esc)
276 archiving [ ] 0/3\r (no-eol) (esc)
277 archiving [=============> ] 1/3\r (no-eol) (esc)
278 archiving [=============> ] 1/3\r (no-eol) (esc)
276 archiving [=============> ] 1/3\r (no-eol) (esc)
279 archiving [===========================> ] 2/3\r (no-eol) (esc)
277 archiving [===========================> ] 2/3\r (no-eol) (esc)
280 archiving [===========================> ] 2/3\r (no-eol) (esc)
281 archiving [==========================================>] 3/3\r (no-eol) (esc)
282 archiving [==========================================>] 3/3\r (no-eol) (esc)
278 archiving [==========================================>] 3/3\r (no-eol) (esc)
283 \r (no-eol) (esc)
279 \r (no-eol) (esc)
284 \r (no-eol) (esc)
280 \r (no-eol) (esc)
285 archiving (foo) [ ] 0/3\r (no-eol) (esc)
281 archiving (foo) [ ] 0/3\r (no-eol) (esc)
286 archiving (foo) [ ] 0/3\r (no-eol) (esc)
287 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
288 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
282 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
289 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
283 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
290 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
291 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
292 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
284 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
293 \r (no-eol) (esc)
285 \r (no-eol) (esc)
294 \r (no-eol) (esc)
286 \r (no-eol) (esc)
295 archiving (foo/bar) [ ] 0/1\r (no-eol) (glob) (esc)
287 archiving (foo/bar) [ ] 0/1\r (no-eol) (esc)
296 archiving (foo/bar) [ ] 0/1\r (no-eol) (glob) (esc)
288 archiving (foo/bar) [================================>] 1/1\r (no-eol) (esc)
297 archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)
298 archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)
299 \r (no-eol) (esc)
289 \r (no-eol) (esc)
300 $ find ../archive | sort
290 $ find ../archive | sort
301 ../archive
291 ../archive
302 ../archive/.hg_archival.txt
292 ../archive/.hg_archival.txt
303 ../archive/.hgsub
293 ../archive/.hgsub
304 ../archive/.hgsubstate
294 ../archive/.hgsubstate
305 ../archive/foo
295 ../archive/foo
306 ../archive/foo/.hgsub
296 ../archive/foo/.hgsub
307 ../archive/foo/.hgsubstate
297 ../archive/foo/.hgsubstate
308 ../archive/foo/bar
298 ../archive/foo/bar
309 ../archive/foo/bar/z.txt
299 ../archive/foo/bar/z.txt
310 ../archive/foo/y.txt
300 ../archive/foo/y.txt
311 ../archive/x.txt
301 ../archive/x.txt
312
302
313 Test archiving to zip file (unzip output is unstable):
303 Test archiving to zip file (unzip output is unstable):
314
304
315 $ hg archive --subrepos --prefix '.' ../archive.zip
305 $ hg archive --subrepos --prefix '.' ../archive.zip
316 \r (no-eol) (esc)
306 \r (no-eol) (esc)
317 archiving [ ] 0/3\r (no-eol) (esc)
307 archiving [ ] 0/3\r (no-eol) (esc)
318 archiving [ ] 0/3\r (no-eol) (esc)
319 archiving [=============> ] 1/3\r (no-eol) (esc)
320 archiving [=============> ] 1/3\r (no-eol) (esc)
308 archiving [=============> ] 1/3\r (no-eol) (esc)
321 archiving [===========================> ] 2/3\r (no-eol) (esc)
309 archiving [===========================> ] 2/3\r (no-eol) (esc)
322 archiving [===========================> ] 2/3\r (no-eol) (esc)
323 archiving [==========================================>] 3/3\r (no-eol) (esc)
324 archiving [==========================================>] 3/3\r (no-eol) (esc)
310 archiving [==========================================>] 3/3\r (no-eol) (esc)
325 \r (no-eol) (esc)
311 \r (no-eol) (esc)
326 \r (no-eol) (esc)
312 \r (no-eol) (esc)
327 archiving (foo) [ ] 0/3\r (no-eol) (esc)
313 archiving (foo) [ ] 0/3\r (no-eol) (esc)
328 archiving (foo) [ ] 0/3\r (no-eol) (esc)
329 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
330 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
314 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
331 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
315 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
332 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
333 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
334 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
316 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
335 \r (no-eol) (esc)
317 \r (no-eol) (esc)
336 \r (no-eol) (esc)
318 \r (no-eol) (esc)
337 archiving (foo/bar) [ ] 0/1\r (no-eol) (glob) (esc)
319 archiving (foo/bar) [ ] 0/1\r (no-eol) (esc)
338 archiving (foo/bar) [ ] 0/1\r (no-eol) (glob) (esc)
320 archiving (foo/bar) [================================>] 1/1\r (no-eol) (esc)
339 archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)
340 archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)
341 \r (no-eol) (esc)
321 \r (no-eol) (esc)
342
322
343 (unzip date formating is unstable, we do not care about it and glob it out)
323 (unzip date formating is unstable, we do not care about it and glob it out)
344
324
345 $ unzip -l ../archive.zip
325 $ unzip -l ../archive.zip
346 Archive: ../archive.zip
326 Archive: ../archive.zip
347 Length Date Time Name
327 Length Date Time Name
348 --------- ---------- ----- ----
328 --------- ---------- ----- ----
349 172 ?????????? 00:00 .hg_archival.txt (glob)
329 172 ?????????? 00:00 .hg_archival.txt (glob)
350 10 ?????????? 00:00 .hgsub (glob)
330 10 ?????????? 00:00 .hgsub (glob)
351 45 ?????????? 00:00 .hgsubstate (glob)
331 45 ?????????? 00:00 .hgsubstate (glob)
352 3 ?????????? 00:00 x.txt (glob)
332 3 ?????????? 00:00 x.txt (glob)
353 10 ?????????? 00:00 foo/.hgsub (glob)
333 10 ?????????? 00:00 foo/.hgsub (glob)
354 45 ?????????? 00:00 foo/.hgsubstate (glob)
334 45 ?????????? 00:00 foo/.hgsubstate (glob)
355 9 ?????????? 00:00 foo/y.txt (glob)
335 9 ?????????? 00:00 foo/y.txt (glob)
356 9 ?????????? 00:00 foo/bar/z.txt (glob)
336 9 ?????????? 00:00 foo/bar/z.txt (glob)
357 --------- -------
337 --------- -------
358 303 8 files
338 303 8 files
359
339
360 Test archiving a revision that references a subrepo that is not yet
340 Test archiving a revision that references a subrepo that is not yet
361 cloned:
341 cloned:
362
342
363 #if hardlink
343 #if hardlink
364 $ hg clone -U . ../empty
344 $ hg clone -U . ../empty
365 \r (no-eol) (esc)
345 \r (no-eol) (esc)
366 linking [ <=> ] 1\r (no-eol) (esc)
346 linking [ <=> ] 1\r (no-eol) (esc)
367 linking [ <=> ] 2\r (no-eol) (esc)
347 linking [ <=> ] 2\r (no-eol) (esc)
368 linking [ <=> ] 3\r (no-eol) (esc)
348 linking [ <=> ] 3\r (no-eol) (esc)
369 linking [ <=> ] 4\r (no-eol) (esc)
349 linking [ <=> ] 4\r (no-eol) (esc)
370 linking [ <=> ] 5\r (no-eol) (esc)
350 linking [ <=> ] 5\r (no-eol) (esc)
371 linking [ <=> ] 6\r (no-eol) (esc)
351 linking [ <=> ] 6\r (no-eol) (esc)
372 linking [ <=> ] 7\r (no-eol) (esc)
352 linking [ <=> ] 7\r (no-eol) (esc)
373 linking [ <=> ] 8\r (no-eol) (esc)
353 linking [ <=> ] 8\r (no-eol) (esc)
374 \r (no-eol) (esc)
354 \r (no-eol) (esc)
375 #else
355 #else
376 $ hg clone -U . ../empty
356 $ hg clone -U . ../empty
377 \r (no-eol) (esc)
357 \r (no-eol) (esc)
378 linking [ <=> ] 1 (no-eol)
358 linking [ <=> ] 1 (no-eol)
379 #endif
359 #endif
380
360
381 $ cd ../empty
361 $ cd ../empty
382 #if hardlink
362 #if hardlink
383 $ hg archive --subrepos -r tip --prefix './' ../archive.tar.gz
363 $ hg archive --subrepos -r tip --prefix './' ../archive.tar.gz
384 \r (no-eol) (esc)
364 \r (no-eol) (esc)
385 archiving [ ] 0/3\r (no-eol) (esc)
365 archiving [ ] 0/3\r (no-eol) (esc)
386 archiving [ ] 0/3\r (no-eol) (esc)
387 archiving [=============> ] 1/3\r (no-eol) (esc)
388 archiving [=============> ] 1/3\r (no-eol) (esc)
366 archiving [=============> ] 1/3\r (no-eol) (esc)
389 archiving [===========================> ] 2/3\r (no-eol) (esc)
367 archiving [===========================> ] 2/3\r (no-eol) (esc)
390 archiving [===========================> ] 2/3\r (no-eol) (esc)
391 archiving [==========================================>] 3/3\r (no-eol) (esc)
392 archiving [==========================================>] 3/3\r (no-eol) (esc)
368 archiving [==========================================>] 3/3\r (no-eol) (esc)
393 \r (no-eol) (esc)
369 \r (no-eol) (esc)
394 \r (no-eol) (esc)
370 \r (no-eol) (esc)
395 linking [ <=> ] 1\r (no-eol) (esc)
371 linking [ <=> ] 1\r (no-eol) (esc)
396 linking [ <=> ] 2\r (no-eol) (esc)
372 linking [ <=> ] 2\r (no-eol) (esc)
397 linking [ <=> ] 3\r (no-eol) (esc)
373 linking [ <=> ] 3\r (no-eol) (esc)
398 linking [ <=> ] 4\r (no-eol) (esc)
374 linking [ <=> ] 4\r (no-eol) (esc)
399 linking [ <=> ] 5\r (no-eol) (esc)
375 linking [ <=> ] 5\r (no-eol) (esc)
400 linking [ <=> ] 6\r (no-eol) (esc)
376 linking [ <=> ] 6\r (no-eol) (esc)
401 linking [ <=> ] 7\r (no-eol) (esc)
377 linking [ <=> ] 7\r (no-eol) (esc)
402 linking [ <=> ] 8\r (no-eol) (esc)
378 linking [ <=> ] 8\r (no-eol) (esc)
403 \r (no-eol) (esc)
379 \r (no-eol) (esc)
404 \r (no-eol) (esc)
380 \r (no-eol) (esc)
405 archiving (foo) [ ] 0/3\r (no-eol) (esc)
381 archiving (foo) [ ] 0/3\r (no-eol) (esc)
406 archiving (foo) [ ] 0/3\r (no-eol) (esc)
407 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
408 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
382 archiving (foo) [===========> ] 1/3\r (no-eol) (esc)
409 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
383 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
410 archiving (foo) [=======================> ] 2/3\r (no-eol) (esc)
411 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
412 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
384 archiving (foo) [====================================>] 3/3\r (no-eol) (esc)
413 \r (no-eol) (esc)
385 \r (no-eol) (esc)
414 \r (no-eol) (esc)
386 \r (no-eol) (esc)
415 linking [ <=> ] 1\r (no-eol) (esc)
387 linking [ <=> ] 1\r (no-eol) (esc)
416 linking [ <=> ] 2\r (no-eol) (esc)
388 linking [ <=> ] 2\r (no-eol) (esc)
417 linking [ <=> ] 3\r (no-eol) (esc)
389 linking [ <=> ] 3\r (no-eol) (esc)
418 linking [ <=> ] 4\r (no-eol) (esc)
390 linking [ <=> ] 4\r (no-eol) (esc)
419 linking [ <=> ] 5\r (no-eol) (esc)
391 linking [ <=> ] 5\r (no-eol) (esc)
420 linking [ <=> ] 6\r (no-eol) (esc)
392 linking [ <=> ] 6\r (no-eol) (esc)
421 \r (no-eol) (esc)
393 \r (no-eol) (esc)
422 \r (no-eol) (esc)
394 \r (no-eol) (esc)
423 archiving (foo/bar) [ ] 0/1\r (no-eol) (glob) (esc)
395 archiving (foo/bar) [ ] 0/1\r (no-eol) (esc)
424 archiving (foo/bar) [ ] 0/1\r (no-eol) (glob) (esc)
396 archiving (foo/bar) [================================>] 1/1\r (no-eol) (esc)
425 archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)
426 archiving (foo/bar) [================================>] 1/1\r (no-eol) (glob) (esc)
427 \r (no-eol) (esc)
397 \r (no-eol) (esc)
428 cloning subrepo foo from $TESTTMP/repo/foo
398 cloning subrepo foo from $TESTTMP/repo/foo
429 cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
399 cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
430 #else
400 #else
431 Note there's a slight output glitch on non-hardlink systems: the last
401 Note there's a slight output glitch on non-hardlink systems: the last
432 "linking" progress topic never gets closed, leading to slight output corruption on that platform.
402 "linking" progress topic never gets closed, leading to slight output corruption on that platform.
433 $ hg archive --subrepos -r tip --prefix './' ../archive.tar.gz
403 $ hg archive --subrepos -r tip --prefix './' ../archive.tar.gz
434 \r (no-eol) (esc)
404 \r (no-eol) (esc)
435 archiving [ ] 0/3\r (no-eol) (esc)
405 archiving [ ] 0/3\r (no-eol) (esc)
436 archiving [ ] 0/3\r (no-eol) (esc)
406 archiving [ ] 0/3\r (no-eol) (esc)
437 archiving [=============> ] 1/3\r (no-eol) (esc)
407 archiving [=============> ] 1/3\r (no-eol) (esc)
438 archiving [=============> ] 1/3\r (no-eol) (esc)
408 archiving [=============> ] 1/3\r (no-eol) (esc)
439 archiving [===========================> ] 2/3\r (no-eol) (esc)
409 archiving [===========================> ] 2/3\r (no-eol) (esc)
440 archiving [===========================> ] 2/3\r (no-eol) (esc)
410 archiving [===========================> ] 2/3\r (no-eol) (esc)
441 archiving [==========================================>] 3/3\r (no-eol) (esc)
411 archiving [==========================================>] 3/3\r (no-eol) (esc)
442 archiving [==========================================>] 3/3\r (no-eol) (esc)
412 archiving [==========================================>] 3/3\r (no-eol) (esc)
443 \r (no-eol) (esc)
413 \r (no-eol) (esc)
444 \r (no-eol) (esc)
414 \r (no-eol) (esc)
445 linking [ <=> ] 1\r (no-eol) (esc)
415 linking [ <=> ] 1\r (no-eol) (esc)
446 \r (no-eol) (esc)
416 \r (no-eol) (esc)
447 \r (no-eol) (esc)
417 \r (no-eol) (esc)
448 \r (no-eol) (esc)
418 \r (no-eol) (esc)
449 \r (no-eol) (esc)
419 \r (no-eol) (esc)
450 linking [ <=> ] 1cloning subrepo foo from $TESTTMP/repo/foo
420 linking [ <=> ] 1cloning subrepo foo from $TESTTMP/repo/foo
451 cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
421 cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
452 #endif
422 #endif
453
423
454 Archive + subrepos uses '/' for all component separators
424 Archive + subrepos uses '/' for all component separators
455
425
456 $ tar -tzf ../archive.tar.gz | sort
426 $ tar -tzf ../archive.tar.gz | sort
457 .hg_archival.txt
427 .hg_archival.txt
458 .hgsub
428 .hgsub
459 .hgsubstate
429 .hgsubstate
460 foo/.hgsub
430 foo/.hgsub
461 foo/.hgsubstate
431 foo/.hgsubstate
462 foo/bar/z.txt
432 foo/bar/z.txt
463 foo/y.txt
433 foo/y.txt
464 x.txt
434 x.txt
465
435
466 The newly cloned subrepos contain no working copy:
436 The newly cloned subrepos contain no working copy:
467
437
468 $ hg -R foo summary
438 $ hg -R foo summary
469 parent: -1:000000000000 (no revision checked out)
439 parent: -1:000000000000 (no revision checked out)
470 branch: default
440 branch: default
471 commit: (clean)
441 commit: (clean)
472 update: 4 new changesets (update)
442 update: 4 new changesets (update)
473
443
474 Disable progress extension and cleanup:
444 Disable progress extension and cleanup:
475
445
476 $ mv $HGRCPATH.no-progress $HGRCPATH
446 $ mv $HGRCPATH.no-progress $HGRCPATH
477
447
478 Test archiving when there is a directory in the way for a subrepo
448 Test archiving when there is a directory in the way for a subrepo
479 created by archive:
449 created by archive:
480
450
481 $ hg clone -U . ../almost-empty
451 $ hg clone -U . ../almost-empty
482 $ cd ../almost-empty
452 $ cd ../almost-empty
483 $ mkdir foo
453 $ mkdir foo
484 $ echo f > foo/f
454 $ echo f > foo/f
485 $ hg archive --subrepos -r tip archive
455 $ hg archive --subrepos -r tip archive
486 cloning subrepo foo from $TESTTMP/empty/foo
456 cloning subrepo foo from $TESTTMP/empty/foo
487 abort: destination '$TESTTMP/almost-empty/foo' is not empty (in subrepo foo) (glob)
457 abort: destination '$TESTTMP/almost-empty/foo' is not empty (in subrepo foo) (glob)
488 [255]
458 [255]
489
459
490 Clone and test outgoing:
460 Clone and test outgoing:
491
461
492 $ cd ..
462 $ cd ..
493 $ hg clone repo repo2
463 $ hg clone repo repo2
494 updating to branch default
464 updating to branch default
495 cloning subrepo foo from $TESTTMP/repo/foo
465 cloning subrepo foo from $TESTTMP/repo/foo
496 cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
466 cloning subrepo foo/bar from $TESTTMP/repo/foo/bar (glob)
497 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
467 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
498 $ cd repo2
468 $ cd repo2
499 $ hg outgoing -S
469 $ hg outgoing -S
500 comparing with $TESTTMP/repo (glob)
470 comparing with $TESTTMP/repo (glob)
501 searching for changes
471 searching for changes
502 no changes found
472 no changes found
503 comparing with $TESTTMP/repo/foo
473 comparing with $TESTTMP/repo/foo
504 searching for changes
474 searching for changes
505 no changes found
475 no changes found
506 comparing with $TESTTMP/repo/foo/bar
476 comparing with $TESTTMP/repo/foo/bar
507 searching for changes
477 searching for changes
508 no changes found
478 no changes found
509 [1]
479 [1]
510
480
511 Make nested change:
481 Make nested change:
512
482
513 $ echo y4 >> foo/y.txt
483 $ echo y4 >> foo/y.txt
514 $ hg diff --nodates -S
484 $ hg diff --nodates -S
515 diff -r 65903cebad86 foo/y.txt
485 diff -r 65903cebad86 foo/y.txt
516 --- a/foo/y.txt
486 --- a/foo/y.txt
517 +++ b/foo/y.txt
487 +++ b/foo/y.txt
518 @@ -1,3 +1,4 @@
488 @@ -1,3 +1,4 @@
519 y1
489 y1
520 y2
490 y2
521 y3
491 y3
522 +y4
492 +y4
523 $ hg commit --subrepos -m 3-4-2
493 $ hg commit --subrepos -m 3-4-2
524 committing subrepository foo
494 committing subrepository foo
525 $ hg outgoing -S
495 $ hg outgoing -S
526 comparing with $TESTTMP/repo (glob)
496 comparing with $TESTTMP/repo (glob)
527 searching for changes
497 searching for changes
528 changeset: 3:2655b8ecc4ee
498 changeset: 3:2655b8ecc4ee
529 tag: tip
499 tag: tip
530 user: test
500 user: test
531 date: Thu Jan 01 00:00:00 1970 +0000
501 date: Thu Jan 01 00:00:00 1970 +0000
532 summary: 3-4-2
502 summary: 3-4-2
533
503
534 comparing with $TESTTMP/repo/foo
504 comparing with $TESTTMP/repo/foo
535 searching for changes
505 searching for changes
536 changeset: 4:e96193d6cb36
506 changeset: 4:e96193d6cb36
537 tag: tip
507 tag: tip
538 user: test
508 user: test
539 date: Thu Jan 01 00:00:00 1970 +0000
509 date: Thu Jan 01 00:00:00 1970 +0000
540 summary: 3-4-2
510 summary: 3-4-2
541
511
542 comparing with $TESTTMP/repo/foo/bar
512 comparing with $TESTTMP/repo/foo/bar
543 searching for changes
513 searching for changes
544 no changes found
514 no changes found
545
515
546
516
547 Switch to original repo and setup default path:
517 Switch to original repo and setup default path:
548
518
549 $ cd ../repo
519 $ cd ../repo
550 $ echo '[paths]' >> .hg/hgrc
520 $ echo '[paths]' >> .hg/hgrc
551 $ echo 'default = ../repo2' >> .hg/hgrc
521 $ echo 'default = ../repo2' >> .hg/hgrc
552
522
553 Test incoming:
523 Test incoming:
554
524
555 $ hg incoming -S
525 $ hg incoming -S
556 comparing with $TESTTMP/repo2 (glob)
526 comparing with $TESTTMP/repo2 (glob)
557 searching for changes
527 searching for changes
558 changeset: 3:2655b8ecc4ee
528 changeset: 3:2655b8ecc4ee
559 tag: tip
529 tag: tip
560 user: test
530 user: test
561 date: Thu Jan 01 00:00:00 1970 +0000
531 date: Thu Jan 01 00:00:00 1970 +0000
562 summary: 3-4-2
532 summary: 3-4-2
563
533
564 comparing with $TESTTMP/repo2/foo
534 comparing with $TESTTMP/repo2/foo
565 searching for changes
535 searching for changes
566 changeset: 4:e96193d6cb36
536 changeset: 4:e96193d6cb36
567 tag: tip
537 tag: tip
568 user: test
538 user: test
569 date: Thu Jan 01 00:00:00 1970 +0000
539 date: Thu Jan 01 00:00:00 1970 +0000
570 summary: 3-4-2
540 summary: 3-4-2
571
541
572 comparing with $TESTTMP/repo2/foo/bar
542 comparing with $TESTTMP/repo2/foo/bar
573 searching for changes
543 searching for changes
574 no changes found
544 no changes found
575
545
576 $ hg incoming -S --bundle incoming.hg
546 $ hg incoming -S --bundle incoming.hg
577 abort: cannot combine --bundle and --subrepos
547 abort: cannot combine --bundle and --subrepos
578 [255]
548 [255]
579
549
580 Test missing subrepo:
550 Test missing subrepo:
581
551
582 $ rm -r foo
552 $ rm -r foo
583 $ hg status -S
553 $ hg status -S
584 warning: error "unknown revision '65903cebad86f1a84bd4f1134f62fa7dcb7a1c98'" in subrepository "foo"
554 warning: error "unknown revision '65903cebad86f1a84bd4f1134f62fa7dcb7a1c98'" in subrepository "foo"
585
555
586 Issue2619: IndexError: list index out of range on hg add with subrepos
556 Issue2619: IndexError: list index out of range on hg add with subrepos
587 The subrepo must sorts after the explicit filename.
557 The subrepo must sorts after the explicit filename.
588
558
589 $ cd ..
559 $ cd ..
590 $ hg init test
560 $ hg init test
591 $ cd test
561 $ cd test
592 $ hg init x
562 $ hg init x
593 $ echo abc > abc.txt
563 $ echo abc > abc.txt
594 $ hg ci -Am "abc"
564 $ hg ci -Am "abc"
595 adding abc.txt
565 adding abc.txt
596 $ echo "x = x" >> .hgsub
566 $ echo "x = x" >> .hgsub
597 $ hg add .hgsub
567 $ hg add .hgsub
598 $ touch a x/a
568 $ touch a x/a
599 $ hg add a x/a
569 $ hg add a x/a
600
570
601 $ hg ci -Sm "added x"
571 $ hg ci -Sm "added x"
602 committing subrepository x
572 committing subrepository x
603 $ echo abc > x/a
573 $ echo abc > x/a
604 $ hg revert --rev '.^' "set:subrepo('glob:x*')"
574 $ hg revert --rev '.^' "set:subrepo('glob:x*')"
605 abort: subrepository 'x' does not exist in 25ac2c9b3180!
575 abort: subrepository 'x' does not exist in 25ac2c9b3180!
606 [255]
576 [255]
607
577
608 $ cd ..
578 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now