|
1 $ cat >> $HGRCPATH <<EOF |
|
2 > [extensions] |
|
3 > hgext.graphlog= |
|
4 > EOF |
|
5 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH |
|
6 |
|
7 $ glog() { |
|
8 > hg glog --template '{rev}:{node|short}@{branch}({separate("/", obsolete, phase)}) {desc|firstline}\n' "$@" |
|
9 > } |
|
10 |
|
11 $ hg init repo |
|
12 $ cd repo |
|
13 |
|
14 Cannot uncommit null changeset |
|
15 |
|
16 $ hg uncommit |
|
17 abort: cannot rewrite immutable changeset |
|
18 [255] |
|
19 |
|
20 Cannot uncommit public changeset |
|
21 |
|
22 $ echo a > a |
|
23 $ hg ci -Am adda a |
|
24 $ hg phase --public . |
|
25 $ hg uncommit |
|
26 abort: cannot rewrite immutable changeset |
|
27 [255] |
|
28 $ hg phase --force --draft . |
|
29 |
|
30 Cannot uncommit merge |
|
31 |
|
32 $ hg up -q null |
|
33 $ echo b > b |
|
34 $ echo c > c |
|
35 $ echo d > d |
|
36 $ echo f > f |
|
37 $ echo g > g |
|
38 $ echo j > j |
|
39 $ echo m > m |
|
40 $ echo n > n |
|
41 $ echo o > o |
|
42 $ hg ci -Am addmore |
|
43 adding b |
|
44 adding c |
|
45 adding d |
|
46 adding f |
|
47 adding g |
|
48 adding j |
|
49 adding m |
|
50 adding n |
|
51 adding o |
|
52 created new head |
|
53 $ hg merge |
|
54 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
55 (branch merge, don't forget to commit) |
|
56 $ hg uncommit |
|
57 abort: cannot uncommit while merging |
|
58 [255] |
|
59 $ hg ci -m merge |
|
60 $ hg uncommit |
|
61 abort: cannot uncommit merge changeset |
|
62 [255] |
|
63 |
|
64 Prepare complicated changeset |
|
65 |
|
66 $ hg branch bar |
|
67 marked working directory as branch bar |
|
68 (branches are permanent and global, did you want a bookmark?) |
|
69 $ hg cp a aa |
|
70 $ echo b >> b |
|
71 $ hg rm c |
|
72 $ echo d >> d |
|
73 $ echo e > e |
|
74 $ hg mv f ff |
|
75 $ hg mv g h |
|
76 $ echo j >> j |
|
77 $ echo k > k |
|
78 $ echo l > l |
|
79 $ hg rm m |
|
80 $ hg rm n |
|
81 $ echo o >> o |
|
82 $ hg ci -Am touncommit |
|
83 adding e |
|
84 adding k |
|
85 adding l |
|
86 $ hg st --copies --change . |
|
87 M b |
|
88 M d |
|
89 M j |
|
90 M o |
|
91 A aa |
|
92 a |
|
93 A e |
|
94 A ff |
|
95 f |
|
96 A h |
|
97 g |
|
98 A k |
|
99 A l |
|
100 R c |
|
101 R f |
|
102 R g |
|
103 R m |
|
104 R n |
|
105 $ hg man -r . |
|
106 a |
|
107 aa |
|
108 b |
|
109 d |
|
110 e |
|
111 ff |
|
112 h |
|
113 j |
|
114 k |
|
115 l |
|
116 o |
|
117 |
|
118 Add a couple of bookmarks |
|
119 |
|
120 $ glog --hidden |
|
121 @ 3:5eb72dbe0cb4@bar(draft) touncommit |
|
122 | |
|
123 o 2:f63b90038565@default(draft) merge |
|
124 |\ |
|
125 | o 1:f15c744d48e8@default(draft) addmore |
|
126 | |
|
127 o 0:07f494440405@default(draft) adda |
|
128 |
|
129 $ hg bookmark -r 2 unrelated |
|
130 $ hg bookmark touncommit-bm |
|
131 $ hg bookmark --inactive touncommit-bm-inactive |
|
132 $ hg bookmarks |
|
133 * touncommit-bm 3:5eb72dbe0cb4 |
|
134 touncommit-bm-inactive 3:5eb72dbe0cb4 |
|
135 unrelated 2:f63b90038565 |
|
136 |
|
137 Prepare complicated working directory |
|
138 |
|
139 $ hg branch foo |
|
140 marked working directory as branch foo |
|
141 $ hg mv ff f |
|
142 $ hg mv h i |
|
143 $ hg rm j |
|
144 $ hg rm k |
|
145 $ echo l >> l |
|
146 $ echo m > m |
|
147 $ echo o > o |
|
148 |
|
149 Test uncommit without argument, should be a no-op |
|
150 |
|
151 $ hg uncommit |
|
152 abort: nothing to uncommit |
|
153 (use --all to uncommit all files) |
|
154 [255] |
|
155 $ hg bookmarks |
|
156 * touncommit-bm 3:5eb72dbe0cb4 |
|
157 touncommit-bm-inactive 3:5eb72dbe0cb4 |
|
158 unrelated 2:f63b90038565 |
|
159 |
|
160 Test no matches |
|
161 |
|
162 $ hg uncommit --include nothere |
|
163 abort: nothing to uncommit |
|
164 (use --all to uncommit all files) |
|
165 [255] |
|
166 |
|
167 Enjoy uncommit |
|
168 |
|
169 $ hg uncommit aa b c f ff g h j k l m o |
|
170 $ hg branch |
|
171 foo |
|
172 $ hg st --copies |
|
173 M b |
|
174 A aa |
|
175 a |
|
176 A i |
|
177 g |
|
178 A l |
|
179 R c |
|
180 R g |
|
181 R j |
|
182 R m |
|
183 $ cat aa |
|
184 a |
|
185 $ cat b |
|
186 b |
|
187 b |
|
188 $ cat l |
|
189 l |
|
190 l |
|
191 $ cat m |
|
192 m |
|
193 $ test -f c && echo 'error: c was removed!' |
|
194 [1] |
|
195 $ test -f j && echo 'error: j was removed!' |
|
196 [1] |
|
197 $ test -f k && echo 'error: k was removed!' |
|
198 [1] |
|
199 $ hg st --copies --change . |
|
200 M d |
|
201 A e |
|
202 R n |
|
203 $ hg man -r . |
|
204 a |
|
205 b |
|
206 c |
|
207 d |
|
208 e |
|
209 f |
|
210 g |
|
211 j |
|
212 m |
|
213 o |
|
214 $ hg cat -r . d |
|
215 d |
|
216 d |
|
217 $ hg cat -r . e |
|
218 e |
|
219 $ glog --hidden |
|
220 @ 4:e8db4aa611f6@bar(draft) touncommit |
|
221 | |
|
222 | x 3:5eb72dbe0cb4@bar(obsolete/draft) touncommit |
|
223 |/ |
|
224 o 2:f63b90038565@default(draft) merge |
|
225 |\ |
|
226 | o 1:f15c744d48e8@default(draft) addmore |
|
227 | |
|
228 o 0:07f494440405@default(draft) adda |
|
229 |
|
230 $ hg bookmarks |
|
231 * touncommit-bm 4:e8db4aa611f6 |
|
232 touncommit-bm-inactive 4:e8db4aa611f6 |
|
233 unrelated 2:f63b90038565 |
|
234 $ hg debugobsolete |
|
235 5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 e8db4aa611f6d5706374288e6898e498f5c44098 0 (*) {'user': 'test'} (glob) |
|
236 |
|
237 Test phase is preserved, no local changes |
|
238 |
|
239 $ hg up -C 3 --hidden |
|
240 8 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
241 (leaving bookmark touncommit-bm) |
|
242 working directory parent is obsolete! |
|
243 (use 'hg evolve' to update to its successor) |
|
244 $ hg --config extensions.purge= purge |
|
245 $ hg uncommit -I 'set:added() and e' |
|
246 2 new divergent changesets |
|
247 $ hg st --copies |
|
248 A e |
|
249 $ hg st --copies --change . |
|
250 M b |
|
251 M d |
|
252 M j |
|
253 M o |
|
254 A aa |
|
255 a |
|
256 A ff |
|
257 f |
|
258 A h |
|
259 g |
|
260 A k |
|
261 A l |
|
262 R c |
|
263 R f |
|
264 R g |
|
265 R m |
|
266 R n |
|
267 $ glog --hidden |
|
268 @ 5:a1d4c1ad76cc@bar(draft) touncommit |
|
269 | |
|
270 | o 4:e8db4aa611f6@bar(draft) touncommit |
|
271 |/ |
|
272 | x 3:5eb72dbe0cb4@bar(obsolete/draft) touncommit |
|
273 |/ |
|
274 o 2:f63b90038565@default(draft) merge |
|
275 |\ |
|
276 | o 1:f15c744d48e8@default(draft) addmore |
|
277 | |
|
278 o 0:07f494440405@default(draft) adda |
|
279 |
|
280 $ hg debugobsolete |
|
281 5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 e8db4aa611f6d5706374288e6898e498f5c44098 0 (*) {'user': 'test'} (glob) |
|
282 5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 a1d4c1ad76cc7eb5e8a36ef52396da334b6d59c5 0 (*) {'user': 'test'} (glob) |
|
283 |
|
284 Test --all |
|
285 |
|
286 $ hg up -C 3 --hidden |
|
287 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
288 working directory parent is obsolete! |
|
289 (use 'hg evolve' to update to its successor) |
|
290 $ hg --config extensions.purge= purge |
|
291 $ hg uncommit --all -X e |
|
292 1 new divergent changesets |
|
293 $ hg st --copies |
|
294 M b |
|
295 M d |
|
296 M j |
|
297 M o |
|
298 A aa |
|
299 a |
|
300 A ff |
|
301 f |
|
302 A h |
|
303 g |
|
304 A k |
|
305 A l |
|
306 R c |
|
307 R f |
|
308 R g |
|
309 R m |
|
310 R n |
|
311 $ hg st --copies --change . |
|
312 A e |
|
313 |
|
314 $ hg debugobsolete |
|
315 5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 e8db4aa611f6d5706374288e6898e498f5c44098 0 (*) {'user': 'test'} (glob) |
|
316 5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 a1d4c1ad76cc7eb5e8a36ef52396da334b6d59c5 0 (*) {'user': 'test'} (glob) |
|
317 5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 c4cbebac3751269bdf12d1466deabcc78521d272 0 (*) {'user': 'test'} (glob) |
|
318 |
|
319 Display a warning if nothing left |
|
320 |
|
321 $ hg uncommit e |
|
322 new changeset is empty |
|
323 (use 'hg prune .' to remove it) |
|
324 $ hg debugobsolete |
|
325 5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 e8db4aa611f6d5706374288e6898e498f5c44098 0 (*) {'user': 'test'} (glob) |
|
326 5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 a1d4c1ad76cc7eb5e8a36ef52396da334b6d59c5 0 (*) {'user': 'test'} (glob) |
|
327 5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 c4cbebac3751269bdf12d1466deabcc78521d272 0 (*) {'user': 'test'} (glob) |
|
328 c4cbebac3751269bdf12d1466deabcc78521d272 4f1c269eab68720f54e88ce3c1dc02b2858b6b89 0 (*) {'user': 'test'} (glob) |
|
329 |
|
330 Test instability warning |
|
331 |
|
332 $ hg ci -m touncommit |
|
333 $ echo unrelated > unrelated |
|
334 $ hg ci -Am addunrelated unrelated |
|
335 $ hg previous |
|
336 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
337 [8] touncommit |
|
338 $ hg uncommit aa |
|
339 1 new unstable changesets |
|
340 |
|
341 Test uncommiting agains a different base |
|
342 |
|
343 $ hg cat b --rev . |
|
344 b |
|
345 b |
|
346 $ hg cat b --rev .^ |
|
347 b |
|
348 $ hg cat b --rev 0 |
|
349 b: no such file in rev 07f494440405 |
|
350 [1] |
|
351 $ hg uncommit --rev . b |
|
352 abort: cannot uncommit to parent changeset |
|
353 [255] |
|
354 $ hg uncommit --rev 0 b |
|
355 $ hg cat b --rev . |
|
356 b: no such file in rev 5b27f6b17da2 |
|
357 [1] |
|
358 |
|
359 Test uncommiting precursors |
|
360 |
|
361 $ hg uncommit --hidden --rev 'precursors(.)' b |
|
362 $ hg cat b --rev . |
|
363 b |
|
364 b |