Mercurial > hg
comparison tests/test-unamend.t @ 35182:867990238dc6
unamend: move fb extension unamend to core
unamend extension adds an unamend command which undoes the effect of the amend
command. This patch moves the unamend command from that extension to uncommit
extension and this one does not completely undoes the effect of amend command as
it creates a new commit, rather than reviving the old one back.
This also adds tests for the same.
.. feature::
A new unamend command in uncommit extension which undoes the effect of the
amend command by creating a new changeset which was there before amend and
moving the changes that were amended to the working directory.
Differential Revision: https://phab.mercurial-scm.org/D821
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Sun, 24 Sep 2017 00:56:52 +0530 |
parents | |
children | 900ed9853017 |
comparison
equal
deleted
inserted
replaced
35181:d4805a5e7e70 | 35182:867990238dc6 |
---|---|
1 Test for command `hg unamend` which lives in uncommit extension | |
2 =============================================================== | |
3 | |
4 $ cat >> $HGRCPATH << EOF | |
5 > [alias] | |
6 > glog = log -G -T '{rev}:{node|short} {desc}' | |
7 > [experimental] | |
8 > evolution = createmarkers, allowunstable | |
9 > [extensions] | |
10 > rebase = | |
11 > amend = | |
12 > uncommit = | |
13 > EOF | |
14 | |
15 Repo Setup | |
16 | |
17 $ hg init repo | |
18 $ cd repo | |
19 $ for ch in {a..h}; do touch $ch; echo "foo" >> $ch; hg ci -Aqm "Added "$ch; done | |
20 | |
21 $ hg glog | |
22 @ 7:ec2426147f0e Added h | |
23 | | |
24 o 6:87d6d6676308 Added g | |
25 | | |
26 o 5:825660c69f0c Added f | |
27 | | |
28 o 4:aa98ab95a928 Added e | |
29 | | |
30 o 3:62615734edd5 Added d | |
31 | | |
32 o 2:28ad74487de9 Added c | |
33 | | |
34 o 1:29becc82797a Added b | |
35 | | |
36 o 0:18d04c59bb5d Added a | |
37 | |
38 Trying to unamend when there was no amend done | |
39 | |
40 $ hg unamend | |
41 abort: changeset must have one predecessor, found 0 predecessors | |
42 [255] | |
43 | |
44 Unamend on clean wdir and tip | |
45 | |
46 $ echo "bar" >> h | |
47 $ hg amend | |
48 | |
49 $ hg exp | |
50 # HG changeset patch | |
51 # User test | |
52 # Date 0 0 | |
53 # Thu Jan 01 00:00:00 1970 +0000 | |
54 # Node ID c9fa1a715c1b7661c0fafb362a9f30bd75878d7d | |
55 # Parent 87d6d66763085b629e6d7ed56778c79827273022 | |
56 Added h | |
57 | |
58 diff -r 87d6d6676308 -r c9fa1a715c1b h | |
59 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
60 +++ b/h Thu Jan 01 00:00:00 1970 +0000 | |
61 @@ -0,0 +1,2 @@ | |
62 +foo | |
63 +bar | |
64 | |
65 $ hg glog --hidden | |
66 @ 8:c9fa1a715c1b Added h | |
67 | | |
68 | x 7:ec2426147f0e Added h | |
69 |/ | |
70 o 6:87d6d6676308 Added g | |
71 | | |
72 o 5:825660c69f0c Added f | |
73 | | |
74 o 4:aa98ab95a928 Added e | |
75 | | |
76 o 3:62615734edd5 Added d | |
77 | | |
78 o 2:28ad74487de9 Added c | |
79 | | |
80 o 1:29becc82797a Added b | |
81 | | |
82 o 0:18d04c59bb5d Added a | |
83 | |
84 $ hg unamend | |
85 $ hg glog --hidden | |
86 @ 9:8da14a1fd653 Added h | |
87 | | |
88 | x 8:c9fa1a715c1b Added h | |
89 |/ | |
90 | x 7:ec2426147f0e Added h | |
91 |/ | |
92 o 6:87d6d6676308 Added g | |
93 | | |
94 o 5:825660c69f0c Added f | |
95 | | |
96 o 4:aa98ab95a928 Added e | |
97 | | |
98 o 3:62615734edd5 Added d | |
99 | | |
100 o 2:28ad74487de9 Added c | |
101 | | |
102 o 1:29becc82797a Added b | |
103 | | |
104 o 0:18d04c59bb5d Added a | |
105 | |
106 $ hg diff | |
107 diff -r 8da14a1fd653 h | |
108 --- a/h Thu Jan 01 00:00:00 1970 +0000 | |
109 +++ b/h Thu Jan 01 00:00:00 1970 +0000 | |
110 @@ -1,1 +1,2 @@ | |
111 foo | |
112 +bar | |
113 | |
114 $ hg exp | |
115 # HG changeset patch | |
116 # User test | |
117 # Date 0 0 | |
118 # Thu Jan 01 00:00:00 1970 +0000 | |
119 # Node ID 8da14a1fd653c3f07fdad5760511c9e12652a306 | |
120 # Parent 87d6d66763085b629e6d7ed56778c79827273022 | |
121 Added h | |
122 | |
123 diff -r 87d6d6676308 -r 8da14a1fd653 h | |
124 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
125 +++ b/h Thu Jan 01 00:00:00 1970 +0000 | |
126 @@ -0,0 +1,1 @@ | |
127 +foo | |
128 | |
129 $ hg status | |
130 M h | |
131 | |
132 $ hg log -r . -T '{extras % "{extra}\n"}' --config alias.log=log | |
133 branch=default | |
134 unamend_source=\xc9\xfa\x1aq\\\x1bva\xc0\xfa\xfb6*\x9f0\xbdu\x87\x8d} | |
135 | |
136 Using unamend to undo an unamed (intentional) | |
137 | |
138 $ hg unamend | |
139 $ hg exp | |
140 # HG changeset patch | |
141 # User test | |
142 # Date 0 0 | |
143 # Thu Jan 01 00:00:00 1970 +0000 | |
144 # Node ID 1c09887216571a9755fc9d2e7f0e41c2b49e341b | |
145 # Parent 87d6d66763085b629e6d7ed56778c79827273022 | |
146 Added h | |
147 | |
148 diff -r 87d6d6676308 -r 1c0988721657 h | |
149 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
150 +++ b/h Thu Jan 01 00:00:00 1970 +0000 | |
151 @@ -0,0 +1,2 @@ | |
152 +foo | |
153 +bar | |
154 $ hg diff | |
155 | |
156 Unamend on a dirty working directory | |
157 | |
158 $ echo "bar" >> a | |
159 $ hg amend | |
160 $ echo "foobar" >> a | |
161 $ echo "bar" >> b | |
162 $ hg status | |
163 M a | |
164 M b | |
165 | |
166 $ hg unamend | |
167 | |
168 $ hg status | |
169 M a | |
170 M b | |
171 | |
172 $ hg diff | |
173 diff -r 956548224719 a | |
174 --- a/a Thu Jan 01 00:00:00 1970 +0000 | |
175 +++ b/a Thu Jan 01 00:00:00 1970 +0000 | |
176 @@ -1,1 +1,3 @@ | |
177 foo | |
178 +bar | |
179 +foobar | |
180 diff -r 956548224719 b | |
181 --- a/b Thu Jan 01 00:00:00 1970 +0000 | |
182 +++ b/b Thu Jan 01 00:00:00 1970 +0000 | |
183 @@ -1,1 +1,2 @@ | |
184 foo | |
185 +bar | |
186 | |
187 Unamending an added file | |
188 | |
189 $ hg ci -m "Added things to a and b" | |
190 $ echo foo > bar | |
191 $ hg add bar | |
192 $ hg amend | |
193 | |
194 $ hg unamend | |
195 $ hg status | |
196 A bar | |
197 | |
198 $ hg revert --all | |
199 forgetting bar | |
200 | |
201 Unamending a removed file | |
202 | |
203 $ hg remove a | |
204 $ hg amend | |
205 | |
206 $ hg unamend | |
207 $ hg status | |
208 R a | |
209 ? bar | |
210 | |
211 $ hg revert --all | |
212 undeleting a | |
213 | |
214 Unamending an added file with dirty wdir status | |
215 | |
216 $ hg add bar | |
217 $ hg amend | |
218 $ echo bar >> bar | |
219 $ hg status | |
220 M bar | |
221 | |
222 $ hg unamend | |
223 $ hg status | |
224 A bar | |
225 $ hg diff | |
226 diff -r ff917aa01c86 bar | |
227 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
228 +++ b/bar Thu Jan 01 00:00:00 1970 +0000 | |
229 @@ -0,0 +1,2 @@ | |
230 +foo | |
231 +bar | |
232 | |
233 $ hg revert --all | |
234 forgetting bar | |
235 | |
236 Unamending in middle of a stack | |
237 | |
238 $ hg glog | |
239 @ 19:ff917aa01c86 Added things to a and b | |
240 | | |
241 o 12:956548224719 Added h | |
242 | | |
243 o 6:87d6d6676308 Added g | |
244 | | |
245 o 5:825660c69f0c Added f | |
246 | | |
247 o 4:aa98ab95a928 Added e | |
248 | | |
249 o 3:62615734edd5 Added d | |
250 | | |
251 o 2:28ad74487de9 Added c | |
252 | | |
253 o 1:29becc82797a Added b | |
254 | | |
255 o 0:18d04c59bb5d Added a | |
256 | |
257 $ hg up 5 | |
258 2 files updated, 0 files merged, 2 files removed, 0 files unresolved | |
259 $ echo bar >> f | |
260 $ hg amend | |
261 $ hg rebase -s 6 -d . -q | |
262 | |
263 $ hg glog | |
264 o 23:2b41b42e192a Added things to a and b | |
265 | | |
266 o 22:1860df151f01 Added h | |
267 | | |
268 o 21:49635b68477e Added g | |
269 | | |
270 @ 20:93f0e8ffab32 Added f | |
271 | | |
272 o 4:aa98ab95a928 Added e | |
273 | | |
274 o 3:62615734edd5 Added d | |
275 | | |
276 o 2:28ad74487de9 Added c | |
277 | | |
278 o 1:29becc82797a Added b | |
279 | | |
280 o 0:18d04c59bb5d Added a | |
281 | |
282 | |
283 $ hg unamend | |
284 abort: cannot unamend a changeset with children | |
285 [255] | |
286 | |
287 Trying to unamend a public changeset | |
288 | |
289 $ hg up | |
290 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
291 $ hg phase -r . -p | |
292 $ hg unamend | |
293 abort: cannot unamend public changesets | |
294 [255] | |
295 | |
296 Testing whether unamend retains copies or not | |
297 | |
298 $ hg status | |
299 ? bar | |
300 | |
301 $ hg mv a foo | |
302 | |
303 $ hg ci -m "Moved a to foo" | |
304 $ hg exp --git | |
305 # HG changeset patch | |
306 # User test | |
307 # Date 0 0 | |
308 # Thu Jan 01 00:00:00 1970 +0000 | |
309 # Node ID b087c66cada118d6c5487d3d7cb29cac239bd98a | |
310 # Parent 2b41b42e192adc425b106643c3fc89170d6b8add | |
311 Moved a to foo | |
312 | |
313 diff --git a/a b/foo | |
314 rename from a | |
315 rename to foo | |
316 | |
317 $ hg mv b foobar | |
318 $ hg diff --git | |
319 diff --git a/b b/foobar | |
320 rename from b | |
321 rename to foobar | |
322 $ hg amend | |
323 | |
324 $ hg exp --git | |
325 # HG changeset patch | |
326 # User test | |
327 # Date 0 0 | |
328 # Thu Jan 01 00:00:00 1970 +0000 | |
329 # Node ID 9fa06fb09a83a86ec7368d15004dbc52ac1a5d2e | |
330 # Parent 2b41b42e192adc425b106643c3fc89170d6b8add | |
331 Moved a to foo | |
332 | |
333 diff --git a/a b/foo | |
334 rename from a | |
335 rename to foo | |
336 diff --git a/b b/foobar | |
337 rename from b | |
338 rename to foobar | |
339 | |
340 $ hg mv c wat | |
341 $ hg unamend | |
342 | |
343 Retained copies in new prdecessor commit | |
344 | |
345 $ hg exp --git | |
346 # HG changeset patch | |
347 # User test | |
348 # Date 0 0 | |
349 # Thu Jan 01 00:00:00 1970 +0000 | |
350 # Node ID 4cf9987c9b941f615930e7c46307b4dbf35697cf | |
351 # Parent 2b41b42e192adc425b106643c3fc89170d6b8add | |
352 Moved a to foo | |
353 | |
354 diff --git a/a b/foo | |
355 rename from a | |
356 rename to foo | |
357 | |
358 Retained copies in working directoy | |
359 | |
360 $ hg diff --git | |
361 diff --git a/b b/foobar | |
362 rename from b | |
363 rename to foobar | |
364 diff --git a/c b/wat | |
365 rename from c | |
366 rename to wat |