# HG changeset patch # User Angel Ezquerra # Date 2015-01-15 22:17:12 # Node ID 7cc77030c5574d4f4d1d4509e0cc9745b8f086ba # Parent 48fd1dfb99aa81bdaef0c47d43d88f0f6e8d4f50 localrepo: remove all external users of localrepo.opener This change touches every module in which repository.opener was being used, and changes it for the equivalent repository.vfs. This is meant to make it easier to split the repository.vfs into several separate vfs. It should now be possible to remove localrepo.opener. 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