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