# HG changeset patch # User FUJIWARA Katsunori # Date 2014-11-19 09:35:14 # Node ID 6cfa7a73b6e7ff3da179f9ca86aba53d824b357b # Parent 1df6519eb3abe34990073935534553b181d7f06c 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. diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -581,18 +581,12 @@ class hgsubrepo(abstractsubrepo): 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()