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