1 Tests for the --abort flag for `hg evolve` command while content-divergence resolution |
|
2 ====================================================================================== |
|
3 |
|
4 The `--abort` flag aborts the interuppted evolve by undoing all the work which |
|
5 was done during resolution i.e. stripping new changesets created, moving |
|
6 bookmarks back, moving working directory back. |
|
7 |
|
8 This test contains cases when `hg evolve` is doing content-divergence resolution. |
|
9 |
|
10 Setup |
|
11 ===== |
|
12 |
|
13 $ cat >> $HGRCPATH <<EOF |
|
14 > [phases] |
|
15 > publish = False |
|
16 > [alias] |
|
17 > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}" |
|
18 > [extensions] |
|
19 > EOF |
|
20 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH |
|
21 |
|
22 $ hg init abortrepo |
|
23 $ cd abortrepo |
|
24 $ echo ".*\.orig" > .hgignore |
|
25 $ hg add .hgignore |
|
26 $ hg ci -m "added hgignore" |
|
27 $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done; |
|
28 |
|
29 $ hg glog |
|
30 @ 4:c41c793e0ef1 added d |
|
31 | () draft |
|
32 o 3:ca1b80f7960a added c |
|
33 | () draft |
|
34 o 2:b1661037fa25 added b |
|
35 | () draft |
|
36 o 1:c7586e2a9264 added a |
|
37 | () draft |
|
38 o 0:8fa14d15e168 added hgignore |
|
39 () draft |
|
40 |
|
41 Creating content divergence, resolution of which will lead to conflicts |
|
42 ----------------------------------------------------------------------- |
|
43 |
|
44 $ echo bar > d |
|
45 $ hg amend |
|
46 |
|
47 $ hg up c41c793e0ef1 --hidden |
|
48 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
49 updated to hidden changeset c41c793e0ef1 |
|
50 (hidden revision 'c41c793e0ef1' was rewritten as: e49523854bc8) |
|
51 working directory parent is obsolete! (c41c793e0ef1) |
|
52 (use 'hg evolve' to update to its successor: e49523854bc8) |
|
53 |
|
54 $ echo foobar > d |
|
55 $ hg amend |
|
56 2 new content-divergent changesets |
|
57 $ hg glog --hidden |
|
58 @ 6:9c1631e352d9 added d |
|
59 | () draft |
|
60 | * 5:e49523854bc8 added d |
|
61 |/ () draft |
|
62 | x 4:c41c793e0ef1 added d |
|
63 |/ () draft |
|
64 o 3:ca1b80f7960a added c |
|
65 | () draft |
|
66 o 2:b1661037fa25 added b |
|
67 | () draft |
|
68 o 1:c7586e2a9264 added a |
|
69 | () draft |
|
70 o 0:8fa14d15e168 added hgignore |
|
71 () draft |
|
72 |
|
73 $ hg evolve --content-divergent |
|
74 merge:[6] added d |
|
75 with: [5] added d |
|
76 base: [4] added d |
|
77 merging "other" content-divergent changeset 'e49523854bc8' |
|
78 merging d |
|
79 warning: conflicts while merging d! (edit, then use 'hg resolve --mark') |
|
80 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
81 fix conflicts and see `hg help evolve.interrupted` |
|
82 [1] |
|
83 |
|
84 $ hg status -v |
|
85 M d |
|
86 # The repository is in an unfinished *evolve* state. |
|
87 |
|
88 # Unresolved merge conflicts: |
|
89 # |
|
90 # d |
|
91 # |
|
92 # To mark files as resolved: hg resolve --mark FILE |
|
93 |
|
94 # To continue: hg evolve --continue |
|
95 # To abort: hg evolve --abort |
|
96 # To stop: hg evolve --stop |
|
97 # (also see `hg help evolve.interrupted`) |
|
98 |
|
99 $ hg parents |
|
100 changeset: 6:9c1631e352d9 |
|
101 tag: tip |
|
102 parent: 3:ca1b80f7960a |
|
103 user: test |
|
104 date: Thu Jan 01 00:00:00 1970 +0000 |
|
105 instability: content-divergent |
|
106 summary: added d |
|
107 |
|
108 changeset: 5:e49523854bc8 |
|
109 parent: 3:ca1b80f7960a |
|
110 user: test |
|
111 date: Thu Jan 01 00:00:00 1970 +0000 |
|
112 instability: content-divergent |
|
113 summary: added d |
|
114 |
|
115 |
|
116 $ hg evolve --abort |
|
117 evolve aborted |
|
118 working directory is now at 9c1631e352d9 |
|
119 |
|
120 $ hg glog --hidden |
|
121 @ 6:9c1631e352d9 added d |
|
122 | () draft |
|
123 | * 5:e49523854bc8 added d |
|
124 |/ () draft |
|
125 | x 4:c41c793e0ef1 added d |
|
126 |/ () draft |
|
127 o 3:ca1b80f7960a added c |
|
128 | () draft |
|
129 o 2:b1661037fa25 added b |
|
130 | () draft |
|
131 o 1:c7586e2a9264 added a |
|
132 | () draft |
|
133 o 0:8fa14d15e168 added hgignore |
|
134 () draft |
|
135 |
|
136 Creating multiple content-divergence where resolution of last one results in |
|
137 conflicts and resolution of first one resulted in no new commit |
|
138 ----------------------------------------------------------------------------- |
|
139 |
|
140 $ echo watbar > d |
|
141 $ hg amend |
|
142 $ hg up .^ |
|
143 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
144 $ echo bar > c |
|
145 $ hg amend |
|
146 2 new orphan changesets |
|
147 $ hg up ca1b80f7960a --hidden |
|
148 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
149 working directory parent is obsolete! (ca1b80f7960a) |
|
150 (use 'hg evolve' to update to its successor: 2ba73e31f264) |
|
151 $ echo foobar > c |
|
152 $ hg amend |
|
153 2 new content-divergent changesets |
|
154 $ echo bar > c |
|
155 $ hg amend |
|
156 |
|
157 $ hg glog --hidden |
|
158 @ 10:491e10505bae added c |
|
159 | () draft |
|
160 | x 9:7398f702a162 added c |
|
161 |/ () draft |
|
162 | * 8:2ba73e31f264 added c |
|
163 |/ () draft |
|
164 | * 7:f0f1694f123e added d |
|
165 | | () draft |
|
166 | | x 6:9c1631e352d9 added d |
|
167 | |/ () draft |
|
168 | | * 5:e49523854bc8 added d |
|
169 | |/ () draft |
|
170 | | x 4:c41c793e0ef1 added d |
|
171 | |/ () draft |
|
172 | x 3:ca1b80f7960a added c |
|
173 |/ () draft |
|
174 o 2:b1661037fa25 added b |
|
175 | () draft |
|
176 o 1:c7586e2a9264 added a |
|
177 | () draft |
|
178 o 0:8fa14d15e168 added hgignore |
|
179 () draft |
|
180 |
|
181 $ hg evolve --all --content-divergent |
|
182 merge:[8] added c |
|
183 with: [10] added c |
|
184 base: [3] added c |
|
185 updating to "local" side of the conflict: 2ba73e31f264 |
|
186 merging "other" content-divergent changeset '491e10505bae' |
|
187 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
188 merge:[5] added d |
|
189 with: [7] added d |
|
190 base: [4] added d |
|
191 updating to "local" side of the conflict: e49523854bc8 |
|
192 merging "other" content-divergent changeset 'f0f1694f123e' |
|
193 merging d |
|
194 warning: conflicts while merging d! (edit, then use 'hg resolve --mark') |
|
195 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
196 fix conflicts and see `hg help evolve.interrupted` |
|
197 [1] |
|
198 |
|
199 $ hg evolve --abort |
|
200 2 new content-divergent changesets |
|
201 evolve aborted |
|
202 working directory is now at 491e10505bae |
|
203 |
|
204 $ hg glog --hidden |
|
205 @ 10:491e10505bae added c |
|
206 | () draft |
|
207 | x 9:7398f702a162 added c |
|
208 |/ () draft |
|
209 | * 8:2ba73e31f264 added c |
|
210 |/ () draft |
|
211 | * 7:f0f1694f123e added d |
|
212 | | () draft |
|
213 | | x 6:9c1631e352d9 added d |
|
214 | |/ () draft |
|
215 | | * 5:e49523854bc8 added d |
|
216 | |/ () draft |
|
217 | | x 4:c41c793e0ef1 added d |
|
218 | |/ () draft |
|
219 | x 3:ca1b80f7960a added c |
|
220 |/ () draft |
|
221 o 2:b1661037fa25 added b |
|
222 | () draft |
|
223 o 1:c7586e2a9264 added a |
|
224 | () draft |
|
225 o 0:8fa14d15e168 added hgignore |
|
226 () draft |
|
227 |
|
228 $ hg obslog -r . --all |
|
229 * 2ba73e31f264 (8) added c |
|
230 | |
|
231 | @ 491e10505bae (10) added c |
|
232 | | |
|
233 | x 7398f702a162 (9) added c |
|
234 |/ rewritten(content) as 491e10505bae using amend by test (Thu Jan 01 00:00:00 1970 +0000) |
|
235 | |
|
236 x ca1b80f7960a (3) added c |
|
237 rewritten(content) as 2ba73e31f264 using amend by test (Thu Jan 01 00:00:00 1970 +0000) |
|
238 rewritten(content) as 7398f702a162 using amend by test (Thu Jan 01 00:00:00 1970 +0000) |
|
239 |
|
240 $ cd .. |
|
241 |
|
242 Creating content-divergence on multiple parents when gca of divergent changesets |
|
243 is parent of one of the divergents and relocating leads to conflicts |
|
244 --------------------------------------------------------------------------------- |
|
245 |
|
246 $ hg init multiparent |
|
247 $ cd multiparent |
|
248 $ echo ".*\.orig" > .hgignore |
|
249 $ hg add .hgignore |
|
250 $ hg ci -m "added hgignore" |
|
251 $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done; |
|
252 |
|
253 $ hg glog |
|
254 @ 4:c41c793e0ef1 added d |
|
255 | () draft |
|
256 o 3:ca1b80f7960a added c |
|
257 | () draft |
|
258 o 2:b1661037fa25 added b |
|
259 | () draft |
|
260 o 1:c7586e2a9264 added a |
|
261 | () draft |
|
262 o 0:8fa14d15e168 added hgignore |
|
263 () draft |
|
264 |
|
265 $ hg rebase -r . -d .^^^ --config extensions.rebase= |
|
266 rebasing 4:c41c793e0ef1 "added d" (tip) |
|
267 $ echo bar > c |
|
268 $ hg add c |
|
269 $ hg amend |
|
270 |
|
271 $ hg up --hidden c41c793e0ef1 |
|
272 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
273 updated to hidden changeset c41c793e0ef1 |
|
274 (hidden revision 'c41c793e0ef1' was rewritten as: 69bdd23a9b0d) |
|
275 working directory parent is obsolete! (c41c793e0ef1) |
|
276 (use 'hg evolve' to update to its successor: 69bdd23a9b0d) |
|
277 $ echo bar > d |
|
278 $ hg amend |
|
279 2 new content-divergent changesets |
|
280 |
|
281 $ hg glog |
|
282 @ 7:e49523854bc8 added d |
|
283 | () draft |
|
284 | * 6:69bdd23a9b0d added d |
|
285 | | () draft |
|
286 o | 3:ca1b80f7960a added c |
|
287 | | () draft |
|
288 o | 2:b1661037fa25 added b |
|
289 |/ () draft |
|
290 o 1:c7586e2a9264 added a |
|
291 | () draft |
|
292 o 0:8fa14d15e168 added hgignore |
|
293 () draft |
|
294 |
|
295 $ hg evolve --content-divergent |
|
296 merge:[7] added d |
|
297 with: [6] added d |
|
298 base: [4] added d |
|
299 rebasing "other" content-divergent changeset 69bdd23a9b0d on ca1b80f7960a |
|
300 merging c |
|
301 warning: conflicts while merging c! (edit, then use 'hg resolve --mark') |
|
302 fix conflicts and see `hg help evolve.interrupted` |
|
303 [1] |
|
304 |
|
305 $ hg evolve --abort |
|
306 evolve aborted |
|
307 working directory is now at e49523854bc8 |
|
308 |
|
309 $ hg glog |
|
310 @ 7:e49523854bc8 added d |
|
311 | () draft |
|
312 | * 6:69bdd23a9b0d added d |
|
313 | | () draft |
|
314 o | 3:ca1b80f7960a added c |
|
315 | | () draft |
|
316 o | 2:b1661037fa25 added b |
|
317 |/ () draft |
|
318 o 1:c7586e2a9264 added a |
|
319 | () draft |
|
320 o 0:8fa14d15e168 added hgignore |
|
321 () draft |
|
322 |
|
323 Creating content-divergence on multiple parents when gca of divergent changesets |
|
324 is parent of one of the divergents and merging divergent leads to conflicts |
|
325 --------------------------------------------------------------------------------- |
|
326 |
|
327 $ hg up 69bdd23a9b0d |
|
328 2 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
329 $ hg rm c |
|
330 $ echo wat > d |
|
331 $ hg amend |
|
332 |
|
333 $ hg glog |
|
334 @ 8:33e4442acf98 added d |
|
335 | () draft |
|
336 | * 7:e49523854bc8 added d |
|
337 | | () draft |
|
338 | o 3:ca1b80f7960a added c |
|
339 | | () draft |
|
340 | o 2:b1661037fa25 added b |
|
341 |/ () draft |
|
342 o 1:c7586e2a9264 added a |
|
343 | () draft |
|
344 o 0:8fa14d15e168 added hgignore |
|
345 () draft |
|
346 |
|
347 $ hg evolve --content-divergent |
|
348 merge:[7] added d |
|
349 with: [8] added d |
|
350 base: [4] added d |
|
351 rebasing "other" content-divergent changeset 33e4442acf98 on ca1b80f7960a |
|
352 updating to "local" side of the conflict: e49523854bc8 |
|
353 merging "other" content-divergent changeset 'a663d1567f0b' |
|
354 merging d |
|
355 warning: conflicts while merging d! (edit, then use 'hg resolve --mark') |
|
356 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
357 fix conflicts and see `hg help evolve.interrupted` |
|
358 [1] |
|
359 |
|
360 $ hg evolve --abort |
|
361 evolve aborted |
|
362 working directory is now at 33e4442acf98 |
|
363 |
|
364 $ hg glog |
|
365 @ 8:33e4442acf98 added d |
|
366 | () draft |
|
367 | * 7:e49523854bc8 added d |
|
368 | | () draft |
|
369 | o 3:ca1b80f7960a added c |
|
370 | | () draft |
|
371 | o 2:b1661037fa25 added b |
|
372 |/ () draft |
|
373 o 1:c7586e2a9264 added a |
|
374 | () draft |
|
375 o 0:8fa14d15e168 added hgignore |
|
376 () draft |
|