Show More
@@ -0,0 +1,386 b'' | |||||
|
1 | $ cat <<'EOF' >> "$HGRCPATH" | |||
|
2 | > [extensions] | |||
|
3 | > convert = | |||
|
4 | > [templates] | |||
|
5 | > l = '{rev}:{node|short} p={p1rev},{p2rev} m={manifest} f={files|json}' | |||
|
6 | > EOF | |||
|
7 | ||||
|
8 | $ check_convert_identity () { | |||
|
9 | > hg convert -q "$1" "$1.converted" | |||
|
10 | > hg outgoing -q -R "$1.converted" "$1" | |||
|
11 | > if [ "$?" != 1 ]; then | |||
|
12 | > echo '*** BUG: hash changes on convert ***' | |||
|
13 | > hg log -R "$1.converted" -GTl | |||
|
14 | > fi | |||
|
15 | > } | |||
|
16 | ||||
|
17 | Files added at both parents: | |||
|
18 | ||||
|
19 | $ hg init added-both | |||
|
20 | $ cd added-both | |||
|
21 | $ touch a b c | |||
|
22 | $ hg ci -qAm0 a | |||
|
23 | $ hg ci -qAm1 b | |||
|
24 | $ hg up -q 0 | |||
|
25 | $ hg ci -qAm2 c | |||
|
26 | ||||
|
27 | $ hg merge | |||
|
28 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
29 | (branch merge, don't forget to commit) | |||
|
30 | $ hg ci --debug -m merge | |||
|
31 | committing files: | |||
|
32 | b | |||
|
33 | committing manifest | |||
|
34 | committing changelog | |||
|
35 | updating the branch cache | |||
|
36 | committed changeset 3:7aa8a293f5d97377037afc21e871e036e718d659 | |||
|
37 | $ hg log -GTl | |||
|
38 | @ 3:7aa8a293f5d9 p=2,1 m=3:8667461869a1 f=[] | |||
|
39 | |\ | |||
|
40 | | o 2:e0ea47086fce p=0,-1 m=2:b2e5b07f9374 f=["c"] | |||
|
41 | | | | |||
|
42 | o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
43 | |/ | |||
|
44 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | |||
|
45 | ||||
|
46 | ||||
|
47 | $ cd .. | |||
|
48 | $ check_convert_identity added-both | |||
|
49 | ||||
|
50 | Files added at both parents, but the other removed at the merge: | |||
|
51 | (In this case, ctx.files() after the commit contains the removed file "b", but | |||
|
52 | its manifest does not differ from p1.) | |||
|
53 | ||||
|
54 | $ hg init added-both-removed-at-merge | |||
|
55 | $ cd added-both-removed-at-merge | |||
|
56 | $ touch a b c | |||
|
57 | $ hg ci -qAm0 a | |||
|
58 | $ hg ci -qAm1 b | |||
|
59 | $ hg up -q 0 | |||
|
60 | $ hg ci -qAm2 c | |||
|
61 | ||||
|
62 | $ hg merge | |||
|
63 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
64 | (branch merge, don't forget to commit) | |||
|
65 | $ hg rm -f b | |||
|
66 | $ hg ci --debug -m merge | |||
|
67 | committing files: | |||
|
68 | committing manifest | |||
|
69 | committing changelog | |||
|
70 | updating the branch cache | |||
|
71 | committed changeset 3:915745f3ca3d9d699925269474c2d0a9526e8dfa | |||
|
72 | $ hg log -GTl | |||
|
73 | @ 3:915745f3ca3d p=2,1 m=3:8e9cf3456921 f=["b"] | |||
|
74 | |\ | |||
|
75 | | o 2:e0ea47086fce p=0,-1 m=2:b2e5b07f9374 f=["c"] | |||
|
76 | | | | |||
|
77 | o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
78 | |/ | |||
|
79 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | |||
|
80 | ||||
|
81 | ||||
|
82 | $ cd .. | |||
|
83 | $ check_convert_identity added-both | |||
|
84 | ||||
|
85 | An identical file added at both parents: | |||
|
86 | ||||
|
87 | $ hg init added-identical | |||
|
88 | $ cd added-identical | |||
|
89 | $ touch a b | |||
|
90 | $ hg ci -qAm0 a | |||
|
91 | $ hg ci -qAm1 b | |||
|
92 | $ hg up -q 0 | |||
|
93 | $ touch b | |||
|
94 | $ hg ci -qAm2 b | |||
|
95 | ||||
|
96 | $ hg merge | |||
|
97 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
98 | (branch merge, don't forget to commit) | |||
|
99 | $ hg ci --debug -m merge | |||
|
100 | reusing manifest from p1 (no file change) | |||
|
101 | committing changelog | |||
|
102 | updating the branch cache | |||
|
103 | committed changeset 3:de26182cd210f0c3fb175ca7616704ab963d3024 | |||
|
104 | $ hg log -GTl | |||
|
105 | @ 3:de26182cd210 p=2,1 m=1:686dbf0aeca4 f=[] | |||
|
106 | |\ | |||
|
107 | | o 2:f00991f11eca p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
108 | | | | |||
|
109 | o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
110 | |/ | |||
|
111 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | |||
|
112 | ||||
|
113 | ||||
|
114 | $ cd .. | |||
|
115 | $ check_convert_identity added-identical | |||
|
116 | ||||
|
117 | #if execbit | |||
|
118 | ||||
|
119 | An identical file added at both parents, but the flag differs. Take local: | |||
|
120 | ||||
|
121 | $ hg init flag-change-take-p1 | |||
|
122 | $ cd flag-change-take-p1 | |||
|
123 | $ touch a b | |||
|
124 | $ hg ci -qAm0 a | |||
|
125 | $ hg ci -qAm1 b | |||
|
126 | $ hg up -q 0 | |||
|
127 | $ touch b | |||
|
128 | $ chmod +x b | |||
|
129 | $ hg ci -qAm2 b | |||
|
130 | ||||
|
131 | $ hg merge | |||
|
132 | warning: cannot merge flags for b without common ancestor - keeping local flags | |||
|
133 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
134 | (branch merge, don't forget to commit) | |||
|
135 | $ chmod +x b | |||
|
136 | $ hg ci --debug -m merge | |||
|
137 | committing files: | |||
|
138 | b | |||
|
139 | committing manifest | |||
|
140 | committing changelog | |||
|
141 | updating the branch cache | |||
|
142 | committed changeset 3:4bfaad7f925b7f17f60524dc5d4e605f7bfbba3f | |||
|
143 | $ hg log -GTl | |||
|
144 | @ 3:4bfaad7f925b p=2,1 m=3:a3a9fe23a5b8 f=[] | |||
|
145 | |\ | |||
|
146 | | o 2:99451f16b3f5 p=0,-1 m=2:36b69ba4b24b f=["b"] | |||
|
147 | | | | |||
|
148 | o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
149 | |/ | |||
|
150 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | |||
|
151 | ||||
|
152 | $ hg files -vr3 | |||
|
153 | 0 a | |||
|
154 | 0 x b | |||
|
155 | ||||
|
156 | $ cd .. | |||
|
157 | $ check_convert_identity flag-change-take-p1 | |||
|
158 | 3:c8d50407916e | |||
|
159 | *** BUG: hash changes on convert *** | |||
|
160 | o 3:c8d50407916e p=2,1 m=2:36b69ba4b24b f=[] | |||
|
161 | |\ | |||
|
162 | | o 2:99451f16b3f5 p=0,-1 m=2:36b69ba4b24b f=["b"] | |||
|
163 | | | | |||
|
164 | o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
165 | |/ | |||
|
166 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | |||
|
167 | ||||
|
168 | ||||
|
169 | An identical file added at both parents, but the flag differs. Take other: | |||
|
170 | ||||
|
171 | $ hg init flag-change-take-p2 | |||
|
172 | $ cd flag-change-take-p2 | |||
|
173 | $ touch a b | |||
|
174 | $ hg ci -qAm0 a | |||
|
175 | $ hg ci -qAm1 b | |||
|
176 | $ hg up -q 0 | |||
|
177 | $ touch b | |||
|
178 | $ chmod +x b | |||
|
179 | $ hg ci -qAm2 b | |||
|
180 | ||||
|
181 | $ hg merge | |||
|
182 | warning: cannot merge flags for b without common ancestor - keeping local flags | |||
|
183 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
184 | (branch merge, don't forget to commit) | |||
|
185 | $ chmod -x b | |||
|
186 | $ hg ci --debug -m merge | |||
|
187 | committing files: | |||
|
188 | b | |||
|
189 | committing manifest | |||
|
190 | committing changelog | |||
|
191 | updating the branch cache | |||
|
192 | committed changeset 3:06a62a687d87c7d8944743dee1ee9d8c66b3f6e3 | |||
|
193 | $ hg log -GTl | |||
|
194 | @ 3:06a62a687d87 p=2,1 m=3:2a315ba1aa45 f=["b"] | |||
|
195 | |\ | |||
|
196 | | o 2:99451f16b3f5 p=0,-1 m=2:36b69ba4b24b f=["b"] | |||
|
197 | | | | |||
|
198 | o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
199 | |/ | |||
|
200 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | |||
|
201 | ||||
|
202 | $ hg files -vr3 | |||
|
203 | 0 a | |||
|
204 | 0 b | |||
|
205 | ||||
|
206 | $ cd .. | |||
|
207 | $ check_convert_identity flag-change-take-p2 | |||
|
208 | ||||
|
209 | #endif | |||
|
210 | ||||
|
211 | An identical file added at both parents, one more file added at p2: | |||
|
212 | ||||
|
213 | $ hg init added-some-p2 | |||
|
214 | $ cd added-some-p2 | |||
|
215 | $ touch a b c | |||
|
216 | $ hg ci -qAm0 a | |||
|
217 | $ hg ci -qAm1 b | |||
|
218 | $ hg ci -qAm2 c | |||
|
219 | $ hg up -q 0 | |||
|
220 | $ touch b | |||
|
221 | $ hg ci -qAm3 b | |||
|
222 | ||||
|
223 | $ hg merge | |||
|
224 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
225 | (branch merge, don't forget to commit) | |||
|
226 | $ hg ci --debug -m merge | |||
|
227 | committing files: | |||
|
228 | c | |||
|
229 | committing manifest | |||
|
230 | committing changelog | |||
|
231 | updating the branch cache | |||
|
232 | committed changeset 4:f7fbc4e4d9a8fde03ba475adad675578c8bf472d | |||
|
233 | $ hg log -GTl | |||
|
234 | @ 4:f7fbc4e4d9a8 p=3,2 m=3:92acd5bfd716 f=[] | |||
|
235 | |\ | |||
|
236 | | o 3:e9d9f3cc981f p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
237 | | | | |||
|
238 | o | 2:93c5529a4ec7 p=1,-1 m=2:ae25a31b30b3 f=["c"] | |||
|
239 | | | | |||
|
240 | o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
241 | |/ | |||
|
242 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | |||
|
243 | ||||
|
244 | ||||
|
245 | $ cd .. | |||
|
246 | $ check_convert_identity added-some-p2 | |||
|
247 | ||||
|
248 | An identical file added at both parents, one more file added at p1: | |||
|
249 | (In this case, p1 manifest is reused at the merge commit, which means the | |||
|
250 | manifest DAG does not have the same shape as the changelog.) | |||
|
251 | ||||
|
252 | $ hg init added-some-p1 | |||
|
253 | $ cd added-some-p1 | |||
|
254 | $ touch a b | |||
|
255 | $ hg ci -qAm0 a | |||
|
256 | $ hg ci -qAm1 b | |||
|
257 | $ hg up -q 0 | |||
|
258 | $ touch b c | |||
|
259 | $ hg ci -qAm2 b | |||
|
260 | $ hg ci -qAm3 c | |||
|
261 | ||||
|
262 | $ hg merge | |||
|
263 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
264 | (branch merge, don't forget to commit) | |||
|
265 | $ hg ci --debug -m merge | |||
|
266 | reusing manifest from p1 (no file change) | |||
|
267 | committing changelog | |||
|
268 | updating the branch cache | |||
|
269 | committed changeset 4:a9f0f589a913f5a149dc10dfbd5af726977c36c4 | |||
|
270 | $ hg log -GTl | |||
|
271 | @ 4:a9f0f589a913 p=3,1 m=2:ae25a31b30b3 f=[] | |||
|
272 | |\ | |||
|
273 | | o 3:b8dc385241b5 p=2,-1 m=2:ae25a31b30b3 f=["c"] | |||
|
274 | | | | |||
|
275 | | o 2:f00991f11eca p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
276 | | | | |||
|
277 | o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] | |||
|
278 | |/ | |||
|
279 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] | |||
|
280 | ||||
|
281 | ||||
|
282 | $ cd .. | |||
|
283 | $ check_convert_identity added-some-p1 | |||
|
284 | ||||
|
285 | A file added at p2, a named branch created at p1: | |||
|
286 | ||||
|
287 | $ hg init named-branch-p1 | |||
|
288 | $ cd named-branch-p1 | |||
|
289 | $ touch a b | |||
|
290 | $ hg ci -qAm0 a | |||
|
291 | $ hg ci -qAm1 b | |||
|
292 | $ hg up -q 0 | |||
|
293 | $ hg branch -q foo | |||
|
294 | $ hg ci -m2 | |||
|
295 | ||||
|
296 | $ hg merge default | |||
|
297 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
298 | (branch merge, don't forget to commit) | |||
|
299 | $ hg ci --debug -m merge | |||
|
300 | committing files: | |||
|
301 | b | |||
|
302 | committing manifest | |||
|
303 | committing changelog | |||
|
304 | updating the branch cache | |||
|
305 | committed changeset 3:fb97d83b02fd072295cfc2171f21b7d38509bfd7 | |||
|
306 | $ hg log -GT'{l} branch={branch}' | |||
|
307 | @ 3:fb97d83b02fd p=2,1 m=2:9091c64f4ea1 f=[] branch=foo | |||
|
308 | |\ | |||
|
309 | | o 2:a3a9fa6587e5 p=0,-1 m=0:8515d4bfda76 f=[] branch=foo | |||
|
310 | | | | |||
|
311 | o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] branch=default | |||
|
312 | |/ | |||
|
313 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] branch=default | |||
|
314 | ||||
|
315 | ||||
|
316 | $ cd .. | |||
|
317 | $ check_convert_identity named-branch-p1 | |||
|
318 | ||||
|
319 | A file added at p1, a named branch created at p2: | |||
|
320 | (In this case, p1 manifest is reused at the merge commit, which means the | |||
|
321 | manifest DAG does not have the same shape as the changelog.) | |||
|
322 | ||||
|
323 | $ hg init named-branch-p2 | |||
|
324 | $ cd named-branch-p2 | |||
|
325 | $ touch a b | |||
|
326 | $ hg ci -qAm0 a | |||
|
327 | $ hg branch -q foo | |||
|
328 | $ hg ci -m1 | |||
|
329 | $ hg up -q 0 | |||
|
330 | $ hg ci -qAm1 b | |||
|
331 | ||||
|
332 | $ hg merge foo | |||
|
333 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
334 | (branch merge, don't forget to commit) | |||
|
335 | $ hg ci --debug -m merge | |||
|
336 | reusing manifest from p1 (no file change) | |||
|
337 | committing changelog | |||
|
338 | updating the branch cache | |||
|
339 | committed changeset 3:036823e24692218324d4af43b07ff89f8a000096 | |||
|
340 | $ hg log -GT'{l} branch={branch}' | |||
|
341 | @ 3:036823e24692 p=2,1 m=1:686dbf0aeca4 f=[] branch=default | |||
|
342 | |\ | |||
|
343 | | o 2:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] branch=default | |||
|
344 | | | | |||
|
345 | o | 1:da38c8e00727 p=0,-1 m=0:8515d4bfda76 f=[] branch=foo | |||
|
346 | |/ | |||
|
347 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] branch=default | |||
|
348 | ||||
|
349 | ||||
|
350 | $ cd .. | |||
|
351 | $ check_convert_identity named-branch-p2 | |||
|
352 | ||||
|
353 | A file changed once at both parents, but amended to have identical content: | |||
|
354 | ||||
|
355 | $ hg init amend-p1 | |||
|
356 | $ cd amend-p1 | |||
|
357 | $ touch a | |||
|
358 | $ hg ci -qAm0 a | |||
|
359 | $ echo foo > a | |||
|
360 | $ hg ci -m1 | |||
|
361 | $ hg up -q 0 | |||
|
362 | $ echo bar > a | |||
|
363 | $ hg ci -qm2 | |||
|
364 | $ echo foo > a | |||
|
365 | $ hg ci -qm3 --amend | |||
|
366 | ||||
|
367 | $ hg merge | |||
|
368 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
369 | (branch merge, don't forget to commit) | |||
|
370 | $ hg ci --debug -m merge | |||
|
371 | reusing manifest from p1 (no file change) | |||
|
372 | committing changelog | |||
|
373 | updating the branch cache | |||
|
374 | committed changeset 3:314e5bc5adf5c58ea571efabe33eedba20a201aa | |||
|
375 | $ hg log -GT'{l} branch={branch}' | |||
|
376 | @ 3:314e5bc5adf5 p=2,1 m=1:d33ea248bd73 f=[] branch=default | |||
|
377 | |\ | |||
|
378 | | o 2:de9c64f226a3 p=0,-1 m=1:d33ea248bd73 f=["a"] branch=default | |||
|
379 | | | | |||
|
380 | o | 1:6a74aec01b3c p=0,-1 m=1:d33ea248bd73 f=["a"] branch=default | |||
|
381 | |/ | |||
|
382 | o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"] branch=default | |||
|
383 | ||||
|
384 | ||||
|
385 | $ cd .. | |||
|
386 | $ check_convert_identity amend-p1 |
General Comments 0
You need to be logged in to leave comments.
Login now