##// END OF EJS Templates
tests: run test-copies-chain-merge.t also with copies in changesets...
Martin von Zweigbergk -
r46296:5e72827d default
parent child Browse files
Show More
@@ -1,1201 +1,1310 b''
1 #testcases filelog compatibility sidedata
1 #testcases filelog compatibility changeset sidedata
2
2
3 =====================================================
3 =====================================================
4 Test Copy tracing for chain of copies involving merge
4 Test Copy tracing for chain of copies involving merge
5 =====================================================
5 =====================================================
6
6
7 This test files covers copies/rename case for a chains of commit where merges
7 This test files covers copies/rename case for a chains of commit where merges
8 are involved. It cheks we do not have unwanted update of behavior and that the
8 are involved. It cheks we do not have unwanted update of behavior and that the
9 different options to retrieve copies behave correctly.
9 different options to retrieve copies behave correctly.
10
10
11
11
12 Setup
12 Setup
13 =====
13 =====
14
14
15 use git diff to see rename
15 use git diff to see rename
16
16
17 $ cat << EOF >> $HGRCPATH
17 $ cat << EOF >> $HGRCPATH
18 > [diff]
18 > [diff]
19 > git=yes
19 > git=yes
20 > [ui]
20 > [ui]
21 > logtemplate={rev} {desc}\n
21 > logtemplate={rev} {desc}\n
22 > EOF
22 > EOF
23
23
24 #if compatibility
24 #if compatibility
25 $ cat >> $HGRCPATH << EOF
25 $ cat >> $HGRCPATH << EOF
26 > [experimental]
26 > [experimental]
27 > copies.read-from = compatibility
27 > copies.read-from = compatibility
28 > EOF
28 > EOF
29 #endif
29 #endif
30
30
31 #if changeset
32 $ cat >> $HGRCPATH << EOF
33 > [experimental]
34 > copies.read-from = changeset-only
35 > copies.write-to = changeset-only
36 > EOF
37 #endif
38
31 #if sidedata
39 #if sidedata
32 $ cat >> $HGRCPATH << EOF
40 $ cat >> $HGRCPATH << EOF
33 > [format]
41 > [format]
34 > exp-use-side-data = yes
42 > exp-use-side-data = yes
35 > exp-use-copies-side-data-changeset = yes
43 > exp-use-copies-side-data-changeset = yes
36 > EOF
44 > EOF
37 #endif
45 #endif
38
46
39
47
40 $ hg init repo-chain
48 $ hg init repo-chain
41 $ cd repo-chain
49 $ cd repo-chain
42
50
43 Add some linear rename initialy
51 Add some linear rename initialy
44
52
45 $ echo a > a
53 $ echo a > a
46 $ echo b > b
54 $ echo b > b
47 $ echo h > h
55 $ echo h > h
48 $ hg ci -Am 'i-0 initial commit: a b h'
56 $ hg ci -Am 'i-0 initial commit: a b h'
49 adding a
57 adding a
50 adding b
58 adding b
51 adding h
59 adding h
52 $ hg mv a c
60 $ hg mv a c
53 $ hg ci -Am 'i-1: a -move-> c'
61 $ hg ci -Am 'i-1: a -move-> c'
54 $ hg mv c d
62 $ hg mv c d
55 $ hg ci -Am 'i-2: c -move-> d'
63 $ hg ci -Am 'i-2: c -move-> d'
56 $ hg log -G
64 $ hg log -G
57 @ 2 i-2: c -move-> d
65 @ 2 i-2: c -move-> d
58 |
66 |
59 o 1 i-1: a -move-> c
67 o 1 i-1: a -move-> c
60 |
68 |
61 o 0 i-0 initial commit: a b h
69 o 0 i-0 initial commit: a b h
62
70
63
71
64 And having another branch with renames on the other side
72 And having another branch with renames on the other side
65
73
66 $ hg mv d e
74 $ hg mv d e
67 $ hg ci -Am 'a-1: d -move-> e'
75 $ hg ci -Am 'a-1: d -move-> e'
68 $ hg mv e f
76 $ hg mv e f
69 $ hg ci -Am 'a-2: e -move-> f'
77 $ hg ci -Am 'a-2: e -move-> f'
70 $ hg log -G --rev '::.'
78 $ hg log -G --rev '::.'
71 @ 4 a-2: e -move-> f
79 @ 4 a-2: e -move-> f
72 |
80 |
73 o 3 a-1: d -move-> e
81 o 3 a-1: d -move-> e
74 |
82 |
75 o 2 i-2: c -move-> d
83 o 2 i-2: c -move-> d
76 |
84 |
77 o 1 i-1: a -move-> c
85 o 1 i-1: a -move-> c
78 |
86 |
79 o 0 i-0 initial commit: a b h
87 o 0 i-0 initial commit: a b h
80
88
81
89
82 Have a branching with nothing on one side
90 Have a branching with nothing on one side
83
91
84 $ hg up 'desc("i-2")'
92 $ hg up 'desc("i-2")'
85 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
93 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
86 $ echo foo > b
94 $ echo foo > b
87 $ hg ci -m 'b-1: b update'
95 $ hg ci -m 'b-1: b update'
88 created new head
96 created new head
89 $ hg log -G --rev '::.'
97 $ hg log -G --rev '::.'
90 @ 5 b-1: b update
98 @ 5 b-1: b update
91 |
99 |
92 o 2 i-2: c -move-> d
100 o 2 i-2: c -move-> d
93 |
101 |
94 o 1 i-1: a -move-> c
102 o 1 i-1: a -move-> c
95 |
103 |
96 o 0 i-0 initial commit: a b h
104 o 0 i-0 initial commit: a b h
97
105
98
106
99 Create a branch that delete a file previous renamed
107 Create a branch that delete a file previous renamed
100
108
101 $ hg up 'desc("i-2")'
109 $ hg up 'desc("i-2")'
102 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
110 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
103 $ hg rm d
111 $ hg rm d
104 $ hg ci -m 'c-1 delete d'
112 $ hg ci -m 'c-1 delete d'
105 created new head
113 created new head
106 $ hg log -G --rev '::.'
114 $ hg log -G --rev '::.'
107 @ 6 c-1 delete d
115 @ 6 c-1 delete d
108 |
116 |
109 o 2 i-2: c -move-> d
117 o 2 i-2: c -move-> d
110 |
118 |
111 o 1 i-1: a -move-> c
119 o 1 i-1: a -move-> c
112 |
120 |
113 o 0 i-0 initial commit: a b h
121 o 0 i-0 initial commit: a b h
114
122
115
123
116 Create a branch that delete a file previous renamed and recreate it
124 Create a branch that delete a file previous renamed and recreate it
117
125
118 $ hg up 'desc("i-2")'
126 $ hg up 'desc("i-2")'
119 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
127 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
120 $ hg rm d
128 $ hg rm d
121 $ hg ci -m 'd-1 delete d'
129 $ hg ci -m 'd-1 delete d'
122 created new head
130 created new head
123 $ echo bar > d
131 $ echo bar > d
124 $ hg add d
132 $ hg add d
125 $ hg ci -m 'd-2 re-add d'
133 $ hg ci -m 'd-2 re-add d'
126 $ hg log -G --rev '::.'
134 $ hg log -G --rev '::.'
127 @ 8 d-2 re-add d
135 @ 8 d-2 re-add d
128 |
136 |
129 o 7 d-1 delete d
137 o 7 d-1 delete d
130 |
138 |
131 o 2 i-2: c -move-> d
139 o 2 i-2: c -move-> d
132 |
140 |
133 o 1 i-1: a -move-> c
141 o 1 i-1: a -move-> c
134 |
142 |
135 o 0 i-0 initial commit: a b h
143 o 0 i-0 initial commit: a b h
136
144
137
145
138 Having another branch renaming a different file to the same filename as another
146 Having another branch renaming a different file to the same filename as another
139
147
140 $ hg up 'desc("i-2")'
148 $ hg up 'desc("i-2")'
141 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
149 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
142 $ hg mv b g
150 $ hg mv b g
143 $ hg ci -m 'e-1 b -move-> g'
151 $ hg ci -m 'e-1 b -move-> g'
144 created new head
152 created new head
145 $ hg mv g f
153 $ hg mv g f
146 $ hg ci -m 'e-2 g -move-> f'
154 $ hg ci -m 'e-2 g -move-> f'
147 $ hg log -G --rev '::.'
155 $ hg log -G --rev '::.'
148 @ 10 e-2 g -move-> f
156 @ 10 e-2 g -move-> f
149 |
157 |
150 o 9 e-1 b -move-> g
158 o 9 e-1 b -move-> g
151 |
159 |
152 o 2 i-2: c -move-> d
160 o 2 i-2: c -move-> d
153 |
161 |
154 o 1 i-1: a -move-> c
162 o 1 i-1: a -move-> c
155 |
163 |
156 o 0 i-0 initial commit: a b h
164 o 0 i-0 initial commit: a b h
157
165
158
166
159 merging with unrelated change does not interfere with the renames
167 merging with unrelated change does not interfere with the renames
160 ---------------------------------------------------------------
168 ---------------------------------------------------------------
161
169
162 - rename on one side
170 - rename on one side
163 - unrelated change on the other side
171 - unrelated change on the other side
164
172
165 $ hg up 'desc("b-1")'
173 $ hg up 'desc("b-1")'
166 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
174 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
167 $ hg merge 'desc("a-2")'
175 $ hg merge 'desc("a-2")'
168 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
176 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
169 (branch merge, don't forget to commit)
177 (branch merge, don't forget to commit)
170 $ hg ci -m 'mBAm-0 simple merge - one way'
178 $ hg ci -m 'mBAm-0 simple merge - one way'
171 $ hg up 'desc("a-2")'
179 $ hg up 'desc("a-2")'
172 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
180 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
173 $ hg merge 'desc("b-1")'
181 $ hg merge 'desc("b-1")'
174 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
182 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
175 (branch merge, don't forget to commit)
183 (branch merge, don't forget to commit)
176 $ hg ci -m 'mABm-0 simple merge - the other way'
184 $ hg ci -m 'mABm-0 simple merge - the other way'
177 created new head
185 created new head
178 $ hg log -G --rev '::(desc("mABm")+desc("mBAm"))'
186 $ hg log -G --rev '::(desc("mABm")+desc("mBAm"))'
179 @ 12 mABm-0 simple merge - the other way
187 @ 12 mABm-0 simple merge - the other way
180 |\
188 |\
181 +---o 11 mBAm-0 simple merge - one way
189 +---o 11 mBAm-0 simple merge - one way
182 | |/
190 | |/
183 | o 5 b-1: b update
191 | o 5 b-1: b update
184 | |
192 | |
185 o | 4 a-2: e -move-> f
193 o | 4 a-2: e -move-> f
186 | |
194 | |
187 o | 3 a-1: d -move-> e
195 o | 3 a-1: d -move-> e
188 |/
196 |/
189 o 2 i-2: c -move-> d
197 o 2 i-2: c -move-> d
190 |
198 |
191 o 1 i-1: a -move-> c
199 o 1 i-1: a -move-> c
192 |
200 |
193 o 0 i-0 initial commit: a b h
201 o 0 i-0 initial commit: a b h
194
202
195
203
196 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mABm")'
204 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mABm")'
197 A f
205 A f
198 d
206 d
199 R d
207 R d
200 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBAm")'
208 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBAm")'
201 A f
209 A f
202 d
210 d
203 R d
211 R d
204 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mABm")'
212 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mABm")'
205 M b
213 M b
206 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mBAm")'
214 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mBAm")'
207 M b
215 M b
208 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mABm")'
216 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mABm")'
209 M b
217 M b
210 A f
218 A f
211 d
219 d
212 R d
220 R d
213 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBAm")'
221 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBAm")'
214 M b
222 M b
215 A f
223 A f
216 d
224 d
217 R d
225 R d
218 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mABm")'
226 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mABm")'
219 M b
227 M b
220 A f
228 A f
221 a
229 a
222 R a
230 R a
223 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBAm")'
231 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBAm")'
224 M b
232 M b
225 A f
233 A f
226 a
234 a
227 R a
235 R a
228
236
229 merging with the side having a delete
237 merging with the side having a delete
230 -------------------------------------
238 -------------------------------------
231
239
232 case summary:
240 case summary:
233 - one with change to an unrelated file
241 - one with change to an unrelated file
234 - one deleting the change
242 - one deleting the change
235 and recreate an unrelated file after the merge
243 and recreate an unrelated file after the merge
236
244
237 $ hg up 'desc("b-1")'
245 $ hg up 'desc("b-1")'
238 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
246 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
239 $ hg merge 'desc("c-1")'
247 $ hg merge 'desc("c-1")'
240 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
248 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
241 (branch merge, don't forget to commit)
249 (branch merge, don't forget to commit)
242 $ hg ci -m 'mBCm-0 simple merge - one way'
250 $ hg ci -m 'mBCm-0 simple merge - one way'
243 $ echo bar > d
251 $ echo bar > d
244 $ hg add d
252 $ hg add d
245 $ hg ci -m 'mBCm-1 re-add d'
253 $ hg ci -m 'mBCm-1 re-add d'
246 $ hg up 'desc("c-1")'
254 $ hg up 'desc("c-1")'
247 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
255 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
248 $ hg merge 'desc("b-1")'
256 $ hg merge 'desc("b-1")'
249 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
257 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
250 (branch merge, don't forget to commit)
258 (branch merge, don't forget to commit)
251 $ hg ci -m 'mCBm-0 simple merge - the other way'
259 $ hg ci -m 'mCBm-0 simple merge - the other way'
252 created new head
260 created new head
253 $ echo bar > d
261 $ echo bar > d
254 $ hg add d
262 $ hg add d
255 $ hg ci -m 'mCBm-1 re-add d'
263 $ hg ci -m 'mCBm-1 re-add d'
256 $ hg log -G --rev '::(desc("mCBm")+desc("mBCm"))'
264 $ hg log -G --rev '::(desc("mCBm")+desc("mBCm"))'
257 @ 16 mCBm-1 re-add d
265 @ 16 mCBm-1 re-add d
258 |
266 |
259 o 15 mCBm-0 simple merge - the other way
267 o 15 mCBm-0 simple merge - the other way
260 |\
268 |\
261 | | o 14 mBCm-1 re-add d
269 | | o 14 mBCm-1 re-add d
262 | | |
270 | | |
263 +---o 13 mBCm-0 simple merge - one way
271 +---o 13 mBCm-0 simple merge - one way
264 | |/
272 | |/
265 | o 6 c-1 delete d
273 | o 6 c-1 delete d
266 | |
274 | |
267 o | 5 b-1: b update
275 o | 5 b-1: b update
268 |/
276 |/
269 o 2 i-2: c -move-> d
277 o 2 i-2: c -move-> d
270 |
278 |
271 o 1 i-1: a -move-> c
279 o 1 i-1: a -move-> c
272 |
280 |
273 o 0 i-0 initial commit: a b h
281 o 0 i-0 initial commit: a b h
274
282
275 - comparing from the merge
283 - comparing from the merge
276
284
277 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-0")'
285 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-0")'
278 R d
286 R d
279 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-0")'
287 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-0")'
280 R d
288 R d
281 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-0")'
289 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-0")'
282 M b
290 M b
283 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-0")'
291 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-0")'
284 M b
292 M b
285 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-0")'
293 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-0")'
286 M b
294 M b
287 R d
295 R d
288 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-0")'
296 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-0")'
289 M b
297 M b
290 R d
298 R d
291 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-0")'
299 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-0")'
292 M b
300 M b
293 R a
301 R a
294 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-0")'
302 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-0")'
295 M b
303 M b
296 R a
304 R a
297
305
298 - comparing with the merge children re-adding the file
306 - comparing with the merge children re-adding the file
299
307
300 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-1")'
308 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBCm-1")'
301 M d
309 M d
302 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-1")'
310 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCBm-1")'
303 M d
311 M d
304 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-1")'
312 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBCm-1")'
305 M b
313 M b
306 A d
314 A d
307 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-1")'
315 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCBm-1")'
308 M b
316 M b
309 A d
317 A d
310 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-1")'
318 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBCm-1")'
311 M b
319 M b
312 M d
320 M d
313 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-1")'
321 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mCBm-1")'
314 M b
322 M b
315 M d
323 M d
316 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-1")'
324 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBCm-1")'
317 M b
325 M b
318 A d
326 A d
319 R a
327 R a
320 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-1")'
328 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCBm-1")'
321 M b
329 M b
322 A d
330 A d
323 R a
331 R a
324
332
325 Comparing with a merge re-adding the file afterward
333 Comparing with a merge re-adding the file afterward
326 ---------------------------------------------------
334 ---------------------------------------------------
327
335
328 Merge:
336 Merge:
329 - one with change to an unrelated file
337 - one with change to an unrelated file
330 - one deleting and recreating the change
338 - one deleting and recreating the change
331
339
332 $ hg up 'desc("b-1")'
340 $ hg up 'desc("b-1")'
333 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
341 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
334 $ hg merge 'desc("d-2")'
342 $ hg merge 'desc("d-2")'
335 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
343 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
336 (branch merge, don't forget to commit)
344 (branch merge, don't forget to commit)
337 $ hg ci -m 'mBDm-0 simple merge - one way'
345 $ hg ci -m 'mBDm-0 simple merge - one way'
338 $ hg up 'desc("d-2")'
346 $ hg up 'desc("d-2")'
339 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
347 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
340 $ hg merge 'desc("b-1")'
348 $ hg merge 'desc("b-1")'
341 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
349 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
342 (branch merge, don't forget to commit)
350 (branch merge, don't forget to commit)
343 $ hg ci -m 'mDBm-0 simple merge - the other way'
351 $ hg ci -m 'mDBm-0 simple merge - the other way'
344 created new head
352 created new head
345 $ hg log -G --rev '::(desc("mDBm")+desc("mBDm"))'
353 $ hg log -G --rev '::(desc("mDBm")+desc("mBDm"))'
346 @ 18 mDBm-0 simple merge - the other way
354 @ 18 mDBm-0 simple merge - the other way
347 |\
355 |\
348 +---o 17 mBDm-0 simple merge - one way
356 +---o 17 mBDm-0 simple merge - one way
349 | |/
357 | |/
350 | o 8 d-2 re-add d
358 | o 8 d-2 re-add d
351 | |
359 | |
352 | o 7 d-1 delete d
360 | o 7 d-1 delete d
353 | |
361 | |
354 o | 5 b-1: b update
362 o | 5 b-1: b update
355 |/
363 |/
356 o 2 i-2: c -move-> d
364 o 2 i-2: c -move-> d
357 |
365 |
358 o 1 i-1: a -move-> c
366 o 1 i-1: a -move-> c
359 |
367 |
360 o 0 i-0 initial commit: a b h
368 o 0 i-0 initial commit: a b h
361
369
362 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBDm-0")'
370 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBDm-0")'
363 M d
371 M d
364 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mDBm-0")'
372 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mDBm-0")'
365 M d
373 M d
366 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mBDm-0")'
374 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mBDm-0")'
367 M b
375 M b
368 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mDBm-0")'
376 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mDBm-0")'
369 M b
377 M b
370 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBDm-0")'
378 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mBDm-0")'
371 M b
379 M b
372 M d
380 M d
373 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mDBm-0")'
381 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mDBm-0")'
374 M b
382 M b
375 M d
383 M d
376
384
377 The bugs makes recorded copy is different depending of where we started the merge from since
385 The bugs makes recorded copy is different depending of where we started the merge from since
378
386
379 $ hg manifest --debug --rev 'desc("mBDm-0")' | grep '644 d'
387 $ hg manifest --debug --rev 'desc("mBDm-0")' | grep '644 d'
380 b004912a8510032a0350a74daa2803dadfb00e12 644 d
388 b004912a8510032a0350a74daa2803dadfb00e12 644 d
381 $ hg manifest --debug --rev 'desc("mDBm-0")' | grep '644 d'
389 $ hg manifest --debug --rev 'desc("mDBm-0")' | grep '644 d'
382 b004912a8510032a0350a74daa2803dadfb00e12 644 d
390 b004912a8510032a0350a74daa2803dadfb00e12 644 d
383
391
384 $ hg manifest --debug --rev 'desc("d-2")' | grep '644 d'
392 $ hg manifest --debug --rev 'desc("d-2")' | grep '644 d'
385 b004912a8510032a0350a74daa2803dadfb00e12 644 d
393 b004912a8510032a0350a74daa2803dadfb00e12 644 d
386 $ hg manifest --debug --rev 'desc("b-1")' | grep '644 d'
394 $ hg manifest --debug --rev 'desc("b-1")' | grep '644 d'
387 169be882533bc917905d46c0c951aa9a1e288dcf 644 d
395 169be882533bc917905d46c0c951aa9a1e288dcf 644 d (no-changeset !)
396 b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 d (changeset !)
388 $ hg debugindex d
397 $ hg debugindex d
389 rev linkrev nodeid p1 p2
398 rev linkrev nodeid p1 p2
390 0 2 169be882533b 000000000000 000000000000
399 0 2 169be882533b 000000000000 000000000000 (no-changeset !)
400 0 2 b789fdd96dc2 000000000000 000000000000 (changeset !)
391 1 8 b004912a8510 000000000000 000000000000
401 1 8 b004912a8510 000000000000 000000000000
392
402
393 Log output should not include a merge commit as it did not happen
403 Log output should not include a merge commit as it did not happen
394
404
405 #if no-changeset
406 $ hg log -Gfr 'desc("mBDm-0")' d
407 o 8 d-2 re-add d
408 |
409 ~
410 #else
395 $ hg log -Gfr 'desc("mBDm-0")' d
411 $ hg log -Gfr 'desc("mBDm-0")' d
396 o 8 d-2 re-add d
412 o 8 d-2 re-add d
397 |
413 |
398 ~
414 ~
415 #endif
399
416
417 #if no-changeset
400 $ hg log -Gfr 'desc("mDBm-0")' d
418 $ hg log -Gfr 'desc("mDBm-0")' d
401 o 8 d-2 re-add d
419 o 8 d-2 re-add d
402 |
420 |
403 ~
421 ~
422 #else
423 $ hg log -Gfr 'desc("mDBm-0")' d
424 o 8 d-2 re-add d
425 |
426 ~
427 #endif
404
428
405 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBDm-0")'
429 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBDm-0")'
406 M b
430 M b
407 A d
431 A d
408 R a
432 R a
409 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mDBm-0")'
433 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mDBm-0")'
410 M b
434 M b
411 A d
435 A d
412 R a
436 R a
413
437
414
438
415 Comparing with a merge with colliding rename
439 Comparing with a merge with colliding rename
416 --------------------------------------------
440 --------------------------------------------
417
441
418 - the "e-" branch renaming b to f (through 'g')
442 - the "e-" branch renaming b to f (through 'g')
419 - the "a-" branch renaming d to f (through e)
443 - the "a-" branch renaming d to f (through e)
420
444
421 $ hg up 'desc("a-2")'
445 $ hg up 'desc("a-2")'
422 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
446 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
423 $ hg merge 'desc("e-2")' --tool :union
447 $ hg merge 'desc("e-2")' --tool :union
424 merging f
448 merging f
425 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
449 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
426 (branch merge, don't forget to commit)
450 (branch merge, don't forget to commit)
427 $ hg ci -m 'mAEm-0 simple merge - one way'
451 $ hg ci -m 'mAEm-0 simple merge - one way'
428 $ hg up 'desc("e-2")'
452 $ hg up 'desc("e-2")'
429 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
453 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
430 $ hg merge 'desc("a-2")' --tool :union
454 $ hg merge 'desc("a-2")' --tool :union
431 merging f
455 merging f
432 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
456 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
433 (branch merge, don't forget to commit)
457 (branch merge, don't forget to commit)
434 $ hg ci -m 'mEAm-0 simple merge - the other way'
458 $ hg ci -m 'mEAm-0 simple merge - the other way'
435 created new head
459 created new head
436 $ hg log -G --rev '::(desc("mAEm")+desc("mEAm"))'
460 $ hg log -G --rev '::(desc("mAEm")+desc("mEAm"))'
437 @ 20 mEAm-0 simple merge - the other way
461 @ 20 mEAm-0 simple merge - the other way
438 |\
462 |\
439 +---o 19 mAEm-0 simple merge - one way
463 +---o 19 mAEm-0 simple merge - one way
440 | |/
464 | |/
441 | o 10 e-2 g -move-> f
465 | o 10 e-2 g -move-> f
442 | |
466 | |
443 | o 9 e-1 b -move-> g
467 | o 9 e-1 b -move-> g
444 | |
468 | |
445 o | 4 a-2: e -move-> f
469 o | 4 a-2: e -move-> f
446 | |
470 | |
447 o | 3 a-1: d -move-> e
471 o | 3 a-1: d -move-> e
448 |/
472 |/
449 o 2 i-2: c -move-> d
473 o 2 i-2: c -move-> d
450 |
474 |
451 o 1 i-1: a -move-> c
475 o 1 i-1: a -move-> c
452 |
476 |
453 o 0 i-0 initial commit: a b h
477 o 0 i-0 initial commit: a b h
454
478
479 #if no-changeset
455 $ hg manifest --debug --rev 'desc("mAEm-0")' | grep '644 f'
480 $ hg manifest --debug --rev 'desc("mAEm-0")' | grep '644 f'
456 c39c6083dad048d5138618a46f123e2f397f4f18 644 f
481 c39c6083dad048d5138618a46f123e2f397f4f18 644 f
457 $ hg manifest --debug --rev 'desc("mEAm-0")' | grep '644 f'
482 $ hg manifest --debug --rev 'desc("mEAm-0")' | grep '644 f'
458 a9a8bc3860c9d8fa5f2f7e6ea8d40498322737fd 644 f
483 a9a8bc3860c9d8fa5f2f7e6ea8d40498322737fd 644 f
459 $ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
484 $ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
460 263ea25e220aaeb7b9bac551c702037849aa75e8 644 f
485 263ea25e220aaeb7b9bac551c702037849aa75e8 644 f
461 $ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
486 $ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
462 71b9b7e73d973572ade6dd765477fcee6890e8b1 644 f
487 71b9b7e73d973572ade6dd765477fcee6890e8b1 644 f
463 $ hg debugindex f
488 $ hg debugindex f
464 rev linkrev nodeid p1 p2
489 rev linkrev nodeid p1 p2
465 0 4 263ea25e220a 000000000000 000000000000
490 0 4 263ea25e220a 000000000000 000000000000
466 1 10 71b9b7e73d97 000000000000 000000000000
491 1 10 71b9b7e73d97 000000000000 000000000000
467 2 19 c39c6083dad0 263ea25e220a 71b9b7e73d97
492 2 19 c39c6083dad0 263ea25e220a 71b9b7e73d97
468 3 20 a9a8bc3860c9 71b9b7e73d97 263ea25e220a
493 3 20 a9a8bc3860c9 71b9b7e73d97 263ea25e220a
494 #else
495 $ hg manifest --debug --rev 'desc("mAEm-0")' | grep '644 f'
496 498e8799f49f9da1ca06bb2d6d4accf165c5b572 644 f
497 $ hg manifest --debug --rev 'desc("mEAm-0")' | grep '644 f'
498 c5b506a7118667a38a9c9348a1f63b679e382f57 644 f
499 $ hg manifest --debug --rev 'desc("a-2")' | grep '644 f'
500 b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 f
501 $ hg manifest --debug --rev 'desc("e-2")' | grep '644 f'
502 1e88685f5ddec574a34c70af492f95b6debc8741 644 f
503 $ hg debugindex f
504 rev linkrev nodeid p1 p2
505 0 4 b789fdd96dc2 000000000000 000000000000
506 1 10 1e88685f5dde 000000000000 000000000000
507 2 19 498e8799f49f b789fdd96dc2 1e88685f5dde
508 3 20 c5b506a71186 1e88685f5dde b789fdd96dc2
509 #endif
469
510
470 # Here the filelog based implementation is not looking at the rename
511 # Here the filelog based implementation is not looking at the rename
471 # information (because the file exist on both side). However the changelog
512 # information (because the file exist on both side). However the changelog
472 # based on works fine. We have different output.
513 # based on works fine. We have different output.
473
514
474 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mAEm-0")'
515 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mAEm-0")'
475 M f
516 M f
476 b (no-filelog !)
517 b (no-filelog !)
477 R b
518 R b
478 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mEAm-0")'
519 $ hg status --copies --rev 'desc("a-2")' --rev 'desc("mEAm-0")'
479 M f
520 M f
480 b (no-filelog !)
521 b (no-filelog !)
481 R b
522 R b
482 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mAEm-0")'
523 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mAEm-0")'
483 M f
524 M f
484 d (no-filelog !)
525 d (no-filelog !)
485 R d
526 R d
486 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mEAm-0")'
527 $ hg status --copies --rev 'desc("e-2")' --rev 'desc("mEAm-0")'
487 M f
528 M f
488 d (no-filelog !)
529 d (no-filelog !)
489 R d
530 R d
490 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("a-2")'
531 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("a-2")'
491 A f
532 A f
492 d
533 d
493 R d
534 R d
494 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("e-2")'
535 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("e-2")'
495 A f
536 A f
496 b
537 b
497 R b
538 R b
498
539
499 # From here, we run status against revision where both source file exists.
540 # From here, we run status against revision where both source file exists.
500 #
541 #
501 # The filelog based implementation picks an arbitrary side based on revision
542 # The filelog based implementation picks an arbitrary side based on revision
502 # numbers. So the same side "wins" whatever the parents order is. This is
543 # numbers. So the same side "wins" whatever the parents order is. This is
503 # sub-optimal because depending on revision numbers means the result can be
544 # sub-optimal because depending on revision numbers means the result can be
504 # different from one repository to the next.
545 # different from one repository to the next.
505 #
546 #
506 # The changeset based algorithm use the parent order to break tie on conflicting
547 # The changeset based algorithm use the parent order to break tie on conflicting
507 # information and will have a different order depending on who is p1 and p2.
548 # information and will have a different order depending on who is p1 and p2.
508 # That order is stable accross repositories. (data from p1 prevails)
549 # That order is stable accross repositories. (data from p1 prevails)
509
550
510 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mAEm-0")'
551 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mAEm-0")'
511 A f
552 A f
512 d
553 d
513 R b
554 R b
514 R d
555 R d
515 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mEAm-0")'
556 $ hg status --copies --rev 'desc("i-2")' --rev 'desc("mEAm-0")'
516 A f
557 A f
517 d (filelog !)
558 d (filelog !)
518 b (no-filelog !)
559 b (no-filelog !)
519 R b
560 R b
520 R d
561 R d
521 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAEm-0")'
562 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mAEm-0")'
522 A f
563 A f
523 a
564 a
524 R a
565 R a
525 R b
566 R b
526 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEAm-0")'
567 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mEAm-0")'
527 A f
568 A f
528 a (filelog !)
569 a (filelog !)
529 b (no-filelog !)
570 b (no-filelog !)
530 R a
571 R a
531 R b
572 R b
532
573
533
574
534 Note:
575 Note:
535 | In this case, one of the merge wrongly record a merge while there is none.
576 | In this case, one of the merge wrongly record a merge while there is none.
536 | This lead to bad copy tracing information to be dug up.
577 | This lead to bad copy tracing information to be dug up.
537
578
538
579
539 Merge:
580 Merge:
540 - one with change to an unrelated file (b)
581 - one with change to an unrelated file (b)
541 - one overwriting a file (d) with a rename (from h to i to d)
582 - one overwriting a file (d) with a rename (from h to i to d)
542
583
543 $ hg up 'desc("i-2")'
584 $ hg up 'desc("i-2")'
544 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
585 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
545 $ hg mv h i
586 $ hg mv h i
546 $ hg commit -m "f-1: rename h -> i"
587 $ hg commit -m "f-1: rename h -> i"
547 created new head
588 created new head
548 $ hg mv --force i d
589 $ hg mv --force i d
549 $ hg commit -m "f-2: rename i -> d"
590 $ hg commit -m "f-2: rename i -> d"
550 $ hg debugindex d
591 $ hg debugindex d
551 rev linkrev nodeid p1 p2
592 rev linkrev nodeid p1 p2
552 0 2 169be882533b 000000000000 000000000000
593 0 2 169be882533b 000000000000 000000000000 (no-changeset !)
594 0 2 b789fdd96dc2 000000000000 000000000000 (changeset !)
553 1 8 b004912a8510 000000000000 000000000000
595 1 8 b004912a8510 000000000000 000000000000
554 2 22 4a067cf8965d 000000000000 000000000000
596 2 22 4a067cf8965d 000000000000 000000000000 (no-changeset !)
597 2 22 fe6f8b4f507f 000000000000 000000000000 (changeset !)
555 $ hg up 'desc("b-1")'
598 $ hg up 'desc("b-1")'
556 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
599 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
557 $ hg merge 'desc("f-2")'
600 $ hg merge 'desc("f-2")'
558 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
601 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
559 (branch merge, don't forget to commit)
602 (branch merge, don't forget to commit)
560 $ hg ci -m 'mBFm-0 simple merge - one way'
603 $ hg ci -m 'mBFm-0 simple merge - one way'
561 $ hg up 'desc("f-2")'
604 $ hg up 'desc("f-2")'
562 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
605 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
563 $ hg merge 'desc("b-1")'
606 $ hg merge 'desc("b-1")'
564 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
607 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
565 (branch merge, don't forget to commit)
608 (branch merge, don't forget to commit)
566 $ hg ci -m 'mFBm-0 simple merge - the other way'
609 $ hg ci -m 'mFBm-0 simple merge - the other way'
567 created new head
610 created new head
568 $ hg log -G --rev '::(desc("mBFm")+desc("mFBm"))'
611 $ hg log -G --rev '::(desc("mBFm")+desc("mFBm"))'
569 @ 24 mFBm-0 simple merge - the other way
612 @ 24 mFBm-0 simple merge - the other way
570 |\
613 |\
571 +---o 23 mBFm-0 simple merge - one way
614 +---o 23 mBFm-0 simple merge - one way
572 | |/
615 | |/
573 | o 22 f-2: rename i -> d
616 | o 22 f-2: rename i -> d
574 | |
617 | |
575 | o 21 f-1: rename h -> i
618 | o 21 f-1: rename h -> i
576 | |
619 | |
577 o | 5 b-1: b update
620 o | 5 b-1: b update
578 |/
621 |/
579 o 2 i-2: c -move-> d
622 o 2 i-2: c -move-> d
580 |
623 |
581 o 1 i-1: a -move-> c
624 o 1 i-1: a -move-> c
582 |
625 |
583 o 0 i-0 initial commit: a b h
626 o 0 i-0 initial commit: a b h
584
627
585 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBFm-0")'
628 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBFm-0")'
586 M b
629 M b
587 A d
630 A d
588 h
631 h
589 R a
632 R a
590 R h
633 R h
591 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFBm-0")'
634 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFBm-0")'
592 M b
635 M b
593 A d
636 A d
594 h
637 h
595 R a
638 R a
596 R h
639 R h
597 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBFm-0")'
640 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBFm-0")'
598 M d
641 M d
599 h (no-filelog !)
642 h (no-filelog !)
600 R h
643 R h
601 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mBFm-0")'
644 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mBFm-0")'
602 M b
645 M b
603 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mBFm-0")'
646 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mBFm-0")'
604 M b
647 M b
605 M d
648 M d
606 i (no-filelog !)
649 i (no-filelog !)
607 R i
650 R i
608 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mFBm-0")'
651 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mFBm-0")'
609 M d
652 M d
610 h (no-filelog !)
653 h (no-filelog !)
611 R h
654 R h
612 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mFBm-0")'
655 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mFBm-0")'
613 M b
656 M b
614 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mFBm-0")'
657 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mFBm-0")'
615 M b
658 M b
616 M d
659 M d
617 i (no-filelog !)
660 i (no-filelog !)
618 R i
661 R i
619
662
663 #if no-changeset
620 $ hg log -Gfr 'desc("mBFm-0")' d
664 $ hg log -Gfr 'desc("mBFm-0")' d
621 o 22 f-2: rename i -> d
665 o 22 f-2: rename i -> d
622 |
666 |
623 o 21 f-1: rename h -> i
667 o 21 f-1: rename h -> i
624 :
668 :
625 o 0 i-0 initial commit: a b h
669 o 0 i-0 initial commit: a b h
626
670
671 #else
672 $ hg log -Gfr 'desc("mBFm-0")' d
673 o 22 f-2: rename i -> d
674 |
675 ~
676 #endif
627
677
678 #if no-changeset
628 $ hg log -Gfr 'desc("mFBm-0")' d
679 $ hg log -Gfr 'desc("mFBm-0")' d
629 o 22 f-2: rename i -> d
680 o 22 f-2: rename i -> d
630 |
681 |
631 o 21 f-1: rename h -> i
682 o 21 f-1: rename h -> i
632 :
683 :
633 o 0 i-0 initial commit: a b h
684 o 0 i-0 initial commit: a b h
634
685
686 #else
687 $ hg log -Gfr 'desc("mFBm-0")' d
688 o 22 f-2: rename i -> d
689 |
690 ~
691 #endif
635
692
636
693
637 Merge:
694 Merge:
638 - one with change to a file
695 - one with change to a file
639 - one deleting and recreating the file
696 - one deleting and recreating the file
640
697
641 Unlike in the 'BD/DB' cases, an actual merge happened here. So we should
698 Unlike in the 'BD/DB' cases, an actual merge happened here. So we should
642 consider history and rename on both branch of the merge.
699 consider history and rename on both branch of the merge.
643
700
644 $ hg up 'desc("i-2")'
701 $ hg up 'desc("i-2")'
645 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
702 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
646 $ echo "some update" >> d
703 $ echo "some update" >> d
647 $ hg commit -m "g-1: update d"
704 $ hg commit -m "g-1: update d"
648 created new head
705 created new head
649 $ hg up 'desc("d-2")'
706 $ hg up 'desc("d-2")'
650 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
707 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
651 $ hg merge 'desc("g-1")' --tool :union
708 $ hg merge 'desc("g-1")' --tool :union
652 merging d
709 merging d
653 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
710 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
654 (branch merge, don't forget to commit)
711 (branch merge, don't forget to commit)
655 $ hg ci -m 'mDGm-0 simple merge - one way'
712 $ hg ci -m 'mDGm-0 simple merge - one way'
656 $ hg up 'desc("g-1")'
713 $ hg up 'desc("g-1")'
657 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
714 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
658 $ hg merge 'desc("d-2")' --tool :union
715 $ hg merge 'desc("d-2")' --tool :union
659 merging d
716 merging d
660 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
717 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
661 (branch merge, don't forget to commit)
718 (branch merge, don't forget to commit)
662 $ hg ci -m 'mGDm-0 simple merge - the other way'
719 $ hg ci -m 'mGDm-0 simple merge - the other way'
663 created new head
720 created new head
664 $ hg log -G --rev '::(desc("mDGm")+desc("mGDm"))'
721 $ hg log -G --rev '::(desc("mDGm")+desc("mGDm"))'
665 @ 27 mGDm-0 simple merge - the other way
722 @ 27 mGDm-0 simple merge - the other way
666 |\
723 |\
667 +---o 26 mDGm-0 simple merge - one way
724 +---o 26 mDGm-0 simple merge - one way
668 | |/
725 | |/
669 | o 25 g-1: update d
726 | o 25 g-1: update d
670 | |
727 | |
671 o | 8 d-2 re-add d
728 o | 8 d-2 re-add d
672 | |
729 | |
673 o | 7 d-1 delete d
730 o | 7 d-1 delete d
674 |/
731 |/
675 o 2 i-2: c -move-> d
732 o 2 i-2: c -move-> d
676 |
733 |
677 o 1 i-1: a -move-> c
734 o 1 i-1: a -move-> c
678 |
735 |
679 o 0 i-0 initial commit: a b h
736 o 0 i-0 initial commit: a b h
680
737
681 One side of the merge have a long history with rename. The other side of the
738 One side of the merge have a long history with rename. The other side of the
682 merge point to a new file with a smaller history. Each side is "valid".
739 merge point to a new file with a smaller history. Each side is "valid".
683
740
684 (and again the filelog based algorithm only explore one, with a pick based on
741 (and again the filelog based algorithm only explore one, with a pick based on
685 revision numbers)
742 revision numbers)
686
743
687 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mDGm-0")'
744 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mDGm-0")'
688 A d
745 A d
689 a (filelog !)
746 a (filelog !)
690 R a
747 R a
691 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGDm-0")'
748 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGDm-0")'
692 A d
749 A d
693 a
750 a
694 R a
751 R a
695 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mDGm-0")'
752 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mDGm-0")'
696 M d
753 M d
697 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mGDm-0")'
754 $ hg status --copies --rev 'desc("d-2")' --rev 'desc("mGDm-0")'
698 M d
755 M d
699 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mDGm-0")'
756 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mDGm-0")'
700 M d
757 M d
701 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mGDm-0")'
758 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mGDm-0")'
702 M d
759 M d
703
760
761 #if no-changeset
704 $ hg log -Gfr 'desc("mDGm-0")' d
762 $ hg log -Gfr 'desc("mDGm-0")' d
705 o 26 mDGm-0 simple merge - one way
763 o 26 mDGm-0 simple merge - one way
706 |\
764 |\
707 | o 25 g-1: update d
765 | o 25 g-1: update d
708 | |
766 | |
709 o | 8 d-2 re-add d
767 o | 8 d-2 re-add d
710 |/
768 |/
711 o 2 i-2: c -move-> d
769 o 2 i-2: c -move-> d
712 |
770 |
713 o 1 i-1: a -move-> c
771 o 1 i-1: a -move-> c
714 |
772 |
715 o 0 i-0 initial commit: a b h
773 o 0 i-0 initial commit: a b h
716
774
775 #else
776 $ hg log -Gfr 'desc("mDGm-0")' d
777 o 26 mDGm-0 simple merge - one way
778 |\
779 | o 25 g-1: update d
780 | |
781 o | 8 d-2 re-add d
782 |/
783 o 2 i-2: c -move-> d
784 |
785 ~
786 #endif
717
787
718
788
789 #if no-changeset
719 $ hg log -Gfr 'desc("mDGm-0")' d
790 $ hg log -Gfr 'desc("mDGm-0")' d
720 o 26 mDGm-0 simple merge - one way
791 o 26 mDGm-0 simple merge - one way
721 |\
792 |\
722 | o 25 g-1: update d
793 | o 25 g-1: update d
723 | |
794 | |
724 o | 8 d-2 re-add d
795 o | 8 d-2 re-add d
725 |/
796 |/
726 o 2 i-2: c -move-> d
797 o 2 i-2: c -move-> d
727 |
798 |
728 o 1 i-1: a -move-> c
799 o 1 i-1: a -move-> c
729 |
800 |
730 o 0 i-0 initial commit: a b h
801 o 0 i-0 initial commit: a b h
731
802
803 #else
804 $ hg log -Gfr 'desc("mDGm-0")' d
805 o 26 mDGm-0 simple merge - one way
806 |\
807 | o 25 g-1: update d
808 | |
809 o | 8 d-2 re-add d
810 |/
811 o 2 i-2: c -move-> d
812 |
813 ~
814 #endif
732
815
733
816
734 Merge:
817 Merge:
735 - one with change to a file (d)
818 - one with change to a file (d)
736 - one overwriting that file with a rename (from h to i, to d)
819 - one overwriting that file with a rename (from h to i, to d)
737
820
738 This case is similar to BF/FB, but an actual merge happens, so both side of the
821 This case is similar to BF/FB, but an actual merge happens, so both side of the
739 history are relevant.
822 history are relevant.
740
823
741 Note:
824 Note:
742 | In this case, the merge get conflicting information since on one side we have
825 | In this case, the merge get conflicting information since on one side we have
743 | "a -> c -> d". and one the other one we have "h -> i -> d".
826 | "a -> c -> d". and one the other one we have "h -> i -> d".
744 |
827 |
745 | The current code arbitrarily pick one side
828 | The current code arbitrarily pick one side
746
829
747 $ hg up 'desc("f-2")'
830 $ hg up 'desc("f-2")'
748 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
831 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
749 $ hg merge 'desc("g-1")' --tool :union
832 $ hg merge 'desc("g-1")' --tool :union
750 merging d
833 merging d
751 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
834 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
752 (branch merge, don't forget to commit)
835 (branch merge, don't forget to commit)
753 $ hg ci -m 'mFGm-0 simple merge - one way'
836 $ hg ci -m 'mFGm-0 simple merge - one way'
754 created new head
837 created new head
755 $ hg up 'desc("g-1")'
838 $ hg up 'desc("g-1")'
756 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
839 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
757 $ hg merge 'desc("f-2")' --tool :union
840 $ hg merge 'desc("f-2")' --tool :union
758 merging d
841 merging d
759 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
842 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
760 (branch merge, don't forget to commit)
843 (branch merge, don't forget to commit)
761 $ hg ci -m 'mGFm-0 simple merge - the other way'
844 $ hg ci -m 'mGFm-0 simple merge - the other way'
762 created new head
845 created new head
763 $ hg log -G --rev '::(desc("mGFm")+desc("mFGm"))'
846 $ hg log -G --rev '::(desc("mGFm")+desc("mFGm"))'
764 @ 29 mGFm-0 simple merge - the other way
847 @ 29 mGFm-0 simple merge - the other way
765 |\
848 |\
766 +---o 28 mFGm-0 simple merge - one way
849 +---o 28 mFGm-0 simple merge - one way
767 | |/
850 | |/
768 | o 25 g-1: update d
851 | o 25 g-1: update d
769 | |
852 | |
770 o | 22 f-2: rename i -> d
853 o | 22 f-2: rename i -> d
771 | |
854 | |
772 o | 21 f-1: rename h -> i
855 o | 21 f-1: rename h -> i
773 |/
856 |/
774 o 2 i-2: c -move-> d
857 o 2 i-2: c -move-> d
775 |
858 |
776 o 1 i-1: a -move-> c
859 o 1 i-1: a -move-> c
777 |
860 |
778 o 0 i-0 initial commit: a b h
861 o 0 i-0 initial commit: a b h
779
862
780 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFGm-0")'
863 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFGm-0")'
781 A d
864 A d
782 h
865 h
783 R a
866 R a
784 R h
867 R h
785 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGFm-0")'
868 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGFm-0")'
786 A d
869 A d
787 a (no-filelog !)
870 a (no-filelog !)
788 h (filelog !)
871 h (filelog !)
789 R a
872 R a
790 R h
873 R h
791 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mFGm-0")'
874 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mFGm-0")'
792 M d
875 M d
793 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mGFm-0")'
876 $ hg status --copies --rev 'desc("f-2")' --rev 'desc("mGFm-0")'
794 M d
877 M d
795 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mFGm-0")'
878 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mFGm-0")'
796 M d
879 M d
797 i (no-filelog !)
880 i (no-filelog !)
798 R i
881 R i
799 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mGFm-0")'
882 $ hg status --copies --rev 'desc("f-1")' --rev 'desc("mGFm-0")'
800 M d
883 M d
801 i (no-filelog !)
884 i (no-filelog !)
802 R i
885 R i
803 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mFGm-0")'
886 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mFGm-0")'
804 M d
887 M d
805 h (no-filelog !)
888 h (no-filelog !)
806 R h
889 R h
807 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mGFm-0")'
890 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mGFm-0")'
808 M d
891 M d
809 h (no-filelog !)
892 h (no-filelog !)
810 R h
893 R h
811
894
895 #if no-changeset
812 $ hg log -Gfr 'desc("mFGm-0")' d
896 $ hg log -Gfr 'desc("mFGm-0")' d
813 o 28 mFGm-0 simple merge - one way
897 o 28 mFGm-0 simple merge - one way
814 |\
898 |\
815 | o 25 g-1: update d
899 | o 25 g-1: update d
816 | |
900 | |
817 o | 22 f-2: rename i -> d
901 o | 22 f-2: rename i -> d
818 | |
902 | |
819 o | 21 f-1: rename h -> i
903 o | 21 f-1: rename h -> i
820 |/
904 |/
821 o 2 i-2: c -move-> d
905 o 2 i-2: c -move-> d
822 |
906 |
823 o 1 i-1: a -move-> c
907 o 1 i-1: a -move-> c
824 |
908 |
825 o 0 i-0 initial commit: a b h
909 o 0 i-0 initial commit: a b h
826
910
911 #else
912 $ hg log -Gfr 'desc("mFGm-0")' d
913 o 28 mFGm-0 simple merge - one way
914 |\
915 | o 25 g-1: update d
916 | |
917 o | 22 f-2: rename i -> d
918 |/
919 o 2 i-2: c -move-> d
920 |
921 ~
922 #endif
827
923
924 #if no-changeset
828 $ hg log -Gfr 'desc("mGFm-0")' d
925 $ hg log -Gfr 'desc("mGFm-0")' d
829 @ 29 mGFm-0 simple merge - the other way
926 @ 29 mGFm-0 simple merge - the other way
830 |\
927 |\
831 | o 25 g-1: update d
928 | o 25 g-1: update d
832 | |
929 | |
833 o | 22 f-2: rename i -> d
930 o | 22 f-2: rename i -> d
834 | |
931 | |
835 o | 21 f-1: rename h -> i
932 o | 21 f-1: rename h -> i
836 |/
933 |/
837 o 2 i-2: c -move-> d
934 o 2 i-2: c -move-> d
838 |
935 |
839 o 1 i-1: a -move-> c
936 o 1 i-1: a -move-> c
840 |
937 |
841 o 0 i-0 initial commit: a b h
938 o 0 i-0 initial commit: a b h
842
939
940 #else
941 $ hg log -Gfr 'desc("mGFm-0")' d
942 @ 29 mGFm-0 simple merge - the other way
943 |\
944 | o 25 g-1: update d
945 | |
946 o | 22 f-2: rename i -> d
947 |/
948 o 2 i-2: c -move-> d
949 |
950 ~
951 #endif
843
952
844
953
845 Comparing with merging with a deletion (and keeping the file)
954 Comparing with merging with a deletion (and keeping the file)
846 -------------------------------------------------------------
955 -------------------------------------------------------------
847
956
848 Merge:
957 Merge:
849 - one removing a file (d)
958 - one removing a file (d)
850 - one updating that file
959 - one updating that file
851 - the merge keep the modified version of the file (canceling the delete)
960 - the merge keep the modified version of the file (canceling the delete)
852
961
853 In this case, the file keep on living after the merge. So we should not drop its
962 In this case, the file keep on living after the merge. So we should not drop its
854 copy tracing chain.
963 copy tracing chain.
855
964
856 $ hg up 'desc("c-1")'
965 $ hg up 'desc("c-1")'
857 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
966 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
858 $ hg merge 'desc("g-1")'
967 $ hg merge 'desc("g-1")'
859 file 'd' was deleted in local [working copy] but was modified in other [merge rev].
968 file 'd' was deleted in local [working copy] but was modified in other [merge rev].
860 You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
969 You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
861 What do you want to do? u
970 What do you want to do? u
862 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
971 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
863 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
972 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
864 [1]
973 [1]
865 $ hg resolve -t :other d
974 $ hg resolve -t :other d
866 (no more unresolved files)
975 (no more unresolved files)
867 $ hg ci -m "mCGm-0"
976 $ hg ci -m "mCGm-0"
868 created new head
977 created new head
869
978
870 $ hg up 'desc("g-1")'
979 $ hg up 'desc("g-1")'
871 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
980 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
872 $ hg merge 'desc("c-1")'
981 $ hg merge 'desc("c-1")'
873 file 'd' was deleted in other [merge rev] but was modified in local [working copy].
982 file 'd' was deleted in other [merge rev] but was modified in local [working copy].
874 You can use (c)hanged version, (d)elete, or leave (u)nresolved.
983 You can use (c)hanged version, (d)elete, or leave (u)nresolved.
875 What do you want to do? u
984 What do you want to do? u
876 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
985 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
877 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
986 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
878 [1]
987 [1]
879 $ hg resolve -t :local d
988 $ hg resolve -t :local d
880 (no more unresolved files)
989 (no more unresolved files)
881 $ hg ci -m "mGCm-0"
990 $ hg ci -m "mGCm-0"
882 created new head
991 created new head
883
992
884 $ hg log -G --rev '::(desc("mCGm")+desc("mGCm"))'
993 $ hg log -G --rev '::(desc("mCGm")+desc("mGCm"))'
885 @ 31 mGCm-0
994 @ 31 mGCm-0
886 |\
995 |\
887 +---o 30 mCGm-0
996 +---o 30 mCGm-0
888 | |/
997 | |/
889 | o 25 g-1: update d
998 | o 25 g-1: update d
890 | |
999 | |
891 o | 6 c-1 delete d
1000 o | 6 c-1 delete d
892 |/
1001 |/
893 o 2 i-2: c -move-> d
1002 o 2 i-2: c -move-> d
894 |
1003 |
895 o 1 i-1: a -move-> c
1004 o 1 i-1: a -move-> c
896 |
1005 |
897 o 0 i-0 initial commit: a b h
1006 o 0 i-0 initial commit: a b h
898
1007
899
1008
900 'a' is the copy source of 'd'
1009 'a' is the copy source of 'd'
901
1010
902 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCGm-0")'
1011 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCGm-0")'
903 A d
1012 A d
904 a (no-compatibility !)
1013 a (no-compatibility no-changeset !)
905 R a
1014 R a
906 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGCm-0")'
1015 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mGCm-0")'
907 A d
1016 A d
908 a (no-compatibility !)
1017 a (no-compatibility no-changeset !)
909 R a
1018 R a
910 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCGm-0")'
1019 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCGm-0")'
911 A d
1020 A d
912 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mGCm-0")'
1021 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mGCm-0")'
913 A d
1022 A d
914 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mCGm-0")'
1023 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mCGm-0")'
915 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mGCm-0")'
1024 $ hg status --copies --rev 'desc("g-1")' --rev 'desc("mGCm-0")'
916
1025
917
1026
918 Comparing with merge restoring an untouched deleted file
1027 Comparing with merge restoring an untouched deleted file
919 --------------------------------------------------------
1028 --------------------------------------------------------
920
1029
921 Merge:
1030 Merge:
922 - one removing a file (d)
1031 - one removing a file (d)
923 - one leaving the file untouched
1032 - one leaving the file untouched
924 - the merge actively restore the file to the same content.
1033 - the merge actively restore the file to the same content.
925
1034
926 In this case, the file keep on living after the merge. So we should not drop its
1035 In this case, the file keep on living after the merge. So we should not drop its
927 copy tracing chain.
1036 copy tracing chain.
928
1037
929 $ hg up 'desc("c-1")'
1038 $ hg up 'desc("c-1")'
930 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1039 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
931 $ hg merge 'desc("b-1")'
1040 $ hg merge 'desc("b-1")'
932 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1041 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
933 (branch merge, don't forget to commit)
1042 (branch merge, don't forget to commit)
934 $ hg revert --rev 'desc("b-1")' d
1043 $ hg revert --rev 'desc("b-1")' d
935 $ hg ci -m "mCB-revert-m-0"
1044 $ hg ci -m "mCB-revert-m-0"
936 created new head
1045 created new head
937
1046
938 $ hg up 'desc("b-1")'
1047 $ hg up 'desc("b-1")'
939 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1048 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
940 $ hg merge 'desc("c-1")'
1049 $ hg merge 'desc("c-1")'
941 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1050 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
942 (branch merge, don't forget to commit)
1051 (branch merge, don't forget to commit)
943 $ hg revert --rev 'desc("b-1")' d
1052 $ hg revert --rev 'desc("b-1")' d
944 $ hg ci -m "mBC-revert-m-0"
1053 $ hg ci -m "mBC-revert-m-0"
945 created new head
1054 created new head
946
1055
947 $ hg log -G --rev '::(desc("mCB-revert-m")+desc("mBC-revert-m"))'
1056 $ hg log -G --rev '::(desc("mCB-revert-m")+desc("mBC-revert-m"))'
948 @ 33 mBC-revert-m-0
1057 @ 33 mBC-revert-m-0
949 |\
1058 |\
950 +---o 32 mCB-revert-m-0
1059 +---o 32 mCB-revert-m-0
951 | |/
1060 | |/
952 | o 6 c-1 delete d
1061 | o 6 c-1 delete d
953 | |
1062 | |
954 o | 5 b-1: b update
1063 o | 5 b-1: b update
955 |/
1064 |/
956 o 2 i-2: c -move-> d
1065 o 2 i-2: c -move-> d
957 |
1066 |
958 o 1 i-1: a -move-> c
1067 o 1 i-1: a -move-> c
959 |
1068 |
960 o 0 i-0 initial commit: a b h
1069 o 0 i-0 initial commit: a b h
961
1070
962
1071
963 'a' is the the copy source of 'd'
1072 'a' is the the copy source of 'd'
964
1073
965 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB-revert-m-0")'
1074 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mCB-revert-m-0")'
966 M b
1075 M b
967 A d
1076 A d
968 a (no-compatibility !)
1077 a (no-compatibility no-changeset !)
969 R a
1078 R a
970 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC-revert-m-0")'
1079 $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mBC-revert-m-0")'
971 M b
1080 M b
972 A d
1081 A d
973 a (no-compatibility !)
1082 a (no-compatibility no-changeset !)
974 R a
1083 R a
975 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCB-revert-m-0")'
1084 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mCB-revert-m-0")'
976 M b
1085 M b
977 A d
1086 A d
978 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBC-revert-m-0")'
1087 $ hg status --copies --rev 'desc("c-1")' --rev 'desc("mBC-revert-m-0")'
979 M b
1088 M b
980 A d
1089 A d
981 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCB-revert-m-0")'
1090 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mCB-revert-m-0")'
982 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBC-revert-m-0")'
1091 $ hg status --copies --rev 'desc("b-1")' --rev 'desc("mBC-revert-m-0")'
983
1092
984
1093
985 Test that sidedata computations during upgrades ares correct
1094 Test that sidedata computations during upgrades ares correct
986 ============================================================
1095 ============================================================
987
1096
988 We upgrade a repository that is not using sidedata (the filelog case) and
1097 We upgrade a repository that is not using sidedata (the filelog case) and
989 check that the same side data have been generated as if they were computed at
1098 check that the same side data have been generated as if they were computed at
990 commit time.
1099 commit time.
991
1100
992
1101
993 #if filelog
1102 #if filelog
994 $ cat >> $HGRCPATH << EOF
1103 $ cat >> $HGRCPATH << EOF
995 > [format]
1104 > [format]
996 > exp-use-side-data = yes
1105 > exp-use-side-data = yes
997 > exp-use-copies-side-data-changeset = yes
1106 > exp-use-copies-side-data-changeset = yes
998 > EOF
1107 > EOF
999 $ hg debugformat -v
1108 $ hg debugformat -v
1000 format-variant repo config default
1109 format-variant repo config default
1001 fncache: yes yes yes
1110 fncache: yes yes yes
1002 dotencode: yes yes yes
1111 dotencode: yes yes yes
1003 generaldelta: yes yes yes
1112 generaldelta: yes yes yes
1004 sparserevlog: yes yes yes
1113 sparserevlog: yes yes yes
1005 sidedata: no yes no
1114 sidedata: no yes no
1006 persistent-nodemap: no no no
1115 persistent-nodemap: no no no
1007 copies-sdc: no yes no
1116 copies-sdc: no yes no
1008 plain-cl-delta: yes yes yes
1117 plain-cl-delta: yes yes yes
1009 compression: * (glob)
1118 compression: * (glob)
1010 compression-level: default default default
1119 compression-level: default default default
1011 $ hg debugupgraderepo --run --quiet
1120 $ hg debugupgraderepo --run --quiet
1012 upgrade will perform the following actions:
1121 upgrade will perform the following actions:
1013
1122
1014 requirements
1123 requirements
1015 preserved: * (glob)
1124 preserved: * (glob)
1016 added: exp-copies-sidedata-changeset, exp-sidedata-flag
1125 added: exp-copies-sidedata-changeset, exp-sidedata-flag
1017
1126
1018 #endif
1127 #endif
1019
1128
1020
1129
1021 #if no-compatibility
1130 #if no-compatibility no-changeset
1022
1131
1023 $ for rev in `hg log --rev 'all()' -T '{rev}\n'`; do
1132 $ for rev in `hg log --rev 'all()' -T '{rev}\n'`; do
1024 > echo "##### revision $rev #####"
1133 > echo "##### revision $rev #####"
1025 > hg debugsidedata -c -v -- $rev
1134 > hg debugsidedata -c -v -- $rev
1026 > hg debugchangedfiles $rev
1135 > hg debugchangedfiles $rev
1027 > done
1136 > done
1028 ##### revision 0 #####
1137 ##### revision 0 #####
1029 1 sidedata entries
1138 1 sidedata entries
1030 entry-0014 size 34
1139 entry-0014 size 34
1031 '\x00\x00\x00\x03\x04\x00\x00\x00\x01\x00\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00abh'
1140 '\x00\x00\x00\x03\x04\x00\x00\x00\x01\x00\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00\x00abh'
1032 added : a, ;
1141 added : a, ;
1033 added : b, ;
1142 added : b, ;
1034 added : h, ;
1143 added : h, ;
1035 ##### revision 1 #####
1144 ##### revision 1 #####
1036 1 sidedata entries
1145 1 sidedata entries
1037 entry-0014 size 24
1146 entry-0014 size 24
1038 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00ac'
1147 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00ac'
1039 removed : a, ;
1148 removed : a, ;
1040 added p1: c, a;
1149 added p1: c, a;
1041 ##### revision 2 #####
1150 ##### revision 2 #####
1042 1 sidedata entries
1151 1 sidedata entries
1043 entry-0014 size 24
1152 entry-0014 size 24
1044 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00cd'
1153 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00cd'
1045 removed : c, ;
1154 removed : c, ;
1046 added p1: d, c;
1155 added p1: d, c;
1047 ##### revision 3 #####
1156 ##### revision 3 #####
1048 1 sidedata entries
1157 1 sidedata entries
1049 entry-0014 size 24
1158 entry-0014 size 24
1050 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00de'
1159 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00de'
1051 removed : d, ;
1160 removed : d, ;
1052 added p1: e, d;
1161 added p1: e, d;
1053 ##### revision 4 #####
1162 ##### revision 4 #####
1054 1 sidedata entries
1163 1 sidedata entries
1055 entry-0014 size 24
1164 entry-0014 size 24
1056 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00ef'
1165 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00ef'
1057 removed : e, ;
1166 removed : e, ;
1058 added p1: f, e;
1167 added p1: f, e;
1059 ##### revision 5 #####
1168 ##### revision 5 #####
1060 1 sidedata entries
1169 1 sidedata entries
1061 entry-0014 size 14
1170 entry-0014 size 14
1062 '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00b'
1171 '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00b'
1063 touched : b, ;
1172 touched : b, ;
1064 ##### revision 6 #####
1173 ##### revision 6 #####
1065 1 sidedata entries
1174 1 sidedata entries
1066 entry-0014 size 14
1175 entry-0014 size 14
1067 '\x00\x00\x00\x01\x0c\x00\x00\x00\x01\x00\x00\x00\x00d'
1176 '\x00\x00\x00\x01\x0c\x00\x00\x00\x01\x00\x00\x00\x00d'
1068 removed : d, ;
1177 removed : d, ;
1069 ##### revision 7 #####
1178 ##### revision 7 #####
1070 1 sidedata entries
1179 1 sidedata entries
1071 entry-0014 size 14
1180 entry-0014 size 14
1072 '\x00\x00\x00\x01\x0c\x00\x00\x00\x01\x00\x00\x00\x00d'
1181 '\x00\x00\x00\x01\x0c\x00\x00\x00\x01\x00\x00\x00\x00d'
1073 removed : d, ;
1182 removed : d, ;
1074 ##### revision 8 #####
1183 ##### revision 8 #####
1075 1 sidedata entries
1184 1 sidedata entries
1076 entry-0014 size 14
1185 entry-0014 size 14
1077 '\x00\x00\x00\x01\x04\x00\x00\x00\x01\x00\x00\x00\x00d'
1186 '\x00\x00\x00\x01\x04\x00\x00\x00\x01\x00\x00\x00\x00d'
1078 added : d, ;
1187 added : d, ;
1079 ##### revision 9 #####
1188 ##### revision 9 #####
1080 1 sidedata entries
1189 1 sidedata entries
1081 entry-0014 size 24
1190 entry-0014 size 24
1082 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00bg'
1191 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00bg'
1083 removed : b, ;
1192 removed : b, ;
1084 added p1: g, b;
1193 added p1: g, b;
1085 ##### revision 10 #####
1194 ##### revision 10 #####
1086 1 sidedata entries
1195 1 sidedata entries
1087 entry-0014 size 24
1196 entry-0014 size 24
1088 '\x00\x00\x00\x02\x06\x00\x00\x00\x01\x00\x00\x00\x01\x0c\x00\x00\x00\x02\x00\x00\x00\x00fg'
1197 '\x00\x00\x00\x02\x06\x00\x00\x00\x01\x00\x00\x00\x01\x0c\x00\x00\x00\x02\x00\x00\x00\x00fg'
1089 added p1: f, g;
1198 added p1: f, g;
1090 removed : g, ;
1199 removed : g, ;
1091 ##### revision 11 #####
1200 ##### revision 11 #####
1092 1 sidedata entries
1201 1 sidedata entries
1093 entry-0014 size 4
1202 entry-0014 size 4
1094 '\x00\x00\x00\x00'
1203 '\x00\x00\x00\x00'
1095 ##### revision 12 #####
1204 ##### revision 12 #####
1096 1 sidedata entries
1205 1 sidedata entries
1097 entry-0014 size 4
1206 entry-0014 size 4
1098 '\x00\x00\x00\x00'
1207 '\x00\x00\x00\x00'
1099 ##### revision 13 #####
1208 ##### revision 13 #####
1100 1 sidedata entries
1209 1 sidedata entries
1101 entry-0014 size 4
1210 entry-0014 size 4
1102 '\x00\x00\x00\x00'
1211 '\x00\x00\x00\x00'
1103 ##### revision 14 #####
1212 ##### revision 14 #####
1104 1 sidedata entries
1213 1 sidedata entries
1105 entry-0014 size 14
1214 entry-0014 size 14
1106 '\x00\x00\x00\x01\x04\x00\x00\x00\x01\x00\x00\x00\x00d'
1215 '\x00\x00\x00\x01\x04\x00\x00\x00\x01\x00\x00\x00\x00d'
1107 added : d, ;
1216 added : d, ;
1108 ##### revision 15 #####
1217 ##### revision 15 #####
1109 1 sidedata entries
1218 1 sidedata entries
1110 entry-0014 size 4
1219 entry-0014 size 4
1111 '\x00\x00\x00\x00'
1220 '\x00\x00\x00\x00'
1112 ##### revision 16 #####
1221 ##### revision 16 #####
1113 1 sidedata entries
1222 1 sidedata entries
1114 entry-0014 size 14
1223 entry-0014 size 14
1115 '\x00\x00\x00\x01\x04\x00\x00\x00\x01\x00\x00\x00\x00d'
1224 '\x00\x00\x00\x01\x04\x00\x00\x00\x01\x00\x00\x00\x00d'
1116 added : d, ;
1225 added : d, ;
1117 ##### revision 17 #####
1226 ##### revision 17 #####
1118 1 sidedata entries
1227 1 sidedata entries
1119 entry-0014 size 4
1228 entry-0014 size 4
1120 '\x00\x00\x00\x00'
1229 '\x00\x00\x00\x00'
1121 ##### revision 18 #####
1230 ##### revision 18 #####
1122 1 sidedata entries
1231 1 sidedata entries
1123 entry-0014 size 4
1232 entry-0014 size 4
1124 '\x00\x00\x00\x00'
1233 '\x00\x00\x00\x00'
1125 ##### revision 19 #####
1234 ##### revision 19 #####
1126 1 sidedata entries
1235 1 sidedata entries
1127 entry-0014 size 14
1236 entry-0014 size 14
1128 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
1237 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
1129 merged : f, ;
1238 merged : f, ;
1130 ##### revision 20 #####
1239 ##### revision 20 #####
1131 1 sidedata entries
1240 1 sidedata entries
1132 entry-0014 size 14
1241 entry-0014 size 14
1133 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
1242 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00f'
1134 merged : f, ;
1243 merged : f, ;
1135 ##### revision 21 #####
1244 ##### revision 21 #####
1136 1 sidedata entries
1245 1 sidedata entries
1137 entry-0014 size 24
1246 entry-0014 size 24
1138 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00hi'
1247 '\x00\x00\x00\x02\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x00hi'
1139 removed : h, ;
1248 removed : h, ;
1140 added p1: i, h;
1249 added p1: i, h;
1141 ##### revision 22 #####
1250 ##### revision 22 #####
1142 1 sidedata entries
1251 1 sidedata entries
1143 entry-0014 size 24
1252 entry-0014 size 24
1144 '\x00\x00\x00\x02\x16\x00\x00\x00\x01\x00\x00\x00\x01\x0c\x00\x00\x00\x02\x00\x00\x00\x00di'
1253 '\x00\x00\x00\x02\x16\x00\x00\x00\x01\x00\x00\x00\x01\x0c\x00\x00\x00\x02\x00\x00\x00\x00di'
1145 touched p1: d, i;
1254 touched p1: d, i;
1146 removed : i, ;
1255 removed : i, ;
1147 ##### revision 23 #####
1256 ##### revision 23 #####
1148 1 sidedata entries
1257 1 sidedata entries
1149 entry-0014 size 4
1258 entry-0014 size 4
1150 '\x00\x00\x00\x00'
1259 '\x00\x00\x00\x00'
1151 ##### revision 24 #####
1260 ##### revision 24 #####
1152 1 sidedata entries
1261 1 sidedata entries
1153 entry-0014 size 4
1262 entry-0014 size 4
1154 '\x00\x00\x00\x00'
1263 '\x00\x00\x00\x00'
1155 ##### revision 25 #####
1264 ##### revision 25 #####
1156 1 sidedata entries
1265 1 sidedata entries
1157 entry-0014 size 14
1266 entry-0014 size 14
1158 '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00d'
1267 '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00d'
1159 touched : d, ;
1268 touched : d, ;
1160 ##### revision 26 #####
1269 ##### revision 26 #####
1161 1 sidedata entries
1270 1 sidedata entries
1162 entry-0014 size 14
1271 entry-0014 size 14
1163 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
1272 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
1164 merged : d, ;
1273 merged : d, ;
1165 ##### revision 27 #####
1274 ##### revision 27 #####
1166 1 sidedata entries
1275 1 sidedata entries
1167 entry-0014 size 14
1276 entry-0014 size 14
1168 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
1277 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
1169 merged : d, ;
1278 merged : d, ;
1170 ##### revision 28 #####
1279 ##### revision 28 #####
1171 1 sidedata entries
1280 1 sidedata entries
1172 entry-0014 size 14
1281 entry-0014 size 14
1173 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
1282 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
1174 merged : d, ;
1283 merged : d, ;
1175 ##### revision 29 #####
1284 ##### revision 29 #####
1176 1 sidedata entries
1285 1 sidedata entries
1177 entry-0014 size 14
1286 entry-0014 size 14
1178 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
1287 '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d'
1179 merged : d, ;
1288 merged : d, ;
1180 ##### revision 30 #####
1289 ##### revision 30 #####
1181 1 sidedata entries
1290 1 sidedata entries
1182 entry-0014 size 14
1291 entry-0014 size 14
1183 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
1292 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
1184 salvaged : d, ;
1293 salvaged : d, ;
1185 ##### revision 31 #####
1294 ##### revision 31 #####
1186 1 sidedata entries
1295 1 sidedata entries
1187 entry-0014 size 14
1296 entry-0014 size 14
1188 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
1297 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
1189 salvaged : d, ;
1298 salvaged : d, ;
1190 ##### revision 32 #####
1299 ##### revision 32 #####
1191 1 sidedata entries
1300 1 sidedata entries
1192 entry-0014 size 14
1301 entry-0014 size 14
1193 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
1302 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
1194 salvaged : d, ;
1303 salvaged : d, ;
1195 ##### revision 33 #####
1304 ##### revision 33 #####
1196 1 sidedata entries
1305 1 sidedata entries
1197 entry-0014 size 14
1306 entry-0014 size 14
1198 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
1307 '\x00\x00\x00\x01\x10\x00\x00\x00\x01\x00\x00\x00\x00d'
1199 salvaged : d, ;
1308 salvaged : d, ;
1200
1309
1201 #endif
1310 #endif
General Comments 0
You need to be logged in to leave comments. Login now