Show More
@@ -265,13 +265,10 b' def override_update(orig, ui, repo, *pat' | |||
|
265 | 265 | # The overridden function filters the unknown files by removing any |
|
266 | 266 | # largefiles. This makes the merge proceed and we can then handle this |
|
267 | 267 | # case further in the overridden manifestmerge function below. |
|
268 |
def override_checkunknown(origfn, wctx, mctx, f |
|
|
269 | origunknown = wctx.unknown() | |
|
270 | wctx._unknown = filter(lambda f: lfutil.standin(f) not in wctx, origunknown) | |
|
271 | try: | |
|
272 | return origfn(wctx, mctx, folding) | |
|
273 | finally: | |
|
274 | wctx._unknown = origunknown | |
|
268 | def override_checkunknownfile(origfn, repo, wctx, mctx, f): | |
|
269 | if lfutil.standin(f) in wctx: | |
|
270 | return False | |
|
271 | return origfn(repo, wctx, mctx, f) | |
|
275 | 272 | |
|
276 | 273 | # The manifest merge handles conflicts on the manifest level. We want |
|
277 | 274 | # to handle changes in largefile-ness of files at this level too. |
@@ -64,8 +64,8 b' def uisetup(ui):' | |||
|
64 | 64 | overrides.override_update) |
|
65 | 65 | entry = extensions.wrapcommand(commands.table, 'pull', |
|
66 | 66 | overrides.override_pull) |
|
67 | entry = extensions.wrapfunction(merge, '_checkunknown', | |
|
68 | overrides.override_checkunknown) | |
|
67 | entry = extensions.wrapfunction(merge, '_checkunknownfile', | |
|
68 | overrides.override_checkunknownfile) | |
|
69 | 69 | entry = extensions.wrapfunction(merge, 'manifestmerge', |
|
70 | 70 | overrides.override_manifestmerge) |
|
71 | 71 | entry = extensions.wrapfunction(filemerge, 'filemerge', |
@@ -81,22 +81,19 b' class mergestate(object):' | |||
|
81 | 81 | self.mark(dfile, 'r') |
|
82 | 82 | return r |
|
83 | 83 | |
|
84 |
def _checkunknown(wctx, mctx, f |
|
|
84 | def _checkunknownfile(repo, wctx, mctx, f): | |
|
85 | return (not repo.dirstate._ignore(f) | |
|
86 | and os.path.exists(repo.wjoin(f)) | |
|
87 | and mctx[f].cmp(wctx[f])) | |
|
88 | ||
|
89 | def _checkunknown(repo, wctx, mctx): | |
|
85 | 90 | "check for collisions between unknown files and files in mctx" |
|
86 | if folding: | |
|
87 | foldf = util.normcase | |
|
88 | else: | |
|
89 | foldf = lambda fn: fn | |
|
90 | folded = {} | |
|
91 | for fn in mctx: | |
|
92 | folded[foldf(fn)] = fn | |
|
93 | 91 | |
|
94 | 92 | error = False |
|
95 |
for f |
|
|
96 | f = foldf(fn) | |
|
97 | if f in folded and mctx[folded[f]].cmp(wctx[f]): | |
|
93 | for f in mctx: | |
|
94 | if f not in wctx and _checkunknownfile(repo, wctx, mctx, f): | |
|
98 | 95 | error = True |
|
99 |
wctx._repo.ui.warn(_("%s: untracked file differs\n") % f |
|
|
96 | wctx._repo.ui.warn(_("%s: untracked file differs\n") % f) | |
|
100 | 97 | if error: |
|
101 | 98 | raise util.Abort(_("untracked files in working directory differ " |
|
102 | 99 | "from files in requested revision")) |
@@ -565,7 +562,7 b' def update(repo, node, branchmerge, forc' | |||
|
565 | 562 | wc.status(unknown=True) # prime cache |
|
566 | 563 | folding = not util.checkcase(repo.path) |
|
567 | 564 | if not force: |
|
568 |
_checkunknown(wc, p2 |
|
|
565 | _checkunknown(repo, wc, p2) | |
|
569 | 566 | if folding: |
|
570 | 567 | _checkcollision(p2, branchmerge and p1) |
|
571 | 568 | action += _forgetremoved(wc, p2, branchmerge) |
General Comments 0
You need to be logged in to leave comments.
Login now