Mercurial > hg
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.