|
1 ** Testing resolution of orphans by `hg evolve` when merges are involved ** |
|
2 |
|
3 $ cat >> $HGRCPATH <<EOF |
|
4 > [ui] |
|
5 > interactive = True |
|
6 > [alias] |
|
7 > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}" |
|
8 > [extensions] |
|
9 > rebase = |
|
10 > EOF |
|
11 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH |
|
12 |
|
13 Repo Setup |
|
14 |
|
15 $ hg init repo |
|
16 $ cd repo |
|
17 $ echo ".*\.orig" > .hgignore |
|
18 $ hg add .hgignore |
|
19 $ hg ci -m "added hgignore" |
|
20 |
|
21 An orphan merge changeset with one of the parent obsoleted |
|
22 ========================================================== |
|
23 |
|
24 1) When merging both the parents does not result in conflicts |
|
25 ------------------------------------------------------------- |
|
26 |
|
27 $ echo foo > a |
|
28 $ hg ci -Aqm "added a" |
|
29 $ hg up .^ |
|
30 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
31 $ echo foo > b |
|
32 $ hg ci -Aqm "added b" |
|
33 $ hg merge |
|
34 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
35 (branch merge, don't forget to commit) |
|
36 $ hg ci -m "merging a and b" |
|
37 |
|
38 $ hg glog |
|
39 @ 3:3b2b6f4652ee merging a and b |
|
40 |\ () draft |
|
41 | o 2:d76850646258 added b |
|
42 | | () draft |
|
43 o | 1:c7586e2a9264 added a |
|
44 |/ () draft |
|
45 o 0:8fa14d15e168 added hgignore |
|
46 () draft |
|
47 |
|
48 Testing with obsoleting the second parent |
|
49 |
|
50 $ hg up d76850646258 |
|
51 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
52 $ echo bar > b |
|
53 $ hg amend |
|
54 1 new orphan changesets |
|
55 |
|
56 $ hg glog |
|
57 @ 4:64370c9805e7 added b |
|
58 | () draft |
|
59 | * 3:3b2b6f4652ee merging a and b |
|
60 | |\ () draft |
|
61 +---x 2:d76850646258 added b |
|
62 | | () draft |
|
63 | o 1:c7586e2a9264 added a |
|
64 |/ () draft |
|
65 o 0:8fa14d15e168 added hgignore |
|
66 () draft |
|
67 |
|
68 $ hg evolve --all |
|
69 move:[3] merging a and b |
|
70 atop:[4] added b |
|
71 working directory is now at 91fd62122a4b |
|
72 |
|
73 $ hg glog |
|
74 @ 5:91fd62122a4b merging a and b |
|
75 |\ () draft |
|
76 | o 4:64370c9805e7 added b |
|
77 | | () draft |
|
78 o | 1:c7586e2a9264 added a |
|
79 |/ () draft |
|
80 o 0:8fa14d15e168 added hgignore |
|
81 () draft |
|
82 |
|
83 $ hg parents |
|
84 changeset: 5:91fd62122a4b |
|
85 tag: tip |
|
86 parent: 4:64370c9805e7 |
|
87 parent: 1:c7586e2a9264 |
|
88 user: test |
|
89 date: Thu Jan 01 00:00:00 1970 +0000 |
|
90 summary: merging a and b |
|
91 |
|
92 |
|
93 Testing with obsoleting the first parent |
|
94 |
|
95 $ hg up c7586e2a9264 |
|
96 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
97 $ echo bar > a |
|
98 $ hg amend |
|
99 1 new orphan changesets |
|
100 |
|
101 $ hg glog |
|
102 @ 6:3d41537b44ca added a |
|
103 | () draft |
|
104 | * 5:91fd62122a4b merging a and b |
|
105 | |\ () draft |
|
106 +---o 4:64370c9805e7 added b |
|
107 | | () draft |
|
108 | x 1:c7586e2a9264 added a |
|
109 |/ () draft |
|
110 o 0:8fa14d15e168 added hgignore |
|
111 () draft |
|
112 |
|
113 $ hg evolve --all |
|
114 move:[5] merging a and b |
|
115 atop:[6] added a |
|
116 working directory is now at 968d205ba4d8 |
|
117 |
|
118 $ hg glog |
|
119 @ 7:968d205ba4d8 merging a and b |
|
120 |\ () draft |
|
121 | o 6:3d41537b44ca added a |
|
122 | | () draft |
|
123 o | 4:64370c9805e7 added b |
|
124 |/ () draft |
|
125 o 0:8fa14d15e168 added hgignore |
|
126 () draft |
|
127 |
|
128 $ hg parents |
|
129 changeset: 7:968d205ba4d8 |
|
130 tag: tip |
|
131 parent: 6:3d41537b44ca |
|
132 parent: 4:64370c9805e7 |
|
133 user: test |
|
134 date: Thu Jan 01 00:00:00 1970 +0000 |
|
135 summary: merging a and b |
|
136 |
|
137 2) When merging both the parents resulted in conflicts |
|
138 ------------------------------------------------------ |
|
139 |
|
140 $ hg up 8fa14d15e168 |
|
141 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
142 $ echo foo > c |
|
143 $ hg ci -Aqm "foo to c" |
|
144 $ hg prev |
|
145 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
146 [0] added hgignore |
|
147 $ echo bar > c |
|
148 $ hg ci -Aqm "bar to c" |
|
149 |
|
150 $ hg glog |
|
151 @ 9:d0f84b25d4e3 bar to c |
|
152 | () draft |
|
153 | o 8:1c165c673853 foo to c |
|
154 |/ () draft |
|
155 | o 7:968d205ba4d8 merging a and b |
|
156 | |\ () draft |
|
157 +---o 6:3d41537b44ca added a |
|
158 | | () draft |
|
159 | o 4:64370c9805e7 added b |
|
160 |/ () draft |
|
161 o 0:8fa14d15e168 added hgignore |
|
162 () draft |
|
163 |
|
164 Prune old test changesets to have clear graph view |
|
165 $ hg prune -r 64370c9805e7 -r 3d41537b44ca -r 968d205ba4d8 |
|
166 3 changesets pruned |
|
167 |
|
168 $ hg glog |
|
169 @ 9:d0f84b25d4e3 bar to c |
|
170 | () draft |
|
171 | o 8:1c165c673853 foo to c |
|
172 |/ () draft |
|
173 o 0:8fa14d15e168 added hgignore |
|
174 () draft |
|
175 |
|
176 $ hg merge |
|
177 merging c |
|
178 warning: conflicts while merging c! (edit, then use 'hg resolve --mark') |
|
179 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
180 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
181 [1] |
|
182 $ echo foobar > c |
|
183 $ hg resolve -m |
|
184 (no more unresolved files) |
|
185 $ hg ci -m "foobar to c" |
|
186 |
|
187 $ hg glog |
|
188 @ 10:fd41d25a3e90 foobar to c |
|
189 |\ () draft |
|
190 | o 9:d0f84b25d4e3 bar to c |
|
191 | | () draft |
|
192 o | 8:1c165c673853 foo to c |
|
193 |/ () draft |
|
194 o 0:8fa14d15e168 added hgignore |
|
195 () draft |
|
196 |
|
197 Testing with first parent obsoleted |
|
198 |
|
199 $ hg up 1c165c673853 |
|
200 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
201 $ echo FOO > c |
|
202 $ hg amend |
|
203 1 new orphan changesets |
|
204 |
|
205 $ hg glog |
|
206 @ 11:31c317b7bdb1 foo to c |
|
207 | () draft |
|
208 | * 10:fd41d25a3e90 foobar to c |
|
209 | |\ () draft |
|
210 +---o 9:d0f84b25d4e3 bar to c |
|
211 | | () draft |
|
212 | x 8:1c165c673853 foo to c |
|
213 |/ () draft |
|
214 o 0:8fa14d15e168 added hgignore |
|
215 () draft |
|
216 |
|
217 $ hg evolve --all |
|
218 move:[10] foobar to c |
|
219 atop:[11] foo to c |
|
220 merging c |
|
221 warning: conflicts while merging c! (edit, then use 'hg resolve --mark') |
|
222 evolve failed! |
|
223 fix conflict and run 'hg evolve --continue' or use 'hg update -C .' to abort |
|
224 abort: unresolved merge conflicts (see hg help resolve) |
|
225 [255] |
|
226 |
|
227 $ echo FOObar > c |
|
228 $ hg resolve -m |
|
229 (no more unresolved files) |
|
230 continue: hg evolve --continue |
|
231 $ hg evolve --continue |
|
232 evolving 10:fd41d25a3e90 "foobar to c" |
|
233 working directory is now at 6b42180a13dd |
|
234 |
|
235 XXX: we lost the second parent here after interrupted evolve |
|
236 $ hg glog |
|
237 @ 12:6b42180a13dd foobar to c |
|
238 | () draft |
|
239 o 11:31c317b7bdb1 foo to c |
|
240 | () draft |
|
241 | o 9:d0f84b25d4e3 bar to c |
|
242 |/ () draft |
|
243 o 0:8fa14d15e168 added hgignore |
|
244 () draft |
|
245 |
|
246 $ hg parents |
|
247 changeset: 12:6b42180a13dd |
|
248 tag: tip |
|
249 user: test |
|
250 date: Thu Jan 01 00:00:00 1970 +0000 |
|
251 summary: foobar to c |
|
252 |
|
253 Getting back to a state from where we can test the same thing with obsoleting |
|
254 the second parent |
|
255 |
|
256 $ hg prune -r . |
|
257 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
258 working directory now at 31c317b7bdb1 |
|
259 1 changesets pruned |
|
260 $ hg merge |
|
261 merging c |
|
262 warning: conflicts while merging c! (edit, then use 'hg resolve --mark') |
|
263 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
|
264 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon |
|
265 [1] |
|
266 |
|
267 $ echo FOObar > c |
|
268 $ hg resolve -m |
|
269 (no more unresolved files) |
|
270 $ hg commit -m "FOObar to c" |
|
271 |
|
272 $ hg glog |
|
273 @ 13:14ac829917d7 FOObar to c |
|
274 |\ () draft |
|
275 | o 11:31c317b7bdb1 foo to c |
|
276 | | () draft |
|
277 o | 9:d0f84b25d4e3 bar to c |
|
278 |/ () draft |
|
279 o 0:8fa14d15e168 added hgignore |
|
280 () draft |
|
281 |
|
282 Testing a conlficting merge with second parent obsoleted |
|
283 |
|
284 $ hg up 31c317b7bdb1 |
|
285 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
286 $ echo foo > c |
|
287 $ hg amend |
|
288 1 new orphan changesets |
|
289 |
|
290 $ hg glog |
|
291 @ 14:928097d0b5b5 foo to c |
|
292 | () draft |
|
293 | * 13:14ac829917d7 FOObar to c |
|
294 | |\ () draft |
|
295 +---x 11:31c317b7bdb1 foo to c |
|
296 | | () draft |
|
297 | o 9:d0f84b25d4e3 bar to c |
|
298 |/ () draft |
|
299 o 0:8fa14d15e168 added hgignore |
|
300 () draft |
|
301 |
|
302 $ hg evolve --all |
|
303 move:[13] FOObar to c |
|
304 atop:[14] foo to c |
|
305 merging c |
|
306 warning: conflicts while merging c! (edit, then use 'hg resolve --mark') |
|
307 evolve failed! |
|
308 fix conflict and run 'hg evolve --continue' or use 'hg update -C .' to abort |
|
309 abort: unresolved merge conflicts (see hg help resolve) |
|
310 [255] |
|
311 |
|
312 $ echo foobar > c |
|
313 $ hg resolve -m |
|
314 (no more unresolved files) |
|
315 continue: hg evolve --continue |
|
316 |
|
317 $ hg evolve --continue |
|
318 evolving 13:14ac829917d7 "FOObar to c" |
|
319 working directory is now at 910c14950386 |
|
320 |
|
321 XXX: we lost a parent here again. |
|
322 $ hg glog |
|
323 @ 15:910c14950386 FOObar to c |
|
324 | () draft |
|
325 o 14:928097d0b5b5 foo to c |
|
326 | () draft |
|
327 | o 9:d0f84b25d4e3 bar to c |
|
328 |/ () draft |
|
329 o 0:8fa14d15e168 added hgignore |
|
330 () draft |