subrepo: replace direct file APIs around "writelines" by "vfs.writelines"
This patch also replaces "self._getstorehashcachepath" (building
absolute path up) by "self._getstorehashcachename" (building relative
path up), because "vfs.writelines" requires relative path.
--- a/mercurial/subrepo.py Wed Nov 19 18:35:14 2014 +0900
+++ b/mercurial/subrepo.py Wed Nov 19 18:35:14 2014 +0900
@@ -581,18 +581,12 @@
Each remote repo requires its own store hash cache, because a subrepo
store may be "clean" versus a given remote repo, but not versus another
'''
- cachefile = self._getstorehashcachepath(remotepath)
+ cachefile = _getstorehashcachename(remotepath)
lock = self._repo.lock()
try:
storehash = list(self._calcstorehash(remotepath))
- cachedir = os.path.dirname(cachefile)
- if not os.path.exists(cachedir):
- util.makedirs(cachedir, notindexed=True)
- fd = open(cachefile, 'w')
- try:
- fd.writelines(storehash)
- finally:
- fd.close()
+ vfs = self._cachestorehashvfs
+ vfs.writelines(cachefile, storehash, mode='w', notindexed=True)
finally:
lock.release()