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