diff --git a/hgext/blackbox.py b/hgext/blackbox.py --- a/hgext/blackbox.py +++ b/hgext/blackbox.py @@ -112,7 +112,7 @@ def wrapui(ui): lastblackbox = blackbox def setrepo(self, repo): - self._bbopener = repo.opener + self._bbopener = repo.vfs ui.__class__ = blackboxui @@ -141,7 +141,7 @@ def blackbox(ui, repo, *revs, **opts): return limit = opts.get('limit') - blackbox = repo.opener('blackbox.log', 'r') + blackbox = repo.vfs('blackbox.log', 'r') lines = blackbox.read().split('\n') count = 0 diff --git a/hgext/eol.py b/hgext/eol.py --- a/hgext/eol.py +++ b/hgext/eol.py @@ -319,7 +319,7 @@ def reposetup(ui, repo): # longer match a file it matched before self.dirstate.normallookup(f) # Create or touch the cache to update mtime - self.opener("eol.cache", "w").close() + self.vfs("eol.cache", "w").close() wlock.release() except error.LockUnavailable: # If we cannot lock the repository and clear the diff --git a/hgext/gpg.py b/hgext/gpg.py --- a/hgext/gpg.py +++ b/hgext/gpg.py @@ -103,7 +103,7 @@ def sigwalk(repo): try: # read local signatures fn = "localsigs" - for item in parsefile(repo.opener(fn), fn): + for item in parsefile(repo.vfs(fn), fn): yield item except IOError: pass @@ -250,7 +250,7 @@ def sign(ui, repo, *revs, **opts): # write it if opts['local']: - repo.opener.append("localsigs", sigmessage) + repo.vfs.append("localsigs", sigmessage) return if not opts["force"]: diff --git a/hgext/keyword.py b/hgext/keyword.py --- a/hgext/keyword.py +++ b/hgext/keyword.py @@ -411,7 +411,7 @@ def demo(ui, repo, *args, **opts): if args: # simulate hgrc parsing rcmaps = ['[keywordmaps]\n'] + [a + '\n' for a in args] - fp = repo.opener('hgrc', 'w') + fp = repo.vfs('hgrc', 'w') fp.writelines(rcmaps) fp.close() ui.readconfig(repo.join('hgrc')) diff --git a/hgext/mq.py b/hgext/mq.py --- a/hgext/mq.py +++ b/hgext/mq.py @@ -3215,7 +3215,7 @@ def qqueue(ui, repo, name=None, **opts): def _noqueues(): try: - fh = repo.opener(_allqueues, 'r') + fh = repo.vfs(_allqueues, 'r') fh.close() except IOError: return True @@ -3226,7 +3226,7 @@ def qqueue(ui, repo, name=None, **opts): current = _getcurrent() try: - fh = repo.opener(_allqueues, 'r') + fh = repo.vfs(_allqueues, 'r') queues = [queue.strip() for queue in fh if queue.strip()] fh.close() if current not in queues: @@ -3243,13 +3243,13 @@ def qqueue(ui, repo, name=None, **opts): _setactivenocheck(name) def _setactivenocheck(name): - fh = repo.opener(_activequeue, 'w') + fh = repo.vfs(_activequeue, 'w') if name != 'patches': fh.write(name) fh.close() def _addqueue(name): - fh = repo.opener(_allqueues, 'a') + fh = repo.vfs(_allqueues, 'a') fh.write('%s\n' % (name,)) fh.close() @@ -3274,7 +3274,7 @@ def qqueue(ui, repo, name=None, **opts): if name == current: raise util.Abort(_('cannot delete currently active queue')) - fh = repo.opener('patches.queues.new', 'w') + fh = repo.vfs('patches.queues.new', 'w') for queue in existing: if queue == name: continue @@ -3322,7 +3322,7 @@ def qqueue(ui, repo, name=None, **opts): raise util.Abort(_('non-queue directory "%s" already exists') % newdir) - fh = repo.opener('patches.queues.new', 'w') + fh = repo.vfs('patches.queues.new', 'w') for queue in existing: if queue == current: fh.write('%s\n' % (name,)) diff --git a/hgext/patchbomb.py b/hgext/patchbomb.py --- a/hgext/patchbomb.py +++ b/hgext/patchbomb.py @@ -234,7 +234,7 @@ def _getdescription(repo, defaultbody, s 'patch series.\n\n')) body = ui.edit(defaultbody, sender) # Save series description in case sendmail fails - msgfile = repo.opener('last-email.txt', 'wb') + msgfile = repo.vfs('last-email.txt', 'wb') msgfile.write(body) msgfile.close() return body diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -754,7 +754,7 @@ def updatebookmarks(repo, targetnode, ns def storestatus(repo, originalwd, target, state, collapse, keep, keepbranches, external, activebookmark): 'Store the current status to allow recovery' - f = repo.opener("rebasestate", "w") + f = repo.vfs("rebasestate", "w") f.write(repo[originalwd].hex() + '\n') f.write(repo[target].hex() + '\n') f.write(repo[external].hex() + '\n') @@ -789,7 +789,7 @@ def restorestatus(repo): external = nullrev activebookmark = None state = {} - f = repo.opener("rebasestate") + f = repo.vfs("rebasestate") for i, l in enumerate(f.read().splitlines()): if i == 0: originalwd = repo[l].rev() diff --git a/hgext/shelve.py b/hgext/shelve.py --- a/hgext/shelve.py +++ b/hgext/shelve.py @@ -95,7 +95,7 @@ class shelvedstate(object): @classmethod def load(cls, repo): - fp = repo.opener(cls._filename) + fp = repo.vfs(cls._filename) try: version = int(fp.readline().strip()) @@ -121,7 +121,7 @@ class shelvedstate(object): @classmethod def save(cls, repo, name, originalwctx, pendingctx, stripnodes): - fp = repo.opener(cls._filename, 'wb') + fp = repo.vfs(cls._filename, 'wb') fp.write('%i\n' % cls._version) fp.write('%s\n' % name) fp.write('%s\n' % hex(originalwctx.node())) diff --git a/mercurial/bookmarks.py b/mercurial/bookmarks.py --- a/mercurial/bookmarks.py +++ b/mercurial/bookmarks.py @@ -115,7 +115,7 @@ def readcurrent(repo): ''' mark = None try: - file = repo.opener('bookmarks.current') + file = repo.vfs('bookmarks.current') except IOError, inst: if inst.errno != errno.ENOENT: raise @@ -144,7 +144,7 @@ def setcurrent(repo, mark): wlock = repo.wlock() try: - file = repo.opener('bookmarks.current', 'w', atomictemp=True) + file = repo.vfs('bookmarks.current', 'w', atomictemp=True) file.write(encoding.fromlocal(mark)) file.close() finally: diff --git a/mercurial/branchmap.py b/mercurial/branchmap.py --- a/mercurial/branchmap.py +++ b/mercurial/branchmap.py @@ -21,7 +21,7 @@ def _filename(repo): def read(repo): try: - f = repo.opener(_filename(repo)) + f = repo.vfs(_filename(repo)) lines = f.read().split('\n') f.close() except (IOError, OSError): @@ -203,7 +203,7 @@ class branchcache(dict): def write(self, repo): try: - f = repo.opener(_filename(repo), "w", atomictemp=True) + f = repo.vfs(_filename(repo), "w", atomictemp=True) cachekey = [hex(self.tipnode), str(self.tiprev)] if self.filteredhash is not None: cachekey.append(hex(self.filteredhash)) diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1803,7 +1803,7 @@ def debugbuilddag(ui, repo, text=None, tr.close() if tags: - repo.opener.write("localtags", "".join(tags)) + repo.vfs.write("localtags", "".join(tags)) finally: ui.progress(_('building'), None) release(tr, lock) @@ -3377,7 +3377,7 @@ def graft(ui, repo, *revs, **opts): raise util.Abort(_("can't specify --continue and revisions")) # read in unfinished revisions try: - nodes = repo.opener.read('graftstate').splitlines() + nodes = repo.vfs.read('graftstate').splitlines() revs = [repo[node].rev() for node in nodes] except IOError, inst: if inst.errno != errno.ENOENT: @@ -3506,7 +3506,7 @@ def graft(ui, repo, *revs, **opts): if stats and stats[3] > 0: # write out state for --continue nodelines = [repo[rev].hex() + "\n" for rev in revs[pos:]] - repo.opener.write('graftstate', ''.join(nodelines)) + repo.vfs.write('graftstate', ''.join(nodelines)) raise util.Abort( _("unresolved conflicts, can't continue"), hint=_('use hg resolve and hg graft --continue')) diff --git a/mercurial/hbisect.py b/mercurial/hbisect.py --- a/mercurial/hbisect.py +++ b/mercurial/hbisect.py @@ -136,7 +136,7 @@ def bisect(changelog, state): def load_state(repo): state = {'current': [], 'good': [], 'bad': [], 'skip': []} if os.path.exists(repo.join("bisect.state")): - for l in repo.opener("bisect.state"): + for l in repo.vfs("bisect.state"): kind, node = l[:-1].split() node = repo.lookup(node) if kind not in state: @@ -146,7 +146,7 @@ def load_state(repo): def save_state(repo, state): - f = repo.opener("bisect.state", "w", atomictemp=True) + f = repo.vfs("bisect.state", "w", atomictemp=True) wlock = repo.wlock() try: for kind in sorted(state): diff --git a/mercurial/hg.py b/mercurial/hg.py --- a/mercurial/hg.py +++ b/mercurial/hg.py @@ -193,7 +193,7 @@ def share(ui, source, dest=None, update= requirements = '' try: - requirements = srcrepo.opener.read('requires') + requirements = srcrepo.vfs.read('requires') except IOError, inst: if inst.errno != errno.ENOENT: raise @@ -206,7 +206,7 @@ def share(ui, source, dest=None, update= default = srcrepo.ui.config('paths', 'default') if default: - fp = r.opener("hgrc", "w", text=True) + fp = r.vfs("hgrc", "w", text=True) fp.write("[paths]\n") fp.write("default = %s\n" % default) fp.close() @@ -226,7 +226,7 @@ def share(ui, source, dest=None, update= _update(r, uprev) if bookmarks: - r.opener('bookmarks.shared', 'w').close() + r.vfs('bookmarks.shared', 'w').close() def copystore(ui, srcrepo, destpath): '''copy files from store of srcrepo in destpath @@ -441,7 +441,7 @@ def clone(ui, peeropts, source, dest=Non destrepo = destpeer.local() if destrepo: template = uimod.samplehgrcs['cloned'] - fp = destrepo.opener("hgrc", "w", text=True) + fp = destrepo.vfs("hgrc", "w", text=True) u = util.url(abspath) u.passwd = None defaulturl = str(u) diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -138,7 +138,7 @@ class mergestate(object): """ records = [] try: - f = self._repo.opener(self.statepathv1) + f = self._repo.vfs(self.statepathv1) for i, l in enumerate(f): if i == 0: records.append(('L', l[:-1])) @@ -157,7 +157,7 @@ class mergestate(object): """ records = [] try: - f = self._repo.opener(self.statepathv2) + f = self._repo.vfs(self.statepathv2) data = f.read() off = 0 end = len(data) @@ -184,8 +184,8 @@ class mergestate(object): # Check local variables before looking at filesystem for performance # reasons. return bool(self._local) or bool(self._state) or \ - self._repo.opener.exists(self.statepathv1) or \ - self._repo.opener.exists(self.statepathv2) + self._repo.vfs.exists(self.statepathv1) or \ + self._repo.vfs.exists(self.statepathv2) def commit(self): """Write current state on disk (if necessary)""" @@ -205,7 +205,7 @@ class mergestate(object): def _writerecordsv1(self, records): """Write current state on disk in a version 1 file""" - f = self._repo.opener(self.statepathv1, 'w') + f = self._repo.vfs(self.statepathv1, 'w') irecords = iter(records) lrecords = irecords.next() assert lrecords[0] == 'L' @@ -217,7 +217,7 @@ class mergestate(object): def _writerecordsv2(self, records): """Write current state on disk in a version 2 file""" - f = self._repo.opener(self.statepathv2, 'w') + f = self._repo.vfs(self.statepathv2, 'w') for key, data in records: assert len(key) == 1 format = '>sI%is' % len(data) @@ -234,7 +234,7 @@ class mergestate(object): note: also write the local version to the `.hg/merge` directory. """ hash = util.sha1(fcl.path()).hexdigest() - self._repo.opener.write('merge/' + hash, fcl.data()) + self._repo.vfs.write('merge/' + hash, fcl.data()) self._state[fd] = ['u', hash, fcl.path(), fca.path(), hex(fca.filenode()), fco.path(), hex(fco.filenode()), @@ -284,7 +284,7 @@ class mergestate(object): elif flags == fla: flags = flo # restore local - f = self._repo.opener('merge/' + hash) + f = self._repo.vfs('merge/' + hash) self._repo.wwrite(dfile, f.read(), flags) f.close() r = filemerge.filemerge(self._repo, self._local, lfile, fcd, fco, fca, diff --git a/mercurial/statichttprepo.py b/mercurial/statichttprepo.py --- a/mercurial/statichttprepo.py +++ b/mercurial/statichttprepo.py @@ -109,7 +109,7 @@ class statichttprepository(localrepo.loc self.names = namespaces.namespaces() try: - requirements = scmutil.readrequires(self.opener, self.supported) + requirements = scmutil.readrequires(self.vfs, self.supported) except IOError, inst: if inst.errno != errno.ENOENT: raise @@ -117,7 +117,7 @@ class statichttprepository(localrepo.loc # check if it is a non-empty old-style repository try: - fp = self.opener("00changelog.i") + fp = self.vfs("00changelog.i") fp.read(1) fp.close() except IOError, inst: diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -614,7 +614,7 @@ class hgsubrepo(abstractsubrepo): if defpath != defpushpath: addpathconfig('default-push', defpushpath) - fp = self._repo.opener("hgrc", "w", text=True) + fp = self._repo.vfs("hgrc", "w", text=True) try: fp.write(''.join(lines)) finally: diff --git a/mercurial/tags.py b/mercurial/tags.py --- a/mercurial/tags.py +++ b/mercurial/tags.py @@ -62,7 +62,7 @@ def findglobaltags(ui, repo, alltags, ta def readlocaltags(ui, repo, alltags, tagtypes): '''Read local tags in repo. Update alltags and tagtypes.''' try: - data = repo.opener.read("localtags") + data = repo.vfs.read("localtags") except IOError, inst: if inst.errno != errno.ENOENT: raise @@ -193,7 +193,7 @@ def _readtagcache(ui, repo): set, caller is responsible for reading tag info from each head.''' try: - cachefile = repo.opener('cache/tags', 'r') + cachefile = repo.vfs('cache/tags', 'r') # force reading the file for static-http cachelines = iter(cachefile) except IOError: @@ -303,7 +303,7 @@ def _readtagcache(ui, repo): def _writetagcache(ui, repo, heads, tagfnode, cachetags): try: - cachefile = repo.opener('cache/tags', 'w', atomictemp=True) + cachefile = repo.vfs('cache/tags', 'w', atomictemp=True) except (OSError, IOError): return