##// END OF EJS Templates
tests: split out separate test for issue5020...
Martin von Zweigbergk -
r42330:f2fe7cf4 default
parent child Browse files
Show More
@@ -1,515 +1,467 b''
1 Criss cross merging
1 Criss cross merging
2
2
3 $ hg init criss-cross
3 $ hg init criss-cross
4 $ cd criss-cross
4 $ cd criss-cross
5 $ echo '0 base' > f1
5 $ echo '0 base' > f1
6 $ echo '0 base' > f2
6 $ echo '0 base' > f2
7 $ hg ci -Aqm '0 base'
7 $ hg ci -Aqm '0 base'
8
8
9 $ echo '1 first change' > f1
9 $ echo '1 first change' > f1
10 $ hg ci -m '1 first change f1'
10 $ hg ci -m '1 first change f1'
11
11
12 $ hg up -qr0
12 $ hg up -qr0
13 $ echo '2 first change' > f2
13 $ echo '2 first change' > f2
14 $ mkdir d1
15 $ echo '0 base' > d1/f3
16 $ echo '0 base' > d1/f4
17 $ hg add -q d1
18 $ hg ci -qm '2 first change f2'
14 $ hg ci -qm '2 first change f2'
19
15
20 $ hg merge -qr 1
16 $ hg merge -qr 1
21 $ hg rm d1/f3
22 $ hg mv -q d1 d2
23 $ hg ci -m '3 merge'
17 $ hg ci -m '3 merge'
24
18
25 $ hg up -qr2
19 $ hg up -qr2
26 $ hg merge -qr1
20 $ hg merge -qr1
27 $ hg ci -qm '4 merge'
21 $ hg ci -qm '4 merge'
28
22
29 $ echo '5 second change' > f1
23 $ echo '5 second change' > f1
30 $ hg ci -m '5 second change f1'
24 $ hg ci -m '5 second change f1'
31
25
32 $ hg up -r3
26 $ hg up -r3
33 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
27 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
34 $ echo '6 second change' > f2
28 $ echo '6 second change' > f2
35 $ hg ci -m '6 second change f2'
29 $ hg ci -m '6 second change f2'
36
30
37 $ hg log -G
31 $ hg log -G
38 @ changeset: 6:6373bbfdae1d
32 @ changeset: 6:3b08d01b0ab5
39 | tag: tip
33 | tag: tip
40 | parent: 3:c202c8af058d
34 | parent: 3:cf89f02107e5
41 | user: test
35 | user: test
42 | date: Thu Jan 01 00:00:00 1970 +0000
36 | date: Thu Jan 01 00:00:00 1970 +0000
43 | summary: 6 second change f2
37 | summary: 6 second change f2
44 |
38 |
45 | o changeset: 5:e673248094b1
39 | o changeset: 5:adfe50279922
46 | | user: test
40 | | user: test
47 | | date: Thu Jan 01 00:00:00 1970 +0000
41 | | date: Thu Jan 01 00:00:00 1970 +0000
48 | | summary: 5 second change f1
42 | | summary: 5 second change f1
49 | |
43 | |
50 | o changeset: 4:177f58377c06
44 | o changeset: 4:7d3e55501ae6
51 | |\ parent: 2:d1d156401c1b
45 | |\ parent: 2:40663881a6dd
52 | | | parent: 1:0f6b37dbe527
46 | | | parent: 1:0f6b37dbe527
53 | | | user: test
47 | | | user: test
54 | | | date: Thu Jan 01 00:00:00 1970 +0000
48 | | | date: Thu Jan 01 00:00:00 1970 +0000
55 | | | summary: 4 merge
49 | | | summary: 4 merge
56 | | |
50 | | |
57 o---+ changeset: 3:c202c8af058d
51 o---+ changeset: 3:cf89f02107e5
58 | | | parent: 2:d1d156401c1b
52 | | | parent: 2:40663881a6dd
59 |/ / parent: 1:0f6b37dbe527
53 |/ / parent: 1:0f6b37dbe527
60 | | user: test
54 | | user: test
61 | | date: Thu Jan 01 00:00:00 1970 +0000
55 | | date: Thu Jan 01 00:00:00 1970 +0000
62 | | summary: 3 merge
56 | | summary: 3 merge
63 | |
57 | |
64 | o changeset: 2:d1d156401c1b
58 | o changeset: 2:40663881a6dd
65 | | parent: 0:40494bf2444c
59 | | parent: 0:40494bf2444c
66 | | user: test
60 | | user: test
67 | | date: Thu Jan 01 00:00:00 1970 +0000
61 | | date: Thu Jan 01 00:00:00 1970 +0000
68 | | summary: 2 first change f2
62 | | summary: 2 first change f2
69 | |
63 | |
70 o | changeset: 1:0f6b37dbe527
64 o | changeset: 1:0f6b37dbe527
71 |/ user: test
65 |/ user: test
72 | date: Thu Jan 01 00:00:00 1970 +0000
66 | date: Thu Jan 01 00:00:00 1970 +0000
73 | summary: 1 first change f1
67 | summary: 1 first change f1
74 |
68 |
75 o changeset: 0:40494bf2444c
69 o changeset: 0:40494bf2444c
76 user: test
70 user: test
77 date: Thu Jan 01 00:00:00 1970 +0000
71 date: Thu Jan 01 00:00:00 1970 +0000
78 summary: 0 base
72 summary: 0 base
79
73
80
74
81 $ hg merge -v --debug --tool internal:dump 5 --config merge.preferancestor='!'
75 $ hg merge -v --debug --tool internal:dump 5 --config merge.preferancestor='!'
82 note: using 0f6b37dbe527 as ancestor of 6373bbfdae1d and e673248094b1
76 note: using 0f6b37dbe527 as ancestor of 3b08d01b0ab5 and adfe50279922
83 alternatively, use --config merge.preferancestor=d1d156401c1b
77 alternatively, use --config merge.preferancestor=40663881a6dd
84 searching for copies back to rev 3
78 searching for copies back to rev 3
85 unmatched files in local:
86 d2/f4
87 unmatched files in other:
88 d1/f3
89 d1/f4
90 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
91 src: 'd1/f4' -> dst: 'd2/f4'
92 checking for directory renames
93 discovered dir src: 'd1/' -> dst: 'd2/'
94 pending file src: 'd1/f3' -> dst: 'd2/f3'
95 pending file src: 'd1/f4' -> dst: 'd2/f4'
96 resolving manifests
79 resolving manifests
97 branchmerge: True, force: False, partial: False
80 branchmerge: True, force: False, partial: False
98 ancestor: 0f6b37dbe527, local: 6373bbfdae1d+, remote: e673248094b1
81 ancestor: 0f6b37dbe527, local: 3b08d01b0ab5+, remote: adfe50279922
99 preserving d2/f4 for resolve of d2/f4
100 preserving f2 for resolve of f2
82 preserving f2 for resolve of f2
101 f1: remote is newer -> g
83 f1: remote is newer -> g
102 getting f1
84 getting f1
103 d2/f3: local directory rename - get from d1/f3 -> dg
104 getting d1/f3 to d2/f3
105 d2/f4: local directory rename, both created -> m (premerge)
106 f2: versions differ -> m (premerge)
85 f2: versions differ -> m (premerge)
107 picked tool ':dump' for f2 (binary False symlink False changedelete False)
86 picked tool ':dump' for f2 (binary False symlink False changedelete False)
108 merging f2
87 merging f2
109 my f2@6373bbfdae1d+ other f2@e673248094b1 ancestor f2@0f6b37dbe527
88 my f2@3b08d01b0ab5+ other f2@adfe50279922 ancestor f2@0f6b37dbe527
110 f2: versions differ -> m (merge)
89 f2: versions differ -> m (merge)
111 picked tool ':dump' for f2 (binary False symlink False changedelete False)
90 picked tool ':dump' for f2 (binary False symlink False changedelete False)
112 my f2@6373bbfdae1d+ other f2@e673248094b1 ancestor f2@0f6b37dbe527
91 my f2@3b08d01b0ab5+ other f2@adfe50279922 ancestor f2@0f6b37dbe527
113 3 files updated, 0 files merged, 0 files removed, 1 files unresolved
92 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
114 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
93 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
115 [1]
94 [1]
116
95
117 $ f --dump --recurse *
96 $ f --dump *
118 d2: directory with 2 files
119 d2/f3:
120 >>>
121 0 base
122 <<<
123 d2/f4:
124 >>>
125 0 base
126 <<<
127 f1:
97 f1:
128 >>>
98 >>>
129 5 second change
99 5 second change
130 <<<
100 <<<
131 f2:
101 f2:
132 >>>
102 >>>
133 6 second change
103 6 second change
134 <<<
104 <<<
135 f2.base:
105 f2.base:
136 >>>
106 >>>
137 0 base
107 0 base
138 <<<
108 <<<
139 f2.local:
109 f2.local:
140 >>>
110 >>>
141 6 second change
111 6 second change
142 <<<
112 <<<
143 f2.orig:
113 f2.orig:
144 >>>
114 >>>
145 6 second change
115 6 second change
146 <<<
116 <<<
147 f2.other:
117 f2.other:
148 >>>
118 >>>
149 2 first change
119 2 first change
150 <<<
120 <<<
151
121
152 $ hg up -qC .
122 $ hg up -qC .
153 $ hg merge -v --tool internal:dump 5 --config merge.preferancestor="null 40663881 3b08d"
123 $ hg merge -v --tool internal:dump 5 --config merge.preferancestor="null 40663881 3b08d"
154 note: using 0f6b37dbe527 as ancestor of 6373bbfdae1d and e673248094b1
124 note: using 40663881a6dd as ancestor of 3b08d01b0ab5 and adfe50279922
155 alternatively, use --config merge.preferancestor=d1d156401c1b
125 alternatively, use --config merge.preferancestor=0f6b37dbe527
156 resolving manifests
126 resolving manifests
157 getting f1
127 merging f1
158 getting d1/f3 to d2/f3
128 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
159 merging f2
160 3 files updated, 0 files merged, 0 files removed, 1 files unresolved
161 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
129 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
162 [1]
130 [1]
163
131
164 Redo merge with merge.preferancestor="*" to enable bid merge
132 Redo merge with merge.preferancestor="*" to enable bid merge
165
133
166 $ rm f*
134 $ rm f*
167 $ hg up -qC .
135 $ hg up -qC .
168 $ hg merge -v --debug --tool internal:dump 5 --config merge.preferancestor="*"
136 $ hg merge -v --debug --tool internal:dump 5 --config merge.preferancestor="*"
169 note: merging 6373bbfdae1d+ and e673248094b1 using bids from ancestors 0f6b37dbe527 and d1d156401c1b
137 note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
170
138
171 calculating bids for ancestor 0f6b37dbe527
139 calculating bids for ancestor 0f6b37dbe527
172 searching for copies back to rev 3
140 searching for copies back to rev 3
173 unmatched files in local:
174 d2/f4
175 unmatched files in other:
176 d1/f3
177 d1/f4
178 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
179 src: 'd1/f4' -> dst: 'd2/f4'
180 checking for directory renames
181 discovered dir src: 'd1/' -> dst: 'd2/'
182 pending file src: 'd1/f3' -> dst: 'd2/f3'
183 pending file src: 'd1/f4' -> dst: 'd2/f4'
184 resolving manifests
141 resolving manifests
185 branchmerge: True, force: False, partial: False
142 branchmerge: True, force: False, partial: False
186 ancestor: 0f6b37dbe527, local: 6373bbfdae1d+, remote: e673248094b1
143 ancestor: 0f6b37dbe527, local: 3b08d01b0ab5+, remote: adfe50279922
187 d2/f3: local directory rename - get from d1/f3 -> dg
188 d2/f4: local directory rename, both created -> m
189 f1: remote is newer -> g
144 f1: remote is newer -> g
190 f2: versions differ -> m
145 f2: versions differ -> m
191
146
192 calculating bids for ancestor d1d156401c1b
147 calculating bids for ancestor 40663881a6dd
193 searching for copies back to rev 3
148 searching for copies back to rev 3
194 unmatched files in local:
195 d2/f4
196 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
197 src: 'd1/f4' -> dst: 'd2/f4'
198 checking for directory renames
199 discovered dir src: 'd1/' -> dst: 'd2/'
200 resolving manifests
149 resolving manifests
201 branchmerge: True, force: False, partial: False
150 branchmerge: True, force: False, partial: False
202 ancestor: d1d156401c1b, local: 6373bbfdae1d+, remote: e673248094b1
151 ancestor: 40663881a6dd, local: 3b08d01b0ab5+, remote: adfe50279922
203 f1: versions differ -> m
152 f1: versions differ -> m
204 f2: remote unchanged -> k
153 f2: remote unchanged -> k
205
154
206 auction for merging merge bids
155 auction for merging merge bids
207 d2/f3: consensus for dg
208 d2/f4: consensus for m
209 f1: picking 'get' action
156 f1: picking 'get' action
210 f2: picking 'keep' action
157 f2: picking 'keep' action
211 end of auction
158 end of auction
212
159
213 preserving d2/f4 for resolve of d2/f4
214 f1: remote is newer -> g
160 f1: remote is newer -> g
215 getting f1
161 getting f1
216 f2: remote unchanged -> k
162 f2: remote unchanged -> k
217 d2/f3: local directory rename - get from d1/f3 -> dg
163 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
218 getting d1/f3 to d2/f3
219 d2/f4: local directory rename, both created -> m (premerge)
220 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
221 (branch merge, don't forget to commit)
164 (branch merge, don't forget to commit)
222
165
223 $ f --dump --recurse *
166 $ f --dump *
224 d2: directory with 2 files
225 d2/f3:
226 >>>
227 0 base
228 <<<
229 d2/f4:
230 >>>
231 0 base
232 <<<
233 f1:
167 f1:
234 >>>
168 >>>
235 5 second change
169 5 second change
236 <<<
170 <<<
237 f2:
171 f2:
238 >>>
172 >>>
239 6 second change
173 6 second change
240 <<<
174 <<<
241
175
242
176
243 The other way around:
177 The other way around:
244
178
245 $ hg up -C -r5
179 $ hg up -C -r5
246 4 files updated, 0 files merged, 1 files removed, 0 files unresolved
180 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
247 $ hg merge -v --debug --config merge.preferancestor="*"
181 $ hg merge -v --debug --config merge.preferancestor="*"
248 note: merging e673248094b1+ and 6373bbfdae1d using bids from ancestors 0f6b37dbe527 and d1d156401c1b
182 note: merging adfe50279922+ and 3b08d01b0ab5 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
249
183
250 calculating bids for ancestor 0f6b37dbe527
184 calculating bids for ancestor 0f6b37dbe527
251 searching for copies back to rev 3
185 searching for copies back to rev 3
252 unmatched files in local:
253 d1/f3
254 d1/f4
255 unmatched files in other:
256 d2/f4
257 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
258 src: 'd1/f4' -> dst: 'd2/f4'
259 checking for directory renames
260 discovered dir src: 'd1/' -> dst: 'd2/'
261 pending file src: 'd1/f3' -> dst: 'd2/f3'
262 pending file src: 'd1/f4' -> dst: 'd2/f4'
263 resolving manifests
186 resolving manifests
264 branchmerge: True, force: False, partial: False
187 branchmerge: True, force: False, partial: False
265 ancestor: 0f6b37dbe527, local: e673248094b1+, remote: 6373bbfdae1d
188 ancestor: 0f6b37dbe527, local: adfe50279922+, remote: 3b08d01b0ab5
266 d2/f3: remote directory rename - move from d1/f3 -> dm
267 d2/f4: remote directory rename, both created -> m
268 f1: remote unchanged -> k
189 f1: remote unchanged -> k
269 f2: versions differ -> m
190 f2: versions differ -> m
270
191
271 calculating bids for ancestor d1d156401c1b
192 calculating bids for ancestor 40663881a6dd
272 searching for copies back to rev 3
193 searching for copies back to rev 3
273 unmatched files in other:
274 d2/f4
275 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
276 src: 'd1/f4' -> dst: 'd2/f4'
277 checking for directory renames
278 discovered dir src: 'd1/' -> dst: 'd2/'
279 resolving manifests
194 resolving manifests
280 branchmerge: True, force: False, partial: False
195 branchmerge: True, force: False, partial: False
281 ancestor: d1d156401c1b, local: e673248094b1+, remote: 6373bbfdae1d
196 ancestor: 40663881a6dd, local: adfe50279922+, remote: 3b08d01b0ab5
282 d1/f3: other deleted -> r
283 d1/f4: other deleted -> r
284 d2/f4: remote created -> g
285 f1: versions differ -> m
197 f1: versions differ -> m
286 f2: remote is newer -> g
198 f2: remote is newer -> g
287
199
288 auction for merging merge bids
200 auction for merging merge bids
289 d1/f3: consensus for r
290 d1/f4: consensus for r
291 d2/f3: consensus for dm
292 d2/f4: picking 'get' action
293 f1: picking 'keep' action
201 f1: picking 'keep' action
294 f2: picking 'get' action
202 f2: picking 'get' action
295 end of auction
203 end of auction
296
204
297 d1/f3: other deleted -> r
298 removing d1/f3
299 d1/f4: other deleted -> r
300 removing d1/f4
301 d2/f4: remote created -> g
302 getting d2/f4
303 f2: remote is newer -> g
205 f2: remote is newer -> g
304 getting f2
206 getting f2
305 f1: remote unchanged -> k
207 f1: remote unchanged -> k
306 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
208 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
307 (branch merge, don't forget to commit)
209 (branch merge, don't forget to commit)
308
210
309 $ f --dump --recurse *
211 $ f --dump *
310 d2: directory with 2 files
311 d2/f3:
312 >>>
313 0 base
314 <<<
315 d2/f4:
316 >>>
317 0 base
318 <<<
319 f1:
212 f1:
320 >>>
213 >>>
321 5 second change
214 5 second change
322 <<<
215 <<<
323 f2:
216 f2:
324 >>>
217 >>>
325 6 second change
218 6 second change
326 <<<
219 <<<
327
220
328 Verify how the output looks and and how verbose it is:
221 Verify how the output looks and and how verbose it is:
329
222
330 $ hg up -qC
223 $ hg up -qC
331 $ hg merge
224 $ hg merge
332 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
225 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
333 (branch merge, don't forget to commit)
226 (branch merge, don't forget to commit)
334
227
335 $ hg up -qC tip
228 $ hg up -qC tip
336 $ hg merge -v
229 $ hg merge -v
337 note: merging 6373bbfdae1d+ and e673248094b1 using bids from ancestors 0f6b37dbe527 and d1d156401c1b
230 note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
338
231
339 calculating bids for ancestor 0f6b37dbe527
232 calculating bids for ancestor 0f6b37dbe527
340 resolving manifests
233 resolving manifests
341
234
342 calculating bids for ancestor d1d156401c1b
235 calculating bids for ancestor 40663881a6dd
343 resolving manifests
236 resolving manifests
344
237
345 auction for merging merge bids
238 auction for merging merge bids
346 d2/f3: consensus for dg
347 d2/f4: consensus for m
348 f1: picking 'get' action
239 f1: picking 'get' action
349 f2: picking 'keep' action
240 f2: picking 'keep' action
350 end of auction
241 end of auction
351
242
352 getting f1
243 getting f1
353 getting d1/f3 to d2/f3
244 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
354 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
355 (branch merge, don't forget to commit)
245 (branch merge, don't forget to commit)
356
246
357 $ hg up -qC
247 $ hg up -qC
358 $ hg merge -v --debug --config merge.preferancestor="*"
248 $ hg merge -v --debug --config merge.preferancestor="*"
359 note: merging 6373bbfdae1d+ and e673248094b1 using bids from ancestors 0f6b37dbe527 and d1d156401c1b
249 note: merging 3b08d01b0ab5+ and adfe50279922 using bids from ancestors 0f6b37dbe527 and 40663881a6dd
360
250
361 calculating bids for ancestor 0f6b37dbe527
251 calculating bids for ancestor 0f6b37dbe527
362 searching for copies back to rev 3
252 searching for copies back to rev 3
363 unmatched files in local:
364 d2/f4
365 unmatched files in other:
366 d1/f3
367 d1/f4
368 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
369 src: 'd1/f4' -> dst: 'd2/f4'
370 checking for directory renames
371 discovered dir src: 'd1/' -> dst: 'd2/'
372 pending file src: 'd1/f3' -> dst: 'd2/f3'
373 pending file src: 'd1/f4' -> dst: 'd2/f4'
374 resolving manifests
253 resolving manifests
375 branchmerge: True, force: False, partial: False
254 branchmerge: True, force: False, partial: False
376 ancestor: 0f6b37dbe527, local: 6373bbfdae1d+, remote: e673248094b1
255 ancestor: 0f6b37dbe527, local: 3b08d01b0ab5+, remote: adfe50279922
377 d2/f3: local directory rename - get from d1/f3 -> dg
378 d2/f4: local directory rename, both created -> m
379 f1: remote is newer -> g
256 f1: remote is newer -> g
380 f2: versions differ -> m
257 f2: versions differ -> m
381
258
382 calculating bids for ancestor d1d156401c1b
259 calculating bids for ancestor 40663881a6dd
383 searching for copies back to rev 3
260 searching for copies back to rev 3
384 unmatched files in local:
385 d2/f4
386 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
387 src: 'd1/f4' -> dst: 'd2/f4'
388 checking for directory renames
389 discovered dir src: 'd1/' -> dst: 'd2/'
390 resolving manifests
261 resolving manifests
391 branchmerge: True, force: False, partial: False
262 branchmerge: True, force: False, partial: False
392 ancestor: d1d156401c1b, local: 6373bbfdae1d+, remote: e673248094b1
263 ancestor: 40663881a6dd, local: 3b08d01b0ab5+, remote: adfe50279922
393 f1: versions differ -> m
264 f1: versions differ -> m
394 f2: remote unchanged -> k
265 f2: remote unchanged -> k
395
266
396 auction for merging merge bids
267 auction for merging merge bids
397 d2/f3: consensus for dg
398 d2/f4: consensus for m
399 f1: picking 'get' action
268 f1: picking 'get' action
400 f2: picking 'keep' action
269 f2: picking 'keep' action
401 end of auction
270 end of auction
402
271
403 preserving d2/f4 for resolve of d2/f4
404 f1: remote is newer -> g
272 f1: remote is newer -> g
405 getting f1
273 getting f1
406 f2: remote unchanged -> k
274 f2: remote unchanged -> k
407 d2/f3: local directory rename - get from d1/f3 -> dg
275 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
408 getting d1/f3 to d2/f3
409 d2/f4: local directory rename, both created -> m (premerge)
410 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
411 (branch merge, don't forget to commit)
276 (branch merge, don't forget to commit)
412
277
413 Test the greatest common ancestor returning multiple changesets
278 Test the greatest common ancestor returning multiple changesets
414
279
415 $ hg log -r 'heads(commonancestors(head()))'
280 $ hg log -r 'heads(commonancestors(head()))'
416 changeset: 1:0f6b37dbe527
281 changeset: 1:0f6b37dbe527
417 user: test
282 user: test
418 date: Thu Jan 01 00:00:00 1970 +0000
283 date: Thu Jan 01 00:00:00 1970 +0000
419 summary: 1 first change f1
284 summary: 1 first change f1
420
285
421 changeset: 2:d1d156401c1b
286 changeset: 2:40663881a6dd
422 parent: 0:40494bf2444c
287 parent: 0:40494bf2444c
423 user: test
288 user: test
424 date: Thu Jan 01 00:00:00 1970 +0000
289 date: Thu Jan 01 00:00:00 1970 +0000
425 summary: 2 first change f2
290 summary: 2 first change f2
426
291
427
292
428 $ cd ..
293 $ cd ..
429
294
430 http://stackoverflow.com/questions/9350005/how-do-i-specify-a-merge-base-to-use-in-a-hg-merge/9430810
295 http://stackoverflow.com/questions/9350005/how-do-i-specify-a-merge-base-to-use-in-a-hg-merge/9430810
431
296
432 $ hg init ancestor-merging
297 $ hg init ancestor-merging
433 $ cd ancestor-merging
298 $ cd ancestor-merging
434 $ echo a > x
299 $ echo a > x
435 $ hg commit -A -m a x
300 $ hg commit -A -m a x
436 $ hg update -q 0
301 $ hg update -q 0
437 $ echo b >> x
302 $ echo b >> x
438 $ hg commit -m b
303 $ hg commit -m b
439 $ hg update -q 0
304 $ hg update -q 0
440 $ echo c >> x
305 $ echo c >> x
441 $ hg commit -qm c
306 $ hg commit -qm c
442 $ hg update -q 1
307 $ hg update -q 1
443 $ hg merge -q --tool internal:local 2
308 $ hg merge -q --tool internal:local 2
444 $ echo c >> x
309 $ echo c >> x
445 $ hg commit -m bc
310 $ hg commit -m bc
446 $ hg update -q 2
311 $ hg update -q 2
447 $ hg merge -q --tool internal:local 1
312 $ hg merge -q --tool internal:local 1
448 $ echo b >> x
313 $ echo b >> x
449 $ hg commit -qm cb
314 $ hg commit -qm cb
450
315
451 $ hg merge --config merge.preferancestor='!'
316 $ hg merge --config merge.preferancestor='!'
452 note: using 70008a2163f6 as ancestor of 0d355fdef312 and 4b8b546a3eef
317 note: using 70008a2163f6 as ancestor of 0d355fdef312 and 4b8b546a3eef
453 alternatively, use --config merge.preferancestor=b211bbc6eb3c
318 alternatively, use --config merge.preferancestor=b211bbc6eb3c
454 merging x
319 merging x
455 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
320 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
456 (branch merge, don't forget to commit)
321 (branch merge, don't forget to commit)
457 $ cat x
322 $ cat x
458 a
323 a
459 c
324 c
460 b
325 b
461 c
326 c
462
327
463 $ hg up -qC .
328 $ hg up -qC .
464
329
465 $ hg merge --config merge.preferancestor=b211bbc6eb3c
330 $ hg merge --config merge.preferancestor=b211bbc6eb3c
466 note: using b211bbc6eb3c as ancestor of 0d355fdef312 and 4b8b546a3eef
331 note: using b211bbc6eb3c as ancestor of 0d355fdef312 and 4b8b546a3eef
467 alternatively, use --config merge.preferancestor=70008a2163f6
332 alternatively, use --config merge.preferancestor=70008a2163f6
468 merging x
333 merging x
469 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
334 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
470 (branch merge, don't forget to commit)
335 (branch merge, don't forget to commit)
471 $ cat x
336 $ cat x
472 a
337 a
473 b
338 b
474 c
339 c
475 b
340 b
476
341
477 $ hg up -qC .
342 $ hg up -qC .
478
343
479 $ hg merge -v --config merge.preferancestor="*"
344 $ hg merge -v --config merge.preferancestor="*"
480 note: merging 0d355fdef312+ and 4b8b546a3eef using bids from ancestors 70008a2163f6 and b211bbc6eb3c
345 note: merging 0d355fdef312+ and 4b8b546a3eef using bids from ancestors 70008a2163f6 and b211bbc6eb3c
481
346
482 calculating bids for ancestor 70008a2163f6
347 calculating bids for ancestor 70008a2163f6
483 resolving manifests
348 resolving manifests
484
349
485 calculating bids for ancestor b211bbc6eb3c
350 calculating bids for ancestor b211bbc6eb3c
486 resolving manifests
351 resolving manifests
487
352
488 auction for merging merge bids
353 auction for merging merge bids
489 x: multiple bids for merge action:
354 x: multiple bids for merge action:
490 versions differ -> m
355 versions differ -> m
491 versions differ -> m
356 versions differ -> m
492 x: ambiguous merge - picked m action
357 x: ambiguous merge - picked m action
493 end of auction
358 end of auction
494
359
495 merging x
360 merging x
496 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
361 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
497 (branch merge, don't forget to commit)
362 (branch merge, don't forget to commit)
498 $ cat x
363 $ cat x
499 a
364 a
500 c
365 c
501 b
366 b
502 c
367 c
503
368
504 Verify that the old context ancestor works with / despite preferancestor:
369 Verify that the old context ancestor works with / despite preferancestor:
505
370
506 $ hg log -r 'ancestor(head())' --config merge.preferancestor=1 -T '{rev}\n'
371 $ hg log -r 'ancestor(head())' --config merge.preferancestor=1 -T '{rev}\n'
507 1
372 1
508 $ hg log -r 'ancestor(head())' --config merge.preferancestor=2 -T '{rev}\n'
373 $ hg log -r 'ancestor(head())' --config merge.preferancestor=2 -T '{rev}\n'
509 2
374 2
510 $ hg log -r 'ancestor(head())' --config merge.preferancestor=3 -T '{rev}\n'
375 $ hg log -r 'ancestor(head())' --config merge.preferancestor=3 -T '{rev}\n'
511 1
376 1
512 $ hg log -r 'ancestor(head())' --config merge.preferancestor='1337 * - 2' -T '{rev}\n'
377 $ hg log -r 'ancestor(head())' --config merge.preferancestor='1337 * - 2' -T '{rev}\n'
513 2
378 2
514
379
515 $ cd ..
380 $ cd ..
381
382 $ hg init issue5020
383 $ cd issue5020
384
385 $ echo a > noop
386 $ hg ci -qAm initial
387
388 $ echo b > noop
389 $ hg ci -qAm 'uninteresting change'
390
391 $ hg up -q 0
392 $ mkdir d1
393 $ echo a > d1/a
394 $ echo b > d1/b
395 $ hg ci -qAm 'add d1/a and d1/b'
396
397 $ hg merge -q 1
398 $ hg rm d1/a
399 $ hg mv -q d1 d2
400 $ hg ci -qm 'merge while removing d1/a and moving d1/b to d2/b'
401
402 $ hg up -q 1
403 $ hg merge -q 2
404 $ hg ci -qm 'merge (no changes while merging)'
405 $ hg log -G -T '{rev}:{node|short} {desc}'
406 @ 4:c0ef19750a22 merge (no changes while merging)
407 |\
408 +---o 3:6ca01f7342b9 merge while removing d1/a and moving d1/b to d2/b
409 | |/
410 | o 2:154e6000f54e add d1/a and d1/b
411 | |
412 o | 1:11b5b303e36c uninteresting change
413 |/
414 o 0:7b54db1ebf33 initial
415
416 $ hg merge 3 --debug
417 note: merging c0ef19750a22+ and 6ca01f7342b9 using bids from ancestors 11b5b303e36c and 154e6000f54e
418
419 calculating bids for ancestor 11b5b303e36c
420 searching for copies back to rev 3
421 unmatched files in local:
422 d1/a
423 d1/b
424 unmatched files in other:
425 d2/b
426 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
427 src: 'd1/b' -> dst: 'd2/b'
428 checking for directory renames
429 discovered dir src: 'd1/' -> dst: 'd2/'
430 pending file src: 'd1/a' -> dst: 'd2/a'
431 pending file src: 'd1/b' -> dst: 'd2/b'
432 resolving manifests
433 branchmerge: True, force: False, partial: False
434 ancestor: 11b5b303e36c, local: c0ef19750a22+, remote: 6ca01f7342b9
435 d2/a: remote directory rename - move from d1/a -> dm
436 d2/b: remote directory rename, both created -> m
437
438 calculating bids for ancestor 154e6000f54e
439 searching for copies back to rev 3
440 unmatched files in other:
441 d2/b
442 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
443 src: 'd1/b' -> dst: 'd2/b'
444 checking for directory renames
445 discovered dir src: 'd1/' -> dst: 'd2/'
446 resolving manifests
447 branchmerge: True, force: False, partial: False
448 ancestor: 154e6000f54e, local: c0ef19750a22+, remote: 6ca01f7342b9
449 d1/a: other deleted -> r
450 d1/b: other deleted -> r
451 d2/b: remote created -> g
452
453 auction for merging merge bids
454 d1/a: consensus for r
455 d1/b: consensus for r
456 d2/a: consensus for dm
457 d2/b: picking 'get' action
458 end of auction
459
460 d1/a: other deleted -> r
461 removing d1/a
462 d1/b: other deleted -> r
463 removing d1/b
464 d2/b: remote created -> g
465 getting d2/b
466 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
467 (branch merge, don't forget to commit)
General Comments 0
You need to be logged in to leave comments. Login now