1 #!/bin/sh |
|
2 |
|
3 hg init a |
|
4 cd a |
|
5 echo a > a |
|
6 hg add a |
|
7 echo line 1 > b |
|
8 echo line 2 >> b |
|
9 hg commit -l b -d '1000000 0' -u 'User Name <user@hostname>' |
|
10 hg add b |
|
11 echo other 1 > c |
|
12 echo other 2 >> c |
|
13 echo >> c |
|
14 echo other 3 >> c |
|
15 hg commit -l c -d '1100000 0' -u 'A. N. Other <other@place>' |
|
16 hg add c |
|
17 hg commit -m 'no person' -d '1200000 0' -u 'other@place' |
|
18 echo c >> c |
|
19 hg commit -m 'no user, no domain' -d '1300000 0' -u 'person' |
|
20 echo foo > .hg/branch |
|
21 hg commit -m 'new branch' -d '1400000 0' -u 'person' |
|
22 hg co -q 3 |
|
23 echo other 4 >> d |
|
24 hg add d |
|
25 hg commit -m 'new head' -d '1500000 0' -u 'person' |
|
26 hg merge -q foo |
|
27 hg commit -m 'merge' -d '1500001 0' -u 'person' |
|
28 # second branch starting at nullrev |
|
29 hg update null |
|
30 echo second > second |
|
31 hg add second |
|
32 hg commit -m second -d '1000000 0' -u 'User Name <user@hostname>' |
|
33 echo third > third |
|
34 hg add third |
|
35 hg mv second fourth |
|
36 hg commit -m third -d "2020-01-01 10:01" |
|
37 |
|
38 # make sure user/global hgrc does not affect tests |
|
39 echo '[ui]' > .hg/hgrc |
|
40 echo 'logtemplate =' >> .hg/hgrc |
|
41 echo 'style =' >> .hg/hgrc |
|
42 |
|
43 echo '# default style is like normal output' |
|
44 echo '# normal' |
|
45 hg log > log.out |
|
46 hg log --style default > style.out |
|
47 cmp log.out style.out || diff -u log.out style.out |
|
48 echo '# verbose' |
|
49 hg log -v > log.out |
|
50 hg log -v --style default > style.out |
|
51 cmp log.out style.out || diff -u log.out style.out |
|
52 echo '# debug' |
|
53 hg log --debug > log.out |
|
54 hg log --debug --style default > style.out |
|
55 cmp log.out style.out || diff -u log.out style.out |
|
56 |
|
57 echo '# revision with no copies (used to print a traceback)' |
|
58 hg tip -v --template '\n' |
|
59 |
|
60 echo '# compact style works' |
|
61 hg log --style compact |
|
62 hg log -v --style compact |
|
63 hg log --debug --style compact |
|
64 |
|
65 # Test xml styles |
|
66 echo '# xml style works (--style xml)' |
|
67 hg log --style xml |
|
68 echo '# xml style works (-v --style xml)' |
|
69 hg log -v --style xml |
|
70 echo '# xml style works (--debug --style xml)' |
|
71 hg log --debug --style xml |
|
72 |
|
73 echo '# error if style not readable' |
|
74 touch q |
|
75 chmod 0 q |
|
76 hg log --style ./q |
|
77 |
|
78 echo '# error if no style' |
|
79 hg log --style notexist |
|
80 |
|
81 echo '# error if style missing key' |
|
82 echo 'q = q' > t |
|
83 hg log --style ./t |
|
84 |
|
85 echo '# error if include fails' |
|
86 echo 'changeset = q' >> t |
|
87 hg log --style ./t |
|
88 |
|
89 echo '# include works' |
|
90 rm q |
|
91 echo '{rev}' > q |
|
92 hg log --style ./t |
|
93 |
|
94 echo '# ui.style works' |
|
95 echo '[ui]' > .hg/hgrc |
|
96 echo 'style = t' >> .hg/hgrc |
|
97 hg log |
|
98 |
|
99 echo '# issue338' |
|
100 hg log --style=changelog > changelog |
|
101 cat changelog |
|
102 |
|
103 echo '# issue 2130' |
|
104 hg heads --style changelog |
|
105 |
|
106 echo "# keys work" |
|
107 for key in author branches date desc file_adds file_dels file_mods \ |
|
108 file_copies file_copies_switch files \ |
|
109 manifest node parents rev tags diffstat extras; do |
|
110 for mode in '' --verbose --debug; do |
|
111 hg log $mode --template "$key$mode: {$key}\n" |
|
112 done |
|
113 done |
|
114 |
|
115 echo '# filters work' |
|
116 hg log --template '{author|domain}\n' |
|
117 hg log --template '{author|person}\n' |
|
118 hg log --template '{author|user}\n' |
|
119 hg log --template '{date|age}\n' > /dev/null || exit 1 |
|
120 hg log -l1 --template '{date|age}\n' |
|
121 hg log --template '{date|date}\n' |
|
122 hg log --template '{date|isodate}\n' |
|
123 hg log --template '{date|isodatesec}\n' |
|
124 hg log --template '{date|rfc822date}\n' |
|
125 hg log --template '{desc|firstline}\n' |
|
126 hg log --template '{node|short}\n' |
|
127 hg log --template '<changeset author="{author|xmlescape}"/>\n' |
|
128 hg log --template '{rev}: {children}\n' |
|
129 |
|
130 echo '# formatnode filter works' |
|
131 echo '# quiet' |
|
132 hg -q log -r 0 --template '{node|formatnode}\n' |
|
133 echo '# normal' |
|
134 hg log -r 0 --template '{node|formatnode}\n' |
|
135 echo '# verbose' |
|
136 hg -v log -r 0 --template '{node|formatnode}\n' |
|
137 echo '# debug' |
|
138 hg --debug log -r 0 --template '{node|formatnode}\n' |
|
139 |
|
140 echo '# error on syntax' |
|
141 echo 'x = "f' >> t |
|
142 hg log |
|
143 |
|
144 cd .. |
|
145 |
|
146 echo '# latesttag' |
|
147 hg init latesttag |
|
148 cd latesttag |
|
149 |
|
150 echo a > file |
|
151 hg ci -Am a -d '0 0' |
|
152 |
|
153 echo b >> file |
|
154 hg ci -m b -d '1 0' |
|
155 |
|
156 echo c >> head1 |
|
157 hg ci -Am h1c -d '2 0' |
|
158 |
|
159 hg update -q 1 |
|
160 echo d >> head2 |
|
161 hg ci -Am h2d -d '3 0' |
|
162 |
|
163 echo e >> head2 |
|
164 hg ci -m h2e -d '4 0' |
|
165 |
|
166 hg merge -q |
|
167 hg ci -m merge -d '5 0' |
|
168 |
|
169 echo '# No tag set' |
|
170 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' |
|
171 |
|
172 echo '# one common tag: longuest path wins' |
|
173 hg tag -r 1 -m t1 -d '6 0' t1 |
|
174 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' |
|
175 |
|
176 echo '# one ancestor tag: more recent wins' |
|
177 hg tag -r 2 -m t2 -d '7 0' t2 |
|
178 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' |
|
179 |
|
180 echo '# two branch tags: more recent wins' |
|
181 hg tag -r 3 -m t3 -d '8 0' t3 |
|
182 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' |
|
183 |
|
184 echo '# merged tag overrides' |
|
185 hg tag -r 5 -m t5 -d '9 0' t5 |
|
186 hg tag -r 3 -m at3 -d '10 0' at3 |
|
187 hg log --template '{rev}: {latesttag}+{latesttagdistance}\n' |
|
188 cd .. |
|
189 |
|
190 echo '# style path expansion (issue1948)' |
|
191 mkdir -p home/styles |
|
192 cat > home/styles/teststyle <<EOF |
|
193 changeset = 'test {rev}:{node|short}\n' |
|
194 EOF |
|
195 HOME=`pwd`/home; export HOME |
|
196 cat > latesttag/.hg/hgrc <<EOF |
|
197 [ui] |
|
198 style = ~/styles/teststyle |
|
199 EOF |
|
200 hg -R latesttag tip |
|
201 |
|
202 echo '# test recursive showlist template (issue1989)' |
|
203 cat > style1989 <<EOF |
|
204 changeset = '{file_mods}{manifest}{extras}' |
|
205 file_mod = 'M|{author|person}\n' |
|
206 manifest = '{rev},{author}\n' |
|
207 extra = '{key}: {author}\n' |
|
208 EOF |
|
209 hg -R latesttag log -r tip --style=style1989 |
|
210 |
|
211 echo '# done' |
|