changeset 19964:ff38dfbce4f8 stable

shelve: remove useless and incorrect code paths for file access This patch removes code paths in "shelvedfile.opener()", because: - explicit "vfs.mkdir()" invocation is useless "vfs.__call__()" for modes other than "read" creates parent directory of target file automatically by "util.ensuredirs()". - mode checking in "except IOError" code path is useless ENOENT occurs only for "read" mode, because target file is created forcibly for other modes. - there is no explicit "return" statement in the code path for "except IOError" if "mode[0] in 'wa'" this is incorrect, because None may be returnd unexpectedly, even though it seems the EEXIST case in the directory creation race for ".hg/shelved" and is very rare. this directory creation race is also treated in "util.ensuredirs()".
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Tue, 29 Oct 2013 01:03:43 +0900
parents 6f29cc567845
children f1dd988a8bcc
files hgext/shelve.py
diffstat 1 files changed, 1 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/shelve.py	Tue Oct 29 01:03:43 2013 +0900
+++ b/hgext/shelve.py	Tue Oct 29 01:03:43 2013 +0900
@@ -66,16 +66,7 @@
         except IOError, err:
             if err.errno != errno.ENOENT:
                 raise
-            if mode[0] in 'wa':
-                try:
-                    self.vfs.mkdir()
-                    return self.vfs(self.fname, mode)
-                except IOError, err:
-                    if err.errno != errno.EEXIST:
-                        raise
-            elif mode[0] == 'r':
-                raise util.Abort(_("shelved change '%s' not found") %
-                                 self.name)
+            raise util.Abort(_("shelved change '%s' not found") % self.name)
 
 class shelvedstate(object):
     """Handle persistence during unshelving operations.