27 if fold in folded: |
27 if fold in folded: |
28 raise util.Abort(_("case-folding collision between %s and %s") |
28 raise util.Abort(_("case-folding collision between %s and %s") |
29 % (fn, folded[fold])) |
29 % (fn, folded[fold])) |
30 folded[fold] = fn |
30 folded[fold] = fn |
31 |
31 |
32 def forgetremoved(wctx, mctx): |
32 def forgetremoved(wctx, mctx, branchmerge): |
33 """ |
33 """ |
34 Forget removed files |
34 Forget removed files |
35 |
35 |
36 If we're jumping between revisions (as opposed to merging), and if |
36 If we're jumping between revisions (as opposed to merging), and if |
37 neither the working directory nor the target rev has the file, |
37 neither the working directory nor the target rev has the file, |
38 then we need to remove it from the dirstate, to prevent the |
38 then we need to remove it from the dirstate, to prevent the |
39 dirstate from listing the file when it is no longer in the |
39 dirstate from listing the file when it is no longer in the |
40 manifest. |
40 manifest. |
|
41 |
|
42 If we're merging, and the other revision has removed a file |
|
43 that is not present in the working directory, we need to mark it |
|
44 as removed. |
41 """ |
45 """ |
42 |
46 |
43 action = [] |
47 action = [] |
44 man = mctx.manifest() |
48 man = mctx.manifest() |
45 for f in wctx.deleted() + wctx.removed(): |
49 state = branchmerge and 'r' or 'f' |
|
50 for f in wctx.deleted(): |
46 if f not in man: |
51 if f not in man: |
47 action.append((f, "f")) |
52 action.append((f, state)) |
|
53 |
|
54 if not branchmerge: |
|
55 for f in wctx.removed(): |
|
56 if f not in man: |
|
57 action.append((f, "f")) |
48 |
58 |
49 return action |
59 return action |
50 |
60 |
51 def findcopies(repo, m1, m2, ma, limit): |
61 def findcopies(repo, m1, m2, ma, limit): |
52 """ |
62 """ |
606 action = [] |
616 action = [] |
607 if not force: |
617 if not force: |
608 checkunknown(wc, p2) |
618 checkunknown(wc, p2) |
609 if not util.checkfolding(repo.path): |
619 if not util.checkfolding(repo.path): |
610 checkcollision(p2) |
620 checkcollision(p2) |
611 if not branchmerge: |
621 action += forgetremoved(wc, p2, branchmerge) |
612 action += forgetremoved(wc, p2) |
|
613 action += manifestmerge(repo, wc, p2, pa, overwrite, partial) |
622 action += manifestmerge(repo, wc, p2, pa, overwrite, partial) |
614 |
623 |
615 ### apply phase |
624 ### apply phase |
616 if not branchmerge: # just jump to the new rev |
625 if not branchmerge: # just jump to the new rev |
617 fp1, fp2, xp1, xp2 = fp2, nullid, xp2, '' |
626 fp1, fp2, xp1, xp2 = fp2, nullid, xp2, '' |