##// END OF EJS Templates
copies-tests: clarify the description of the EA/AE cases...
marmoute -
r44940:275365d8 default
parent child Browse files
Show More
@@ -1,586 +1,586 b''
1 =====================================================
1 =====================================================
2 Test Copy tracing for chain of copies involving merge
2 Test Copy tracing for chain of copies involving merge
3 =====================================================
3 =====================================================
4
4
5 This test files covers copies/rename case for a chains of commit where merges
5 This test files covers copies/rename case for a chains of commit where merges
6 are involved. It cheks we do not have unwanted update of behavior and that the
6 are involved. It cheks we do not have unwanted update of behavior and that the
7 different options to retrieve copies behave correctly.
7 different options to retrieve copies behave correctly.
8
8
9 Setup
9 Setup
10 =====
10 =====
11
11
12 use git diff to see rename
12 use git diff to see rename
13
13
14 $ cat << EOF >> $HGRCPATH
14 $ cat << EOF >> $HGRCPATH
15 > [diff]
15 > [diff]
16 > git=yes
16 > git=yes
17 > [ui]
17 > [ui]
18 > logtemplate={rev} {desc}]\n
18 > logtemplate={rev} {desc}]\n
19 > EOF
19 > EOF
20
20
21 $ hg init repo-chain
21 $ hg init repo-chain
22 $ cd repo-chain
22 $ cd repo-chain
23
23
24 Add some linear rename initialy
24 Add some linear rename initialy
25
25
26 $ touch a b
26 $ touch a b
27 $ hg ci -Am 'i-0 initial commit: a b'
27 $ hg ci -Am 'i-0 initial commit: a b'
28 adding a
28 adding a
29 adding b
29 adding b
30 $ hg mv a c
30 $ hg mv a c
31 $ hg ci -Am 'i-1: a -move-> c'
31 $ hg ci -Am 'i-1: a -move-> c'
32 $ hg mv c d
32 $ hg mv c d
33 $ hg ci -Am 'i-2: c -move-> d'
33 $ hg ci -Am 'i-2: c -move-> d'
34 $ hg log -G
34 $ hg log -G
35 @ 2 i-2: c -move-> d]
35 @ 2 i-2: c -move-> d]
36 |
36 |
37 o 1 i-1: a -move-> c]
37 o 1 i-1: a -move-> c]
38 |
38 |
39 o 0 i-0 initial commit: a b]
39 o 0 i-0 initial commit: a b]
40
40
41
41
42 And having another branch with renames on the other side
42 And having another branch with renames on the other side
43
43
44 $ hg mv d e
44 $ hg mv d e
45 $ hg ci -Am 'a-1: d -move-> e'
45 $ hg ci -Am 'a-1: d -move-> e'
46 $ hg mv e f
46 $ hg mv e f
47 $ hg ci -Am 'a-2: e -move-> f'
47 $ hg ci -Am 'a-2: e -move-> f'
48 $ hg log -G --rev '::.'
48 $ hg log -G --rev '::.'
49 @ 4 a-2: e -move-> f]
49 @ 4 a-2: e -move-> f]
50 |
50 |
51 o 3 a-1: d -move-> e]
51 o 3 a-1: d -move-> e]
52 |
52 |
53 o 2 i-2: c -move-> d]
53 o 2 i-2: c -move-> d]
54 |
54 |
55 o 1 i-1: a -move-> c]
55 o 1 i-1: a -move-> c]
56 |
56 |
57 o 0 i-0 initial commit: a b]
57 o 0 i-0 initial commit: a b]
58
58
59
59
60 Have a branching with nothing on one side
60 Have a branching with nothing on one side
61
61
62 $ hg up 'desc("i-2")'
62 $ hg up 'desc("i-2")'
63 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
63 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
64 $ echo foo > b
64 $ echo foo > b
65 $ hg ci -m 'b-1: b update'
65 $ hg ci -m 'b-1: b update'
66 created new head
66 created new head
67 $ hg log -G --rev '::.'
67 $ hg log -G --rev '::.'
68 @ 5 b-1: b update]
68 @ 5 b-1: b update]
69 |
69 |
70 o 2 i-2: c -move-> d]
70 o 2 i-2: c -move-> d]
71 |
71 |
72 o 1 i-1: a -move-> c]
72 o 1 i-1: a -move-> c]
73 |
73 |
74 o 0 i-0 initial commit: a b]
74 o 0 i-0 initial commit: a b]
75
75
76
76
77
77
78 Merge the two branches we just defined (in both directions)
78 Merge the two branches we just defined (in both directions)
79 - one with change to an unrelated file
79 - one with change to an unrelated file
80 - one with renames in them
80 - one with renames in them
81
81
82 $ hg up 'desc("b-1")'
82 $ hg up 'desc("b-1")'
83 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
83 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
84 $ hg merge 'desc("a-2")'
84 $ hg merge 'desc("a-2")'
85 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
85 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
86 (branch merge, don't forget to commit)
86 (branch merge, don't forget to commit)
87 $ hg ci -m 'mBAm-0 simple merge - one way'
87 $ hg ci -m 'mBAm-0 simple merge - one way'
88 $ hg up 'desc("a-2")'
88 $ hg up 'desc("a-2")'
89 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
89 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
90 $ hg merge 'desc("b-1")'
90 $ hg merge 'desc("b-1")'
91 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
91 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
92 (branch merge, don't forget to commit)
92 (branch merge, don't forget to commit)
93 $ hg ci -m 'mABm-0 simple merge - the other way'
93 $ hg ci -m 'mABm-0 simple merge - the other way'
94 created new head
94 created new head
95 $ hg log -G --rev '::(desc("mABm")+desc("mBAm"))'
95 $ hg log -G --rev '::(desc("mABm")+desc("mBAm"))'
96 @ 7 mABm-0 simple merge - the other way]
96 @ 7 mABm-0 simple merge - the other way]
97 |\
97 |\
98 +---o 6 mBAm-0 simple merge - one way]
98 +---o 6 mBAm-0 simple merge - one way]
99 | |/
99 | |/
100 | o 5 b-1: b update]
100 | o 5 b-1: b update]
101 | |
101 | |
102 o | 4 a-2: e -move-> f]
102 o | 4 a-2: e -move-> f]
103 | |
103 | |
104 o | 3 a-1: d -move-> e]
104 o | 3 a-1: d -move-> e]
105 |/
105 |/
106 o 2 i-2: c -move-> d]
106 o 2 i-2: c -move-> d]
107 |
107 |
108 o 1 i-1: a -move-> c]
108 o 1 i-1: a -move-> c]
109 |
109 |
110 o 0 i-0 initial commit: a b]
110 o 0 i-0 initial commit: a b]
111
111
112
112
113 Create a branch that delete a file previous renamed
113 Create a branch that delete a file previous renamed
114
114
115 $ hg up 'desc("i-2")'
115 $ hg up 'desc("i-2")'
116 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
116 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
117 $ hg rm d
117 $ hg rm d
118 $ hg ci -m 'c-1 delete d'
118 $ hg ci -m 'c-1 delete d'
119 created new head
119 created new head
120 $ hg log -G --rev '::.'
120 $ hg log -G --rev '::.'
121 @ 8 c-1 delete d]
121 @ 8 c-1 delete d]
122 |
122 |
123 o 2 i-2: c -move-> d]
123 o 2 i-2: c -move-> d]
124 |
124 |
125 o 1 i-1: a -move-> c]
125 o 1 i-1: a -move-> c]
126 |
126 |
127 o 0 i-0 initial commit: a b]
127 o 0 i-0 initial commit: a b]
128
128
129
129
130 Merge:
130 Merge:
131 - one with change to an unrelated file
131 - one with change to an unrelated file
132 - one deleting the change
132 - one deleting the change
133 and recreate an unrelated file after the merge
133 and recreate an unrelated file after the merge
134
134
135 $ hg up 'desc("b-1")'
135 $ hg up 'desc("b-1")'
136 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
136 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
137 $ hg merge 'desc("c-1")'
137 $ hg merge 'desc("c-1")'
138 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
138 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
139 (branch merge, don't forget to commit)
139 (branch merge, don't forget to commit)
140 $ hg ci -m 'mBCm-0 simple merge - one way'
140 $ hg ci -m 'mBCm-0 simple merge - one way'
141 $ echo bar > d
141 $ echo bar > d
142 $ hg add d
142 $ hg add d
143 $ hg ci -m 'mBCm-1 re-add d'
143 $ hg ci -m 'mBCm-1 re-add d'
144 $ hg up 'desc("c-1")'
144 $ hg up 'desc("c-1")'
145 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
145 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
146 $ hg merge 'desc("b-1")'
146 $ hg merge 'desc("b-1")'
147 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
147 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
148 (branch merge, don't forget to commit)
148 (branch merge, don't forget to commit)
149 $ hg ci -m 'mCBm-0 simple merge - the other way'
149 $ hg ci -m 'mCBm-0 simple merge - the other way'
150 created new head
150 created new head
151 $ echo bar > d
151 $ echo bar > d
152 $ hg add d
152 $ hg add d
153 $ hg ci -m 'mCBm-1 re-add d'
153 $ hg ci -m 'mCBm-1 re-add d'
154 $ hg log -G --rev '::(desc("mCBm")+desc("mBCm"))'
154 $ hg log -G --rev '::(desc("mCBm")+desc("mBCm"))'
155 @ 12 mCBm-1 re-add d]
155 @ 12 mCBm-1 re-add d]
156 |
156 |
157 o 11 mCBm-0 simple merge - the other way]
157 o 11 mCBm-0 simple merge - the other way]
158 |\
158 |\
159 | | o 10 mBCm-1 re-add d]
159 | | o 10 mBCm-1 re-add d]
160 | | |
160 | | |
161 +---o 9 mBCm-0 simple merge - one way]
161 +---o 9 mBCm-0 simple merge - one way]
162 | |/
162 | |/
163 | o 8 c-1 delete d]
163 | o 8 c-1 delete d]
164 | |
164 | |
165 o | 5 b-1: b update]
165 o | 5 b-1: b update]
166 |/
166 |/
167 o 2 i-2: c -move-> d]
167 o 2 i-2: c -move-> d]
168 |
168 |
169 o 1 i-1: a -move-> c]
169 o 1 i-1: a -move-> c]
170 |
170 |
171 o 0 i-0 initial commit: a b]
171 o 0 i-0 initial commit: a b]
172
172
173
173
174 Create a branch that delete a file previous renamed and recreate it
174 Create a branch that delete a file previous renamed and recreate it
175
175
176 $ hg up 'desc("i-2")'
176 $ hg up 'desc("i-2")'
177 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
177 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
178 $ hg rm d
178 $ hg rm d
179 $ hg ci -m 'd-1 delete d'
179 $ hg ci -m 'd-1 delete d'
180 created new head
180 created new head
181 $ echo bar > d
181 $ echo bar > d
182 $ hg add d
182 $ hg add d
183 $ hg ci -m 'd-2 re-add d'
183 $ hg ci -m 'd-2 re-add d'
184 $ hg log -G --rev '::.'
184 $ hg log -G --rev '::.'
185 @ 14 d-2 re-add d]
185 @ 14 d-2 re-add d]
186 |
186 |
187 o 13 d-1 delete d]
187 o 13 d-1 delete d]
188 |
188 |
189 o 2 i-2: c -move-> d]
189 o 2 i-2: c -move-> d]
190 |
190 |
191 o 1 i-1: a -move-> c]
191 o 1 i-1: a -move-> c]
192 |
192 |
193 o 0 i-0 initial commit: a b]
193 o 0 i-0 initial commit: a b]
194
194
195
195
196 Merge:
196 Merge:
197 - one with change to an unrelated file
197 - one with change to an unrelated file
198 - one deleting and recreating the file
198 - one deleting and recreating the file
199
199
200 Note:
200 Note:
201 | In this case, the merge get conflicting information since on one side we have
201 | In this case, the merge get conflicting information since on one side we have
202 | a "brand new" d. and one the other one we have "d renamed from c (itself
202 | a "brand new" d. and one the other one we have "d renamed from c (itself
203 | renamed from c)".
203 | renamed from c)".
204 |
204 |
205 | The current code arbitrarily pick one side
205 | The current code arbitrarily pick one side
206
206
207 $ hg up 'desc("b-1")'
207 $ hg up 'desc("b-1")'
208 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
208 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
209 $ hg merge 'desc("d-2")'
209 $ hg merge 'desc("d-2")'
210 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
210 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
211 (branch merge, don't forget to commit)
211 (branch merge, don't forget to commit)
212 $ hg ci -m 'mBDm-0 simple merge - one way'
212 $ hg ci -m 'mBDm-0 simple merge - one way'
213 $ hg up 'desc("d-2")'
213 $ hg up 'desc("d-2")'
214 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
214 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
215 $ hg merge 'desc("b-1")'
215 $ hg merge 'desc("b-1")'
216 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
216 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
217 (branch merge, don't forget to commit)
217 (branch merge, don't forget to commit)
218 $ hg ci -m 'mDBm-0 simple merge - the other way'
218 $ hg ci -m 'mDBm-0 simple merge - the other way'
219 created new head
219 created new head
220 $ hg log -G --rev '::(desc("mDBm")+desc("mBDm"))'
220 $ hg log -G --rev '::(desc("mDBm")+desc("mBDm"))'
221 @ 16 mDBm-0 simple merge - the other way]
221 @ 16 mDBm-0 simple merge - the other way]
222 |\
222 |\
223 +---o 15 mBDm-0 simple merge - one way]
223 +---o 15 mBDm-0 simple merge - one way]
224 | |/
224 | |/
225 | o 14 d-2 re-add d]
225 | o 14 d-2 re-add d]
226 | |
226 | |
227 | o 13 d-1 delete d]
227 | o 13 d-1 delete d]
228 | |
228 | |
229 o | 5 b-1: b update]
229 o | 5 b-1: b update]
230 |/
230 |/
231 o 2 i-2: c -move-> d]
231 o 2 i-2: c -move-> d]
232 |
232 |
233 o 1 i-1: a -move-> c]
233 o 1 i-1: a -move-> c]
234 |
234 |
235 o 0 i-0 initial commit: a b]
235 o 0 i-0 initial commit: a b]
236
236
237
237
238 Having another branch renaming a different file to the same filename as another
238 Having another branch renaming a different file to the same filename as another
239
239
240 $ hg up 'desc("i-2")'
240 $ hg up 'desc("i-2")'
241 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
241 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
242 $ hg mv b g
242 $ hg mv b g
243 $ hg ci -m 'e-1 b -move-> g'
243 $ hg ci -m 'e-1 b -move-> g'
244 created new head
244 created new head
245 $ hg mv g f
245 $ hg mv g f
246 $ hg ci -m 'e-2 g -move-> f'
246 $ hg ci -m 'e-2 g -move-> f'
247 $ hg log -G --rev '::.'
247 $ hg log -G --rev '::.'
248 @ 18 e-2 g -move-> f]
248 @ 18 e-2 g -move-> f]
249 |
249 |
250 o 17 e-1 b -move-> g]
250 o 17 e-1 b -move-> g]
251 |
251 |
252 o 2 i-2: c -move-> d]
252 o 2 i-2: c -move-> d]
253 |
253 |
254 o 1 i-1: a -move-> c]
254 o 1 i-1: a -move-> c]
255 |
255 |
256 o 0 i-0 initial commit: a b]
256 o 0 i-0 initial commit: a b]
257
257
258
258
259 Merge:
259 Merge:
260 - one with change to an unrelated file
260 - the "e-" branch renaming b to f (through 'g')
261 - one deleting and recreating the change
261 - the "a-" branch renaming d to f (through e)
262
262
263 $ hg up 'desc("a-2")'
263 $ hg up 'desc("a-2")'
264 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
264 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
265 $ hg merge 'desc("e-2")'
265 $ hg merge 'desc("e-2")'
266 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
266 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
267 (branch merge, don't forget to commit)
267 (branch merge, don't forget to commit)
268 $ hg ci -m 'mAEm-0 simple merge - one way'
268 $ hg ci -m 'mAEm-0 simple merge - one way'
269 $ hg up 'desc("e-2")'
269 $ hg up 'desc("e-2")'
270 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
270 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
271 $ hg merge 'desc("a-2")'
271 $ hg merge 'desc("a-2")'
272 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
272 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
273 (branch merge, don't forget to commit)
273 (branch merge, don't forget to commit)
274 $ hg ci -m 'mEAm-0 simple merge - the other way'
274 $ hg ci -m 'mEAm-0 simple merge - the other way'
275 created new head
275 created new head
276 $ hg log -G --rev '::(desc("mAEm")+desc("mEAm"))'
276 $ hg log -G --rev '::(desc("mAEm")+desc("mEAm"))'
277 @ 20 mEAm-0 simple merge - the other way]
277 @ 20 mEAm-0 simple merge - the other way]
278 |\
278 |\
279 +---o 19 mAEm-0 simple merge - one way]
279 +---o 19 mAEm-0 simple merge - one way]
280 | |/
280 | |/
281 | o 18 e-2 g -move-> f]
281 | o 18 e-2 g -move-> f]
282 | |
282 | |
283 | o 17 e-1 b -move-> g]
283 | o 17 e-1 b -move-> g]
284 | |
284 | |
285 o | 4 a-2: e -move-> f]
285 o | 4 a-2: e -move-> f]
286 | |
286 | |
287 o | 3 a-1: d -move-> e]
287 o | 3 a-1: d -move-> e]
288 |/
288 |/
289 o 2 i-2: c -move-> d]
289 o 2 i-2: c -move-> d]
290 |
290 |
291 o 1 i-1: a -move-> c]
291 o 1 i-1: a -move-> c]
292 |
292 |
293 o 0 i-0 initial commit: a b]
293 o 0 i-0 initial commit: a b]
294
294
295
295
296 Note:
296 Note:
297 | In this case, one of the merge wrongly record a merge while there is none.
297 | In this case, one of the merge wrongly record a merge while there is none.
298 | This lead to bad copy tracing information to be dug up.
298 | This lead to bad copy tracing information to be dug up.
299
299
300 final summary
300 final summary
301
301
302 $ hg update null --quiet
302 $ hg update null --quiet
303 $ hg log -G
303 $ hg log -G
304 o 20 mEAm-0 simple merge - the other way]
304 o 20 mEAm-0 simple merge - the other way]
305 |\
305 |\
306 +---o 19 mAEm-0 simple merge - one way]
306 +---o 19 mAEm-0 simple merge - one way]
307 | |/
307 | |/
308 | o 18 e-2 g -move-> f]
308 | o 18 e-2 g -move-> f]
309 | |
309 | |
310 | o 17 e-1 b -move-> g]
310 | o 17 e-1 b -move-> g]
311 | |
311 | |
312 | | o 16 mDBm-0 simple merge - the other way]
312 | | o 16 mDBm-0 simple merge - the other way]
313 | | |\
313 | | |\
314 | | +---o 15 mBDm-0 simple merge - one way]
314 | | +---o 15 mBDm-0 simple merge - one way]
315 | | | |/
315 | | | |/
316 | | | o 14 d-2 re-add d]
316 | | | o 14 d-2 re-add d]
317 | | | |
317 | | | |
318 | +---o 13 d-1 delete d]
318 | +---o 13 d-1 delete d]
319 | | |
319 | | |
320 | | | o 12 mCBm-1 re-add d]
320 | | | o 12 mCBm-1 re-add d]
321 | | | |
321 | | | |
322 | | | o 11 mCBm-0 simple merge - the other way]
322 | | | o 11 mCBm-0 simple merge - the other way]
323 | | |/|
323 | | |/|
324 | | | | o 10 mBCm-1 re-add d]
324 | | | | o 10 mBCm-1 re-add d]
325 | | | | |
325 | | | | |
326 | | +---o 9 mBCm-0 simple merge - one way]
326 | | +---o 9 mBCm-0 simple merge - one way]
327 | | | |/
327 | | | |/
328 | +---o 8 c-1 delete d]
328 | +---o 8 c-1 delete d]
329 | | |
329 | | |
330 +-----o 7 mABm-0 simple merge - the other way]
330 +-----o 7 mABm-0 simple merge - the other way]
331 | | |/
331 | | |/
332 +-----o 6 mBAm-0 simple merge - one way]
332 +-----o 6 mBAm-0 simple merge - one way]
333 | | |/
333 | | |/
334 | | o 5 b-1: b update]
334 | | o 5 b-1: b update]
335 | |/
335 | |/
336 o | 4 a-2: e -move-> f]
336 o | 4 a-2: e -move-> f]
337 | |
337 | |
338 o | 3 a-1: d -move-> e]
338 o | 3 a-1: d -move-> e]
339 |/
339 |/
340 o 2 i-2: c -move-> d]
340 o 2 i-2: c -move-> d]
341 |
341 |
342 o 1 i-1: a -move-> c]
342 o 1 i-1: a -move-> c]
343 |
343 |
344 o 0 i-0 initial commit: a b]
344 o 0 i-0 initial commit: a b]
345
345
346
346
347 Check results
347 Check results
348 =============
348 =============
349
349
350 merging with unrelated change does not interfer wit the renames
350 merging with unrelated change does not interfer wit the renames
351 ---------------------------------------------------------------
351 ---------------------------------------------------------------
352
352
353 - rename on one side
353 - rename on one side
354 - unrelated change on the other side
354 - unrelated change on the other side
355
355
356 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mABm")'
356 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mABm")'
357 A f
357 A f
358 d
358 d
359 R d
359 R d
360 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBAm")'
360 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBAm")'
361 A f
361 A f
362 d
362 d
363 R d
363 R d
364 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mABm")'
364 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mABm")'
365 M b
365 M b
366 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mBAm")'
366 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mBAm")'
367 M b
367 M b
368 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mABm")'
368 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mABm")'
369 M b
369 M b
370 A f
370 A f
371 d
371 d
372 R d
372 R d
373 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBAm")'
373 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBAm")'
374 M b
374 M b
375 A f
375 A f
376 d
376 d
377 R d
377 R d
378 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mABm")'
378 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mABm")'
379 M b
379 M b
380 A f
380 A f
381 a
381 a
382 R a
382 R a
383 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBAm")'
383 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBAm")'
384 M b
384 M b
385 A f
385 A f
386 a
386 a
387 R a
387 R a
388
388
389 merging with the side having a delete
389 merging with the side having a delete
390 -------------------------------------
390 -------------------------------------
391
391
392 case summary:
392 case summary:
393 - one with change to an unrelated file
393 - one with change to an unrelated file
394 - one deleting the change
394 - one deleting the change
395 and recreate an unrelated file after the merge
395 and recreate an unrelated file after the merge
396
396
397 checks:
397 checks:
398 - comparing from the merge
398 - comparing from the merge
399
399
400 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-0")'
400 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-0")'
401 R d
401 R d
402 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-0")'
402 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-0")'
403 R d
403 R d
404 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-0")'
404 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-0")'
405 M b
405 M b
406 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-0")'
406 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-0")'
407 M b
407 M b
408 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-0")'
408 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-0")'
409 M b
409 M b
410 R d
410 R d
411 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-0")'
411 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-0")'
412 M b
412 M b
413 R d
413 R d
414 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-0")'
414 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-0")'
415 M b
415 M b
416 R a
416 R a
417 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-0")'
417 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-0")'
418 M b
418 M b
419 R a
419 R a
420
420
421 - comparing with the merge children re-adding the file
421 - comparing with the merge children re-adding the file
422
422
423 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-1")'
423 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-1")'
424 M d
424 M d
425 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-1")'
425 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-1")'
426 M d
426 M d
427 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-1")'
427 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-1")'
428 M b
428 M b
429 A d
429 A d
430 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-1")'
430 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-1")'
431 M b
431 M b
432 A d
432 A d
433 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-1")'
433 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-1")'
434 M b
434 M b
435 M d
435 M d
436 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-1")'
436 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-1")'
437 M b
437 M b
438 M d
438 M d
439 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-1")'
439 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-1")'
440 M b
440 M b
441 A d
441 A d
442 R a
442 R a
443 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-1")'
443 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-1")'
444 M b
444 M b
445 A d
445 A d
446 R a
446 R a
447
447
448 Comparing with a merge re-adding the file afterward
448 Comparing with a merge re-adding the file afterward
449 ---------------------------------------------------
449 ---------------------------------------------------
450
450
451 Merge:
451 Merge:
452 - one with change to an unrelated file
452 - one with change to an unrelated file
453 - one deleting and recreating the change
453 - one deleting and recreating the change
454
454
455 Note:
455 Note:
456 | In this case, one of the merge wrongly record a merge while there is none.
456 | In this case, one of the merge wrongly record a merge while there is none.
457 | This lead to bad copy tracing information to be dug up.
457 | This lead to bad copy tracing information to be dug up.
458
458
459 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBDm-0")'
459 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBDm-0")'
460 M d
460 M d
461 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mDBm-0")'
461 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mDBm-0")'
462 M d
462 M d
463 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mBDm-0")'
463 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mBDm-0")'
464 M b
464 M b
465 M d
465 M d
466 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mDBm-0")'
466 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mDBm-0")'
467 M b
467 M b
468 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBDm-0")'
468 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBDm-0")'
469 M b
469 M b
470 M d
470 M d
471 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mDBm-0")'
471 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mDBm-0")'
472 M b
472 M b
473 M d
473 M d
474
474
475 The bugs makes recorded copy is different depending of where we started the merge from since
475 The bugs makes recorded copy is different depending of where we started the merge from since
476
476
477 $ hg manifest --debug --rev 'desc("mBDm-0")' | grep '644 d'
477 $ hg manifest --debug --rev 'desc("mBDm-0")' | grep '644 d'
478 0bb5445dc4d02f4e0d86cf16f9f3a411d0f17744 644 d
478 0bb5445dc4d02f4e0d86cf16f9f3a411d0f17744 644 d
479 $ hg manifest --debug --rev 'desc("mDBm-0")' | grep '644 d'
479 $ hg manifest --debug --rev 'desc("mDBm-0")' | grep '644 d'
480 b004912a8510032a0350a74daa2803dadfb00e12 644 d
480 b004912a8510032a0350a74daa2803dadfb00e12 644 d
481
481
482 The 0bb5445dc4d02f4e0d86cf16f9f3a411d0f17744 entry is wrong, since the file was
482 The 0bb5445dc4d02f4e0d86cf16f9f3a411d0f17744 entry is wrong, since the file was
483 deleted on one side (then recreate) and untouched on the other side, no "merge"
483 deleted on one side (then recreate) and untouched on the other side, no "merge"
484 has happened. The resulting `d` file is the untouched version from branch `D`,
484 has happened. The resulting `d` file is the untouched version from branch `D`,
485 not a merge.
485 not a merge.
486
486
487 $ hg manifest --debug --rev 'desc("d-2")' | grep '644 d'
487 $ hg manifest --debug --rev 'desc("d-2")' | grep '644 d'
488 b004912a8510032a0350a74daa2803dadfb00e12 644 d
488 b004912a8510032a0350a74daa2803dadfb00e12 644 d
489 $ hg manifest --debug --rev 'desc("b-1")' | grep '644 d'
489 $ hg manifest --debug --rev 'desc("b-1")' | grep '644 d'
490 01c2f5eabdc4ce2bdee42b5f86311955e6c8f573 644 d
490 01c2f5eabdc4ce2bdee42b5f86311955e6c8f573 644 d
491 $ hg debugindex d
491 $ hg debugindex d
492 rev linkrev nodeid p1 p2
492 rev linkrev nodeid p1 p2
493 0 2 01c2f5eabdc4 000000000000 000000000000
493 0 2 01c2f5eabdc4 000000000000 000000000000
494 1 10 b004912a8510 000000000000 000000000000
494 1 10 b004912a8510 000000000000 000000000000
495 2 15 0bb5445dc4d0 01c2f5eabdc4 b004912a8510
495 2 15 0bb5445dc4d0 01c2f5eabdc4 b004912a8510
496
496
497 (This `hg log` output if wrong, since no merge actually happened).
497 (This `hg log` output if wrong, since no merge actually happened).
498
498
499 $ hg log -Gfr 'desc("mBDm-0")' d
499 $ hg log -Gfr 'desc("mBDm-0")' d
500 o 15 mBDm-0 simple merge - one way]
500 o 15 mBDm-0 simple merge - one way]
501 |\
501 |\
502 o : 14 d-2 re-add d]
502 o : 14 d-2 re-add d]
503 :/
503 :/
504 o 2 i-2: c -move-> d]
504 o 2 i-2: c -move-> d]
505 |
505 |
506 o 1 i-1: a -move-> c]
506 o 1 i-1: a -move-> c]
507 |
507 |
508 o 0 i-0 initial commit: a b]
508 o 0 i-0 initial commit: a b]
509
509
510
510
511 This `hg log` output is correct
511 This `hg log` output is correct
512
512
513 $ hg log -Gfr 'desc("mDBm-0")' d
513 $ hg log -Gfr 'desc("mDBm-0")' d
514 o 14 d-2 re-add d]
514 o 14 d-2 re-add d]
515 |
515 |
516 ~
516 ~
517
517
518 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBDm-0")'
518 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBDm-0")'
519 M b
519 M b
520 A d
520 A d
521 a
521 a
522 R a
522 R a
523 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mDBm-0")'
523 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mDBm-0")'
524 M b
524 M b
525 A d
525 A d
526 R a
526 R a
527
527
528 Comparing with a merge re-adding the file afterward
528 Comparing with a merge with colliding rename
529 ---------------------------------------------------
529 --------------------------------------------
530
530
531 - one with change to an unrelated file
531 - the "e-" branch renaming b to f (through 'g')
532 - one deleting and recreating the change
532 - the "a-" branch renaming d to f (through e)
533
533
534 $ hg manifest --debug --rev 'desc("mAEm-0")' | grep '644 f'
534 $ hg manifest --debug --rev 'desc("mAEm-0")' | grep '644 f'
535 eb806e34ef6be4c264effd5933d31004ad15a793 644 f
535 eb806e34ef6be4c264effd5933d31004ad15a793 644 f
536 $ hg manifest --debug --rev 'desc("mEAm-0")' | grep '644 f'
536 $ hg manifest --debug --rev 'desc("mEAm-0")' | grep '644 f'
537 eb806e34ef6be4c264effd5933d31004ad15a793 644 f
537 eb806e34ef6be4c264effd5933d31004ad15a793 644 f
538 $ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
538 $ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
539 0dd616bc7ab1a111921d95d76f69cda5c2ac539c 644 f
539 0dd616bc7ab1a111921d95d76f69cda5c2ac539c 644 f
540 $ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
540 $ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
541 6da5a2eecb9c833f830b67a4972366d49a9a142c 644 f
541 6da5a2eecb9c833f830b67a4972366d49a9a142c 644 f
542 $ hg debugindex f
542 $ hg debugindex f
543 rev linkrev nodeid p1 p2
543 rev linkrev nodeid p1 p2
544 0 4 0dd616bc7ab1 000000000000 000000000000
544 0 4 0dd616bc7ab1 000000000000 000000000000
545 1 18 6da5a2eecb9c 000000000000 000000000000
545 1 18 6da5a2eecb9c 000000000000 000000000000
546 2 19 eb806e34ef6b 0dd616bc7ab1 6da5a2eecb9c
546 2 19 eb806e34ef6b 0dd616bc7ab1 6da5a2eecb9c
547 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mAEm-0")'
547 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mAEm-0")'
548 M f
548 M f
549 R b
549 R b
550 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mEAm-0")'
550 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mEAm-0")'
551 M f
551 M f
552 R b
552 R b
553 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mAEm-0")'
553 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mAEm-0")'
554 M f
554 M f
555 R d
555 R d
556 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mEAm-0")'
556 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mEAm-0")'
557 M f
557 M f
558 R d
558 R d
559 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("a-2")'
559 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("a-2")'
560 A f
560 A f
561 d
561 d
562 R d
562 R d
563 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("e-2")'
563 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("e-2")'
564 A f
564 A f
565 b
565 b
566 R b
566 R b
567 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mAEm-0")'
567 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mAEm-0")'
568 A f
568 A f
569 d
569 d
570 R b
570 R b
571 R d
571 R d
572 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mEAm-0")'
572 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mEAm-0")'
573 A f
573 A f
574 d
574 d
575 R b
575 R b
576 R d
576 R d
577 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAEm-0")'
577 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAEm-0")'
578 A f
578 A f
579 a
579 a
580 R a
580 R a
581 R b
581 R b
582 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEAm-0")'
582 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEAm-0")'
583 A f
583 A f
584 a
584 a
585 R a
585 R a
586 R b
586 R b
General Comments 0
You need to be logged in to leave comments. Login now