largefiles: fix 'hg clone . ../foo' OSError abort stable
authorMartin Geisler <mg@lazybytes.net>
Tue, 22 Nov 2011 17:51:43 +0100
branchstable
changeset 15548 f76584098c88
parent 15538 b0a88bda3381
child 15549 1fd126cd2d91
child 15550 b2fd4746414a
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.
hgext/largefiles/lfutil.py
tests/test-largefiles.t
--- 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
 
--- 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