# HG changeset patch # User FUJIWARA Katsunori # Date 1382976223 -32400 # Node ID ff38dfbce4f8aa5d4f5f9b66dd05504f8eda705b # Parent 6f29cc567845cbc819c90718b64566b6b0d26062 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()". diff -r 6f29cc567845 -r ff38dfbce4f8 hgext/shelve.py --- 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.