Mercurial > public > mercurial-scm > hg-stable
diff mercurial/bundlerepo.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | 5ba8c328a895 |
children | 687b865b95ad |
line wrap: on
line diff
--- a/mercurial/bundlerepo.py Sat Oct 05 10:29:34 2019 -0400 +++ b/mercurial/bundlerepo.py Sun Oct 06 09:45:02 2019 -0400 @@ -17,10 +17,7 @@ import shutil from .i18n import _ -from .node import ( - nullid, - nullrev -) +from .node import nullid, nullrev from . import ( bundle2, @@ -44,6 +41,7 @@ vfs as vfsmod, ) + class bundlerevlog(revlog.revlog): def __init__(self, opener, indexfile, cgunpacker, linkmapper): # How it works: @@ -58,7 +56,7 @@ self.bundle = cgunpacker n = len(self) self.repotiprev = n - 1 - self.bundlerevs = set() # used by 'bundle()' revset expression + self.bundlerevs = set() # used by 'bundle()' revset expression for deltadata in cgunpacker.deltaiter(): node, p1, p2, cs, deltabase, delta, flags = deltadata @@ -73,17 +71,27 @@ for p in (p1, p2): if p not in self.nodemap: - raise error.LookupError(p, self.indexfile, - _("unknown parent")) + raise error.LookupError( + p, self.indexfile, _("unknown parent") + ) if deltabase not in self.nodemap: - raise LookupError(deltabase, self.indexfile, - _('unknown delta base')) + raise LookupError( + deltabase, self.indexfile, _('unknown delta base') + ) baserev = self.rev(deltabase) # start, size, full unc. size, base (unused), link, p1, p2, node - e = (revlog.offset_type(start, flags), size, -1, baserev, link, - self.rev(p1), self.rev(p2), node) + e = ( + revlog.offset_type(start, flags), + size, + -1, + baserev, + link, + self.rev(p1), + self.rev(p2), + node, + ) self.index.append(e) self.nodemap[node] = n self.bundlerevs.add(n) @@ -108,8 +116,7 @@ elif rev1 <= self.repotiprev and rev2 <= self.repotiprev: return revlog.revlog.revdiff(self, rev1, rev2) - return mdiff.textdiff(self.rawdata(rev1), - self.rawdata(rev2)) + return mdiff.textdiff(self.rawdata(rev1), self.rawdata(rev2)) def _rawtext(self, node, rev, _df=None): if rev is None: @@ -128,9 +135,9 @@ if iterrev == nullrev: rawtext = '' elif rawtext is None: - r = super(bundlerevlog, self)._rawtext(self.node(iterrev), - iterrev, - _df=_df) + r = super(bundlerevlog, self)._rawtext( + self.node(iterrev), iterrev, _df=_df + ) __, rawtext, validated = r if chain: validated = False @@ -151,19 +158,24 @@ def checksize(self): raise NotImplementedError + class bundlechangelog(bundlerevlog, changelog.changelog): def __init__(self, opener, cgunpacker): changelog.changelog.__init__(self, opener) linkmapper = lambda x: x - bundlerevlog.__init__(self, opener, self.indexfile, cgunpacker, - linkmapper) + bundlerevlog.__init__( + self, opener, self.indexfile, cgunpacker, linkmapper + ) + class bundlemanifest(bundlerevlog, manifest.manifestrevlog): - def __init__(self, opener, cgunpacker, linkmapper, dirlogstarts=None, - dir=''): + def __init__( + self, opener, cgunpacker, linkmapper, dirlogstarts=None, dir='' + ): manifest.manifestrevlog.__init__(self, opener, tree=dir) - bundlerevlog.__init__(self, opener, self.indexfile, cgunpacker, - linkmapper) + bundlerevlog.__init__( + self, opener, self.indexfile, cgunpacker, linkmapper + ) if dirlogstarts is None: dirlogstarts = {} if self.bundle.version == "03": @@ -175,20 +187,28 @@ if d in self._dirlogstarts: self.bundle.seek(self._dirlogstarts[d]) return bundlemanifest( - self.opener, self.bundle, self._linkmapper, - self._dirlogstarts, dir=d) + self.opener, + self.bundle, + self._linkmapper, + self._dirlogstarts, + dir=d, + ) return super(bundlemanifest, self).dirlog(d) + class bundlefilelog(filelog.filelog): def __init__(self, opener, path, cgunpacker, linkmapper): filelog.filelog.__init__(self, opener, path) - self._revlog = bundlerevlog(opener, self.indexfile, - cgunpacker, linkmapper) + self._revlog = bundlerevlog( + opener, self.indexfile, cgunpacker, linkmapper + ) + class bundlepeer(localrepo.localpeer): def canpush(self): return False + class bundlephasecache(phases.phasecache): def __init__(self, *args, **kwargs): super(bundlephasecache, self).__init__(*args, **kwargs) @@ -206,6 +226,7 @@ self.invalidate() self.dirty = True + def _getfilestarts(cgunpacker): filespos = {} for chunkdata in iter(cgunpacker.filelogheader, {}): @@ -215,6 +236,7 @@ pass return filespos + class bundlerepository(object): """A repository instance that is a union of a local repo and a bundle. @@ -227,6 +249,7 @@ Instances constructed directly are not usable as repository objects. Use instance() or makebundlerepository() to create instances. """ + def __init__(self, bundlepath, url, tempparent): self._tempparent = tempparent self._url = url @@ -245,8 +268,9 @@ for part in bundle.iterparts(seekable=True): if part.type == 'changegroup': if cgpart: - raise NotImplementedError("can't process " - "multiple changegroups") + raise NotImplementedError( + "can't process " "multiple changegroups" + ) cgpart = part self._handlebundle2part(bundle, part) @@ -263,22 +287,26 @@ elif isinstance(bundle, changegroup.cg1unpacker): if bundle.compressed(): - f = self._writetempbundle(bundle.read, '.hg10un', - header='HG10UN') + f = self._writetempbundle( + bundle.read, '.hg10un', header='HG10UN' + ) bundle = exchange.readbundle(self.ui, f, bundlepath, self.vfs) self._bundlefile = bundle self._cgunpacker = bundle else: - raise error.Abort(_('bundle type %s cannot be read') % - type(bundle)) + raise error.Abort(_('bundle type %s cannot be read') % type(bundle)) # dict with the mapping 'filename' -> position in the changegroup. self._cgfilespos = {} self.firstnewrev = self.changelog.repotiprev + 1 - phases.retractboundary(self, None, phases.draft, - [ctx.node() for ctx in self[self.firstnewrev:]]) + phases.retractboundary( + self, + None, + phases.draft, + [ctx.node() for ctx in self[self.firstnewrev :]], + ) def _handlebundle2part(self, bundle, part): if part.type != 'changegroup': @@ -298,14 +326,13 @@ def _writetempbundle(self, readfn, suffix, header=''): """Write a temporary file to disk """ - fdtemp, temp = self.vfs.mkstemp(prefix="hg-bundle-", - suffix=suffix) + fdtemp, temp = self.vfs.mkstemp(prefix="hg-bundle-", suffix=suffix) self.tempfile = temp with os.fdopen(fdtemp, r'wb') as fptemp: fptemp.write(header) while True: - chunk = readfn(2**18) + chunk = readfn(2 ** 18) if not chunk: break fptemp.write(chunk) @@ -338,8 +365,9 @@ rootstore = bundlemanifest(self.svfs, self._cgunpacker, linkmapper) self.filestart = self._cgunpacker.tell() - return manifest.manifestlog(self.svfs, self, rootstore, - self.narrowmatch()) + return manifest.manifestlog( + self.svfs, self, rootstore, self.narrowmatch() + ) def _consumemanifest(self): """Consumes the manifest portion of the bundle, setting filestart so the @@ -398,7 +426,7 @@ return bundlepeer(self) def getcwd(self): - return encoding.getcwd() # always outside the repo + return encoding.getcwd() # always outside the repo # Check if parents exist in localrepo before setting def setparents(self, p1, p2=nullid): @@ -411,6 +439,7 @@ self.ui.warn(msg % nodemod.hex(p2)) return super(bundlerepository, self).setparents(p1, p2) + def instance(ui, path, create, intents=None, createopts=None): if create: raise error.Abort(_('cannot create new bundle repository')) @@ -430,7 +459,7 @@ else: cwd = pathutil.normasprefix(cwd) if parentpath.startswith(cwd): - parentpath = parentpath[len(cwd):] + parentpath = parentpath[len(cwd) :] u = util.url(path) path = u.localpath() if u.scheme == 'bundle': @@ -444,6 +473,7 @@ return makebundlerepository(ui, repopath, bundlename) + def makebundlerepository(ui, repopath, bundlepath): """Make a bundle repository object based on repo and bundle paths.""" if repopath: @@ -481,6 +511,7 @@ return repo + class bundletransactionmanager(object): def transaction(self): return None @@ -491,8 +522,10 @@ def release(self): raise NotImplementedError -def getremotechanges(ui, repo, peer, onlyheads=None, bundlename=None, - force=False): + +def getremotechanges( + ui, repo, peer, onlyheads=None, bundlename=None, force=False +): '''obtains a bundle of changes incoming from peer "onlyheads" restricts the returned changes to those reachable from the @@ -512,8 +545,7 @@ the changes; it closes both the original "peer" and the one returned here. ''' - tmp = discovery.findcommonincoming(repo, peer, heads=onlyheads, - force=force) + tmp = discovery.findcommonincoming(repo, peer, heads=onlyheads, force=force) common, incoming, rheads = tmp if not incoming: try: @@ -535,62 +567,72 @@ # developer config: devel.legacy.exchange legexc = ui.configlist('devel', 'legacy.exchange') forcebundle1 = 'bundle2' not in legexc and 'bundle1' in legexc - canbundle2 = (not forcebundle1 - and peer.capable('getbundle') - and peer.capable('bundle2')) + canbundle2 = ( + not forcebundle1 + and peer.capable('getbundle') + and peer.capable('bundle2') + ) if canbundle2: with peer.commandexecutor() as e: - b2 = e.callcommand('getbundle', { - 'source': 'incoming', - 'common': common, - 'heads': rheads, - 'bundlecaps': exchange.caps20to10(repo, role='client'), - 'cg': True, - }).result() + b2 = e.callcommand( + 'getbundle', + { + 'source': 'incoming', + 'common': common, + 'heads': rheads, + 'bundlecaps': exchange.caps20to10(repo, role='client'), + 'cg': True, + }, + ).result() - fname = bundle = changegroup.writechunks(ui, - b2._forwardchunks(), - bundlename) + fname = bundle = changegroup.writechunks( + ui, b2._forwardchunks(), bundlename + ) else: if peer.capable('getbundle'): with peer.commandexecutor() as e: - cg = e.callcommand('getbundle', { - 'source': 'incoming', - 'common': common, - 'heads': rheads, - }).result() + cg = e.callcommand( + 'getbundle', + { + 'source': 'incoming', + 'common': common, + 'heads': rheads, + }, + ).result() elif onlyheads is None and not peer.capable('changegroupsubset'): # compat with older servers when pulling all remote heads with peer.commandexecutor() as e: - cg = e.callcommand('changegroup', { - 'nodes': incoming, - 'source': 'incoming', - }).result() + cg = e.callcommand( + 'changegroup', + {'nodes': incoming, 'source': 'incoming',}, + ).result() rheads = None else: with peer.commandexecutor() as e: - cg = e.callcommand('changegroupsubset', { - 'bases': incoming, - 'heads': rheads, - 'source': 'incoming', - }).result() + cg = e.callcommand( + 'changegroupsubset', + { + 'bases': incoming, + 'heads': rheads, + 'source': 'incoming', + }, + ).result() if localrepo: bundletype = "HG10BZ" else: bundletype = "HG10UN" - fname = bundle = bundle2.writebundle(ui, cg, bundlename, - bundletype) + fname = bundle = bundle2.writebundle(ui, cg, bundlename, bundletype) # keep written bundle? if bundlename: bundle = None if not localrepo: # use the created uncompressed bundlerepo - localrepo = bundlerepo = makebundlerepository(repo. baseui, - repo.root, - fname) + localrepo = bundlerepo = makebundlerepository( + repo.baseui, repo.root, fname + ) # this repo contains local and peer now, so filter out local again common = repo.heads() @@ -603,12 +645,12 @@ csets = localrepo.changelog.findmissing(common, rheads) if bundlerepo: - reponodes = [ctx.node() for ctx in bundlerepo[bundlerepo.firstnewrev:]] + reponodes = [ctx.node() for ctx in bundlerepo[bundlerepo.firstnewrev :]] with peer.commandexecutor() as e: - remotephases = e.callcommand('listkeys', { - 'namespace': 'phases', - }).result() + remotephases = e.callcommand( + 'listkeys', {'namespace': 'phases',} + ).result() pullop = exchange.pulloperation(bundlerepo, peer, heads=reponodes) pullop.trmanager = bundletransactionmanager()