1  $ cat >> $HGRCPATH << EOF
2  > [extensions]
3  > show =
4  > EOF
5
6  $ hg init repo0
7  $ cd repo0
8
9Command works on an empty repo
10
11  $ hg show work
12
13Single draft changeset shown
14
15  $ echo 0 > foo
16  $ hg -q commit -A -m 'commit 0'
17
18  $ hg show work
19  @  9f17 commit 0
20
21Even when it isn't the wdir
22
23  $ hg -q up null
24
25  $ hg show work
26  o  9f17 commit 0
27
28Single changeset is still there when public because it is a head
29
30  $ hg phase --public -r 0
31  $ hg show work
32  o  9f17 commit 0
33
34A draft child will show both it and public parent
35
36  $ hg -q up 0
37  $ echo 1 > foo
38  $ hg commit -m 'commit 1'
39
40  $ hg show work
41  @  181c commit 1
42  o  9f17 commit 0
43
44Multiple draft children will be shown
45
46  $ echo 2 > foo
47  $ hg commit -m 'commit 2'
48
49  $ hg show work
50  @  128c commit 2
51  o  181c commit 1
52  o  9f17 commit 0
53
54Bumping first draft changeset to public will hide its parent
55
56  $ hg phase --public -r 1
57  $ hg show work
58  @  128c commit 2
59  o  181c commit 1
60  ~
61
62Multiple DAG heads will be shown
63
64  $ hg -q up -r 1
65  $ echo 3 > foo
66  $ hg commit -m 'commit 3'
67  created new head
68
69  $ hg show work
70  @  f0ab commit 3
71  | o  128c commit 2
72  |/
73  o  181c commit 1
74  ~
75
76Even when wdir is something else
77
78  $ hg -q up null
79
80  $ hg show work
81  o  f0ab commit 3
82  | o  128c commit 2
83  |/
84  o  181c commit 1
85  ~
86
87Draft child shows public head (multiple heads)
88
89  $ hg -q up 0
90  $ echo 4 > foo
91  $ hg commit -m 'commit 4'
92  created new head
93
94  $ hg show work
95  @  668c commit 4
96  | o  f0ab commit 3
97  | | o  128c commit 2
98  | |/
99  | o  181c commit 1
100  |/
101  o  9f17 commit 0
102
103  $ cd ..
104
105Branch name appears in output
106
107  $ hg init branches
108  $ cd branches
109  $ echo 0 > foo
110  $ hg -q commit -A -m 'commit 0'
111  $ echo 1 > foo
112  $ hg commit -m 'commit 1'
113  $ echo 2 > foo
114  $ hg commit -m 'commit 2'
115  $ hg phase --public -r .
116  $ hg -q up -r 1
117  $ hg branch mybranch
118  marked working directory as branch mybranch
119  (branches are permanent and global, did you want a bookmark?)
120  $ echo 3 > foo
121  $ hg commit -m 'commit 3'
122  $ echo 4 > foo
123  $ hg commit -m 'commit 4'
124
125  $ hg show work
126  @  f8dd (mybranch) commit 4
127  o  90cf (mybranch) commit 3
128  | o  128c commit 2
129  |/
130  o  181c commit 1
131  ~
132
133  $ cd ..
134
135Bookmark name appears in output
136
137  $ hg init bookmarks
138  $ cd bookmarks
139  $ echo 0 > foo
140  $ hg -q commit -A -m 'commit 0'
141  $ echo 1 > foo
142  $ hg commit -m 'commit 1'
143  $ echo 2 > foo
144  $ hg commit -m 'commit 2'
145  $ hg phase --public -r .
146  $ hg bookmark @
147  $ hg -q up -r 1
148  $ echo 3 > foo
149  $ hg commit -m 'commit 3'
150  created new head
151  $ echo 4 > foo
152  $ hg commit -m 'commit 4'
153  $ hg bookmark mybook
154
155  $ hg show work
156  @  cac8 (mybook) commit 4
157  o  f0ab commit 3
158  | o  128c (@) commit 2
159  |/
160  o  181c commit 1
161  ~
162
163  $ cd ..
164
165Tags are rendered
166
167  $ hg init tags
168  $ cd tags
169  $ echo 0 > foo
170  $ hg -q commit -A -m 'commit 1'
171  $ echo 1 > foo
172  $ hg commit -m 'commit 2'
173  $ hg tag 0.1
174  $ hg phase --public -r .
175  $ echo 2 > foo
176  $ hg commit -m 'commit 3'
177  $ hg tag 0.2
178
179  $ hg show work
180  @  3758 Added tag 0.2 for changeset 6379c25b76f1
181  o  6379 (0.2) commit 3
182  o  a2ad Added tag 0.1 for changeset 6a75536ea0b1
183  ~
184
185  $ cd ..
186
187Multiple names on same changeset render properly
188
189  $ hg init multiplenames
190  $ cd multiplenames
191  $ echo 0 > foo
192  $ hg -q commit -A -m 'commit 1'
193  $ hg phase --public -r .
194  $ hg branch mybranch
195  marked working directory as branch mybranch
196  (branches are permanent and global, did you want a bookmark?)
197  $ hg bookmark mybook
198  $ echo 1 > foo
199  $ hg commit -m 'commit 2'
200
201  $ hg show work
202  @  3483 (mybook) (mybranch) commit 2
203  o  97fc commit 1
204
205Multiple bookmarks on same changeset render properly
206
207  $ hg book mybook2
208  $ hg show work
209  @  3483 (mybook mybook2) (mybranch) commit 2
210  o  97fc commit 1
211
212  $ cd ..
213
214Extra namespaces are rendered
215
216  $ hg init extranamespaces
217  $ cd extranamespaces
218  $ echo 0 > foo
219  $ hg -q commit -A -m 'commit 1'
220  $ hg phase --public -r .
221  $ echo 1 > foo
222  $ hg commit -m 'commit 2'
223  $ echo 2 > foo
224  $ hg commit -m 'commit 3'
225
226  $ hg --config extensions.revnames=$TESTDIR/revnamesext.py show work
227  @  32f3 (r2) commit 3
228  o  6a75 (r1) commit 2
229  o  97fc (r0) commit 1
230
231Obsolescence information appears in labels.
232
233  $ cat >> .hg/hgrc << EOF
234  > [experimental]
235  > evolution=createmarkers
236  > EOF
237  $ hg debugobsolete `hg log -r 'desc("commit 2")' -T "{node}"`
238  1 new obsolescence markers
239  obsoleted 1 changesets
240  1 new orphan changesets
241  $ hg show work --color=debug
242  @  [log.changeset changeset.draft changeset.unstable instability.orphan|32f3] [log.description|commit 3]
243  x  [log.changeset changeset.draft changeset.obsolete|6a75] [log.description|commit 2]
244  ~
245
246  $ cd ..
247
248Prefix collision on hashes increases shortest node length
249
250  $ hg init hashcollision
251  $ cd hashcollision
252  $ echo 0 > a
253  $ hg -q commit -Am 0
254  $ for i in 17 1057 2857 4025; do
255  >   hg -q up 0
256  >   echo $i > a
257  >   hg -q commit -m $i
258  >   echo 0 > a
259  >   hg commit -m "$i commit 2"
260  > done
261
262  $ hg show work
263  @  cfd04 4025 commit 2
264  o  c562d 4025
265  | o  08048 2857 commit 2
266  | o  c5623 2857
267  |/
268  | o  6a6b6 1057 commit 2
269  | o  c5625 1057
270  |/
271  | o  96b4e 17 commit 2
272  | o  11424 17
273  |/
274  o  b4e73 0
275
276  $ cd ..
277