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