##// END OF EJS Templates
test-command-template: test the phase template more precisely...
Jordi Gutiérrez Hermoso -
r24929:6fb98463 default
parent child Browse files
Show More
@@ -1,2634 +1,2674 b''
1 1 $ hg init a
2 2 $ cd a
3 3 $ echo a > a
4 4 $ hg add a
5 5 $ echo line 1 > b
6 6 $ echo line 2 >> b
7 7 $ hg commit -l b -d '1000000 0' -u 'User Name <user@hostname>'
8 8
9 9 $ hg add b
10 10 $ echo other 1 > c
11 11 $ echo other 2 >> c
12 12 $ echo >> c
13 13 $ echo other 3 >> c
14 14 $ hg commit -l c -d '1100000 0' -u 'A. N. Other <other@place>'
15 15
16 16 $ hg add c
17 17 $ hg commit -m 'no person' -d '1200000 0' -u 'other@place'
18 18 $ echo c >> c
19 19 $ hg commit -m 'no user, no domain' -d '1300000 0' -u 'person'
20 20
21 21 $ echo foo > .hg/branch
22 22 $ hg commit -m 'new branch' -d '1400000 0' -u 'person'
23 23
24 24 $ hg co -q 3
25 25 $ echo other 4 >> d
26 26 $ hg add d
27 27 $ hg commit -m 'new head' -d '1500000 0' -u 'person'
28 28
29 29 $ hg merge -q foo
30 30 $ hg commit -m 'merge' -d '1500001 0' -u 'person'
31 31
32 32 Second branch starting at nullrev:
33 33
34 34 $ hg update null
35 35 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
36 36 $ echo second > second
37 37 $ hg add second
38 38 $ hg commit -m second -d '1000000 0' -u 'User Name <user@hostname>'
39 39 created new head
40 40
41 41 $ echo third > third
42 42 $ hg add third
43 43 $ hg mv second fourth
44 44 $ hg commit -m third -d "2020-01-01 10:01"
45 45
46 46 $ hg log --template '{join(file_copies, ",\n")}\n' -r .
47 47 fourth (second)
48 48 $ hg log -T '{file_copies % "{source} -> {name}\n"}' -r .
49 49 second -> fourth
50 50 $ hg log -T '{rev} {ifcontains("fourth", file_copies, "t", "f")}\n' -r .:7
51 51 8 t
52 52 7 f
53 53
54 54 Quoting for ui.logtemplate
55 55
56 56 $ hg tip --config "ui.logtemplate={rev}\n"
57 57 8
58 58 $ hg tip --config "ui.logtemplate='{rev}\n'"
59 59 8
60 60 $ hg tip --config 'ui.logtemplate="{rev}\n"'
61 61 8
62 62
63 63 Make sure user/global hgrc does not affect tests
64 64
65 65 $ echo '[ui]' > .hg/hgrc
66 66 $ echo 'logtemplate =' >> .hg/hgrc
67 67 $ echo 'style =' >> .hg/hgrc
68 68
69 69 Add some simple styles to settings
70 70
71 71 $ echo '[templates]' >> .hg/hgrc
72 72 $ printf 'simple = "{rev}\\n"\n' >> .hg/hgrc
73 73 $ printf 'simple2 = {rev}\\n\n' >> .hg/hgrc
74 74
75 75 $ hg log -l1 -Tsimple
76 76 8
77 77 $ hg log -l1 -Tsimple2
78 78 8
79 79
80 80 Test templates and style maps in files:
81 81
82 82 $ echo "{rev}" > tmpl
83 83 $ hg log -l1 -T./tmpl
84 84 8
85 85 $ hg log -l1 -Tblah/blah
86 86 blah/blah (no-eol)
87 87
88 88 $ printf 'changeset = "{rev}\\n"\n' > map-simple
89 89 $ hg log -l1 -T./map-simple
90 90 8
91 91
92 92 Template should precede style option
93 93
94 94 $ hg log -l1 --style default -T '{rev}\n'
95 95 8
96 96
97 97 Add a commit with empty description, to ensure that the templates
98 98 following below omit it properly.
99 99
100 100 $ echo c >> c
101 101 $ hg add c
102 102 $ hg commit -qm ' '
103 103
104 104 Default style is like normal output. Phases style should be the same
105 105 as default style, except for extra phase lines.
106 106
107 107 $ hg log > log.out
108 108 $ hg log --style default > style.out
109 109 $ cmp log.out style.out || diff -u log.out style.out
110 110 $ hg log -T phases > phases.out
111 $ diff -u log.out phases.out | grep "phase:"
111 $ diff -U 0 log.out phases.out | grep -v '^---\|^+++'
112 @@ -2,0 +3 @@
112 113 +phase: draft
114 @@ -6,0 +8 @@
113 115 +phase: draft
116 @@ -11,0 +14 @@
114 117 +phase: draft
118 @@ -17,0 +21 @@
115 119 +phase: draft
120 @@ -24,0 +29 @@
116 121 +phase: draft
122 @@ -31,0 +37 @@
117 123 +phase: draft
124 @@ -36,0 +43 @@
118 125 +phase: draft
126 @@ -41,0 +49 @@
119 127 +phase: draft
128 @@ -46,0 +55 @@
120 129 +phase: draft
130 @@ -51,0 +61 @@
121 131 +phase: draft
122 132
123 133 $ hg log -v > log.out
124 134 $ hg log -v --style default > style.out
125 135 $ cmp log.out style.out || diff -u log.out style.out
126 136 $ hg log -v -T phases > phases.out
127 $ diff -u log.out phases.out | grep phase:
137 $ diff -U 0 log.out phases.out | grep -v '^---\|^+++'
138 @@ -2,0 +3 @@
128 139 +phase: draft
140 @@ -7,0 +9 @@
129 141 +phase: draft
142 @@ -15,0 +18 @@
130 143 +phase: draft
144 @@ -24,0 +28 @@
131 145 +phase: draft
146 @@ -33,0 +38 @@
132 147 +phase: draft
148 @@ -43,0 +49 @@
133 149 +phase: draft
150 @@ -50,0 +57 @@
134 151 +phase: draft
152 @@ -58,0 +66 @@
135 153 +phase: draft
154 @@ -66,0 +75 @@
136 155 +phase: draft
156 @@ -77,0 +87 @@
137 157 +phase: draft
138 158
139 159 $ hg log -q > log.out
140 160 $ hg log -q --style default > style.out
141 161 $ cmp log.out style.out || diff -u log.out style.out
142 162 $ hg log -q -T phases > phases.out
143 163 $ cmp log.out phases.out || diff -u log.out phases.out
144 164
145 165 $ hg log --debug > log.out
146 166 $ hg log --debug --style default > style.out
147 167 $ cmp log.out style.out || diff -u log.out style.out
148 168 $ hg log --debug -T phases > phases.out
149 169 $ cmp log.out phases.out || diff -u log.out phases.out
150 170
151 171 Default style should also preserve color information (issue2866):
152 172
153 173 $ cp $HGRCPATH $HGRCPATH-bak
154 174 $ cat <<EOF >> $HGRCPATH
155 175 > [extensions]
156 176 > color=
157 177 > EOF
158 178
159 179 $ hg --color=debug log > log.out
160 180 $ hg --color=debug log --style default > style.out
161 181 $ cmp log.out style.out || diff -u log.out style.out
162 182 $ hg --color=debug log -T phases > phases.out
163 $ diff -u log.out phases.out | grep phase:
183 $ diff -U 0 log.out phases.out | grep -v '^---\|^+++'
184 @@ -2,0 +3 @@
164 185 +[log.phase|phase: draft]
186 @@ -6,0 +8 @@
165 187 +[log.phase|phase: draft]
188 @@ -11,0 +14 @@
166 189 +[log.phase|phase: draft]
190 @@ -17,0 +21 @@
167 191 +[log.phase|phase: draft]
192 @@ -24,0 +29 @@
168 193 +[log.phase|phase: draft]
194 @@ -31,0 +37 @@
169 195 +[log.phase|phase: draft]
196 @@ -36,0 +43 @@
170 197 +[log.phase|phase: draft]
198 @@ -41,0 +49 @@
171 199 +[log.phase|phase: draft]
200 @@ -46,0 +55 @@
172 201 +[log.phase|phase: draft]
202 @@ -51,0 +61 @@
173 203 +[log.phase|phase: draft]
174 204
175 205 $ hg --color=debug -v log > log.out
176 206 $ hg --color=debug -v log --style default > style.out
177 207 $ cmp log.out style.out || diff -u log.out style.out
178 208 $ hg --color=debug -v log -T phases > phases.out
179 $ diff -u log.out phases.out | grep phase:
209 $ diff -U 0 log.out phases.out | grep -v '^---\|^+++'
210 @@ -2,0 +3 @@
180 211 +[log.phase|phase: draft]
212 @@ -7,0 +9 @@
181 213 +[log.phase|phase: draft]
214 @@ -15,0 +18 @@
182 215 +[log.phase|phase: draft]
216 @@ -24,0 +28 @@
183 217 +[log.phase|phase: draft]
218 @@ -33,0 +38 @@
184 219 +[log.phase|phase: draft]
220 @@ -43,0 +49 @@
185 221 +[log.phase|phase: draft]
222 @@ -50,0 +57 @@
186 223 +[log.phase|phase: draft]
224 @@ -58,0 +66 @@
187 225 +[log.phase|phase: draft]
226 @@ -66,0 +75 @@
188 227 +[log.phase|phase: draft]
228 @@ -77,0 +87 @@
189 229 +[log.phase|phase: draft]
190 230
191 231 $ hg --color=debug -q log > log.out
192 232 $ hg --color=debug -q log --style default > style.out
193 233 $ cmp log.out style.out || diff -u log.out style.out
194 234 $ hg --color=debug -q log -T phases > phases.out
195 235 $ cmp log.out phases.out || diff -u log.out phases.out
196 236
197 237 $ hg --color=debug --debug log > log.out
198 238 $ hg --color=debug --debug log --style default > style.out
199 239 $ cmp log.out style.out || diff -u log.out style.out
200 240 $ hg --color=debug --debug log -T phases > phases.out
201 241 $ cmp log.out phases.out || diff -u log.out phases.out
202 242
203 243 $ mv $HGRCPATH-bak $HGRCPATH
204 244
205 245 Remove commit with empty commit message, so as to not pollute further
206 246 tests.
207 247
208 248 $ hg --config extensions.strip= strip -q .
209 249
210 250 Revision with no copies (used to print a traceback):
211 251
212 252 $ hg tip -v --template '\n'
213 253
214 254
215 255 Compact style works:
216 256
217 257 $ hg log -Tcompact
218 258 8[tip] 95c24699272e 2020-01-01 10:01 +0000 test
219 259 third
220 260
221 261 7:-1 29114dbae42b 1970-01-12 13:46 +0000 user
222 262 second
223 263
224 264 6:5,4 d41e714fe50d 1970-01-18 08:40 +0000 person
225 265 merge
226 266
227 267 5:3 13207e5a10d9 1970-01-18 08:40 +0000 person
228 268 new head
229 269
230 270 4 bbe44766e73d 1970-01-17 04:53 +0000 person
231 271 new branch
232 272
233 273 3 10e46f2dcbf4 1970-01-16 01:06 +0000 person
234 274 no user, no domain
235 275
236 276 2 97054abb4ab8 1970-01-14 21:20 +0000 other
237 277 no person
238 278
239 279 1 b608e9d1a3f0 1970-01-13 17:33 +0000 other
240 280 other 1
241 281
242 282 0 1e4e1b8f71e0 1970-01-12 13:46 +0000 user
243 283 line 1
244 284
245 285
246 286 $ hg log -v --style compact
247 287 8[tip] 95c24699272e 2020-01-01 10:01 +0000 test
248 288 third
249 289
250 290 7:-1 29114dbae42b 1970-01-12 13:46 +0000 User Name <user@hostname>
251 291 second
252 292
253 293 6:5,4 d41e714fe50d 1970-01-18 08:40 +0000 person
254 294 merge
255 295
256 296 5:3 13207e5a10d9 1970-01-18 08:40 +0000 person
257 297 new head
258 298
259 299 4 bbe44766e73d 1970-01-17 04:53 +0000 person
260 300 new branch
261 301
262 302 3 10e46f2dcbf4 1970-01-16 01:06 +0000 person
263 303 no user, no domain
264 304
265 305 2 97054abb4ab8 1970-01-14 21:20 +0000 other@place
266 306 no person
267 307
268 308 1 b608e9d1a3f0 1970-01-13 17:33 +0000 A. N. Other <other@place>
269 309 other 1
270 310 other 2
271 311
272 312 other 3
273 313
274 314 0 1e4e1b8f71e0 1970-01-12 13:46 +0000 User Name <user@hostname>
275 315 line 1
276 316 line 2
277 317
278 318
279 319 $ hg log --debug --style compact
280 320 8[tip]:7,-1 95c24699272e 2020-01-01 10:01 +0000 test
281 321 third
282 322
283 323 7:-1,-1 29114dbae42b 1970-01-12 13:46 +0000 User Name <user@hostname>
284 324 second
285 325
286 326 6:5,4 d41e714fe50d 1970-01-18 08:40 +0000 person
287 327 merge
288 328
289 329 5:3,-1 13207e5a10d9 1970-01-18 08:40 +0000 person
290 330 new head
291 331
292 332 4:3,-1 bbe44766e73d 1970-01-17 04:53 +0000 person
293 333 new branch
294 334
295 335 3:2,-1 10e46f2dcbf4 1970-01-16 01:06 +0000 person
296 336 no user, no domain
297 337
298 338 2:1,-1 97054abb4ab8 1970-01-14 21:20 +0000 other@place
299 339 no person
300 340
301 341 1:0,-1 b608e9d1a3f0 1970-01-13 17:33 +0000 A. N. Other <other@place>
302 342 other 1
303 343 other 2
304 344
305 345 other 3
306 346
307 347 0:-1,-1 1e4e1b8f71e0 1970-01-12 13:46 +0000 User Name <user@hostname>
308 348 line 1
309 349 line 2
310 350
311 351
312 352 Test xml styles:
313 353
314 354 $ hg log --style xml
315 355 <?xml version="1.0"?>
316 356 <log>
317 357 <logentry revision="8" node="95c24699272ef57d062b8bccc32c878bf841784a">
318 358 <tag>tip</tag>
319 359 <author email="test">test</author>
320 360 <date>2020-01-01T10:01:00+00:00</date>
321 361 <msg xml:space="preserve">third</msg>
322 362 </logentry>
323 363 <logentry revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453">
324 364 <parent revision="-1" node="0000000000000000000000000000000000000000" />
325 365 <author email="user@hostname">User Name</author>
326 366 <date>1970-01-12T13:46:40+00:00</date>
327 367 <msg xml:space="preserve">second</msg>
328 368 </logentry>
329 369 <logentry revision="6" node="d41e714fe50d9e4a5f11b4d595d543481b5f980b">
330 370 <parent revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f" />
331 371 <parent revision="4" node="bbe44766e73d5f11ed2177f1838de10c53ef3e74" />
332 372 <author email="person">person</author>
333 373 <date>1970-01-18T08:40:01+00:00</date>
334 374 <msg xml:space="preserve">merge</msg>
335 375 </logentry>
336 376 <logentry revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f">
337 377 <parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
338 378 <author email="person">person</author>
339 379 <date>1970-01-18T08:40:00+00:00</date>
340 380 <msg xml:space="preserve">new head</msg>
341 381 </logentry>
342 382 <logentry revision="4" node="bbe44766e73d5f11ed2177f1838de10c53ef3e74">
343 383 <branch>foo</branch>
344 384 <author email="person">person</author>
345 385 <date>1970-01-17T04:53:20+00:00</date>
346 386 <msg xml:space="preserve">new branch</msg>
347 387 </logentry>
348 388 <logentry revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47">
349 389 <author email="person">person</author>
350 390 <date>1970-01-16T01:06:40+00:00</date>
351 391 <msg xml:space="preserve">no user, no domain</msg>
352 392 </logentry>
353 393 <logentry revision="2" node="97054abb4ab824450e9164180baf491ae0078465">
354 394 <author email="other@place">other</author>
355 395 <date>1970-01-14T21:20:00+00:00</date>
356 396 <msg xml:space="preserve">no person</msg>
357 397 </logentry>
358 398 <logentry revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965">
359 399 <author email="other@place">A. N. Other</author>
360 400 <date>1970-01-13T17:33:20+00:00</date>
361 401 <msg xml:space="preserve">other 1
362 402 other 2
363 403
364 404 other 3</msg>
365 405 </logentry>
366 406 <logentry revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f">
367 407 <author email="user@hostname">User Name</author>
368 408 <date>1970-01-12T13:46:40+00:00</date>
369 409 <msg xml:space="preserve">line 1
370 410 line 2</msg>
371 411 </logentry>
372 412 </log>
373 413
374 414 $ hg log -v --style xml
375 415 <?xml version="1.0"?>
376 416 <log>
377 417 <logentry revision="8" node="95c24699272ef57d062b8bccc32c878bf841784a">
378 418 <tag>tip</tag>
379 419 <author email="test">test</author>
380 420 <date>2020-01-01T10:01:00+00:00</date>
381 421 <msg xml:space="preserve">third</msg>
382 422 <paths>
383 423 <path action="A">fourth</path>
384 424 <path action="A">third</path>
385 425 <path action="R">second</path>
386 426 </paths>
387 427 <copies>
388 428 <copy source="second">fourth</copy>
389 429 </copies>
390 430 </logentry>
391 431 <logentry revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453">
392 432 <parent revision="-1" node="0000000000000000000000000000000000000000" />
393 433 <author email="user@hostname">User Name</author>
394 434 <date>1970-01-12T13:46:40+00:00</date>
395 435 <msg xml:space="preserve">second</msg>
396 436 <paths>
397 437 <path action="A">second</path>
398 438 </paths>
399 439 </logentry>
400 440 <logentry revision="6" node="d41e714fe50d9e4a5f11b4d595d543481b5f980b">
401 441 <parent revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f" />
402 442 <parent revision="4" node="bbe44766e73d5f11ed2177f1838de10c53ef3e74" />
403 443 <author email="person">person</author>
404 444 <date>1970-01-18T08:40:01+00:00</date>
405 445 <msg xml:space="preserve">merge</msg>
406 446 <paths>
407 447 </paths>
408 448 </logentry>
409 449 <logentry revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f">
410 450 <parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
411 451 <author email="person">person</author>
412 452 <date>1970-01-18T08:40:00+00:00</date>
413 453 <msg xml:space="preserve">new head</msg>
414 454 <paths>
415 455 <path action="A">d</path>
416 456 </paths>
417 457 </logentry>
418 458 <logentry revision="4" node="bbe44766e73d5f11ed2177f1838de10c53ef3e74">
419 459 <branch>foo</branch>
420 460 <author email="person">person</author>
421 461 <date>1970-01-17T04:53:20+00:00</date>
422 462 <msg xml:space="preserve">new branch</msg>
423 463 <paths>
424 464 </paths>
425 465 </logentry>
426 466 <logentry revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47">
427 467 <author email="person">person</author>
428 468 <date>1970-01-16T01:06:40+00:00</date>
429 469 <msg xml:space="preserve">no user, no domain</msg>
430 470 <paths>
431 471 <path action="M">c</path>
432 472 </paths>
433 473 </logentry>
434 474 <logentry revision="2" node="97054abb4ab824450e9164180baf491ae0078465">
435 475 <author email="other@place">other</author>
436 476 <date>1970-01-14T21:20:00+00:00</date>
437 477 <msg xml:space="preserve">no person</msg>
438 478 <paths>
439 479 <path action="A">c</path>
440 480 </paths>
441 481 </logentry>
442 482 <logentry revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965">
443 483 <author email="other@place">A. N. Other</author>
444 484 <date>1970-01-13T17:33:20+00:00</date>
445 485 <msg xml:space="preserve">other 1
446 486 other 2
447 487
448 488 other 3</msg>
449 489 <paths>
450 490 <path action="A">b</path>
451 491 </paths>
452 492 </logentry>
453 493 <logentry revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f">
454 494 <author email="user@hostname">User Name</author>
455 495 <date>1970-01-12T13:46:40+00:00</date>
456 496 <msg xml:space="preserve">line 1
457 497 line 2</msg>
458 498 <paths>
459 499 <path action="A">a</path>
460 500 </paths>
461 501 </logentry>
462 502 </log>
463 503
464 504 $ hg log --debug --style xml
465 505 <?xml version="1.0"?>
466 506 <log>
467 507 <logentry revision="8" node="95c24699272ef57d062b8bccc32c878bf841784a">
468 508 <tag>tip</tag>
469 509 <parent revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453" />
470 510 <parent revision="-1" node="0000000000000000000000000000000000000000" />
471 511 <author email="test">test</author>
472 512 <date>2020-01-01T10:01:00+00:00</date>
473 513 <msg xml:space="preserve">third</msg>
474 514 <paths>
475 515 <path action="A">fourth</path>
476 516 <path action="A">third</path>
477 517 <path action="R">second</path>
478 518 </paths>
479 519 <copies>
480 520 <copy source="second">fourth</copy>
481 521 </copies>
482 522 <extra key="branch">default</extra>
483 523 </logentry>
484 524 <logentry revision="7" node="29114dbae42b9f078cf2714dbe3a86bba8ec7453">
485 525 <parent revision="-1" node="0000000000000000000000000000000000000000" />
486 526 <parent revision="-1" node="0000000000000000000000000000000000000000" />
487 527 <author email="user@hostname">User Name</author>
488 528 <date>1970-01-12T13:46:40+00:00</date>
489 529 <msg xml:space="preserve">second</msg>
490 530 <paths>
491 531 <path action="A">second</path>
492 532 </paths>
493 533 <extra key="branch">default</extra>
494 534 </logentry>
495 535 <logentry revision="6" node="d41e714fe50d9e4a5f11b4d595d543481b5f980b">
496 536 <parent revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f" />
497 537 <parent revision="4" node="bbe44766e73d5f11ed2177f1838de10c53ef3e74" />
498 538 <author email="person">person</author>
499 539 <date>1970-01-18T08:40:01+00:00</date>
500 540 <msg xml:space="preserve">merge</msg>
501 541 <paths>
502 542 </paths>
503 543 <extra key="branch">default</extra>
504 544 </logentry>
505 545 <logentry revision="5" node="13207e5a10d9fd28ec424934298e176197f2c67f">
506 546 <parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
507 547 <parent revision="-1" node="0000000000000000000000000000000000000000" />
508 548 <author email="person">person</author>
509 549 <date>1970-01-18T08:40:00+00:00</date>
510 550 <msg xml:space="preserve">new head</msg>
511 551 <paths>
512 552 <path action="A">d</path>
513 553 </paths>
514 554 <extra key="branch">default</extra>
515 555 </logentry>
516 556 <logentry revision="4" node="bbe44766e73d5f11ed2177f1838de10c53ef3e74">
517 557 <branch>foo</branch>
518 558 <parent revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47" />
519 559 <parent revision="-1" node="0000000000000000000000000000000000000000" />
520 560 <author email="person">person</author>
521 561 <date>1970-01-17T04:53:20+00:00</date>
522 562 <msg xml:space="preserve">new branch</msg>
523 563 <paths>
524 564 </paths>
525 565 <extra key="branch">foo</extra>
526 566 </logentry>
527 567 <logentry revision="3" node="10e46f2dcbf4823578cf180f33ecf0b957964c47">
528 568 <parent revision="2" node="97054abb4ab824450e9164180baf491ae0078465" />
529 569 <parent revision="-1" node="0000000000000000000000000000000000000000" />
530 570 <author email="person">person</author>
531 571 <date>1970-01-16T01:06:40+00:00</date>
532 572 <msg xml:space="preserve">no user, no domain</msg>
533 573 <paths>
534 574 <path action="M">c</path>
535 575 </paths>
536 576 <extra key="branch">default</extra>
537 577 </logentry>
538 578 <logentry revision="2" node="97054abb4ab824450e9164180baf491ae0078465">
539 579 <parent revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965" />
540 580 <parent revision="-1" node="0000000000000000000000000000000000000000" />
541 581 <author email="other@place">other</author>
542 582 <date>1970-01-14T21:20:00+00:00</date>
543 583 <msg xml:space="preserve">no person</msg>
544 584 <paths>
545 585 <path action="A">c</path>
546 586 </paths>
547 587 <extra key="branch">default</extra>
548 588 </logentry>
549 589 <logentry revision="1" node="b608e9d1a3f0273ccf70fb85fd6866b3482bf965">
550 590 <parent revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f" />
551 591 <parent revision="-1" node="0000000000000000000000000000000000000000" />
552 592 <author email="other@place">A. N. Other</author>
553 593 <date>1970-01-13T17:33:20+00:00</date>
554 594 <msg xml:space="preserve">other 1
555 595 other 2
556 596
557 597 other 3</msg>
558 598 <paths>
559 599 <path action="A">b</path>
560 600 </paths>
561 601 <extra key="branch">default</extra>
562 602 </logentry>
563 603 <logentry revision="0" node="1e4e1b8f71e05681d422154f5421e385fec3454f">
564 604 <parent revision="-1" node="0000000000000000000000000000000000000000" />
565 605 <parent revision="-1" node="0000000000000000000000000000000000000000" />
566 606 <author email="user@hostname">User Name</author>
567 607 <date>1970-01-12T13:46:40+00:00</date>
568 608 <msg xml:space="preserve">line 1
569 609 line 2</msg>
570 610 <paths>
571 611 <path action="A">a</path>
572 612 </paths>
573 613 <extra key="branch">default</extra>
574 614 </logentry>
575 615 </log>
576 616
577 617
578 618 Test JSON style:
579 619
580 620 $ hg log -k nosuch -Tjson
581 621 []
582 622
583 623 $ hg log -qr . -Tjson
584 624 [
585 625 {
586 626 "rev": 8,
587 627 "node": "95c24699272ef57d062b8bccc32c878bf841784a"
588 628 }
589 629 ]
590 630
591 631 $ hg log -vpr . -Tjson --stat
592 632 [
593 633 {
594 634 "rev": 8,
595 635 "node": "95c24699272ef57d062b8bccc32c878bf841784a",
596 636 "branch": "default",
597 637 "phase": "draft",
598 638 "user": "test",
599 639 "date": [1577872860, 0],
600 640 "desc": "third",
601 641 "bookmarks": [],
602 642 "tags": ["tip"],
603 643 "parents": ["29114dbae42b9f078cf2714dbe3a86bba8ec7453"],
604 644 "files": ["fourth", "second", "third"],
605 645 "diffstat": " fourth | 1 +\n second | 1 -\n third | 1 +\n 3 files changed, 2 insertions(+), 1 deletions(-)\n",
606 646 "diff": "diff -r 29114dbae42b -r 95c24699272e fourth\n--- /dev/null\tThu Jan 01 00:00:00 1970 +0000\n+++ b/fourth\tWed Jan 01 10:01:00 2020 +0000\n@@ -0,0 +1,1 @@\n+second\ndiff -r 29114dbae42b -r 95c24699272e second\n--- a/second\tMon Jan 12 13:46:40 1970 +0000\n+++ /dev/null\tThu Jan 01 00:00:00 1970 +0000\n@@ -1,1 +0,0 @@\n-second\ndiff -r 29114dbae42b -r 95c24699272e third\n--- /dev/null\tThu Jan 01 00:00:00 1970 +0000\n+++ b/third\tWed Jan 01 10:01:00 2020 +0000\n@@ -0,0 +1,1 @@\n+third\n"
607 647 }
608 648 ]
609 649
610 650 honor --git but not format-breaking diffopts
611 651 $ hg --config diff.noprefix=True log --git -vpr . -Tjson
612 652 [
613 653 {
614 654 "rev": 8,
615 655 "node": "95c24699272ef57d062b8bccc32c878bf841784a",
616 656 "branch": "default",
617 657 "phase": "draft",
618 658 "user": "test",
619 659 "date": [1577872860, 0],
620 660 "desc": "third",
621 661 "bookmarks": [],
622 662 "tags": ["tip"],
623 663 "parents": ["29114dbae42b9f078cf2714dbe3a86bba8ec7453"],
624 664 "files": ["fourth", "second", "third"],
625 665 "diff": "diff --git a/second b/fourth\nrename from second\nrename to fourth\ndiff --git a/third b/third\nnew file mode 100644\n--- /dev/null\n+++ b/third\n@@ -0,0 +1,1 @@\n+third\n"
626 666 }
627 667 ]
628 668
629 669 $ hg log -T json
630 670 [
631 671 {
632 672 "rev": 8,
633 673 "node": "95c24699272ef57d062b8bccc32c878bf841784a",
634 674 "branch": "default",
635 675 "phase": "draft",
636 676 "user": "test",
637 677 "date": [1577872860, 0],
638 678 "desc": "third",
639 679 "bookmarks": [],
640 680 "tags": ["tip"],
641 681 "parents": ["29114dbae42b9f078cf2714dbe3a86bba8ec7453"]
642 682 },
643 683 {
644 684 "rev": 7,
645 685 "node": "29114dbae42b9f078cf2714dbe3a86bba8ec7453",
646 686 "branch": "default",
647 687 "phase": "draft",
648 688 "user": "User Name <user@hostname>",
649 689 "date": [1000000, 0],
650 690 "desc": "second",
651 691 "bookmarks": [],
652 692 "tags": [],
653 693 "parents": ["0000000000000000000000000000000000000000"]
654 694 },
655 695 {
656 696 "rev": 6,
657 697 "node": "d41e714fe50d9e4a5f11b4d595d543481b5f980b",
658 698 "branch": "default",
659 699 "phase": "draft",
660 700 "user": "person",
661 701 "date": [1500001, 0],
662 702 "desc": "merge",
663 703 "bookmarks": [],
664 704 "tags": [],
665 705 "parents": ["13207e5a10d9fd28ec424934298e176197f2c67f", "bbe44766e73d5f11ed2177f1838de10c53ef3e74"]
666 706 },
667 707 {
668 708 "rev": 5,
669 709 "node": "13207e5a10d9fd28ec424934298e176197f2c67f",
670 710 "branch": "default",
671 711 "phase": "draft",
672 712 "user": "person",
673 713 "date": [1500000, 0],
674 714 "desc": "new head",
675 715 "bookmarks": [],
676 716 "tags": [],
677 717 "parents": ["10e46f2dcbf4823578cf180f33ecf0b957964c47"]
678 718 },
679 719 {
680 720 "rev": 4,
681 721 "node": "bbe44766e73d5f11ed2177f1838de10c53ef3e74",
682 722 "branch": "foo",
683 723 "phase": "draft",
684 724 "user": "person",
685 725 "date": [1400000, 0],
686 726 "desc": "new branch",
687 727 "bookmarks": [],
688 728 "tags": [],
689 729 "parents": ["10e46f2dcbf4823578cf180f33ecf0b957964c47"]
690 730 },
691 731 {
692 732 "rev": 3,
693 733 "node": "10e46f2dcbf4823578cf180f33ecf0b957964c47",
694 734 "branch": "default",
695 735 "phase": "draft",
696 736 "user": "person",
697 737 "date": [1300000, 0],
698 738 "desc": "no user, no domain",
699 739 "bookmarks": [],
700 740 "tags": [],
701 741 "parents": ["97054abb4ab824450e9164180baf491ae0078465"]
702 742 },
703 743 {
704 744 "rev": 2,
705 745 "node": "97054abb4ab824450e9164180baf491ae0078465",
706 746 "branch": "default",
707 747 "phase": "draft",
708 748 "user": "other@place",
709 749 "date": [1200000, 0],
710 750 "desc": "no person",
711 751 "bookmarks": [],
712 752 "tags": [],
713 753 "parents": ["b608e9d1a3f0273ccf70fb85fd6866b3482bf965"]
714 754 },
715 755 {
716 756 "rev": 1,
717 757 "node": "b608e9d1a3f0273ccf70fb85fd6866b3482bf965",
718 758 "branch": "default",
719 759 "phase": "draft",
720 760 "user": "A. N. Other <other@place>",
721 761 "date": [1100000, 0],
722 762 "desc": "other 1\nother 2\n\nother 3",
723 763 "bookmarks": [],
724 764 "tags": [],
725 765 "parents": ["1e4e1b8f71e05681d422154f5421e385fec3454f"]
726 766 },
727 767 {
728 768 "rev": 0,
729 769 "node": "1e4e1b8f71e05681d422154f5421e385fec3454f",
730 770 "branch": "default",
731 771 "phase": "draft",
732 772 "user": "User Name <user@hostname>",
733 773 "date": [1000000, 0],
734 774 "desc": "line 1\nline 2",
735 775 "bookmarks": [],
736 776 "tags": [],
737 777 "parents": ["0000000000000000000000000000000000000000"]
738 778 }
739 779 ]
740 780
741 781 $ hg heads -v -Tjson
742 782 [
743 783 {
744 784 "rev": 8,
745 785 "node": "95c24699272ef57d062b8bccc32c878bf841784a",
746 786 "branch": "default",
747 787 "phase": "draft",
748 788 "user": "test",
749 789 "date": [1577872860, 0],
750 790 "desc": "third",
751 791 "bookmarks": [],
752 792 "tags": ["tip"],
753 793 "parents": ["29114dbae42b9f078cf2714dbe3a86bba8ec7453"],
754 794 "files": ["fourth", "second", "third"]
755 795 },
756 796 {
757 797 "rev": 6,
758 798 "node": "d41e714fe50d9e4a5f11b4d595d543481b5f980b",
759 799 "branch": "default",
760 800 "phase": "draft",
761 801 "user": "person",
762 802 "date": [1500001, 0],
763 803 "desc": "merge",
764 804 "bookmarks": [],
765 805 "tags": [],
766 806 "parents": ["13207e5a10d9fd28ec424934298e176197f2c67f", "bbe44766e73d5f11ed2177f1838de10c53ef3e74"],
767 807 "files": []
768 808 },
769 809 {
770 810 "rev": 4,
771 811 "node": "bbe44766e73d5f11ed2177f1838de10c53ef3e74",
772 812 "branch": "foo",
773 813 "phase": "draft",
774 814 "user": "person",
775 815 "date": [1400000, 0],
776 816 "desc": "new branch",
777 817 "bookmarks": [],
778 818 "tags": [],
779 819 "parents": ["10e46f2dcbf4823578cf180f33ecf0b957964c47"],
780 820 "files": []
781 821 }
782 822 ]
783 823
784 824 $ hg log --debug -Tjson
785 825 [
786 826 {
787 827 "rev": 8,
788 828 "node": "95c24699272ef57d062b8bccc32c878bf841784a",
789 829 "branch": "default",
790 830 "phase": "draft",
791 831 "user": "test",
792 832 "date": [1577872860, 0],
793 833 "desc": "third",
794 834 "bookmarks": [],
795 835 "tags": ["tip"],
796 836 "parents": ["29114dbae42b9f078cf2714dbe3a86bba8ec7453"],
797 837 "manifest": "94961b75a2da554b4df6fb599e5bfc7d48de0c64",
798 838 "extra": {"branch": "default"},
799 839 "modified": [],
800 840 "added": ["fourth", "third"],
801 841 "removed": ["second"]
802 842 },
803 843 {
804 844 "rev": 7,
805 845 "node": "29114dbae42b9f078cf2714dbe3a86bba8ec7453",
806 846 "branch": "default",
807 847 "phase": "draft",
808 848 "user": "User Name <user@hostname>",
809 849 "date": [1000000, 0],
810 850 "desc": "second",
811 851 "bookmarks": [],
812 852 "tags": [],
813 853 "parents": ["0000000000000000000000000000000000000000"],
814 854 "manifest": "f2dbc354b94e5ec0b4f10680ee0cee816101d0bf",
815 855 "extra": {"branch": "default"},
816 856 "modified": [],
817 857 "added": ["second"],
818 858 "removed": []
819 859 },
820 860 {
821 861 "rev": 6,
822 862 "node": "d41e714fe50d9e4a5f11b4d595d543481b5f980b",
823 863 "branch": "default",
824 864 "phase": "draft",
825 865 "user": "person",
826 866 "date": [1500001, 0],
827 867 "desc": "merge",
828 868 "bookmarks": [],
829 869 "tags": [],
830 870 "parents": ["13207e5a10d9fd28ec424934298e176197f2c67f", "bbe44766e73d5f11ed2177f1838de10c53ef3e74"],
831 871 "manifest": "4dc3def4f9b4c6e8de820f6ee74737f91e96a216",
832 872 "extra": {"branch": "default"},
833 873 "modified": [],
834 874 "added": [],
835 875 "removed": []
836 876 },
837 877 {
838 878 "rev": 5,
839 879 "node": "13207e5a10d9fd28ec424934298e176197f2c67f",
840 880 "branch": "default",
841 881 "phase": "draft",
842 882 "user": "person",
843 883 "date": [1500000, 0],
844 884 "desc": "new head",
845 885 "bookmarks": [],
846 886 "tags": [],
847 887 "parents": ["10e46f2dcbf4823578cf180f33ecf0b957964c47"],
848 888 "manifest": "4dc3def4f9b4c6e8de820f6ee74737f91e96a216",
849 889 "extra": {"branch": "default"},
850 890 "modified": [],
851 891 "added": ["d"],
852 892 "removed": []
853 893 },
854 894 {
855 895 "rev": 4,
856 896 "node": "bbe44766e73d5f11ed2177f1838de10c53ef3e74",
857 897 "branch": "foo",
858 898 "phase": "draft",
859 899 "user": "person",
860 900 "date": [1400000, 0],
861 901 "desc": "new branch",
862 902 "bookmarks": [],
863 903 "tags": [],
864 904 "parents": ["10e46f2dcbf4823578cf180f33ecf0b957964c47"],
865 905 "manifest": "cb5a1327723bada42f117e4c55a303246eaf9ccc",
866 906 "extra": {"branch": "foo"},
867 907 "modified": [],
868 908 "added": [],
869 909 "removed": []
870 910 },
871 911 {
872 912 "rev": 3,
873 913 "node": "10e46f2dcbf4823578cf180f33ecf0b957964c47",
874 914 "branch": "default",
875 915 "phase": "draft",
876 916 "user": "person",
877 917 "date": [1300000, 0],
878 918 "desc": "no user, no domain",
879 919 "bookmarks": [],
880 920 "tags": [],
881 921 "parents": ["97054abb4ab824450e9164180baf491ae0078465"],
882 922 "manifest": "cb5a1327723bada42f117e4c55a303246eaf9ccc",
883 923 "extra": {"branch": "default"},
884 924 "modified": ["c"],
885 925 "added": [],
886 926 "removed": []
887 927 },
888 928 {
889 929 "rev": 2,
890 930 "node": "97054abb4ab824450e9164180baf491ae0078465",
891 931 "branch": "default",
892 932 "phase": "draft",
893 933 "user": "other@place",
894 934 "date": [1200000, 0],
895 935 "desc": "no person",
896 936 "bookmarks": [],
897 937 "tags": [],
898 938 "parents": ["b608e9d1a3f0273ccf70fb85fd6866b3482bf965"],
899 939 "manifest": "6e0e82995c35d0d57a52aca8da4e56139e06b4b1",
900 940 "extra": {"branch": "default"},
901 941 "modified": [],
902 942 "added": ["c"],
903 943 "removed": []
904 944 },
905 945 {
906 946 "rev": 1,
907 947 "node": "b608e9d1a3f0273ccf70fb85fd6866b3482bf965",
908 948 "branch": "default",
909 949 "phase": "draft",
910 950 "user": "A. N. Other <other@place>",
911 951 "date": [1100000, 0],
912 952 "desc": "other 1\nother 2\n\nother 3",
913 953 "bookmarks": [],
914 954 "tags": [],
915 955 "parents": ["1e4e1b8f71e05681d422154f5421e385fec3454f"],
916 956 "manifest": "4e8d705b1e53e3f9375e0e60dc7b525d8211fe55",
917 957 "extra": {"branch": "default"},
918 958 "modified": [],
919 959 "added": ["b"],
920 960 "removed": []
921 961 },
922 962 {
923 963 "rev": 0,
924 964 "node": "1e4e1b8f71e05681d422154f5421e385fec3454f",
925 965 "branch": "default",
926 966 "phase": "draft",
927 967 "user": "User Name <user@hostname>",
928 968 "date": [1000000, 0],
929 969 "desc": "line 1\nline 2",
930 970 "bookmarks": [],
931 971 "tags": [],
932 972 "parents": ["0000000000000000000000000000000000000000"],
933 973 "manifest": "a0c8bcbbb45c63b90b70ad007bf38961f64f2af0",
934 974 "extra": {"branch": "default"},
935 975 "modified": [],
936 976 "added": ["a"],
937 977 "removed": []
938 978 }
939 979 ]
940 980
941 981 Error if style not readable:
942 982
943 983 #if unix-permissions no-root
944 984 $ touch q
945 985 $ chmod 0 q
946 986 $ hg log --style ./q
947 987 abort: Permission denied: ./q
948 988 [255]
949 989 #endif
950 990
951 991 Error if no style:
952 992
953 993 $ hg log --style notexist
954 994 abort: style 'notexist' not found
955 995 (available styles: bisect, changelog, compact, default, phases, xml)
956 996 [255]
957 997
958 998 $ hg log -T list
959 999 available styles: bisect, changelog, compact, default, phases, xml
960 1000 abort: specify a template
961 1001 [255]
962 1002
963 1003 Error if style missing key:
964 1004
965 1005 $ echo 'q = q' > t
966 1006 $ hg log --style ./t
967 1007 abort: "changeset" not in template map
968 1008 [255]
969 1009
970 1010 Error if style missing value:
971 1011
972 1012 $ echo 'changeset =' > t
973 1013 $ hg log --style t
974 1014 abort: t:1: missing value
975 1015 [255]
976 1016
977 1017 Error if include fails:
978 1018
979 1019 $ echo 'changeset = q' >> t
980 1020 #if unix-permissions no-root
981 1021 $ hg log --style ./t
982 1022 abort: template file ./q: Permission denied
983 1023 [255]
984 1024 $ rm q
985 1025 #endif
986 1026
987 1027 Include works:
988 1028
989 1029 $ echo '{rev}' > q
990 1030 $ hg log --style ./t
991 1031 8
992 1032 7
993 1033 6
994 1034 5
995 1035 4
996 1036 3
997 1037 2
998 1038 1
999 1039 0
1000 1040
1001 1041 Check that {phase} works correctly on parents:
1002 1042
1003 1043 $ cat << EOF > parentphase
1004 1044 > changeset_debug = '{rev} ({phase}):{parents}\n'
1005 1045 > parent = ' {rev} ({phase})'
1006 1046 > EOF
1007 1047 $ hg phase -r 5 --public
1008 1048 $ hg phase -r 7 --secret --force
1009 1049 $ hg log --debug -G --style ./parentphase
1010 1050 @ 8 (secret): 7 (secret) -1 (public)
1011 1051 |
1012 1052 o 7 (secret): -1 (public) -1 (public)
1013 1053
1014 1054 o 6 (draft): 5 (public) 4 (draft)
1015 1055 |\
1016 1056 | o 5 (public): 3 (public) -1 (public)
1017 1057 | |
1018 1058 o | 4 (draft): 3 (public) -1 (public)
1019 1059 |/
1020 1060 o 3 (public): 2 (public) -1 (public)
1021 1061 |
1022 1062 o 2 (public): 1 (public) -1 (public)
1023 1063 |
1024 1064 o 1 (public): 0 (public) -1 (public)
1025 1065 |
1026 1066 o 0 (public): -1 (public) -1 (public)
1027 1067
1028 1068
1029 1069 Missing non-standard names give no error (backward compatibility):
1030 1070
1031 1071 $ echo "changeset = '{c}'" > t
1032 1072 $ hg log --style ./t
1033 1073
1034 1074 Defining non-standard name works:
1035 1075
1036 1076 $ cat <<EOF > t
1037 1077 > changeset = '{c}'
1038 1078 > c = q
1039 1079 > EOF
1040 1080 $ hg log --style ./t
1041 1081 8
1042 1082 7
1043 1083 6
1044 1084 5
1045 1085 4
1046 1086 3
1047 1087 2
1048 1088 1
1049 1089 0
1050 1090
1051 1091 ui.style works:
1052 1092
1053 1093 $ echo '[ui]' > .hg/hgrc
1054 1094 $ echo 'style = t' >> .hg/hgrc
1055 1095 $ hg log
1056 1096 8
1057 1097 7
1058 1098 6
1059 1099 5
1060 1100 4
1061 1101 3
1062 1102 2
1063 1103 1
1064 1104 0
1065 1105
1066 1106
1067 1107 Issue338:
1068 1108
1069 1109 $ hg log --style=changelog > changelog
1070 1110
1071 1111 $ cat changelog
1072 1112 2020-01-01 test <test>
1073 1113
1074 1114 * fourth, second, third:
1075 1115 third
1076 1116 [95c24699272e] [tip]
1077 1117
1078 1118 1970-01-12 User Name <user@hostname>
1079 1119
1080 1120 * second:
1081 1121 second
1082 1122 [29114dbae42b]
1083 1123
1084 1124 1970-01-18 person <person>
1085 1125
1086 1126 * merge
1087 1127 [d41e714fe50d]
1088 1128
1089 1129 * d:
1090 1130 new head
1091 1131 [13207e5a10d9]
1092 1132
1093 1133 1970-01-17 person <person>
1094 1134
1095 1135 * new branch
1096 1136 [bbe44766e73d] <foo>
1097 1137
1098 1138 1970-01-16 person <person>
1099 1139
1100 1140 * c:
1101 1141 no user, no domain
1102 1142 [10e46f2dcbf4]
1103 1143
1104 1144 1970-01-14 other <other@place>
1105 1145
1106 1146 * c:
1107 1147 no person
1108 1148 [97054abb4ab8]
1109 1149
1110 1150 1970-01-13 A. N. Other <other@place>
1111 1151
1112 1152 * b:
1113 1153 other 1 other 2
1114 1154
1115 1155 other 3
1116 1156 [b608e9d1a3f0]
1117 1157
1118 1158 1970-01-12 User Name <user@hostname>
1119 1159
1120 1160 * a:
1121 1161 line 1 line 2
1122 1162 [1e4e1b8f71e0]
1123 1163
1124 1164
1125 1165 Issue2130: xml output for 'hg heads' is malformed
1126 1166
1127 1167 $ hg heads --style changelog
1128 1168 2020-01-01 test <test>
1129 1169
1130 1170 * fourth, second, third:
1131 1171 third
1132 1172 [95c24699272e] [tip]
1133 1173
1134 1174 1970-01-18 person <person>
1135 1175
1136 1176 * merge
1137 1177 [d41e714fe50d]
1138 1178
1139 1179 1970-01-17 person <person>
1140 1180
1141 1181 * new branch
1142 1182 [bbe44766e73d] <foo>
1143 1183
1144 1184
1145 1185 Keys work:
1146 1186
1147 1187 $ for key in author branch branches date desc file_adds file_dels file_mods \
1148 1188 > file_copies file_copies_switch files \
1149 1189 > manifest node parents rev tags diffstat extras \
1150 1190 > p1rev p2rev p1node p2node; do
1151 1191 > for mode in '' --verbose --debug; do
1152 1192 > hg log $mode --template "$key$mode: {$key}\n"
1153 1193 > done
1154 1194 > done
1155 1195 author: test
1156 1196 author: User Name <user@hostname>
1157 1197 author: person
1158 1198 author: person
1159 1199 author: person
1160 1200 author: person
1161 1201 author: other@place
1162 1202 author: A. N. Other <other@place>
1163 1203 author: User Name <user@hostname>
1164 1204 author--verbose: test
1165 1205 author--verbose: User Name <user@hostname>
1166 1206 author--verbose: person
1167 1207 author--verbose: person
1168 1208 author--verbose: person
1169 1209 author--verbose: person
1170 1210 author--verbose: other@place
1171 1211 author--verbose: A. N. Other <other@place>
1172 1212 author--verbose: User Name <user@hostname>
1173 1213 author--debug: test
1174 1214 author--debug: User Name <user@hostname>
1175 1215 author--debug: person
1176 1216 author--debug: person
1177 1217 author--debug: person
1178 1218 author--debug: person
1179 1219 author--debug: other@place
1180 1220 author--debug: A. N. Other <other@place>
1181 1221 author--debug: User Name <user@hostname>
1182 1222 branch: default
1183 1223 branch: default
1184 1224 branch: default
1185 1225 branch: default
1186 1226 branch: foo
1187 1227 branch: default
1188 1228 branch: default
1189 1229 branch: default
1190 1230 branch: default
1191 1231 branch--verbose: default
1192 1232 branch--verbose: default
1193 1233 branch--verbose: default
1194 1234 branch--verbose: default
1195 1235 branch--verbose: foo
1196 1236 branch--verbose: default
1197 1237 branch--verbose: default
1198 1238 branch--verbose: default
1199 1239 branch--verbose: default
1200 1240 branch--debug: default
1201 1241 branch--debug: default
1202 1242 branch--debug: default
1203 1243 branch--debug: default
1204 1244 branch--debug: foo
1205 1245 branch--debug: default
1206 1246 branch--debug: default
1207 1247 branch--debug: default
1208 1248 branch--debug: default
1209 1249 branches:
1210 1250 branches:
1211 1251 branches:
1212 1252 branches:
1213 1253 branches: foo
1214 1254 branches:
1215 1255 branches:
1216 1256 branches:
1217 1257 branches:
1218 1258 branches--verbose:
1219 1259 branches--verbose:
1220 1260 branches--verbose:
1221 1261 branches--verbose:
1222 1262 branches--verbose: foo
1223 1263 branches--verbose:
1224 1264 branches--verbose:
1225 1265 branches--verbose:
1226 1266 branches--verbose:
1227 1267 branches--debug:
1228 1268 branches--debug:
1229 1269 branches--debug:
1230 1270 branches--debug:
1231 1271 branches--debug: foo
1232 1272 branches--debug:
1233 1273 branches--debug:
1234 1274 branches--debug:
1235 1275 branches--debug:
1236 1276 date: 1577872860.00
1237 1277 date: 1000000.00
1238 1278 date: 1500001.00
1239 1279 date: 1500000.00
1240 1280 date: 1400000.00
1241 1281 date: 1300000.00
1242 1282 date: 1200000.00
1243 1283 date: 1100000.00
1244 1284 date: 1000000.00
1245 1285 date--verbose: 1577872860.00
1246 1286 date--verbose: 1000000.00
1247 1287 date--verbose: 1500001.00
1248 1288 date--verbose: 1500000.00
1249 1289 date--verbose: 1400000.00
1250 1290 date--verbose: 1300000.00
1251 1291 date--verbose: 1200000.00
1252 1292 date--verbose: 1100000.00
1253 1293 date--verbose: 1000000.00
1254 1294 date--debug: 1577872860.00
1255 1295 date--debug: 1000000.00
1256 1296 date--debug: 1500001.00
1257 1297 date--debug: 1500000.00
1258 1298 date--debug: 1400000.00
1259 1299 date--debug: 1300000.00
1260 1300 date--debug: 1200000.00
1261 1301 date--debug: 1100000.00
1262 1302 date--debug: 1000000.00
1263 1303 desc: third
1264 1304 desc: second
1265 1305 desc: merge
1266 1306 desc: new head
1267 1307 desc: new branch
1268 1308 desc: no user, no domain
1269 1309 desc: no person
1270 1310 desc: other 1
1271 1311 other 2
1272 1312
1273 1313 other 3
1274 1314 desc: line 1
1275 1315 line 2
1276 1316 desc--verbose: third
1277 1317 desc--verbose: second
1278 1318 desc--verbose: merge
1279 1319 desc--verbose: new head
1280 1320 desc--verbose: new branch
1281 1321 desc--verbose: no user, no domain
1282 1322 desc--verbose: no person
1283 1323 desc--verbose: other 1
1284 1324 other 2
1285 1325
1286 1326 other 3
1287 1327 desc--verbose: line 1
1288 1328 line 2
1289 1329 desc--debug: third
1290 1330 desc--debug: second
1291 1331 desc--debug: merge
1292 1332 desc--debug: new head
1293 1333 desc--debug: new branch
1294 1334 desc--debug: no user, no domain
1295 1335 desc--debug: no person
1296 1336 desc--debug: other 1
1297 1337 other 2
1298 1338
1299 1339 other 3
1300 1340 desc--debug: line 1
1301 1341 line 2
1302 1342 file_adds: fourth third
1303 1343 file_adds: second
1304 1344 file_adds:
1305 1345 file_adds: d
1306 1346 file_adds:
1307 1347 file_adds:
1308 1348 file_adds: c
1309 1349 file_adds: b
1310 1350 file_adds: a
1311 1351 file_adds--verbose: fourth third
1312 1352 file_adds--verbose: second
1313 1353 file_adds--verbose:
1314 1354 file_adds--verbose: d
1315 1355 file_adds--verbose:
1316 1356 file_adds--verbose:
1317 1357 file_adds--verbose: c
1318 1358 file_adds--verbose: b
1319 1359 file_adds--verbose: a
1320 1360 file_adds--debug: fourth third
1321 1361 file_adds--debug: second
1322 1362 file_adds--debug:
1323 1363 file_adds--debug: d
1324 1364 file_adds--debug:
1325 1365 file_adds--debug:
1326 1366 file_adds--debug: c
1327 1367 file_adds--debug: b
1328 1368 file_adds--debug: a
1329 1369 file_dels: second
1330 1370 file_dels:
1331 1371 file_dels:
1332 1372 file_dels:
1333 1373 file_dels:
1334 1374 file_dels:
1335 1375 file_dels:
1336 1376 file_dels:
1337 1377 file_dels:
1338 1378 file_dels--verbose: second
1339 1379 file_dels--verbose:
1340 1380 file_dels--verbose:
1341 1381 file_dels--verbose:
1342 1382 file_dels--verbose:
1343 1383 file_dels--verbose:
1344 1384 file_dels--verbose:
1345 1385 file_dels--verbose:
1346 1386 file_dels--verbose:
1347 1387 file_dels--debug: second
1348 1388 file_dels--debug:
1349 1389 file_dels--debug:
1350 1390 file_dels--debug:
1351 1391 file_dels--debug:
1352 1392 file_dels--debug:
1353 1393 file_dels--debug:
1354 1394 file_dels--debug:
1355 1395 file_dels--debug:
1356 1396 file_mods:
1357 1397 file_mods:
1358 1398 file_mods:
1359 1399 file_mods:
1360 1400 file_mods:
1361 1401 file_mods: c
1362 1402 file_mods:
1363 1403 file_mods:
1364 1404 file_mods:
1365 1405 file_mods--verbose:
1366 1406 file_mods--verbose:
1367 1407 file_mods--verbose:
1368 1408 file_mods--verbose:
1369 1409 file_mods--verbose:
1370 1410 file_mods--verbose: c
1371 1411 file_mods--verbose:
1372 1412 file_mods--verbose:
1373 1413 file_mods--verbose:
1374 1414 file_mods--debug:
1375 1415 file_mods--debug:
1376 1416 file_mods--debug:
1377 1417 file_mods--debug:
1378 1418 file_mods--debug:
1379 1419 file_mods--debug: c
1380 1420 file_mods--debug:
1381 1421 file_mods--debug:
1382 1422 file_mods--debug:
1383 1423 file_copies: fourth (second)
1384 1424 file_copies:
1385 1425 file_copies:
1386 1426 file_copies:
1387 1427 file_copies:
1388 1428 file_copies:
1389 1429 file_copies:
1390 1430 file_copies:
1391 1431 file_copies:
1392 1432 file_copies--verbose: fourth (second)
1393 1433 file_copies--verbose:
1394 1434 file_copies--verbose:
1395 1435 file_copies--verbose:
1396 1436 file_copies--verbose:
1397 1437 file_copies--verbose:
1398 1438 file_copies--verbose:
1399 1439 file_copies--verbose:
1400 1440 file_copies--verbose:
1401 1441 file_copies--debug: fourth (second)
1402 1442 file_copies--debug:
1403 1443 file_copies--debug:
1404 1444 file_copies--debug:
1405 1445 file_copies--debug:
1406 1446 file_copies--debug:
1407 1447 file_copies--debug:
1408 1448 file_copies--debug:
1409 1449 file_copies--debug:
1410 1450 file_copies_switch:
1411 1451 file_copies_switch:
1412 1452 file_copies_switch:
1413 1453 file_copies_switch:
1414 1454 file_copies_switch:
1415 1455 file_copies_switch:
1416 1456 file_copies_switch:
1417 1457 file_copies_switch:
1418 1458 file_copies_switch:
1419 1459 file_copies_switch--verbose:
1420 1460 file_copies_switch--verbose:
1421 1461 file_copies_switch--verbose:
1422 1462 file_copies_switch--verbose:
1423 1463 file_copies_switch--verbose:
1424 1464 file_copies_switch--verbose:
1425 1465 file_copies_switch--verbose:
1426 1466 file_copies_switch--verbose:
1427 1467 file_copies_switch--verbose:
1428 1468 file_copies_switch--debug:
1429 1469 file_copies_switch--debug:
1430 1470 file_copies_switch--debug:
1431 1471 file_copies_switch--debug:
1432 1472 file_copies_switch--debug:
1433 1473 file_copies_switch--debug:
1434 1474 file_copies_switch--debug:
1435 1475 file_copies_switch--debug:
1436 1476 file_copies_switch--debug:
1437 1477 files: fourth second third
1438 1478 files: second
1439 1479 files:
1440 1480 files: d
1441 1481 files:
1442 1482 files: c
1443 1483 files: c
1444 1484 files: b
1445 1485 files: a
1446 1486 files--verbose: fourth second third
1447 1487 files--verbose: second
1448 1488 files--verbose:
1449 1489 files--verbose: d
1450 1490 files--verbose:
1451 1491 files--verbose: c
1452 1492 files--verbose: c
1453 1493 files--verbose: b
1454 1494 files--verbose: a
1455 1495 files--debug: fourth second third
1456 1496 files--debug: second
1457 1497 files--debug:
1458 1498 files--debug: d
1459 1499 files--debug:
1460 1500 files--debug: c
1461 1501 files--debug: c
1462 1502 files--debug: b
1463 1503 files--debug: a
1464 1504 manifest: 6:94961b75a2da
1465 1505 manifest: 5:f2dbc354b94e
1466 1506 manifest: 4:4dc3def4f9b4
1467 1507 manifest: 4:4dc3def4f9b4
1468 1508 manifest: 3:cb5a1327723b
1469 1509 manifest: 3:cb5a1327723b
1470 1510 manifest: 2:6e0e82995c35
1471 1511 manifest: 1:4e8d705b1e53
1472 1512 manifest: 0:a0c8bcbbb45c
1473 1513 manifest--verbose: 6:94961b75a2da
1474 1514 manifest--verbose: 5:f2dbc354b94e
1475 1515 manifest--verbose: 4:4dc3def4f9b4
1476 1516 manifest--verbose: 4:4dc3def4f9b4
1477 1517 manifest--verbose: 3:cb5a1327723b
1478 1518 manifest--verbose: 3:cb5a1327723b
1479 1519 manifest--verbose: 2:6e0e82995c35
1480 1520 manifest--verbose: 1:4e8d705b1e53
1481 1521 manifest--verbose: 0:a0c8bcbbb45c
1482 1522 manifest--debug: 6:94961b75a2da554b4df6fb599e5bfc7d48de0c64
1483 1523 manifest--debug: 5:f2dbc354b94e5ec0b4f10680ee0cee816101d0bf
1484 1524 manifest--debug: 4:4dc3def4f9b4c6e8de820f6ee74737f91e96a216
1485 1525 manifest--debug: 4:4dc3def4f9b4c6e8de820f6ee74737f91e96a216
1486 1526 manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc
1487 1527 manifest--debug: 3:cb5a1327723bada42f117e4c55a303246eaf9ccc
1488 1528 manifest--debug: 2:6e0e82995c35d0d57a52aca8da4e56139e06b4b1
1489 1529 manifest--debug: 1:4e8d705b1e53e3f9375e0e60dc7b525d8211fe55
1490 1530 manifest--debug: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
1491 1531 node: 95c24699272ef57d062b8bccc32c878bf841784a
1492 1532 node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
1493 1533 node: d41e714fe50d9e4a5f11b4d595d543481b5f980b
1494 1534 node: 13207e5a10d9fd28ec424934298e176197f2c67f
1495 1535 node: bbe44766e73d5f11ed2177f1838de10c53ef3e74
1496 1536 node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
1497 1537 node: 97054abb4ab824450e9164180baf491ae0078465
1498 1538 node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
1499 1539 node: 1e4e1b8f71e05681d422154f5421e385fec3454f
1500 1540 node--verbose: 95c24699272ef57d062b8bccc32c878bf841784a
1501 1541 node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
1502 1542 node--verbose: d41e714fe50d9e4a5f11b4d595d543481b5f980b
1503 1543 node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f
1504 1544 node--verbose: bbe44766e73d5f11ed2177f1838de10c53ef3e74
1505 1545 node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
1506 1546 node--verbose: 97054abb4ab824450e9164180baf491ae0078465
1507 1547 node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
1508 1548 node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f
1509 1549 node--debug: 95c24699272ef57d062b8bccc32c878bf841784a
1510 1550 node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
1511 1551 node--debug: d41e714fe50d9e4a5f11b4d595d543481b5f980b
1512 1552 node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f
1513 1553 node--debug: bbe44766e73d5f11ed2177f1838de10c53ef3e74
1514 1554 node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
1515 1555 node--debug: 97054abb4ab824450e9164180baf491ae0078465
1516 1556 node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
1517 1557 node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f
1518 1558 parents:
1519 1559 parents: -1:000000000000
1520 1560 parents: 5:13207e5a10d9 4:bbe44766e73d
1521 1561 parents: 3:10e46f2dcbf4
1522 1562 parents:
1523 1563 parents:
1524 1564 parents:
1525 1565 parents:
1526 1566 parents:
1527 1567 parents--verbose:
1528 1568 parents--verbose: -1:000000000000
1529 1569 parents--verbose: 5:13207e5a10d9 4:bbe44766e73d
1530 1570 parents--verbose: 3:10e46f2dcbf4
1531 1571 parents--verbose:
1532 1572 parents--verbose:
1533 1573 parents--verbose:
1534 1574 parents--verbose:
1535 1575 parents--verbose:
1536 1576 parents--debug: 7:29114dbae42b9f078cf2714dbe3a86bba8ec7453 -1:0000000000000000000000000000000000000000
1537 1577 parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000
1538 1578 parents--debug: 5:13207e5a10d9fd28ec424934298e176197f2c67f 4:bbe44766e73d5f11ed2177f1838de10c53ef3e74
1539 1579 parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000
1540 1580 parents--debug: 3:10e46f2dcbf4823578cf180f33ecf0b957964c47 -1:0000000000000000000000000000000000000000
1541 1581 parents--debug: 2:97054abb4ab824450e9164180baf491ae0078465 -1:0000000000000000000000000000000000000000
1542 1582 parents--debug: 1:b608e9d1a3f0273ccf70fb85fd6866b3482bf965 -1:0000000000000000000000000000000000000000
1543 1583 parents--debug: 0:1e4e1b8f71e05681d422154f5421e385fec3454f -1:0000000000000000000000000000000000000000
1544 1584 parents--debug: -1:0000000000000000000000000000000000000000 -1:0000000000000000000000000000000000000000
1545 1585 rev: 8
1546 1586 rev: 7
1547 1587 rev: 6
1548 1588 rev: 5
1549 1589 rev: 4
1550 1590 rev: 3
1551 1591 rev: 2
1552 1592 rev: 1
1553 1593 rev: 0
1554 1594 rev--verbose: 8
1555 1595 rev--verbose: 7
1556 1596 rev--verbose: 6
1557 1597 rev--verbose: 5
1558 1598 rev--verbose: 4
1559 1599 rev--verbose: 3
1560 1600 rev--verbose: 2
1561 1601 rev--verbose: 1
1562 1602 rev--verbose: 0
1563 1603 rev--debug: 8
1564 1604 rev--debug: 7
1565 1605 rev--debug: 6
1566 1606 rev--debug: 5
1567 1607 rev--debug: 4
1568 1608 rev--debug: 3
1569 1609 rev--debug: 2
1570 1610 rev--debug: 1
1571 1611 rev--debug: 0
1572 1612 tags: tip
1573 1613 tags:
1574 1614 tags:
1575 1615 tags:
1576 1616 tags:
1577 1617 tags:
1578 1618 tags:
1579 1619 tags:
1580 1620 tags:
1581 1621 tags--verbose: tip
1582 1622 tags--verbose:
1583 1623 tags--verbose:
1584 1624 tags--verbose:
1585 1625 tags--verbose:
1586 1626 tags--verbose:
1587 1627 tags--verbose:
1588 1628 tags--verbose:
1589 1629 tags--verbose:
1590 1630 tags--debug: tip
1591 1631 tags--debug:
1592 1632 tags--debug:
1593 1633 tags--debug:
1594 1634 tags--debug:
1595 1635 tags--debug:
1596 1636 tags--debug:
1597 1637 tags--debug:
1598 1638 tags--debug:
1599 1639 diffstat: 3: +2/-1
1600 1640 diffstat: 1: +1/-0
1601 1641 diffstat: 0: +0/-0
1602 1642 diffstat: 1: +1/-0
1603 1643 diffstat: 0: +0/-0
1604 1644 diffstat: 1: +1/-0
1605 1645 diffstat: 1: +4/-0
1606 1646 diffstat: 1: +2/-0
1607 1647 diffstat: 1: +1/-0
1608 1648 diffstat--verbose: 3: +2/-1
1609 1649 diffstat--verbose: 1: +1/-0
1610 1650 diffstat--verbose: 0: +0/-0
1611 1651 diffstat--verbose: 1: +1/-0
1612 1652 diffstat--verbose: 0: +0/-0
1613 1653 diffstat--verbose: 1: +1/-0
1614 1654 diffstat--verbose: 1: +4/-0
1615 1655 diffstat--verbose: 1: +2/-0
1616 1656 diffstat--verbose: 1: +1/-0
1617 1657 diffstat--debug: 3: +2/-1
1618 1658 diffstat--debug: 1: +1/-0
1619 1659 diffstat--debug: 0: +0/-0
1620 1660 diffstat--debug: 1: +1/-0
1621 1661 diffstat--debug: 0: +0/-0
1622 1662 diffstat--debug: 1: +1/-0
1623 1663 diffstat--debug: 1: +4/-0
1624 1664 diffstat--debug: 1: +2/-0
1625 1665 diffstat--debug: 1: +1/-0
1626 1666 extras: branch=default
1627 1667 extras: branch=default
1628 1668 extras: branch=default
1629 1669 extras: branch=default
1630 1670 extras: branch=foo
1631 1671 extras: branch=default
1632 1672 extras: branch=default
1633 1673 extras: branch=default
1634 1674 extras: branch=default
1635 1675 extras--verbose: branch=default
1636 1676 extras--verbose: branch=default
1637 1677 extras--verbose: branch=default
1638 1678 extras--verbose: branch=default
1639 1679 extras--verbose: branch=foo
1640 1680 extras--verbose: branch=default
1641 1681 extras--verbose: branch=default
1642 1682 extras--verbose: branch=default
1643 1683 extras--verbose: branch=default
1644 1684 extras--debug: branch=default
1645 1685 extras--debug: branch=default
1646 1686 extras--debug: branch=default
1647 1687 extras--debug: branch=default
1648 1688 extras--debug: branch=foo
1649 1689 extras--debug: branch=default
1650 1690 extras--debug: branch=default
1651 1691 extras--debug: branch=default
1652 1692 extras--debug: branch=default
1653 1693 p1rev: 7
1654 1694 p1rev: -1
1655 1695 p1rev: 5
1656 1696 p1rev: 3
1657 1697 p1rev: 3
1658 1698 p1rev: 2
1659 1699 p1rev: 1
1660 1700 p1rev: 0
1661 1701 p1rev: -1
1662 1702 p1rev--verbose: 7
1663 1703 p1rev--verbose: -1
1664 1704 p1rev--verbose: 5
1665 1705 p1rev--verbose: 3
1666 1706 p1rev--verbose: 3
1667 1707 p1rev--verbose: 2
1668 1708 p1rev--verbose: 1
1669 1709 p1rev--verbose: 0
1670 1710 p1rev--verbose: -1
1671 1711 p1rev--debug: 7
1672 1712 p1rev--debug: -1
1673 1713 p1rev--debug: 5
1674 1714 p1rev--debug: 3
1675 1715 p1rev--debug: 3
1676 1716 p1rev--debug: 2
1677 1717 p1rev--debug: 1
1678 1718 p1rev--debug: 0
1679 1719 p1rev--debug: -1
1680 1720 p2rev: -1
1681 1721 p2rev: -1
1682 1722 p2rev: 4
1683 1723 p2rev: -1
1684 1724 p2rev: -1
1685 1725 p2rev: -1
1686 1726 p2rev: -1
1687 1727 p2rev: -1
1688 1728 p2rev: -1
1689 1729 p2rev--verbose: -1
1690 1730 p2rev--verbose: -1
1691 1731 p2rev--verbose: 4
1692 1732 p2rev--verbose: -1
1693 1733 p2rev--verbose: -1
1694 1734 p2rev--verbose: -1
1695 1735 p2rev--verbose: -1
1696 1736 p2rev--verbose: -1
1697 1737 p2rev--verbose: -1
1698 1738 p2rev--debug: -1
1699 1739 p2rev--debug: -1
1700 1740 p2rev--debug: 4
1701 1741 p2rev--debug: -1
1702 1742 p2rev--debug: -1
1703 1743 p2rev--debug: -1
1704 1744 p2rev--debug: -1
1705 1745 p2rev--debug: -1
1706 1746 p2rev--debug: -1
1707 1747 p1node: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
1708 1748 p1node: 0000000000000000000000000000000000000000
1709 1749 p1node: 13207e5a10d9fd28ec424934298e176197f2c67f
1710 1750 p1node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
1711 1751 p1node: 10e46f2dcbf4823578cf180f33ecf0b957964c47
1712 1752 p1node: 97054abb4ab824450e9164180baf491ae0078465
1713 1753 p1node: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
1714 1754 p1node: 1e4e1b8f71e05681d422154f5421e385fec3454f
1715 1755 p1node: 0000000000000000000000000000000000000000
1716 1756 p1node--verbose: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
1717 1757 p1node--verbose: 0000000000000000000000000000000000000000
1718 1758 p1node--verbose: 13207e5a10d9fd28ec424934298e176197f2c67f
1719 1759 p1node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
1720 1760 p1node--verbose: 10e46f2dcbf4823578cf180f33ecf0b957964c47
1721 1761 p1node--verbose: 97054abb4ab824450e9164180baf491ae0078465
1722 1762 p1node--verbose: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
1723 1763 p1node--verbose: 1e4e1b8f71e05681d422154f5421e385fec3454f
1724 1764 p1node--verbose: 0000000000000000000000000000000000000000
1725 1765 p1node--debug: 29114dbae42b9f078cf2714dbe3a86bba8ec7453
1726 1766 p1node--debug: 0000000000000000000000000000000000000000
1727 1767 p1node--debug: 13207e5a10d9fd28ec424934298e176197f2c67f
1728 1768 p1node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
1729 1769 p1node--debug: 10e46f2dcbf4823578cf180f33ecf0b957964c47
1730 1770 p1node--debug: 97054abb4ab824450e9164180baf491ae0078465
1731 1771 p1node--debug: b608e9d1a3f0273ccf70fb85fd6866b3482bf965
1732 1772 p1node--debug: 1e4e1b8f71e05681d422154f5421e385fec3454f
1733 1773 p1node--debug: 0000000000000000000000000000000000000000
1734 1774 p2node: 0000000000000000000000000000000000000000
1735 1775 p2node: 0000000000000000000000000000000000000000
1736 1776 p2node: bbe44766e73d5f11ed2177f1838de10c53ef3e74
1737 1777 p2node: 0000000000000000000000000000000000000000
1738 1778 p2node: 0000000000000000000000000000000000000000
1739 1779 p2node: 0000000000000000000000000000000000000000
1740 1780 p2node: 0000000000000000000000000000000000000000
1741 1781 p2node: 0000000000000000000000000000000000000000
1742 1782 p2node: 0000000000000000000000000000000000000000
1743 1783 p2node--verbose: 0000000000000000000000000000000000000000
1744 1784 p2node--verbose: 0000000000000000000000000000000000000000
1745 1785 p2node--verbose: bbe44766e73d5f11ed2177f1838de10c53ef3e74
1746 1786 p2node--verbose: 0000000000000000000000000000000000000000
1747 1787 p2node--verbose: 0000000000000000000000000000000000000000
1748 1788 p2node--verbose: 0000000000000000000000000000000000000000
1749 1789 p2node--verbose: 0000000000000000000000000000000000000000
1750 1790 p2node--verbose: 0000000000000000000000000000000000000000
1751 1791 p2node--verbose: 0000000000000000000000000000000000000000
1752 1792 p2node--debug: 0000000000000000000000000000000000000000
1753 1793 p2node--debug: 0000000000000000000000000000000000000000
1754 1794 p2node--debug: bbe44766e73d5f11ed2177f1838de10c53ef3e74
1755 1795 p2node--debug: 0000000000000000000000000000000000000000
1756 1796 p2node--debug: 0000000000000000000000000000000000000000
1757 1797 p2node--debug: 0000000000000000000000000000000000000000
1758 1798 p2node--debug: 0000000000000000000000000000000000000000
1759 1799 p2node--debug: 0000000000000000000000000000000000000000
1760 1800 p2node--debug: 0000000000000000000000000000000000000000
1761 1801
1762 1802 Filters work:
1763 1803
1764 1804 $ hg log --template '{author|domain}\n'
1765 1805
1766 1806 hostname
1767 1807
1768 1808
1769 1809
1770 1810
1771 1811 place
1772 1812 place
1773 1813 hostname
1774 1814
1775 1815 $ hg log --template '{author|person}\n'
1776 1816 test
1777 1817 User Name
1778 1818 person
1779 1819 person
1780 1820 person
1781 1821 person
1782 1822 other
1783 1823 A. N. Other
1784 1824 User Name
1785 1825
1786 1826 $ hg log --template '{author|user}\n'
1787 1827 test
1788 1828 user
1789 1829 person
1790 1830 person
1791 1831 person
1792 1832 person
1793 1833 other
1794 1834 other
1795 1835 user
1796 1836
1797 1837 $ hg log --template '{date|date}\n'
1798 1838 Wed Jan 01 10:01:00 2020 +0000
1799 1839 Mon Jan 12 13:46:40 1970 +0000
1800 1840 Sun Jan 18 08:40:01 1970 +0000
1801 1841 Sun Jan 18 08:40:00 1970 +0000
1802 1842 Sat Jan 17 04:53:20 1970 +0000
1803 1843 Fri Jan 16 01:06:40 1970 +0000
1804 1844 Wed Jan 14 21:20:00 1970 +0000
1805 1845 Tue Jan 13 17:33:20 1970 +0000
1806 1846 Mon Jan 12 13:46:40 1970 +0000
1807 1847
1808 1848 $ hg log --template '{date|isodate}\n'
1809 1849 2020-01-01 10:01 +0000
1810 1850 1970-01-12 13:46 +0000
1811 1851 1970-01-18 08:40 +0000
1812 1852 1970-01-18 08:40 +0000
1813 1853 1970-01-17 04:53 +0000
1814 1854 1970-01-16 01:06 +0000
1815 1855 1970-01-14 21:20 +0000
1816 1856 1970-01-13 17:33 +0000
1817 1857 1970-01-12 13:46 +0000
1818 1858
1819 1859 $ hg log --template '{date|isodatesec}\n'
1820 1860 2020-01-01 10:01:00 +0000
1821 1861 1970-01-12 13:46:40 +0000
1822 1862 1970-01-18 08:40:01 +0000
1823 1863 1970-01-18 08:40:00 +0000
1824 1864 1970-01-17 04:53:20 +0000
1825 1865 1970-01-16 01:06:40 +0000
1826 1866 1970-01-14 21:20:00 +0000
1827 1867 1970-01-13 17:33:20 +0000
1828 1868 1970-01-12 13:46:40 +0000
1829 1869
1830 1870 $ hg log --template '{date|rfc822date}\n'
1831 1871 Wed, 01 Jan 2020 10:01:00 +0000
1832 1872 Mon, 12 Jan 1970 13:46:40 +0000
1833 1873 Sun, 18 Jan 1970 08:40:01 +0000
1834 1874 Sun, 18 Jan 1970 08:40:00 +0000
1835 1875 Sat, 17 Jan 1970 04:53:20 +0000
1836 1876 Fri, 16 Jan 1970 01:06:40 +0000
1837 1877 Wed, 14 Jan 1970 21:20:00 +0000
1838 1878 Tue, 13 Jan 1970 17:33:20 +0000
1839 1879 Mon, 12 Jan 1970 13:46:40 +0000
1840 1880
1841 1881 $ hg log --template '{desc|firstline}\n'
1842 1882 third
1843 1883 second
1844 1884 merge
1845 1885 new head
1846 1886 new branch
1847 1887 no user, no domain
1848 1888 no person
1849 1889 other 1
1850 1890 line 1
1851 1891
1852 1892 $ hg log --template '{node|short}\n'
1853 1893 95c24699272e
1854 1894 29114dbae42b
1855 1895 d41e714fe50d
1856 1896 13207e5a10d9
1857 1897 bbe44766e73d
1858 1898 10e46f2dcbf4
1859 1899 97054abb4ab8
1860 1900 b608e9d1a3f0
1861 1901 1e4e1b8f71e0
1862 1902
1863 1903 $ hg log --template '<changeset author="{author|xmlescape}"/>\n'
1864 1904 <changeset author="test"/>
1865 1905 <changeset author="User Name &lt;user@hostname&gt;"/>
1866 1906 <changeset author="person"/>
1867 1907 <changeset author="person"/>
1868 1908 <changeset author="person"/>
1869 1909 <changeset author="person"/>
1870 1910 <changeset author="other@place"/>
1871 1911 <changeset author="A. N. Other &lt;other@place&gt;"/>
1872 1912 <changeset author="User Name &lt;user@hostname&gt;"/>
1873 1913
1874 1914 $ hg log --template '{rev}: {children}\n'
1875 1915 8:
1876 1916 7: 8:95c24699272e
1877 1917 6:
1878 1918 5: 6:d41e714fe50d
1879 1919 4: 6:d41e714fe50d
1880 1920 3: 4:bbe44766e73d 5:13207e5a10d9
1881 1921 2: 3:10e46f2dcbf4
1882 1922 1: 2:97054abb4ab8
1883 1923 0: 1:b608e9d1a3f0
1884 1924
1885 1925 Formatnode filter works:
1886 1926
1887 1927 $ hg -q log -r 0 --template '{node|formatnode}\n'
1888 1928 1e4e1b8f71e0
1889 1929
1890 1930 $ hg log -r 0 --template '{node|formatnode}\n'
1891 1931 1e4e1b8f71e0
1892 1932
1893 1933 $ hg -v log -r 0 --template '{node|formatnode}\n'
1894 1934 1e4e1b8f71e0
1895 1935
1896 1936 $ hg --debug log -r 0 --template '{node|formatnode}\n'
1897 1937 1e4e1b8f71e05681d422154f5421e385fec3454f
1898 1938
1899 1939 Age filter:
1900 1940
1901 1941 $ hg log --template '{date|age}\n' > /dev/null || exit 1
1902 1942
1903 1943 >>> from datetime import datetime, timedelta
1904 1944 >>> fp = open('a', 'w')
1905 1945 >>> n = datetime.now() + timedelta(366 * 7)
1906 1946 >>> fp.write('%d-%d-%d 00:00' % (n.year, n.month, n.day))
1907 1947 >>> fp.close()
1908 1948 $ hg add a
1909 1949 $ hg commit -m future -d "`cat a`"
1910 1950
1911 1951 $ hg log -l1 --template '{date|age}\n'
1912 1952 7 years from now
1913 1953
1914 1954 Count filter:
1915 1955
1916 1956 $ hg log -l1 --template '{node|count} {node|short|count}\n'
1917 1957 40 12
1918 1958
1919 1959 $ hg log -l1 --template '{revset("null^")|count} {revset(".")|count} {revset("0::3")|count}\n'
1920 1960 0 1 4
1921 1961
1922 1962 $ hg log -G --template '{rev}: children: {children|count}, \
1923 1963 > tags: {tags|count}, file_adds: {file_adds|count}, \
1924 1964 > ancestors: {revset("ancestors(%s)", rev)|count}'
1925 1965 @ 9: children: 0, tags: 1, file_adds: 1, ancestors: 3
1926 1966 |
1927 1967 o 8: children: 1, tags: 0, file_adds: 2, ancestors: 2
1928 1968 |
1929 1969 o 7: children: 1, tags: 0, file_adds: 1, ancestors: 1
1930 1970
1931 1971 o 6: children: 0, tags: 0, file_adds: 0, ancestors: 7
1932 1972 |\
1933 1973 | o 5: children: 1, tags: 0, file_adds: 1, ancestors: 5
1934 1974 | |
1935 1975 o | 4: children: 1, tags: 0, file_adds: 0, ancestors: 5
1936 1976 |/
1937 1977 o 3: children: 2, tags: 0, file_adds: 0, ancestors: 4
1938 1978 |
1939 1979 o 2: children: 1, tags: 0, file_adds: 1, ancestors: 3
1940 1980 |
1941 1981 o 1: children: 1, tags: 0, file_adds: 1, ancestors: 2
1942 1982 |
1943 1983 o 0: children: 1, tags: 0, file_adds: 1, ancestors: 1
1944 1984
1945 1985
1946 1986 Upper/lower filters:
1947 1987
1948 1988 $ hg log -r0 --template '{branch|upper}\n'
1949 1989 DEFAULT
1950 1990 $ hg log -r0 --template '{author|lower}\n'
1951 1991 user name <user@hostname>
1952 1992 $ hg log -r0 --template '{date|upper}\n'
1953 1993 abort: template filter 'upper' is not compatible with keyword 'date'
1954 1994 [255]
1955 1995
1956 1996 Error on syntax:
1957 1997
1958 1998 $ echo 'x = "f' >> t
1959 1999 $ hg log
1960 2000 abort: t:3: unmatched quotes
1961 2001 [255]
1962 2002
1963 2003 Behind the scenes, this will throw TypeError
1964 2004
1965 2005 $ hg log -l 3 --template '{date|obfuscate}\n'
1966 2006 abort: template filter 'obfuscate' is not compatible with keyword 'date'
1967 2007 [255]
1968 2008
1969 2009 Behind the scenes, this will throw a ValueError
1970 2010
1971 2011 $ hg log -l 3 --template 'line: {desc|shortdate}\n'
1972 2012 abort: template filter 'shortdate' is not compatible with keyword 'desc'
1973 2013 [255]
1974 2014
1975 2015 Behind the scenes, this will throw AttributeError
1976 2016
1977 2017 $ hg log -l 3 --template 'line: {date|escape}\n'
1978 2018 abort: template filter 'escape' is not compatible with keyword 'date'
1979 2019 [255]
1980 2020
1981 2021 Behind the scenes, this will throw ValueError
1982 2022
1983 2023 $ hg tip --template '{author|email|date}\n'
1984 2024 abort: template filter 'datefilter' is not compatible with keyword 'author'
1985 2025 [255]
1986 2026
1987 2027 Thrown an error if a template function doesn't exist
1988 2028
1989 2029 $ hg tip --template '{foo()}\n'
1990 2030 hg: parse error: unknown function 'foo'
1991 2031 [255]
1992 2032
1993 2033 Pass generator object created by template function to filter
1994 2034
1995 2035 $ hg log -l 1 --template '{if(author, author)|user}\n'
1996 2036 test
1997 2037
1998 2038 Test diff function:
1999 2039
2000 2040 $ hg diff -c 8
2001 2041 diff -r 29114dbae42b -r 95c24699272e fourth
2002 2042 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2003 2043 +++ b/fourth Wed Jan 01 10:01:00 2020 +0000
2004 2044 @@ -0,0 +1,1 @@
2005 2045 +second
2006 2046 diff -r 29114dbae42b -r 95c24699272e second
2007 2047 --- a/second Mon Jan 12 13:46:40 1970 +0000
2008 2048 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2009 2049 @@ -1,1 +0,0 @@
2010 2050 -second
2011 2051 diff -r 29114dbae42b -r 95c24699272e third
2012 2052 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2013 2053 +++ b/third Wed Jan 01 10:01:00 2020 +0000
2014 2054 @@ -0,0 +1,1 @@
2015 2055 +third
2016 2056
2017 2057 $ hg log -r 8 -T "{diff()}"
2018 2058 diff -r 29114dbae42b -r 95c24699272e fourth
2019 2059 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2020 2060 +++ b/fourth Wed Jan 01 10:01:00 2020 +0000
2021 2061 @@ -0,0 +1,1 @@
2022 2062 +second
2023 2063 diff -r 29114dbae42b -r 95c24699272e second
2024 2064 --- a/second Mon Jan 12 13:46:40 1970 +0000
2025 2065 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2026 2066 @@ -1,1 +0,0 @@
2027 2067 -second
2028 2068 diff -r 29114dbae42b -r 95c24699272e third
2029 2069 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2030 2070 +++ b/third Wed Jan 01 10:01:00 2020 +0000
2031 2071 @@ -0,0 +1,1 @@
2032 2072 +third
2033 2073
2034 2074 $ hg log -r 8 -T "{diff('glob:f*')}"
2035 2075 diff -r 29114dbae42b -r 95c24699272e fourth
2036 2076 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2037 2077 +++ b/fourth Wed Jan 01 10:01:00 2020 +0000
2038 2078 @@ -0,0 +1,1 @@
2039 2079 +second
2040 2080
2041 2081 $ hg log -r 8 -T "{diff('', 'glob:f*')}"
2042 2082 diff -r 29114dbae42b -r 95c24699272e second
2043 2083 --- a/second Mon Jan 12 13:46:40 1970 +0000
2044 2084 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2045 2085 @@ -1,1 +0,0 @@
2046 2086 -second
2047 2087 diff -r 29114dbae42b -r 95c24699272e third
2048 2088 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2049 2089 +++ b/third Wed Jan 01 10:01:00 2020 +0000
2050 2090 @@ -0,0 +1,1 @@
2051 2091 +third
2052 2092
2053 2093 $ cd ..
2054 2094
2055 2095
2056 2096 latesttag:
2057 2097
2058 2098 $ hg init latesttag
2059 2099 $ cd latesttag
2060 2100
2061 2101 $ echo a > file
2062 2102 $ hg ci -Am a -d '0 0'
2063 2103 adding file
2064 2104
2065 2105 $ echo b >> file
2066 2106 $ hg ci -m b -d '1 0'
2067 2107
2068 2108 $ echo c >> head1
2069 2109 $ hg ci -Am h1c -d '2 0'
2070 2110 adding head1
2071 2111
2072 2112 $ hg update -q 1
2073 2113 $ echo d >> head2
2074 2114 $ hg ci -Am h2d -d '3 0'
2075 2115 adding head2
2076 2116 created new head
2077 2117
2078 2118 $ echo e >> head2
2079 2119 $ hg ci -m h2e -d '4 0'
2080 2120
2081 2121 $ hg merge -q
2082 2122 $ hg ci -m merge -d '5 -3600'
2083 2123
2084 2124 No tag set:
2085 2125
2086 2126 $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
2087 2127 5: null+5
2088 2128 4: null+4
2089 2129 3: null+3
2090 2130 2: null+3
2091 2131 1: null+2
2092 2132 0: null+1
2093 2133
2094 2134 One common tag: longest path wins:
2095 2135
2096 2136 $ hg tag -r 1 -m t1 -d '6 0' t1
2097 2137 $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
2098 2138 6: t1+4
2099 2139 5: t1+3
2100 2140 4: t1+2
2101 2141 3: t1+1
2102 2142 2: t1+1
2103 2143 1: t1+0
2104 2144 0: null+1
2105 2145
2106 2146 One ancestor tag: more recent wins:
2107 2147
2108 2148 $ hg tag -r 2 -m t2 -d '7 0' t2
2109 2149 $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
2110 2150 7: t2+3
2111 2151 6: t2+2
2112 2152 5: t2+1
2113 2153 4: t1+2
2114 2154 3: t1+1
2115 2155 2: t2+0
2116 2156 1: t1+0
2117 2157 0: null+1
2118 2158
2119 2159 Two branch tags: more recent wins:
2120 2160
2121 2161 $ hg tag -r 3 -m t3 -d '8 0' t3
2122 2162 $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
2123 2163 8: t3+5
2124 2164 7: t3+4
2125 2165 6: t3+3
2126 2166 5: t3+2
2127 2167 4: t3+1
2128 2168 3: t3+0
2129 2169 2: t2+0
2130 2170 1: t1+0
2131 2171 0: null+1
2132 2172
2133 2173 Merged tag overrides:
2134 2174
2135 2175 $ hg tag -r 5 -m t5 -d '9 0' t5
2136 2176 $ hg tag -r 3 -m at3 -d '10 0' at3
2137 2177 $ hg log --template '{rev}: {latesttag}+{latesttagdistance}\n'
2138 2178 10: t5+5
2139 2179 9: t5+4
2140 2180 8: t5+3
2141 2181 7: t5+2
2142 2182 6: t5+1
2143 2183 5: t5+0
2144 2184 4: at3:t3+1
2145 2185 3: at3:t3+0
2146 2186 2: t2+0
2147 2187 1: t1+0
2148 2188 0: null+1
2149 2189
2150 2190 $ cd ..
2151 2191
2152 2192
2153 2193 Style path expansion: issue1948 - ui.style option doesn't work on OSX
2154 2194 if it is a relative path
2155 2195
2156 2196 $ mkdir -p home/styles
2157 2197
2158 2198 $ cat > home/styles/teststyle <<EOF
2159 2199 > changeset = 'test {rev}:{node|short}\n'
2160 2200 > EOF
2161 2201
2162 2202 $ HOME=`pwd`/home; export HOME
2163 2203
2164 2204 $ cat > latesttag/.hg/hgrc <<EOF
2165 2205 > [ui]
2166 2206 > style = ~/styles/teststyle
2167 2207 > EOF
2168 2208
2169 2209 $ hg -R latesttag tip
2170 2210 test 10:9b4a630e5f5f
2171 2211
2172 2212 Test recursive showlist template (issue1989):
2173 2213
2174 2214 $ cat > style1989 <<EOF
2175 2215 > changeset = '{file_mods}{manifest}{extras}'
2176 2216 > file_mod = 'M|{author|person}\n'
2177 2217 > manifest = '{rev},{author}\n'
2178 2218 > extra = '{key}: {author}\n'
2179 2219 > EOF
2180 2220
2181 2221 $ hg -R latesttag log -r tip --style=style1989
2182 2222 M|test
2183 2223 10,test
2184 2224 branch: test
2185 2225
2186 2226 Test new-style inline templating:
2187 2227
2188 2228 $ hg log -R latesttag -r tip --template 'modified files: {file_mods % " {file}\n"}\n'
2189 2229 modified files: .hgtags
2190 2230
2191 2231 Test the sub function of templating for expansion:
2192 2232
2193 2233 $ hg log -R latesttag -r 10 --template '{sub("[0-9]", "x", "{rev}")}\n'
2194 2234 xx
2195 2235
2196 2236 Test the strip function with chars specified:
2197 2237
2198 2238 $ hg log -R latesttag --template '{desc}\n'
2199 2239 at3
2200 2240 t5
2201 2241 t3
2202 2242 t2
2203 2243 t1
2204 2244 merge
2205 2245 h2e
2206 2246 h2d
2207 2247 h1c
2208 2248 b
2209 2249 a
2210 2250
2211 2251 $ hg log -R latesttag --template '{strip(desc, "te")}\n'
2212 2252 at3
2213 2253 5
2214 2254 3
2215 2255 2
2216 2256 1
2217 2257 merg
2218 2258 h2
2219 2259 h2d
2220 2260 h1c
2221 2261 b
2222 2262 a
2223 2263
2224 2264 Test date format:
2225 2265
2226 2266 $ hg log -R latesttag --template 'date: {date(date, "%y %m %d %S %z")}\n'
2227 2267 date: 70 01 01 10 +0000
2228 2268 date: 70 01 01 09 +0000
2229 2269 date: 70 01 01 08 +0000
2230 2270 date: 70 01 01 07 +0000
2231 2271 date: 70 01 01 06 +0000
2232 2272 date: 70 01 01 05 +0100
2233 2273 date: 70 01 01 04 +0000
2234 2274 date: 70 01 01 03 +0000
2235 2275 date: 70 01 01 02 +0000
2236 2276 date: 70 01 01 01 +0000
2237 2277 date: 70 01 01 00 +0000
2238 2278
2239 2279 Test invalid date:
2240 2280
2241 2281 $ hg log -R latesttag -T '{date(rev)}\n'
2242 2282 hg: parse error: date expects a date information
2243 2283 [255]
2244 2284
2245 2285 Test string escaping:
2246 2286
2247 2287 $ hg log -R latesttag -r 0 --template '>\n<>\\n<{if(rev, "[>\n<>\\n<]")}>\n<>\\n<\n'
2248 2288 >
2249 2289 <>\n<[>
2250 2290 <>\n<]>
2251 2291 <>\n<
2252 2292
2253 2293 "string-escape"-ed "\x5c\x786e" becomes r"\x6e" (once) or r"n" (twice)
2254 2294
2255 2295 $ hg log -R a -r 0 --template '{if("1", "\x5c\x786e", "NG")}\n'
2256 2296 \x6e
2257 2297 $ hg log -R a -r 0 --template '{if("1", r"\x5c\x786e", "NG")}\n'
2258 2298 \x5c\x786e
2259 2299 $ hg log -R a -r 0 --template '{if("", "NG", "\x5c\x786e")}\n'
2260 2300 \x6e
2261 2301 $ hg log -R a -r 0 --template '{if("", "NG", r"\x5c\x786e")}\n'
2262 2302 \x5c\x786e
2263 2303
2264 2304 $ hg log -R a -r 2 --template '{ifeq("no perso\x6e", desc, "\x5c\x786e", "NG")}\n'
2265 2305 \x6e
2266 2306 $ hg log -R a -r 2 --template '{ifeq(r"no perso\x6e", desc, "NG", r"\x5c\x786e")}\n'
2267 2307 \x5c\x786e
2268 2308 $ hg log -R a -r 2 --template '{ifeq(desc, "no perso\x6e", "\x5c\x786e", "NG")}\n'
2269 2309 \x6e
2270 2310 $ hg log -R a -r 2 --template '{ifeq(desc, r"no perso\x6e", "NG", r"\x5c\x786e")}\n'
2271 2311 \x5c\x786e
2272 2312
2273 2313 $ hg log -R a -r 8 --template '{join(files, "\n")}\n'
2274 2314 fourth
2275 2315 second
2276 2316 third
2277 2317 $ hg log -R a -r 8 --template '{join(files, r"\n")}\n'
2278 2318 fourth\nsecond\nthird
2279 2319
2280 2320 $ hg log -R a -r 2 --template '{rstdoc("1st\n\n2nd", "htm\x6c")}'
2281 2321 <p>
2282 2322 1st
2283 2323 </p>
2284 2324 <p>
2285 2325 2nd
2286 2326 </p>
2287 2327 $ hg log -R a -r 2 --template '{rstdoc(r"1st\n\n2nd", "html")}'
2288 2328 <p>
2289 2329 1st\n\n2nd
2290 2330 </p>
2291 2331 $ hg log -R a -r 2 --template '{rstdoc("1st\n\n2nd", r"htm\x6c")}'
2292 2332 1st
2293 2333
2294 2334 2nd
2295 2335
2296 2336 $ hg log -R a -r 2 --template '{strip(desc, "\x6e")}\n'
2297 2337 o perso
2298 2338 $ hg log -R a -r 2 --template '{strip(desc, r"\x6e")}\n'
2299 2339 no person
2300 2340 $ hg log -R a -r 2 --template '{strip("no perso\x6e", "\x6e")}\n'
2301 2341 o perso
2302 2342 $ hg log -R a -r 2 --template '{strip(r"no perso\x6e", r"\x6e")}\n'
2303 2343 no perso
2304 2344
2305 2345 $ hg log -R a -r 2 --template '{sub("\\x6e", "\x2d", desc)}\n'
2306 2346 -o perso-
2307 2347 $ hg log -R a -r 2 --template '{sub(r"\\x6e", "-", desc)}\n'
2308 2348 no person
2309 2349 $ hg log -R a -r 2 --template '{sub("n", r"\x2d", desc)}\n'
2310 2350 \x2do perso\x2d
2311 2351 $ hg log -R a -r 2 --template '{sub("n", "\x2d", "no perso\x6e")}\n'
2312 2352 -o perso-
2313 2353 $ hg log -R a -r 2 --template '{sub("n", r"\x2d", r"no perso\x6e")}\n'
2314 2354 \x2do perso\x6e
2315 2355
2316 2356 $ hg log -R a -r 8 --template '{files % "{file}\n"}'
2317 2357 fourth
2318 2358 second
2319 2359 third
2320 2360 $ hg log -R a -r 8 --template '{files % r"{file}\n"}\n'
2321 2361 fourth\nsecond\nthird\n
2322 2362
2323 2363 Test string escaping in nested expression:
2324 2364
2325 2365 $ hg log -R a -r 8 --template '{ifeq(r"\x6e", if("1", "\x5c\x786e"), join(files, "\x5c\x786e"))}\n'
2326 2366 fourth\x6esecond\x6ethird
2327 2367 $ hg log -R a -r 8 --template '{ifeq(if("1", r"\x6e"), "\x5c\x786e", join(files, "\x5c\x786e"))}\n'
2328 2368 fourth\x6esecond\x6ethird
2329 2369
2330 2370 $ hg log -R a -r 8 --template '{join(files, ifeq(branch, "default", "\x5c\x786e"))}\n'
2331 2371 fourth\x6esecond\x6ethird
2332 2372 $ hg log -R a -r 8 --template '{join(files, ifeq(branch, "default", r"\x5c\x786e"))}\n'
2333 2373 fourth\x5c\x786esecond\x5c\x786ethird
2334 2374
2335 2375 $ hg log -R a -r 3:4 --template '{rev}:{sub(if("1", "\x6e"), ifeq(branch, "foo", r"\x5c\x786e", "\x5c\x786e"), desc)}\n'
2336 2376 3:\x6eo user, \x6eo domai\x6e
2337 2377 4:\x5c\x786eew bra\x5c\x786ech
2338 2378
2339 2379 Test recursive evaluation:
2340 2380
2341 2381 $ hg init r
2342 2382 $ cd r
2343 2383 $ echo a > a
2344 2384 $ hg ci -Am '{rev}'
2345 2385 adding a
2346 2386 $ hg log -r 0 --template '{if(rev, desc)}\n'
2347 2387 {rev}
2348 2388 $ hg log -r 0 --template '{if(rev, "{author} {rev}")}\n'
2349 2389 test 0
2350 2390
2351 2391 $ hg branch -q 'text.{rev}'
2352 2392 $ echo aa >> aa
2353 2393 $ hg ci -u '{node|short}' -m 'desc to be wrapped desc to be wrapped'
2354 2394
2355 2395 $ hg log -l1 --template '{fill(desc, "20", author, branch)}'
2356 2396 {node|short}desc to
2357 2397 text.{rev}be wrapped
2358 2398 text.{rev}desc to be
2359 2399 text.{rev}wrapped (no-eol)
2360 2400 $ hg log -l1 --template '{fill(desc, "20", "{node|short}:", "text.{rev}:")}'
2361 2401 bcc7ff960b8e:desc to
2362 2402 text.1:be wrapped
2363 2403 text.1:desc to be
2364 2404 text.1:wrapped (no-eol)
2365 2405
2366 2406 $ hg log -l 1 --template '{sub(r"[0-9]", "-", author)}'
2367 2407 {node|short} (no-eol)
2368 2408 $ hg log -l 1 --template '{sub(r"[0-9]", "-", "{node|short}")}'
2369 2409 bcc-ff---b-e (no-eol)
2370 2410
2371 2411 $ cat >> .hg/hgrc <<EOF
2372 2412 > [extensions]
2373 2413 > color=
2374 2414 > [color]
2375 2415 > mode=ansi
2376 2416 > text.{rev} = red
2377 2417 > text.1 = green
2378 2418 > EOF
2379 2419 $ hg log --color=always -l 1 --template '{label(branch, "text\n")}'
2380 2420 \x1b[0;31mtext\x1b[0m (esc)
2381 2421 $ hg log --color=always -l 1 --template '{label("text.{rev}", "text\n")}'
2382 2422 \x1b[0;32mtext\x1b[0m (esc)
2383 2423
2384 2424 Test branches inside if statement:
2385 2425
2386 2426 $ hg log -r 0 --template '{if(branches, "yes", "no")}\n'
2387 2427 no
2388 2428
2389 2429 Test get function:
2390 2430
2391 2431 $ hg log -r 0 --template '{get(extras, "branch")}\n'
2392 2432 default
2393 2433 $ hg log -r 0 --template '{get(files, "should_fail")}\n'
2394 2434 hg: parse error: get() expects a dict as first argument
2395 2435 [255]
2396 2436
2397 2437 Test shortest(node) function:
2398 2438
2399 2439 $ echo b > b
2400 2440 $ hg ci -qAm b
2401 2441 $ hg log --template '{shortest(node)}\n'
2402 2442 e777
2403 2443 bcc7
2404 2444 f776
2405 2445 $ hg log --template '{shortest(node, 10)}\n'
2406 2446 e777603221
2407 2447 bcc7ff960b
2408 2448 f7769ec2ab
2409 2449
2410 2450 Test pad function
2411 2451
2412 2452 $ hg log --template '{pad(rev, 20)} {author|user}\n'
2413 2453 2 test
2414 2454 1 {node|short}
2415 2455 0 test
2416 2456
2417 2457 $ hg log --template '{pad(rev, 20, " ", True)} {author|user}\n'
2418 2458 2 test
2419 2459 1 {node|short}
2420 2460 0 test
2421 2461
2422 2462 $ hg log --template '{pad(rev, 20, "-", False)} {author|user}\n'
2423 2463 2------------------- test
2424 2464 1------------------- {node|short}
2425 2465 0------------------- test
2426 2466
2427 2467 Test ifcontains function
2428 2468
2429 2469 $ hg log --template '{rev} {ifcontains(rev, "2 two 0", "is in the string", "is not")}\n'
2430 2470 2 is in the string
2431 2471 1 is not
2432 2472 0 is in the string
2433 2473
2434 2474 $ hg log --template '{rev} {ifcontains("a", file_adds, "added a", "did not add a")}\n'
2435 2475 2 did not add a
2436 2476 1 did not add a
2437 2477 0 added a
2438 2478
2439 2479 Test revset function
2440 2480
2441 2481 $ hg log --template '{rev} {ifcontains(rev, revset("."), "current rev", "not current rev")}\n'
2442 2482 2 current rev
2443 2483 1 not current rev
2444 2484 0 not current rev
2445 2485
2446 2486 $ hg log --template '{rev} {ifcontains(rev, revset(". + .^"), "match rev", "not match rev")}\n'
2447 2487 2 match rev
2448 2488 1 match rev
2449 2489 0 not match rev
2450 2490
2451 2491 $ hg log --template '{rev} Parents: {revset("parents(%s)", rev)}\n'
2452 2492 2 Parents: 1
2453 2493 1 Parents: 0
2454 2494 0 Parents:
2455 2495
2456 2496 $ cat >> .hg/hgrc <<EOF
2457 2497 > [revsetalias]
2458 2498 > myparents(\$1) = parents(\$1)
2459 2499 > EOF
2460 2500 $ hg log --template '{rev} Parents: {revset("myparents(%s)", rev)}\n'
2461 2501 2 Parents: 1
2462 2502 1 Parents: 0
2463 2503 0 Parents:
2464 2504
2465 2505 $ hg log --template 'Rev: {rev}\n{revset("::%s", rev) % "Ancestor: {revision}\n"}\n'
2466 2506 Rev: 2
2467 2507 Ancestor: 0
2468 2508 Ancestor: 1
2469 2509 Ancestor: 2
2470 2510
2471 2511 Rev: 1
2472 2512 Ancestor: 0
2473 2513 Ancestor: 1
2474 2514
2475 2515 Rev: 0
2476 2516 Ancestor: 0
2477 2517
2478 2518 Test current bookmark templating
2479 2519
2480 2520 $ hg book foo
2481 2521 $ hg book bar
2482 2522 $ hg log --template "{rev} {bookmarks % '{bookmark}{ifeq(bookmark, current, \"*\")} '}\n"
2483 2523 2 bar* foo
2484 2524 1
2485 2525 0
2486 2526 $ hg log --template "{rev} {currentbookmark}\n"
2487 2527 2 bar
2488 2528 1
2489 2529 0
2490 2530 $ hg bookmarks --inactive bar
2491 2531 $ hg log --template "{rev} {currentbookmark}\n"
2492 2532 2
2493 2533 1
2494 2534 0
2495 2535 $ hg book -r1 baz
2496 2536 $ hg log --template "{rev} {join(bookmarks, ' ')}\n"
2497 2537 2 bar foo
2498 2538 1 baz
2499 2539 0
2500 2540 $ hg log --template "{rev} {ifcontains('foo', bookmarks, 't', 'f')}\n"
2501 2541 2 t
2502 2542 1 f
2503 2543 0 f
2504 2544
2505 2545 Test stringify on sub expressions
2506 2546
2507 2547 $ cd ..
2508 2548 $ hg log -R a -r 8 --template '{join(files, if("1", if("1", ", ")))}\n'
2509 2549 fourth, second, third
2510 2550 $ hg log -R a -r 8 --template '{strip(if("1", if("1", "-abc-")), if("1", if("1", "-")))}\n'
2511 2551 abc
2512 2552
2513 2553 Test splitlines
2514 2554
2515 2555 $ hg log -Gv -R a --template "{splitlines(desc) % 'foo {line}\n'}"
2516 2556 @ foo future
2517 2557 |
2518 2558 o foo third
2519 2559 |
2520 2560 o foo second
2521 2561
2522 2562 o foo merge
2523 2563 |\
2524 2564 | o foo new head
2525 2565 | |
2526 2566 o | foo new branch
2527 2567 |/
2528 2568 o foo no user, no domain
2529 2569 |
2530 2570 o foo no person
2531 2571 |
2532 2572 o foo other 1
2533 2573 | foo other 2
2534 2574 | foo
2535 2575 | foo other 3
2536 2576 o foo line 1
2537 2577 foo line 2
2538 2578
2539 2579 Test startswith
2540 2580 $ hg log -Gv -R a --template "{startswith(desc)}"
2541 2581 hg: parse error: startswith expects two arguments
2542 2582 [255]
2543 2583
2544 2584 $ hg log -Gv -R a --template "{startswith('line', desc)}"
2545 2585 @
2546 2586 |
2547 2587 o
2548 2588 |
2549 2589 o
2550 2590
2551 2591 o
2552 2592 |\
2553 2593 | o
2554 2594 | |
2555 2595 o |
2556 2596 |/
2557 2597 o
2558 2598 |
2559 2599 o
2560 2600 |
2561 2601 o
2562 2602 |
2563 2603 o line 1
2564 2604 line 2
2565 2605
2566 2606 Test bad template with better error message
2567 2607
2568 2608 $ hg log -Gv -R a --template '{desc|user()}'
2569 2609 hg: parse error: expected a symbol, got 'func'
2570 2610 [255]
2571 2611
2572 2612 Test word function (including index out of bounds graceful failure)
2573 2613
2574 2614 $ hg log -Gv -R a --template "{word('1', desc)}"
2575 2615 @
2576 2616 |
2577 2617 o
2578 2618 |
2579 2619 o
2580 2620
2581 2621 o
2582 2622 |\
2583 2623 | o head
2584 2624 | |
2585 2625 o | branch
2586 2626 |/
2587 2627 o user,
2588 2628 |
2589 2629 o person
2590 2630 |
2591 2631 o 1
2592 2632 |
2593 2633 o 1
2594 2634
2595 2635
2596 2636 Test word third parameter used as splitter
2597 2637
2598 2638 $ hg log -Gv -R a --template "{word('0', desc, 'o')}"
2599 2639 @ future
2600 2640 |
2601 2641 o third
2602 2642 |
2603 2643 o sec
2604 2644
2605 2645 o merge
2606 2646 |\
2607 2647 | o new head
2608 2648 | |
2609 2649 o | new branch
2610 2650 |/
2611 2651 o n
2612 2652 |
2613 2653 o n
2614 2654 |
2615 2655 o
2616 2656 |
2617 2657 o line 1
2618 2658 line 2
2619 2659
2620 2660 Test word error messages for not enough and too many arguments
2621 2661
2622 2662 $ hg log -Gv -R a --template "{word('0')}"
2623 2663 hg: parse error: word expects two or three arguments, got 1
2624 2664 [255]
2625 2665
2626 2666 $ hg log -Gv -R a --template "{word('0', desc, 'o', 'h', 'b', 'o', 'y')}"
2627 2667 hg: parse error: word expects two or three arguments, got 7
2628 2668 [255]
2629 2669
2630 2670 Test word for invalid numbers
2631 2671
2632 2672 $ hg log -Gv -R a --template "{word(2, desc)}"
2633 2673 hg: parse error: Use strings like '3' for numbers passed to word function
2634 2674 [255]
General Comments 0
You need to be logged in to leave comments. Login now