largefiles: fix revert removing a largefile from a merge

Before revert could fail with:
  abort: .hglf/large@33fdd332ec: not found in manifest!

The LookupError will now be caught and handled correctly.
This commit is contained in:
Mads Kiilerich 2013-01-11 16:30:29 +01:00
parent 5096819efc
commit 19813fa421
2 changed files with 9 additions and 2 deletions

View File

@ -142,8 +142,11 @@ def lfdirstatestatus(lfdirstate, repo, rev):
s = lfdirstate.status(match, [], False, False, False)
unsure, modified, added, removed, missing, unknown, ignored, clean = s
for lfile in unsure:
if repo[rev][standin(lfile)].data().strip() != \
hashfile(repo.wjoin(lfile)):
try:
fctx = repo[rev][standin(lfile)]
except LookupError:
fctx = None
if not fctx or fctx.data().strip() != hashfile(repo.wjoin(lfile)):
modified.append(lfile)
else:
clean.append(lfile)

View File

@ -1220,6 +1220,10 @@ Test status after merging with a branch that introduces a new largefile:
$ hg status
M large
- revert should be able to revert files introduced in a pending merge
$ hg revert --all -r .
removing .hglf/large
Test that a normal file and a largefile with the same name and path cannot
coexist.