largefiles: fix revert removing a largefile from a merge
Before revert could fail with:
abort: .hglf/large@
33fdd332ec64: not found in manifest!
The LookupError will now be caught and handled correctly.
--- a/hgext/largefiles/lfutil.py Fri Jan 11 16:30:29 2013 +0100
+++ b/hgext/largefiles/lfutil.py Fri Jan 11 16:30:29 2013 +0100
@@ -142,8 +142,11 @@
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)
--- a/tests/test-largefiles.t Fri Jan 11 16:30:29 2013 +0100
+++ b/tests/test-largefiles.t Fri Jan 11 16:30:29 2013 +0100
@@ -1220,6 +1220,10 @@
$ 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.