Mercurial > hg
comparison hgext/shelve.py @ 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 | 065e6f1c9259 |
comparison
equal
deleted
inserted
replaced
19963:6f29cc567845 | 19964:ff38dfbce4f8 |
---|---|
64 try: | 64 try: |
65 return self.vfs(self.fname, mode) | 65 return self.vfs(self.fname, mode) |
66 except IOError, err: | 66 except IOError, err: |
67 if err.errno != errno.ENOENT: | 67 if err.errno != errno.ENOENT: |
68 raise | 68 raise |
69 if mode[0] in 'wa': | 69 raise util.Abort(_("shelved change '%s' not found") % self.name) |
70 try: | |
71 self.vfs.mkdir() | |
72 return self.vfs(self.fname, mode) | |
73 except IOError, err: | |
74 if err.errno != errno.EEXIST: | |
75 raise | |
76 elif mode[0] == 'r': | |
77 raise util.Abort(_("shelved change '%s' not found") % | |
78 self.name) | |
79 | 70 |
80 class shelvedstate(object): | 71 class shelvedstate(object): |
81 """Handle persistence during unshelving operations. | 72 """Handle persistence during unshelving operations. |
82 | 73 |
83 Handles saving and restoring a shelved state. Ensures that different | 74 Handles saving and restoring a shelved state. Ensures that different |