# HG changeset patch # User Martin Geisler # Date 1321980703 -3600 # Node ID f76584098c88fadcb74a8aa5c9c7efb2fb25b682 # Parent b0a88bda3381a04f2294d9fdcf9101283b62c006 largefiles: fix 'hg clone . ../foo' OSError abort Operating on a non-existant file can cause both IOError and OSError, depending on the function used: open raises IOError, os.lstat raises OSError. The largefiles code called dirstate.normal, which in turn calls os.lstat, so OSError is the right exception to catch here. diff -r b0a88bda3381 -r f76584098c88 hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py Sun Nov 20 23:09:32 2011 +0100 +++ b/hgext/largefiles/lfutil.py Tue Nov 22 17:51:43 2011 +0100 @@ -158,7 +158,7 @@ try: if hash == hashfile(lfile): lfdirstate.normal(lfile) - except IOError, err: + except OSError, err: if err.errno != errno.ENOENT: raise diff -r b0a88bda3381 -r f76584098c88 tests/test-largefiles.t --- a/tests/test-largefiles.t Sun Nov 20 23:09:32 2011 +0100 +++ b/tests/test-largefiles.t Tue Nov 22 17:51:43 2011 +0100 @@ -252,13 +252,12 @@ Clone a largefiles repo. - $ cd .. - $ hg clone a b + $ hg clone . ../b updating to branch default 5 files updated, 0 files merged, 0 files removed, 0 files unresolved getting changed largefiles 3 largefiles updated, 0 removed - $ cd b + $ cd ../b $ hg log --template '{rev}:{node|short} {desc|firstline}\n' 7:daea875e9014 add/edit more largefiles 6:4355d653f84f edit files yet again