equal
deleted
inserted
replaced
9 from i18n import _ |
9 from i18n import _ |
10 import errno, util, os, heapq, filemerge |
10 import errno, util, os, heapq, filemerge |
11 |
11 |
12 def _checkunknown(wctx, mctx): |
12 def _checkunknown(wctx, mctx): |
13 "check for collisions between unknown files and files in mctx" |
13 "check for collisions between unknown files and files in mctx" |
14 man = mctx.manifest() |
|
15 for f in wctx.unknown(): |
14 for f in wctx.unknown(): |
16 if f in man: |
15 if f in mctx and mctx[f].cmp(wctx[f].data()): |
17 if mctx.filectx(f).cmp(wctx.filectx(f).data()): |
16 raise util.Abort(_("untracked file in working directory differs" |
18 raise util.Abort(_("untracked file in working directory differs" |
17 " from file in requested revision: '%s'") % f) |
19 " from file in requested revision: '%s'") |
|
20 % f) |
|
21 |
18 |
22 def _checkcollision(mctx): |
19 def _checkcollision(mctx): |
23 "check for case folding collisions in the destination context" |
20 "check for case folding collisions in the destination context" |
24 folded = {} |
21 folded = {} |
25 for fn in mctx.manifest(): |
22 for fn in mctx: |
26 fold = fn.lower() |
23 fold = fn.lower() |
27 if fold in folded: |
24 if fold in folded: |
28 raise util.Abort(_("case-folding collision between %s and %s") |
25 raise util.Abort(_("case-folding collision between %s and %s") |
29 % (fn, folded[fold])) |
26 % (fn, folded[fold])) |
30 folded[fold] = fn |
27 folded[fold] = fn |
43 that is not present in the working directory, we need to mark it |
40 that is not present in the working directory, we need to mark it |
44 as removed. |
41 as removed. |
45 """ |
42 """ |
46 |
43 |
47 action = [] |
44 action = [] |
48 man = mctx.manifest() |
|
49 state = branchmerge and 'r' or 'f' |
45 state = branchmerge and 'r' or 'f' |
50 for f in wctx.deleted(): |
46 for f in wctx.deleted(): |
51 if f not in man: |
47 if f not in mctx: |
52 action.append((f, state)) |
48 action.append((f, state)) |
53 |
49 |
54 if not branchmerge: |
50 if not branchmerge: |
55 for f in wctx.removed(): |
51 for f in wctx.removed(): |
56 if f not in man: |
52 if f not in mctx: |
57 action.append((f, "f")) |
53 action.append((f, "f")) |
58 |
54 |
59 return action |
55 return action |
60 |
56 |
61 def _nonoverlap(d1, d2, d3): |
57 def _nonoverlap(d1, d2, d3): |