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