# HG changeset patch # User Joerg Sonnenberger # Date 1606856086 -3600 # Node ID 59fa3890d40a1318fbb6664faaf022d0c7b2f60d # Parent d6afa9c149c34518c729feff1a148d4b1d9a60dd node: import symbols explicitly There is no point in lazy importing mercurial.node, it is used all over the place anyway. So consistently import the used symbols directly. Fix one file using symbols indirectly via mercurial.revlog. Differential Revision: https://phab.mercurial-scm.org/D9480 diff -r d6afa9c149c3 -r 59fa3890d40a contrib/dumprevlog --- a/contrib/dumprevlog Sun Dec 13 18:29:22 2020 -0800 +++ b/contrib/dumprevlog Tue Dec 01 21:54:46 2020 +0100 @@ -5,9 +5,9 @@ from __future__ import absolute_import, print_function import sys +from mercurial.node import hex from mercurial import ( encoding, - node, pycompat, revlog, ) @@ -38,9 +38,9 @@ n = r.node(i) p = r.parents(n) d = r.revision(n) - printb(b"node: %s" % node.hex(n)) + printb(b"node: %s" % hex(n)) printb(b"linkrev: %d" % r.linkrev(i)) - printb(b"parents: %s %s" % (node.hex(p[0]), node.hex(p[1]))) + printb(b"parents: %s %s" % (hex(p[0]), hex(p[1]))) printb(b"length: %d" % len(d)) printb(b"-start-") printb(d) diff -r d6afa9c149c3 -r 59fa3890d40a contrib/undumprevlog --- a/contrib/undumprevlog Sun Dec 13 18:29:22 2020 -0800 +++ b/contrib/undumprevlog Tue Dec 01 21:54:46 2020 +0100 @@ -6,9 +6,9 @@ from __future__ import absolute_import, print_function import sys +from mercurial.node import bin from mercurial import ( encoding, - node, revlog, transaction, vfs as vfsmod, @@ -31,13 +31,13 @@ r = revlog.revlog(opener, f) procutil.stdout.write(b'%s\n' % f) elif l.startswith("node:"): - n = node.bin(l[6:-1]) + n = bin(l[6:-1]) elif l.startswith("linkrev:"): lr = int(l[9:-1]) elif l.startswith("parents:"): p = l[9:-1].split() - p1 = node.bin(p[0]) - p2 = node.bin(p[1]) + p1 = bin(p[0]) + p2 = bin(p[1]) elif l.startswith("length:"): length = int(l[8:-1]) sys.stdin.readline() # start marker diff -r d6afa9c149c3 -r 59fa3890d40a hgext/absorb.py --- a/hgext/absorb.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/absorb.py Tue Dec 01 21:54:46 2020 +0100 @@ -36,6 +36,11 @@ import collections from mercurial.i18n import _ +from mercurial.node import ( + hex, + nullid, + short, +) from mercurial import ( cmdutil, commands, @@ -44,7 +49,6 @@ error, linelog, mdiff, - node, obsolete, patch, phases, @@ -102,7 +106,7 @@ return b'' def node(self): - return node.nullid + return nullid def uniq(lst): @@ -367,7 +371,7 @@ idx = (max(rev - 1, 0)) // 2 self.ui.write( _(b'%s: chunk %d:%d -> %d lines\n') - % (node.short(self.fctxs[idx].node()), a1, a2, len(blines)) + % (short(self.fctxs[idx].node()), a1, a2, len(blines)) ) self.linelog.replacelines(rev, a1, a2, b1, b2) if self.opts.get(b'edit_lines', False): @@ -486,7 +490,7 @@ editortext += _(b'HG: %s/%s %s %s\n') % ( b'|' * i, b'-' * (len(visiblefctxs) - i + 1), - node.short(f.node()), + short(f.node()), f.description().split(b'\n', 1)[0], ) editortext += _(b'HG: %s\n') % (b'|' * len(visiblefctxs)) @@ -816,7 +820,7 @@ if self.ui.debugflag: return b'%d:%s' % (ctx.rev(), ctx.hex()) else: - return b'%d:%s' % (ctx.rev(), node.short(ctx.node())) + return b'%d:%s' % (ctx.rev(), short(ctx.node())) def _getnewfilecontents(self, ctx): """(ctx) -> {path: str} @@ -849,7 +853,7 @@ changes.append((name, hsh)) if self.ui.verbose: self.ui.write( - _(b'moving bookmark %s to %s\n') % (name, node.hex(hsh)) + _(b'moving bookmark %s to %s\n') % (name, hex(hsh)) ) else: changes.append((name, None)) @@ -920,7 +924,7 @@ the commit is a clone from ctx, with a (optionally) different p1, and different file contents replaced by memworkingcopy. """ - parents = p1 and (p1, node.nullid) + parents = p1 and (p1, nullid) extra = ctx.extra() if self._useobsolete and self.ui.configbool(b'absorb', b'add-noise'): extra[b'absorb_source'] = ctx.hex() diff -r d6afa9c149c3 -r 59fa3890d40a hgext/convert/git.py --- a/hgext/convert/git.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/convert/git.py Tue Dec 01 21:54:46 2020 +0100 @@ -9,10 +9,10 @@ import os from mercurial.i18n import _ +from mercurial.node import nullhex from mercurial import ( config, error, - node as nodemod, pycompat, ) @@ -192,7 +192,7 @@ return heads def catfile(self, rev, ftype): - if rev == nodemod.nullhex: + if rev == nullhex: raise IOError self.catfilepipe[0].write(rev + b'\n') self.catfilepipe[0].flush() @@ -214,7 +214,7 @@ return data def getfile(self, name, rev): - if rev == nodemod.nullhex: + if rev == nullhex: return None, None if name == b'.hgsub': data = b'\n'.join([m.hgsub() for m in self.submoditer()]) @@ -228,7 +228,7 @@ return data, mode def submoditer(self): - null = nodemod.nullhex + null = nullhex for m in sorted(self.submodules, key=lambda p: p.path): if m.node != null: yield m @@ -316,7 +316,7 @@ subexists[0] = True if entry[4] == b'D' or renamesource: subdeleted[0] = True - changes.append((b'.hgsub', nodemod.nullhex)) + changes.append((b'.hgsub', nullhex)) else: changes.append((b'.hgsub', b'')) elif entry[1] == b'160000' or entry[0] == b':160000': @@ -324,7 +324,7 @@ subexists[0] = True else: if renamesource: - h = nodemod.nullhex + h = nullhex self.modecache[(f, h)] = (p and b"x") or (s and b"l") or b"" changes.append((f, h)) @@ -361,7 +361,7 @@ if subexists[0]: if subdeleted[0]: - changes.append((b'.hgsubstate', nodemod.nullhex)) + changes.append((b'.hgsubstate', nullhex)) else: self.retrievegitmodules(version) changes.append((b'.hgsubstate', b'')) diff -r d6afa9c149c3 -r 59fa3890d40a hgext/convert/hg.py --- a/hgext/convert/hg.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/convert/hg.py Tue Dec 01 21:54:46 2020 +0100 @@ -24,6 +24,12 @@ from mercurial.i18n import _ from mercurial.pycompat import open +from mercurial.node import ( + bin, + hex, + nullhex, + nullid, +) from mercurial import ( bookmarks, context, @@ -32,7 +38,6 @@ hg, lock as lockmod, merge as mergemod, - node as nodemod, phases, pycompat, scmutil, @@ -155,7 +160,7 @@ continue revid = revmap.get(source.lookuprev(s[0])) if not revid: - if s[0] == nodemod.nullhex: + if s[0] == nullhex: revid = s[0] else: # missing, but keep for hash stability @@ -174,7 +179,7 @@ revid = s[0] subpath = s[1] - if revid != nodemod.nullhex: + if revid != nullhex: revmap = self.subrevmaps.get(subpath) if revmap is None: revmap = mapfile( @@ -295,13 +300,13 @@ parents = pl nparents = len(parents) if self.filemapmode and nparents == 1: - m1node = self.repo.changelog.read(nodemod.bin(parents[0]))[0] + m1node = self.repo.changelog.read(bin(parents[0]))[0] parent = parents[0] if len(parents) < 2: - parents.append(nodemod.nullid) + parents.append(nullid) if len(parents) < 2: - parents.append(nodemod.nullid) + parents.append(nullid) p2 = parents.pop(0) text = commit.desc @@ -332,12 +337,12 @@ # Only transplant stores its reference in binary if label == b'transplant_source': - node = nodemod.hex(node) + node = hex(node) newrev = revmap.get(node) if newrev is not None: if label == b'transplant_source': - newrev = nodemod.bin(newrev) + newrev = bin(newrev) extra[label] = newrev @@ -351,7 +356,7 @@ p2 = parents.pop(0) p1ctx = self.repo[p1] p2ctx = None - if p2 != nodemod.nullid: + if p2 != nullid: p2ctx = self.repo[p2] fileset = set(files) if full: @@ -389,7 +394,7 @@ origctx = commit.ctx else: origctx = None - node = nodemod.hex(self.repo.commitctx(ctx, origctx=origctx)) + node = hex(self.repo.commitctx(ctx, origctx=origctx)) # If the node value has changed, but the phase is lower than # draft, set it back to draft since it hasn't been exposed @@ -406,7 +411,7 @@ if self.filemapmode and nparents == 1: man = self.repo.manifestlog.getstorage(b'') - mnode = self.repo.changelog.read(nodemod.bin(p2))[0] + mnode = self.repo.changelog.read(bin(p2))[0] closed = b'close' in commit.extra if not closed and not man.cmp(m1node, man.revision(mnode)): self.ui.status(_(b"filtering out empty revision\n")) @@ -416,7 +421,7 @@ def puttags(self, tags): tagparent = self.repo.branchtip(self.tagsbranch, ignoremissing=True) - tagparent = tagparent or nodemod.nullid + tagparent = tagparent or nullid oldlines = set() for branch, heads in pycompat.iteritems(self.repo.branchmap()): @@ -468,7 +473,7 @@ extra, ) node = self.repo.commitctx(ctx) - return nodemod.hex(node), nodemod.hex(tagparent) + return hex(node), hex(tagparent) def setfilemapmode(self, active): self.filemapmode = active @@ -484,7 +489,7 @@ self.ui.status(_(b"updating bookmarks\n")) destmarks = self.repo._bookmarks changes = [ - (bookmark, nodemod.bin(updatedbookmark[bookmark])) + (bookmark, bin(updatedbookmark[bookmark])) for bookmark in updatedbookmark ] destmarks.applychanges(self.repo, tr, changes) @@ -577,7 +582,7 @@ return [p for p in ctx.parents() if p and self.keep(p.node())] def getheads(self): - return [nodemod.hex(h) for h in self._heads if self.keep(h)] + return [hex(h) for h in self._heads if self.keep(h)] def getfile(self, name, rev): try: @@ -678,9 +683,7 @@ for t in self.repo.tagslist() if self.repo.tagtype(t[0]) == b'global' ] - return { - name: nodemod.hex(node) for name, node in tags if self.keep(node) - } + return {name: hex(node) for name, node in tags if self.keep(node)} def getchangedfiles(self, rev, i): ctx = self._changectx(rev) @@ -718,7 +721,7 @@ def lookuprev(self, rev): try: - return nodemod.hex(self.repo.lookup(rev)) + return hex(self.repo.lookup(rev)) except (error.RepoError, error.LookupError): return None diff -r d6afa9c149c3 -r 59fa3890d40a hgext/fastannotate/context.py --- a/hgext/fastannotate/context.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/fastannotate/context.py Tue Dec 01 21:54:46 2020 +0100 @@ -17,12 +17,16 @@ open, setattr, ) +from mercurial.node import ( + bin, + hex, + short, +) from mercurial import ( error, linelog as linelogmod, lock as lockmod, mdiff, - node, pycompat, scmutil, util, @@ -150,7 +154,7 @@ diffoptstr = stringutil.pprint( sorted((k, getattr(diffopts, k)) for k in mdiff.diffopts.defaults) ) - return node.hex(hashutil.sha1(diffoptstr).digest())[:6] + return hex(hashutil.sha1(diffoptstr).digest())[:6] _defaultdiffopthash = hashdiffopts(mdiff.defaultopts) @@ -308,7 +312,7 @@ # command could give us a revision number even if the user passes a # commit hash. if isinstance(rev, int): - rev = node.hex(self.repo.changelog.node(rev)) + rev = hex(self.repo.changelog.node(rev)) # fast path: if rev is in the main branch already directly, revfctx = self.canannotatedirectly(rev) @@ -493,7 +497,7 @@ result = True f = None if not isinstance(rev, int) and rev is not None: - hsh = {20: bytes, 40: node.bin}.get(len(rev), lambda x: None)(rev) + hsh = {20: bytes, 40: bin}.get(len(rev), lambda x: None)(rev) if hsh is not None and (hsh, self.path) in self.revmap: f = hsh if f is None: @@ -598,7 +602,7 @@ self.ui.debug( b'fastannotate: reading %s line #%d ' b'to resolve lines %r\n' - % (node.short(hsh), linenum, idxs) + % (short(hsh), linenum, idxs) ) fctx = self._resolvefctx(hsh, revmap.rev2path(rev)) lines = mdiff.splitnewlines(fctx.data()) @@ -610,8 +614,7 @@ # run the annotate and the lines should match to the file content self.ui.debug( - b'fastannotate: annotate %s to resolve lines\n' - % node.short(hsh) + b'fastannotate: annotate %s to resolve lines\n' % short(hsh) ) linelog.annotate(rev) fctx = self._resolvefctx(hsh, revmap.rev2path(rev)) @@ -640,12 +643,10 @@ hsh = f.node() llrev = self.revmap.hsh2rev(hsh) if not llrev: - raise faerror.CorruptedFileError( - b'%s is not in revmap' % node.hex(hsh) - ) + raise faerror.CorruptedFileError(b'%s is not in revmap' % hex(hsh)) if (self.revmap.rev2flag(llrev) & revmapmod.sidebranchflag) != 0: raise faerror.CorruptedFileError( - b'%s is not in revmap mainbranch' % node.hex(hsh) + b'%s is not in revmap mainbranch' % hex(hsh) ) self.linelog.annotate(llrev) result = [ diff -r d6afa9c149c3 -r 59fa3890d40a hgext/fastannotate/formatter.py --- a/hgext/fastannotate/formatter.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/fastannotate/formatter.py Tue Dec 01 21:54:46 2020 +0100 @@ -6,9 +6,12 @@ # GNU General Public License version 2 or any later version. from __future__ import absolute_import +from mercurial.node import ( + hex, + short, +) from mercurial import ( encoding, - node, pycompat, templatefilters, util, @@ -116,9 +119,9 @@ @util.propertycache def _hexfunc(self): if self.ui.debugflag or self.opts.get(b'long_hash'): - return node.hex + return hex else: - return node.short + return short def end(self): pass @@ -168,7 +171,7 @@ @util.propertycache def _hexfunc(self): - return node.hex + return hex def end(self): self.ui.write(b'\n]\n') diff -r d6afa9c149c3 -r 59fa3890d40a hgext/git/dirstate.py --- a/hgext/git/dirstate.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/git/dirstate.py Tue Dec 01 21:54:46 2020 +0100 @@ -4,11 +4,11 @@ import errno import os +from mercurial.node import nullid from mercurial import ( error, extensions, match as matchmod, - node as nodemod, pycompat, scmutil, util, @@ -81,14 +81,14 @@ except pygit2.GitError: # Typically happens when peeling HEAD fails, as in an # empty repository. - return nodemod.nullid + return nullid def p2(self): # TODO: MERGE_HEAD? something like that, right? - return nodemod.nullid + return nullid - def setparents(self, p1, p2=nodemod.nullid): - assert p2 == nodemod.nullid, b'TODO merging support' + def setparents(self, p1, p2=nullid): + assert p2 == nullid, b'TODO merging support' self.git.head.set_target(gitutil.togitnode(p1)) @util.propertycache @@ -102,7 +102,7 @@ def parents(self): # TODO how on earth do we find p2 if a merge is in flight? - return self.p1(), nodemod.nullid + return self.p1(), nullid def __iter__(self): return (pycompat.fsencode(f.path) for f in self.git.index) diff -r d6afa9c149c3 -r 59fa3890d40a hgext/git/gitlog.py --- a/hgext/git/gitlog.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/git/gitlog.py Tue Dec 01 21:54:46 2020 +0100 @@ -2,6 +2,14 @@ from mercurial.i18n import _ +from mercurial.node import ( + bin, + hex, + nullhex, + nullid, + nullrev, + wdirhex, +) from mercurial import ( ancestor, changelog as hgchangelog, @@ -9,7 +17,6 @@ encoding, error, manifest, - node as nodemod, pycompat, ) from mercurial.interfaces import ( @@ -39,7 +46,7 @@ ) def rev(self, n): - if n == nodemod.nullid: + if n == nullid: return -1 t = self._db.execute( 'SELECT rev FROM changelog WHERE node = ?', (gitutil.togitnode(n),) @@ -49,14 +56,14 @@ return t[0] def node(self, r): - if r == nodemod.nullrev: - return nodemod.nullid + if r == nullrev: + return nullid t = self._db.execute( 'SELECT node FROM changelog WHERE rev = ?', (r,) ).fetchone() if t is None: raise error.LookupError(r, b'00changelog.i', _(b'no node')) - return nodemod.bin(t[0]) + return bin(t[0]) def hasnode(self, n): t = self._db.execute( @@ -123,10 +130,10 @@ @property def nodemap(self): r = { - nodemod.bin(v[0]): v[1] + bin(v[0]): v[1] for v in self._db.execute('SELECT node, rev FROM changelog') } - r[nodemod.nullid] = nodemod.nullrev + r[nullid] = nullrev return r def tip(self): @@ -134,8 +141,8 @@ 'SELECT node FROM changelog ORDER BY rev DESC LIMIT 1' ).fetchone() if t: - return nodemod.bin(t[0]) - return nodemod.nullid + return bin(t[0]) + return nullid def revs(self, start=0, stop=None): if stop is None: @@ -155,16 +162,16 @@ return next(t) def _partialmatch(self, id): - if nodemod.wdirhex.startswith(id): + if wdirhex.startswith(id): raise error.WdirUnsupported candidates = [ - nodemod.bin(x[0]) + bin(x[0]) for x in self._db.execute( 'SELECT node FROM changelog WHERE node LIKE ?', (id + b'%',) ) ] - if nodemod.nullhex.startswith(id): - candidates.append(nodemod.nullid) + if nullhex.startswith(id): + candidates.append(nullid) if len(candidates) > 1: raise error.AmbiguousPrefixLookupError( id, b'00changelog.i', _(b'ambiguous identifier') @@ -177,7 +184,7 @@ return 0 def shortest(self, node, minlength=1): - nodehex = nodemod.hex(node) + nodehex = hex(node) for attempt in pycompat.xrange(minlength, len(nodehex) + 1): candidate = nodehex[:attempt] matches = int( @@ -209,7 +216,7 @@ else: n = nodeorrev # handle looking up nullid - if n == nodemod.nullid: + if n == nullid: return hgchangelog._changelogrevision(extra={}) hn = gitutil.togitnode(n) # We've got a real commit! @@ -226,7 +233,7 @@ for r in self._db.execute( 'SELECT filename FROM changedfiles ' 'WHERE node = ? and filenode = ?', - (hn, nodemod.nullhex), + (hn, nullhex), ) ] c = self.gitrepo[hn] @@ -267,7 +274,7 @@ nullrev. """ if common is None: - common = [nodemod.nullrev] + common = [nullrev] return ancestor.incrementalmissingancestors(self.parentrevs, common) @@ -287,7 +294,7 @@ not supplied, uses all of the revlog's heads. If common is not supplied, uses nullid.""" if common is None: - common = [nodemod.nullid] + common = [nullid] if heads is None: heads = self.heads() @@ -302,12 +309,12 @@ c = [] p = self.rev(node) for r in self.revs(start=p + 1): - prevs = [pr for pr in self.parentrevs(r) if pr != nodemod.nullrev] + prevs = [pr for pr in self.parentrevs(r) if pr != nullrev] if prevs: for pr in prevs: if pr == p: c.append(self.node(r)) - elif p == nodemod.nullrev: + elif p == nullrev: c.append(self.node(r)) return c @@ -323,7 +330,7 @@ # Cleanup opportunity: this is *identical* to the revlog.py version def isancestorrev(self, a, b): - if a == nodemod.nullrev: + if a == nullrev: return True elif a == b: return True @@ -337,8 +344,8 @@ if hn != gitutil.nullgit: c = self.gitrepo[hn] else: - return nodemod.nullrev, nodemod.nullrev - p1 = p2 = nodemod.nullrev + return nullrev, nullrev + p1 = p2 = nullrev if c.parents: p1 = self.rev(c.parents[0].id.raw) if len(c.parents) > 2: @@ -386,9 +393,9 @@ ): parents = [] hp1, hp2 = gitutil.togitnode(p1), gitutil.togitnode(p2) - if p1 != nodemod.nullid: + if p1 != nullid: parents.append(hp1) - if p2 and p2 != nodemod.nullid: + if p2 and p2 != nullid: parents.append(hp2) assert date is not None timestamp, tz = date @@ -419,7 +426,7 @@ return self.get(b'', node) def get(self, relpath, node): - if node == nodemod.nullid: + if node == nullid: # TODO: this should almost certainly be a memgittreemanifestctx return manifest.memtreemanifestctx(self, relpath) commit = self.gitrepo[gitutil.togitnode(node)] @@ -440,7 +447,7 @@ self.path = path def read(self, node): - if node == nodemod.nullid: + if node == nullid: return b'' return self.gitrepo[gitutil.togitnode(node)].data @@ -450,7 +457,7 @@ if isinstance(node, int): assert False, b'todo revnums for nodes' if len(node) == 40: - node = nodemod.bin(node) + node = bin(node) hnode = gitutil.togitnode(node) if hnode in self.gitrepo: return node @@ -500,7 +507,7 @@ ).fetchone() if maybe is None: raise IndexError('gitlog %r out of range %d' % (self.path, rev)) - return nodemod.bin(maybe[0]) + return bin(maybe[0]) def parents(self, node): gn = gitutil.togitnode(node) @@ -525,7 +532,7 @@ index.fill_in_filelog(self.gitrepo, self._db, commit, gp, gn) return self.parents(node) else: - ps.append(nodemod.bin(p)) + ps.append(bin(p)) return ps def renamed(self, node): diff -r d6afa9c149c3 -r 59fa3890d40a hgext/git/index.py --- a/hgext/git/index.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/git/index.py Tue Dec 01 21:54:46 2020 +0100 @@ -5,11 +5,14 @@ import sqlite3 from mercurial.i18n import _ +from mercurial.node import ( + nullhex, + nullid, +) from mercurial import ( encoding, error, - node as nodemod, pycompat, ) @@ -278,7 +281,7 @@ for pos, commit in enumerate(walker): if prog is not None: prog.update(pos) - p1 = p2 = nodemod.nullhex + p1 = p2 = nullhex if len(commit.parents) > 2: raise error.ProgrammingError( ( @@ -315,9 +318,7 @@ ) new_files = (p.delta.new_file for p in patchgen) files = { - nf.path: nf.id.hex - for nf in new_files - if nf.id.raw != nodemod.nullid + nf.path: nf.id.hex for nf in new_files if nf.id.raw != nullid } for p, n in files.items(): # We intentionally set NULLs for any file parentage diff -r d6afa9c149c3 -r 59fa3890d40a hgext/gpg.py --- a/hgext/gpg.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/gpg.py Tue Dec 01 21:54:46 2020 +0100 @@ -11,12 +11,17 @@ import os from mercurial.i18n import _ +from mercurial.node import ( + bin, + hex, + nullid, + short, +) from mercurial import ( cmdutil, error, help, match, - node as hgnode, pycompat, registrar, ) @@ -155,7 +160,7 @@ # read the heads fl = repo.file(b".hgsigs") for r in reversed(fl.heads()): - fn = b".hgsigs|%s" % hgnode.short(r) + fn = b".hgsigs|%s" % short(r) for item in parsefile(fl.read(r).splitlines(), fn): yield item try: @@ -172,7 +177,7 @@ fn, ln = context node, version, sig = sigdata prefix = b"%s:%d" % (fn, ln) - node = hgnode.bin(node) + node = bin(node) data = node2txt(repo, node, version) sig = binascii.a2b_base64(sig) @@ -223,7 +228,7 @@ revs[r].extend(keys) for rev in sorted(revs, reverse=True): for k in revs[rev]: - r = b"%5d:%s" % (rev, hgnode.hex(repo.changelog.node(rev))) + r = b"%5d:%s" % (rev, hex(repo.changelog.node(rev))) ui.write(b"%-30s %s\n" % (keystr(ui, k), r)) @@ -232,7 +237,7 @@ """verify all the signatures there may be for a particular revision""" mygpg = newgpg(ui) rev = repo.lookup(rev) - hexrev = hgnode.hex(rev) + hexrev = hex(rev) keys = [] for data, context in sigwalk(repo): @@ -243,11 +248,11 @@ keys.extend(k) if not keys: - ui.write(_(b"no valid signature for %s\n") % hgnode.short(rev)) + ui.write(_(b"no valid signature for %s\n") % short(rev)) return # print summary - ui.write(_(b"%s is signed by:\n") % hgnode.short(rev)) + ui.write(_(b"%s is signed by:\n") % short(rev)) for key in keys: ui.write(b" %s\n" % keystr(ui, key)) @@ -309,9 +314,7 @@ if revs: nodes = [repo.lookup(n) for n in revs] else: - nodes = [ - node for node in repo.dirstate.parents() if node != hgnode.nullid - ] + nodes = [node for node in repo.dirstate.parents() if node != nullid] if len(nodes) > 1: raise error.Abort( _(b'uncommitted merge - please provide a specific revision') @@ -320,10 +323,8 @@ nodes = [repo.changelog.tip()] for n in nodes: - hexnode = hgnode.hex(n) - ui.write( - _(b"signing %d:%s\n") % (repo.changelog.rev(n), hgnode.short(n)) - ) + hexnode = hex(n) + ui.write(_(b"signing %d:%s\n") % (repo.changelog.rev(n), short(n))) # build data data = node2txt(repo, n, sigver) sig = mygpg.sign(data) @@ -360,10 +361,7 @@ if not message: # we don't translate commit messages message = b"\n".join( - [ - b"Added signature for changeset %s" % hgnode.short(n) - for n in nodes - ] + [b"Added signature for changeset %s" % short(n) for n in nodes] ) try: editor = cmdutil.getcommiteditor( @@ -379,7 +377,7 @@ def node2txt(repo, node, ver): """map a manifest into some text""" if ver == b"0": - return b"%s\n" % hgnode.hex(node) + return b"%s\n" % hex(node) else: raise error.Abort(_(b"unknown signature version")) diff -r d6afa9c149c3 -r 59fa3890d40a hgext/histedit.py --- a/hgext/histedit.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/histedit.py Tue Dec 01 21:54:46 2020 +0100 @@ -209,6 +209,11 @@ getattr, open, ) +from mercurial.node import ( + bin, + hex, + short, +) from mercurial import ( bundle2, cmdutil, @@ -225,7 +230,6 @@ merge as mergemod, mergestate as mergestatemod, mergeutil, - node, obsolete, pycompat, registrar, @@ -404,8 +408,8 @@ def _write(self, fp): fp.write(b'v1\n') - fp.write(b'%s\n' % node.hex(self.parentctxnode)) - fp.write(b'%s\n' % node.hex(self.topmost)) + fp.write(b'%s\n' % hex(self.parentctxnode)) + fp.write(b'%s\n' % hex(self.topmost)) fp.write(b'%s\n' % (b'True' if self.keep else b'False')) fp.write(b'%d\n' % len(self.actions)) for action in self.actions: @@ -415,8 +419,8 @@ fp.write( b'%s%s\n' % ( - node.hex(replacement[0]), - b''.join(node.hex(r) for r in replacement[1]), + hex(replacement[0]), + b''.join(hex(r) for r in replacement[1]), ) ) backupfile = self.backupfile @@ -432,10 +436,10 @@ lines[index] # version number index += 1 - parentctxnode = node.bin(lines[index]) + parentctxnode = bin(lines[index]) index += 1 - topmost = node.bin(lines[index]) + topmost = bin(lines[index]) index += 1 keep = lines[index] == b'True' @@ -458,9 +462,9 @@ index += 1 for i in pycompat.xrange(replacementlen): replacement = lines[index] - original = node.bin(replacement[:40]) + original = bin(replacement[:40]) succ = [ - node.bin(replacement[i : i + 40]) + bin(replacement[i : i + 40]) for i in range(40, len(replacement), 40) ] replacements.append((original, succ)) @@ -494,12 +498,12 @@ # ruleid can be anything from rev numbers, hashes, "bookmarks" etc # Check for validation of rule ids and get the rulehash try: - rev = node.bin(ruleid) + rev = bin(ruleid) except TypeError: try: _ctx = scmutil.revsingle(state.repo, ruleid) rulehash = _ctx.hex() - rev = node.bin(rulehash) + rev = bin(rulehash) except error.RepoLookupError: raise error.ParseError(_(b"invalid changeset %s") % ruleid) return cls(state, rev) @@ -507,7 +511,7 @@ def verify(self, prev, expected, seen): """ Verifies semantic correctness of the rule""" repo = self.repo - ha = node.hex(self.node) + ha = hex(self.node) self.node = scmutil.resolvehexnodeidprefix(repo, ha) if self.node is None: raise error.ParseError(_(b'unknown changeset %s listed') % ha[:12]) @@ -518,14 +522,13 @@ if self.node not in expected: raise error.ParseError( _(b'%s "%s" changeset was not a candidate') - % (self.verb, node.short(self.node)), + % (self.verb, short(self.node)), hint=_(b'only use listed changesets'), ) # and only one command per node if self.node in seen: raise error.ParseError( - _(b'duplicated command for changeset %s') - % node.short(self.node) + _(b'duplicated command for changeset %s') % short(self.node) ) def torule(self): @@ -557,7 +560,7 @@ """Print an action in format used by histedit state files (the first line is a verb, the remainder is the second) """ - return b"%s\n%s" % (self.verb, node.hex(self.node)) + return b"%s\n%s" % (self.verb, hex(self.node)) def run(self): """Runs the action. The default behavior is simply apply the action's @@ -578,8 +581,7 @@ repo.dirstate.setbranch(rulectx.branch()) if stats.unresolvedcount: raise error.InterventionRequired( - _(b'Fix up the change (%s %s)') - % (self.verb, node.short(self.node)), + _(b'Fix up the change (%s %s)') % (self.verb, short(self.node)), hint=_(b'hg histedit --continue to resume'), ) @@ -614,8 +616,7 @@ ctx = self.repo[b'.'] if ctx.node() == self.state.parentctxnode: self.repo.ui.warn( - _(b'%s: skipping changeset (no changes)\n') - % node.short(self.node) + _(b'%s: skipping changeset (no changes)\n') % short(self.node) ) return ctx, [(self.node, tuple())] if ctx.node() == self.node: @@ -684,7 +685,7 @@ for c in ctxs: if not c.mutable(): raise error.ParseError( - _(b"cannot fold into public change %s") % node.short(c.node()) + _(b"cannot fold into public change %s") % short(c.node()) ) base = firstctx.p1() @@ -786,13 +787,17 @@ def run(self): rulectx = self.repo[self.node] if rulectx.p1().node() == self.state.parentctxnode: - self.repo.ui.debug(b'node %s unchanged\n' % node.short(self.node)) + self.repo.ui.debug(b'node %s unchanged\n' % short(self.node)) return rulectx, [] return super(pick, self).run() -@action([b'edit', b'e'], _(b'use commit, but allow edits before making new commit'), priority=True) +@action( + [b'edit', b'e'], + _(b'use commit, but allow edits before making new commit'), + priority=True, +) class edit(histeditaction): def run(self): repo = self.repo @@ -802,8 +807,8 @@ hint = _(b'to edit %s, `hg histedit --continue` after making changes') raise error.InterventionRequired( _(b'Editing (%s), commit as needed now to split the change') - % node.short(self.node), - hint=hint % node.short(self.node), + % short(self.node), + hint=hint % short(self.node), ) def commiteditor(self): @@ -824,7 +829,7 @@ c = repo[prev.node] if not c.mutable(): raise error.ParseError( - _(b"cannot fold into public change %s") % node.short(c.node()) + _(b"cannot fold into public change %s") % short(c.node()) ) def continuedirty(self): @@ -833,7 +838,7 @@ commit = commitfuncfor(repo, rulectx) commit( - text=b'fold-temp-revision %s' % node.short(self.node), + text=b'fold-temp-revision %s' % short(self.node), user=rulectx.user(), date=rulectx.date(), extra=rulectx.extra(), @@ -845,7 +850,7 @@ rulectx = repo[self.node] parentctxnode = self.state.parentctxnode if ctx.node() == parentctxnode: - repo.ui.warn(_(b'%s: empty changeset\n') % node.short(self.node)) + repo.ui.warn(_(b'%s: empty changeset\n') % short(self.node)) return ctx, [(self.node, (parentctxnode,))] parentctx = repo[parentctxnode] @@ -859,7 +864,7 @@ b'%s: cannot fold - working copy is not a ' b'descendant of previous commit %s\n' ) - % (node.short(self.node), node.short(parentctxnode)) + % (short(self.node), short(parentctxnode)) ) return ctx, [(self.node, (ctx.node(),))] @@ -973,7 +978,7 @@ if self.node in expected: msg = _(b'%s "%s" changeset was an edited list candidate') raise error.ParseError( - msg % (self.verb, node.short(self.node)), + msg % (self.verb, short(self.node)), hint=_(b'base must only use unlisted changesets'), ) @@ -1717,8 +1722,7 @@ revs = between(repo, root, topmost, keep) if not revs: raise error.Abort( - _(b'%s is not an ancestor of working directory') - % node.short(root) + _(b'%s is not an ancestor of working directory') % short(root) ) ctxs = [] @@ -2071,16 +2075,16 @@ if mapping: for prec, succs in pycompat.iteritems(mapping): if not succs: - ui.debug(b'histedit: %s is dropped\n' % node.short(prec)) + ui.debug(b'histedit: %s is dropped\n' % short(prec)) else: ui.debug( b'histedit: %s is replaced by %s\n' - % (node.short(prec), node.short(succs[0])) + % (short(prec), short(succs[0])) ) if len(succs) > 1: m = b'histedit: %s' for n in succs[1:]: - ui.debug(m % node.short(n)) + ui.debug(m % short(n)) if not state.keep: if mapping: @@ -2125,7 +2129,7 @@ try: state.read() __, leafs, tmpnodes, __ = processreplacement(state) - ui.debug(b'restore wc to old parent %s\n' % node.short(state.topmost)) + ui.debug(b'restore wc to old parent %s\n' % short(state.topmost)) # Recover our old commits if necessary if not state.topmost in repo and state.backupfile: @@ -2179,7 +2183,7 @@ state.read() if not rules: comment = geteditcomment( - ui, node.short(state.parentctxnode), node.short(state.topmost) + ui, short(state.parentctxnode), short(state.topmost) ) rules = ruleeditor(repo, ui, state.actions, comment) else: @@ -2220,7 +2224,7 @@ revs = between(repo, root, topmost, state.keep) if not revs: raise error.Abort( - _(b'%s is not an ancestor of working directory') % node.short(root) + _(b'%s is not an ancestor of working directory') % short(root) ) ctxs = [repo[r] for r in revs] @@ -2257,7 +2261,7 @@ ) if not rules: - comment = geteditcomment(ui, node.short(root), node.short(topmost)) + comment = geteditcomment(ui, short(root), short(topmost)) actions = [pick(state, r) for r in revs] rules = ruleeditor(repo, ui, actions, comment) else: @@ -2461,12 +2465,12 @@ actions[:0] = drops elif missing: raise error.ParseError( - _(b'missing rules for changeset %s') % node.short(missing[0]), + _(b'missing rules for changeset %s') % short(missing[0]), hint=_( b'use "drop %s" to discard, see also: ' b"'hg help -e histedit.config'" ) - % node.short(missing[0]), + % short(missing[0]), ) @@ -2620,7 +2624,7 @@ if common_nodes: raise error.Abort( _(b"histedit in progress, can't strip %s") - % b', '.join(node.short(x) for x in common_nodes) + % b', '.join(short(x) for x in common_nodes) ) return orig(ui, repo, nodelist, *args, **kwargs) diff -r d6afa9c149c3 -r 59fa3890d40a hgext/infinitepush/bundleparts.py --- a/hgext/infinitepush/bundleparts.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/infinitepush/bundleparts.py Tue Dec 01 21:54:46 2020 +0100 @@ -6,13 +6,13 @@ from __future__ import absolute_import from mercurial.i18n import _ +from mercurial.node import hex from mercurial import ( bundle2, changegroup, error, extensions, - node as nodemod, pycompat, revsetlang, util, @@ -54,7 +54,7 @@ params[b'bookprevnode'] = b'' bookmarks = repo._bookmarks if bookmark in bookmarks: - params[b'bookprevnode'] = nodemod.hex(bookmarks[bookmark]) + params[b'bookprevnode'] = hex(bookmarks[bookmark]) # Do not send pushback bundle2 part with bookmarks if remotenames extension # is enabled. It will be handled manually in `_push()` diff -r d6afa9c149c3 -r 59fa3890d40a hgext/infinitepush/store.py --- a/hgext/infinitepush/store.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/infinitepush/store.py Tue Dec 01 21:54:46 2020 +0100 @@ -9,11 +9,9 @@ import os import subprocess +from mercurial.node import hex from mercurial.pycompat import open -from mercurial import ( - node, - pycompat, -) +from mercurial import pycompat from mercurial.utils import ( hashutil, procutil, @@ -86,7 +84,7 @@ return os.path.join(self._dirpath(filename), filename) def write(self, data): - filename = node.hex(hashutil.sha1(data).digest()) + filename = hex(hashutil.sha1(data).digest()) dirpath = self._dirpath(filename) if not os.path.exists(dirpath): diff -r d6afa9c149c3 -r 59fa3890d40a hgext/journal.py --- a/hgext/journal.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/journal.py Tue Dec 01 21:54:46 2020 +0100 @@ -19,6 +19,11 @@ import weakref from mercurial.i18n import _ +from mercurial.node import ( + bin, + hex, + nullid, +) from mercurial import ( bookmarks, @@ -31,7 +36,6 @@ localrepo, lock, logcmdutil, - node, pycompat, registrar, util, @@ -113,8 +117,8 @@ new = list(new) if util.safehasattr(dirstate, 'journalstorage'): # only record two hashes if there was a merge - oldhashes = old[:1] if old[1] == node.nullid else old - newhashes = new[:1] if new[1] == node.nullid else new + oldhashes = old[:1] if old[1] == nullid else old + newhashes = new[:1] if new[1] == nullid else new dirstate.journalstorage.record( wdirparenttype, b'.', oldhashes, newhashes ) @@ -127,7 +131,7 @@ if util.safehasattr(repo, 'journal'): oldmarks = bookmarks.bmstore(repo) for mark, value in pycompat.iteritems(store): - oldvalue = oldmarks.get(mark, node.nullid) + oldvalue = oldmarks.get(mark, nullid) if value != oldvalue: repo.journal.record(bookmarktype, mark, oldvalue, value) return orig(store, fp) @@ -248,8 +252,8 @@ ) = line.split(b'\n') timestamp, tz = time.split() timestamp, tz = float(timestamp), int(tz) - oldhashes = tuple(node.bin(hash) for hash in oldhashes.split(b',')) - newhashes = tuple(node.bin(hash) for hash in newhashes.split(b',')) + oldhashes = tuple(bin(hash) for hash in oldhashes.split(b',')) + newhashes = tuple(bin(hash) for hash in newhashes.split(b',')) return cls( (timestamp, tz), user, @@ -263,8 +267,8 @@ def __bytes__(self): """bytes representation for storage""" time = b' '.join(map(pycompat.bytestr, self.timestamp)) - oldhashes = b','.join([node.hex(hash) for hash in self.oldhashes]) - newhashes = b','.join([node.hex(hash) for hash in self.newhashes]) + oldhashes = b','.join([hex(hash) for hash in self.oldhashes]) + newhashes = b','.join([hex(hash) for hash in self.newhashes]) return b'\n'.join( ( time, diff -r d6afa9c149c3 -r 59fa3890d40a hgext/largefiles/lfcommands.py --- a/hgext/largefiles/lfcommands.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/largefiles/lfcommands.py Tue Dec 01 21:54:46 2020 +0100 @@ -14,6 +14,11 @@ import shutil from mercurial.i18n import _ +from mercurial.node import ( + bin, + hex, + nullid, +) from mercurial import ( cmdutil, @@ -23,7 +28,6 @@ hg, lock, match as matchmod, - node, pycompat, scmutil, util, @@ -111,7 +115,7 @@ rsrc[ctx] for ctx in rsrc.changelog.nodesbetween(None, rsrc.heads())[0] ) - revmap = {node.nullid: node.nullid} + revmap = {nullid: nullid} if tolfile: # Lock destination to prevent modification while it is converted to. # Don't need to lock src because we are just reading from its @@ -275,7 +279,7 @@ # largefile was modified, update standins m = hashutil.sha1(b'') m.update(ctx[f].data()) - hash = node.hex(m.digest()) + hash = hex(m.digest()) if f not in lfiletohash or lfiletohash[f] != hash: rdst.wwrite(f, ctx[f].data(), ctx[f].flags()) executable = b'x' in ctx[f].flags() @@ -336,7 +340,7 @@ # Generate list of changed files def _getchangedfiles(ctx, parents): files = set(ctx.files()) - if node.nullid not in parents: + if nullid not in parents: mc = ctx.manifest() for pctx in ctx.parents(): for fn in pctx.manifest().diff(mc): @@ -350,7 +354,7 @@ for p in ctx.parents(): parents.append(revmap[p.node()]) while len(parents) < 2: - parents.append(node.nullid) + parents.append(nullid) return parents @@ -380,12 +384,12 @@ ui.warn(_(b'skipping incorrectly formatted tag %s\n') % line) continue try: - newid = node.bin(id) + newid = bin(id) except TypeError: ui.warn(_(b'skipping incorrectly formatted id %s\n') % id) continue try: - newdata.append(b'%s %s\n' % (node.hex(revmap[newid]), name)) + newdata.append(b'%s %s\n' % (hex(revmap[newid]), name)) except KeyError: ui.warn(_(b'no mapping for id %s\n') % id) continue diff -r d6afa9c149c3 -r 59fa3890d40a hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/largefiles/lfutil.py Tue Dec 01 21:54:46 2020 +0100 @@ -15,7 +15,10 @@ import stat from mercurial.i18n import _ -from mercurial.node import hex +from mercurial.node import ( + hex, + nullid, +) from mercurial.pycompat import open from mercurial import ( @@ -24,7 +27,6 @@ error, httpconnection, match as matchmod, - node, pycompat, scmutil, sparse, @@ -610,7 +612,7 @@ ) as progress: for i, n in enumerate(missing): progress.update(i) - parents = [p for p in repo[n].parents() if p != node.nullid] + parents = [p for p in repo[n].parents() if p != nullid] with lfstatus(repo, value=False): ctx = repo[n] diff -r d6afa9c149c3 -r 59fa3890d40a hgext/lfs/__init__.py --- a/hgext/lfs/__init__.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/lfs/__init__.py Tue Dec 01 21:54:46 2020 +0100 @@ -125,6 +125,7 @@ import sys from mercurial.i18n import _ +from mercurial.node import bin from mercurial import ( bundlecaches, @@ -137,7 +138,6 @@ filesetlang, localrepo, minifileset, - node, pycompat, revlog, scmutil, @@ -260,11 +260,10 @@ return 0 last = kwargs.get('node_last') - _bin = node.bin if last: - s = repo.set(b'%n:%n', _bin(kwargs['node']), _bin(last)) + s = repo.set(b'%n:%n', bin(kwargs['node']), bin(last)) else: - s = repo.set(b'%n', _bin(kwargs['node'])) + s = repo.set(b'%n', bin(kwargs['node'])) match = repo._storenarrowmatch for ctx in s: # TODO: is there a way to just walk the files in the commit? diff -r d6afa9c149c3 -r 59fa3890d40a hgext/lfs/blobstore.py --- a/hgext/lfs/blobstore.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/lfs/blobstore.py Tue Dec 01 21:54:46 2020 +0100 @@ -17,12 +17,12 @@ from mercurial.i18n import _ from mercurial.pycompat import getattr +from mercurial.node import hex from mercurial import ( encoding, error, httpconnection as httpconnectionmod, - node, pathutil, pycompat, url as urlmod, @@ -173,7 +173,7 @@ ) raise LfsRemoteError(_(msg) % (size, int(content_length))) - realoid = node.hex(sha256.digest()) + realoid = hex(sha256.digest()) if realoid != oid: raise LfsCorruptionError( _(b'corrupt remote lfs object: %s') % oid @@ -224,7 +224,7 @@ # Don't abort if corruption is detected, because `hg verify` will # give more useful info about the corruption- simply don't add the # hardlink. - if verify or node.hex(hashlib.sha256(blob).digest()) == oid: + if verify or hex(hashlib.sha256(blob).digest()) == oid: self.ui.note(_(b'lfs: found %s in the usercache\n') % oid) lfutil.link(self.cachevfs.join(oid), self.vfs.join(oid)) else: @@ -248,7 +248,7 @@ for chunk in util.filechunkiter(fp, size=1048576): sha256.update(chunk) - return oid == node.hex(sha256.digest()) + return oid == hex(sha256.digest()) def has(self, oid): """Returns True if the local blobstore contains the requested blob, @@ -706,7 +706,7 @@ def _verify(oid, content): - realoid = node.hex(hashlib.sha256(content).digest()) + realoid = hex(hashlib.sha256(content).digest()) if realoid != oid: raise LfsCorruptionError( _(b'detected corrupt lfs object: %s') % oid, diff -r d6afa9c149c3 -r 59fa3890d40a hgext/narrow/narrowcommands.py --- a/hgext/narrow/narrowcommands.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/narrow/narrowcommands.py Tue Dec 01 21:54:46 2020 +0100 @@ -10,6 +10,11 @@ import os from mercurial.i18n import _ +from mercurial.node import ( + hex, + nullid, + short, +) from mercurial import ( bundle2, cmdutil, @@ -21,7 +26,6 @@ extensions, hg, narrowspec, - node, pathutil, pycompat, registrar, @@ -184,9 +188,9 @@ # we have all the nodes if wireprototypes.ELLIPSESCAP1 in pullop.remote.capabilities(): kwargs[b'known'] = [ - node.hex(ctx.node()) + hex(ctx.node()) for ctx in repo.set(b'::%ln', pullop.common) - if ctx.node() != node.nullid + if ctx.node() != nullid ] if not kwargs[b'known']: # Mercurial serializes an empty list as '' and deserializes it as @@ -239,10 +243,10 @@ maxnodes = 10 if ui.verbose or len(visibletostrip) <= maxnodes: for n in visibletostrip: - ui.status(b'%s\n' % node.short(n)) + ui.status(b'%s\n' % short(n)) else: for n in visibletostrip[:maxnodes]: - ui.status(b'%s\n' % node.short(n)) + ui.status(b'%s\n' % short(n)) ui.status( _(b'...and %d more, use --verbose to list all\n') % (len(visibletostrip) - maxnodes) @@ -362,7 +366,7 @@ ds = repo.dirstate p1, p2 = ds.p1(), ds.p2() with ds.parentchange(): - ds.setparents(node.nullid, node.nullid) + ds.setparents(nullid, nullid) if isoldellipses: with wrappedextraprepare: exchange.pull(repo, remote, heads=common) @@ -372,7 +376,7 @@ known = [ ctx.node() for ctx in repo.set(b'::%ln', common) - if ctx.node() != node.nullid + if ctx.node() != nullid ] with remote.commandexecutor() as e: bundle = e.callcommand( diff -r d6afa9c149c3 -r 59fa3890d40a hgext/patchbomb.py --- a/hgext/patchbomb.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/patchbomb.py Tue Dec 01 21:54:46 2020 +0100 @@ -83,6 +83,7 @@ from mercurial.i18n import _ from mercurial.pycompat import open +from mercurial.node import bin from mercurial import ( cmdutil, commands, @@ -91,7 +92,6 @@ formatter, hg, mail, - node as nodemod, patch, pycompat, registrar, @@ -306,7 +306,7 @@ p = mail.mimetextpatch( b'\n'.join(patchlines), 'x-patch', opts.get(b'test') ) - binnode = nodemod.bin(node) + binnode = bin(node) # if node is mq patch, it will have the patch file's name as a tag if not patchname: patchtags = [ diff -r d6afa9c149c3 -r 59fa3890d40a hgext/rebase.py --- a/hgext/rebase.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/rebase.py Tue Dec 01 21:54:46 2020 +0100 @@ -23,6 +23,7 @@ from mercurial.node import ( nullrev, short, + wdirrev, ) from mercurial.pycompat import open from mercurial import ( @@ -37,7 +38,6 @@ merge as mergemod, mergestate as mergestatemod, mergeutil, - node as nodemod, obsolete, obsutil, patch, @@ -1374,7 +1374,7 @@ ) return None - if nodemod.wdirrev in rebaseset: + if wdirrev in rebaseset: raise error.Abort(_(b'cannot rebase the working copy')) rebasingwcp = repo[b'.'].rev() in rebaseset ui.log( diff -r d6afa9c149c3 -r 59fa3890d40a hgext/releasenotes.py --- a/hgext/releasenotes.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/releasenotes.py Tue Dec 01 21:54:46 2020 +0100 @@ -19,12 +19,12 @@ from mercurial.i18n import _ from mercurial.pycompat import open +from mercurial.node import hex from mercurial import ( cmdutil, config, error, minirst, - node, pycompat, registrar, scmutil, @@ -381,7 +381,7 @@ if not paragraphs: repo.ui.warn( _(b"error parsing releasenotes for revision: '%s'\n") - % node.hex(ctx.node()) + % hex(ctx.node()) ) if title: notes.addtitleditem(directive, title, paragraphs) diff -r d6afa9c149c3 -r 59fa3890d40a hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/remotefilelog/__init__.py Tue Dec 01 21:54:46 2020 +0100 @@ -130,7 +130,10 @@ import time import traceback -from mercurial.node import hex +from mercurial.node import ( + hex, + wdirrev, +) from mercurial.i18n import _ from mercurial.pycompat import open from mercurial import ( @@ -150,7 +153,6 @@ match as matchmod, merge, mergestate as mergestatemod, - node as nodemod, patch, pycompat, registrar, @@ -1091,7 +1093,7 @@ if isenabled(repo): allfiles = [] for rev, match in revmatches: - if rev == nodemod.wdirrev or rev is None: + if rev == wdirrev or rev is None: continue ctx = repo[rev] mf = ctx.manifest() diff -r d6afa9c149c3 -r 59fa3890d40a hgext/remotefilelog/basepack.py --- a/hgext/remotefilelog/basepack.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/remotefilelog/basepack.py Tue Dec 01 21:54:46 2020 +0100 @@ -12,8 +12,8 @@ getattr, open, ) +from mercurial.node import hex from mercurial import ( - node as nodemod, policy, pycompat, util, @@ -429,7 +429,7 @@ return try: - sha = nodemod.hex(self.sha.digest()) + sha = hex(self.sha.digest()) self.packfp.close() self.writeindex() diff -r d6afa9c149c3 -r 59fa3890d40a hgext/remotefilelog/debugcommands.py --- a/hgext/remotefilelog/debugcommands.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/remotefilelog/debugcommands.py Tue Dec 01 21:54:46 2020 +0100 @@ -9,14 +9,18 @@ import os import zlib -from mercurial.node import bin, hex, nullid, short +from mercurial.node import ( + bin, + hex, + nullid, + short, +) from mercurial.i18n import _ from mercurial.pycompat import open from mercurial import ( error, filelog, lock as lockmod, - node as nodemod, pycompat, revlog, ) @@ -61,7 +65,7 @@ def buildtemprevlog(repo, file): # get filename key - filekey = nodemod.hex(hashutil.sha1(file).digest()) + filekey = hex(hashutil.sha1(file).digest()) filedir = os.path.join(repo.path, b'store/data', filekey) # sort all entries based on linkrev @@ -421,7 +425,7 @@ % ( hashformatter(node), hashformatter(deltabasenode), - nodemod.hex(hashutil.sha1(delta).digest()), + hex(hashutil.sha1(delta).digest()), len(delta), ) ) diff -r d6afa9c149c3 -r 59fa3890d40a hgext/remotefilelog/fileserverclient.py --- a/hgext/remotefilelog/fileserverclient.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/remotefilelog/fileserverclient.py Tue Dec 01 21:54:46 2020 +0100 @@ -17,7 +17,6 @@ from mercurial.node import bin, hex, nullid from mercurial import ( error, - node, pycompat, revlog, sshpeer, @@ -47,12 +46,12 @@ def getcachekey(reponame, file, id): - pathhash = node.hex(hashutil.sha1(file).digest()) + pathhash = hex(hashutil.sha1(file).digest()) return os.path.join(reponame, pathhash[:2], pathhash[2:], id) def getlocalkey(file, id): - pathhash = node.hex(hashutil.sha1(file).digest()) + pathhash = hex(hashutil.sha1(file).digest()) return os.path.join(pathhash, id) diff -r d6afa9c149c3 -r 59fa3890d40a hgext/remotefilelog/shallowutil.py --- a/hgext/remotefilelog/shallowutil.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/remotefilelog/shallowutil.py Tue Dec 01 21:54:46 2020 +0100 @@ -15,9 +15,9 @@ from mercurial.i18n import _ from mercurial.pycompat import open +from mercurial.node import hex from mercurial import ( error, - node, pycompat, revlog, util, @@ -39,12 +39,12 @@ def getcachekey(reponame, file, id): - pathhash = node.hex(hashutil.sha1(file).digest()) + pathhash = hex(hashutil.sha1(file).digest()) return os.path.join(reponame, pathhash[:2], pathhash[2:], id) def getlocalkey(file, id): - pathhash = node.hex(hashutil.sha1(file).digest()) + pathhash = hex(hashutil.sha1(file).digest()) return os.path.join(pathhash, id) diff -r d6afa9c149c3 -r 59fa3890d40a hgext/transplant.py --- a/hgext/transplant.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/transplant.py Tue Dec 01 21:54:46 2020 +0100 @@ -19,6 +19,12 @@ from mercurial.i18n import _ from mercurial.pycompat import open +from mercurial.node import ( + bin, + hex, + nullid, + short, +) from mercurial import ( bundlerepo, cmdutil, @@ -28,11 +34,9 @@ logcmdutil, match, merge, - node as nodemod, patch, pycompat, registrar, - revlog, revset, scmutil, smartset, @@ -95,7 +99,7 @@ abspath = os.path.join(self.path, self.transplantfile) if self.transplantfile and os.path.exists(abspath): for line in self.opener.read(self.transplantfile).splitlines(): - lnode, rnode = map(revlog.bin, line.split(b':')) + lnode, rnode = map(bin, line.split(b':')) list = self.transplants.setdefault(rnode, []) list.append(transplantentry(lnode, rnode)) @@ -106,7 +110,7 @@ fp = self.opener(self.transplantfile, b'w') for list in pycompat.itervalues(self.transplants): for t in list: - l, r = map(nodemod.hex, (t.lnode, t.rnode)) + l, r = map(hex, (t.lnode, t.rnode)) fp.write(l + b':' + r + b'\n') fp.close() self.dirty = False @@ -183,7 +187,7 @@ tr = repo.transaction(b'transplant') for rev in revs: node = revmap[rev] - revstr = b'%d:%s' % (rev, nodemod.short(node)) + revstr = b'%d:%s' % (rev, short(node)) if self.applied(repo, node, p1): self.ui.warn( @@ -216,11 +220,11 @@ exchange.pull(repo, source.peer(), heads=[node]) skipmerge = False - if parents[1] != revlog.nullid: + if parents[1] != nullid: if not opts.get(b'parent'): self.ui.note( _(b'skipping merge changeset %d:%s\n') - % (rev, nodemod.short(node)) + % (rev, short(node)) ) skipmerge = True else: @@ -228,7 +232,7 @@ if parent not in parents: raise error.Abort( _(b'%s is not a parent of %s') - % (nodemod.short(parent), nodemod.short(node)) + % (short(parent), short(node)) ) else: parent = parents[0] @@ -263,13 +267,12 @@ raise if n and domerge: self.ui.status( - _(b'%s merged at %s\n') - % (revstr, nodemod.short(n)) + _(b'%s merged at %s\n') % (revstr, short(n)) ) elif n: self.ui.status( _(b'%s transplanted to %s\n') - % (nodemod.short(node), nodemod.short(n)) + % (short(node), short(n)) ) finally: if patchfile: @@ -309,7 +312,7 @@ ), environ={ b'HGUSER': changelog[1], - b'HGREVISION': nodemod.hex(node), + b'HGREVISION': hex(node), }, onerr=error.Abort, errprefix=_(b'filter failed'), @@ -333,9 +336,9 @@ if log: # we don't translate messages inserted into commits - message += b'\n(transplanted from %s)' % nodemod.hex(node) + message += b'\n(transplanted from %s)' % hex(node) - self.ui.status(_(b'applying %s\n') % nodemod.short(node)) + self.ui.status(_(b'applying %s\n') % short(node)) self.ui.note(b'%s %s\n%s\n' % (user, date, message)) if not patchfile and not merge: @@ -377,9 +380,7 @@ editor=self.getcommiteditor(), ) if not n: - self.ui.warn( - _(b'skipping emptied changeset %s\n') % nodemod.short(node) - ) + self.ui.warn(_(b'skipping emptied changeset %s\n') % short(node)) return None if not merge: self.transplants.set(n, node) @@ -395,13 +396,11 @@ n, node = self.recover(repo, source, opts) if n: self.ui.status( - _(b'%s transplanted as %s\n') - % (nodemod.short(node), nodemod.short(n)) + _(b'%s transplanted as %s\n') % (short(node), short(n)) ) else: self.ui.status( - _(b'%s skipped due to empty diff\n') - % (nodemod.short(node),) + _(b'%s skipped due to empty diff\n') % (short(node),) ) seriespath = os.path.join(self.path, b'series') if not os.path.exists(seriespath): @@ -430,7 +429,7 @@ if parent not in parents: raise error.Abort( _(b'%s is not a parent of %s') - % (nodemod.short(parent), nodemod.short(node)) + % (short(parent), short(node)) ) else: merge = True @@ -441,7 +440,7 @@ if p1 != parent: raise error.Abort( _(b'working directory not at transplant parent %s') - % nodemod.hex(parent) + % hex(parent) ) if merge: repo.setparents(p1, parents[1]) @@ -494,7 +493,7 @@ if line.startswith(b'# Merges'): cur = merges continue - cur.append(revlog.bin(line)) + cur.append(bin(line)) return (nodes, merges) @@ -506,17 +505,17 @@ os.mkdir(self.path) series = self.opener(b'series', b'w') for rev in sorted(revmap): - series.write(nodemod.hex(revmap[rev]) + b'\n') + series.write(hex(revmap[rev]) + b'\n') if merges: series.write(b'# Merges\n') for m in merges: - series.write(nodemod.hex(m) + b'\n') + series.write(hex(m) + b'\n') series.close() def parselog(self, fp): parents = [] message = [] - node = revlog.nullid + node = nullid inmsg = False user = None date = None @@ -528,9 +527,9 @@ elif line.startswith(b'# Date '): date = line[7:] elif line.startswith(b'# Node ID '): - node = revlog.bin(line[10:]) + node = bin(line[10:]) elif line.startswith(b'# Parent '): - parents.append(revlog.bin(line[9:])) + parents.append(bin(line[9:])) elif not line.startswith(b'# '): inmsg = True message.append(line) @@ -548,10 +547,10 @@ fp = self.opener(b'journal', b'w') fp.write(b'# User %s\n' % user) fp.write(b'# Date %s\n' % date) - fp.write(b'# Node ID %s\n' % nodemod.hex(p2)) - fp.write(b'# Parent ' + nodemod.hex(p1) + b'\n') + fp.write(b'# Node ID %s\n' % hex(p2)) + fp.write(b'# Parent ' + hex(p1) + b'\n') if merge: - fp.write(b'# Parent ' + nodemod.hex(p2) + b'\n') + fp.write(b'# Parent ' + hex(p2) + b'\n') fp.write(message.rstrip() + b'\n') fp.close() @@ -568,7 +567,7 @@ def matchfn(node): if self.applied(repo, node, root): return False - if source.changelog.parents(node)[1] != revlog.nullid: + if source.changelog.parents(node)[1] != nullid: return False extra = source.changelog.read(node)[5] cnode = extra.get(b'transplant_source') @@ -804,7 +803,7 @@ tp = transplanter(ui, repo, opts) p1 = repo.dirstate.p1() - if len(repo) > 0 and p1 == revlog.nullid: + if len(repo) > 0 and p1 == nullid: raise error.Abort(_(b'no revision checked out')) if opts.get(b'continue'): if not tp.canresume(): @@ -909,7 +908,7 @@ changeset if any.""" ctx = context.resource(mapping, b'ctx') n = ctx.extra().get(b'transplant_source') - return n and nodemod.hex(n) or b'' + return n and hex(n) or b'' def extsetup(ui): diff -r d6afa9c149c3 -r 59fa3890d40a hgext/uncommit.py --- a/hgext/uncommit.py Sun Dec 13 18:29:22 2020 -0800 +++ b/hgext/uncommit.py Tue Dec 01 21:54:46 2020 +0100 @@ -20,6 +20,7 @@ from __future__ import absolute_import from mercurial.i18n import _ +from mercurial.node import nullid from mercurial import ( cmdutil, @@ -27,7 +28,6 @@ context, copies as copiesmod, error, - node, obsutil, pathutil, pycompat, @@ -113,7 +113,7 @@ new = context.memctx( repo, - parents=[base.node(), node.nullid], + parents=[base.node(), nullid], text=message, files=files, filectxfn=filectxfn, diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/bundle2.py --- a/mercurial/bundle2.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/bundle2.py Tue Dec 01 21:54:46 2020 +0100 @@ -156,12 +156,16 @@ import sys from .i18n import _ +from .node import ( + hex, + nullid, + short, +) from . import ( bookmarks, changegroup, encoding, error, - node as nodemod, obsolete, phases, pushkey, @@ -2131,14 +2135,14 @@ currentnode = op.repo._bookmarks.get(book) if currentnode != node: if node is None: - finalmsg = msgexist % (book, nodemod.short(currentnode)) + finalmsg = msgexist % (book, short(currentnode)) elif currentnode is None: - finalmsg = msgmissing % (book, nodemod.short(node)) + finalmsg = msgmissing % (book, short(node)) else: finalmsg = msgstandard % ( book, - nodemod.short(node), - nodemod.short(currentnode), + short(node), + short(currentnode), ) raise error.PushRaced(finalmsg) @@ -2215,7 +2219,7 @@ actualphase = phasecache.phase(unfi, cl.rev(n)) if actualphase != expectedphase: finalmsg = msg % ( - nodemod.short(n), + short(n), phases.phasenames[actualphase], phases.phasenames[expectedphase], ) @@ -2360,10 +2364,8 @@ hookargs[b'pushkeycompat'] = b'1' hookargs[b'namespace'] = b'bookmarks' hookargs[b'key'] = book - hookargs[b'old'] = nodemod.hex(bookstore.get(book, b'')) - hookargs[b'new'] = nodemod.hex( - node if node is not None else b'' - ) + hookargs[b'old'] = hex(bookstore.get(book, b'')) + hookargs[b'new'] = hex(node if node is not None else b'') allhooks.append(hookargs) for hookargs in allhooks: @@ -2569,7 +2571,7 @@ fullnodes=commonnodes, ) cgdata = packer.generate( - {nodemod.nullid}, + {nullid}, list(commonnodes), False, b'narrow_widen', diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/bundlerepo.py --- a/mercurial/bundlerepo.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/bundlerepo.py Tue Dec 01 21:54:46 2020 +0100 @@ -17,7 +17,11 @@ import shutil from .i18n import _ -from .node import nullid, nullrev +from .node import ( + hex, + nullid, + nullrev, +) from . import ( bundle2, @@ -32,7 +36,6 @@ localrepo, manifest, mdiff, - node as nodemod, pathutil, phases, pycompat, @@ -437,9 +440,9 @@ p2rev = self.changelog.rev(p2) msg = _(b"setting parent to node %s that only exists in the bundle\n") if self.changelog.repotiprev < p1rev: - self.ui.warn(msg % nodemod.hex(p1)) + self.ui.warn(msg % hex(p1)) if self.changelog.repotiprev < p2rev: - self.ui.warn(msg % nodemod.hex(p2)) + self.ui.warn(msg % hex(p2)) return super(bundlerepository, self).setparents(p1, p2) diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/chgserver.py --- a/mercurial/chgserver.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/chgserver.py Tue Dec 01 21:54:46 2020 +0100 @@ -54,13 +54,13 @@ getattr, setattr, ) +from .node import hex from . import ( commandserver, encoding, error, extensions, - node, pycompat, util, ) @@ -74,7 +74,7 @@ def _hashlist(items): """return sha1 hexdigest for a list""" - return node.hex(hashutil.sha1(stringutil.pprint(items)).digest()) + return hex(hashutil.sha1(stringutil.pprint(items)).digest()) # sensitive config sections affecting confighash diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/copies.py --- a/mercurial/copies.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/copies.py Tue Dec 01 21:54:46 2020 +0100 @@ -11,11 +11,13 @@ import os from .i18n import _ - +from .node import ( + nullid, + nullrev, +) from . import ( match as matchmod, - node, pathutil, policy, pycompat, @@ -147,7 +149,7 @@ # optimization, since the ctx.files() for a merge commit is not correct for # this comparison. forwardmissingmatch = match - if b.p1() == a and b.p2().node() == node.nullid: + if b.p1() == a and b.p2().node() == nullid: filesmatcher = matchmod.exact(b.files()) forwardmissingmatch = matchmod.intersectmatchers(match, filesmatcher) missing = _computeforwardmissing(a, b, match=forwardmissingmatch) @@ -233,7 +235,7 @@ else: raw = None value = (p1, p2, raw) - if p1 != node.nullrev and p2 != node.nullrev: + if p1 != nullrev and p2 != nullrev: # XXX some case we over cache, IGNORE merge_caches[rev] = value return value @@ -250,7 +252,7 @@ if flags(rev) & HASCOPIESINFO: changes = changelogrevision(rev).changes value = (p1, p2, changes) - if p1 != node.nullrev and p2 != node.nullrev: + if p1 != nullrev and p2 != nullrev: # XXX some case we over cache, IGNORE merge_caches[rev] = value return value @@ -277,7 +279,7 @@ def _changesetforwardcopies(a, b, match): - if a.rev() in (node.nullrev, b.rev()): + if a.rev() in (nullrev, b.rev()): return {} repo = a.repo().unfiltered() @@ -290,7 +292,7 @@ roots = set() for r in missingrevs: for p in cl.parentrevs(r): - if p == node.nullrev: + if p == nullrev: continue if p not in children: children[p] = [r] @@ -494,7 +496,7 @@ parents = fctx._filelog.parents(fctx._filenode) nb_parents = 0 for n in parents: - if n != node.nullid: + if n != nullid: nb_parents += 1 return nb_parents >= 2 @@ -668,7 +670,7 @@ if debug: repo.ui.debug(b'debug.copies: search mode: combined\n') base = None - if a.rev() != node.nullrev: + if a.rev() != nullrev: base = x copies = _chain( _backwardrenames(x, a, match=match), diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/dagop.py --- a/mercurial/dagop.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/dagop.py Tue Dec 01 21:54:46 2020 +0100 @@ -11,10 +11,10 @@ from .node import nullrev from .thirdparty import attr +from .node import nullrev from . import ( error, mdiff, - node, patch, pycompat, scmutil, @@ -77,7 +77,7 @@ pdepth = curdepth + 1 if foundnew and pdepth < stopdepth: for prev in pfunc(currev): - if prev != node.nullrev: + if prev != nullrev: heapq.heappush(pendingheap, (heapsign * prev, pdepth)) @@ -183,7 +183,6 @@ cl = repo.changelog first = revs.min() - nullrev = node.nullrev if first == nullrev: # Are there nodes with a null first parent and a non-null # second one? Maybe. Do we care? Probably not. @@ -206,7 +205,6 @@ def _builddescendantsmap(repo, startrev, followfirst): """Build map of 'rev -> child revs', offset from startrev""" cl = repo.changelog - nullrev = node.nullrev descmap = [[] for _rev in pycompat.xrange(startrev, len(cl))] for currev in cl.revs(startrev + 1): p1rev, p2rev = cl.parentrevs(currev) @@ -971,7 +969,7 @@ if rev == currentrev: # only display stuff in rev gr[0].append(rev) gr[1].remove(rev) - parents = [p for p in parentsfunc(rev) if p > node.nullrev] + parents = [p for p in parentsfunc(rev) if p > nullrev] gr[1].update(parents) for p in parents: if p not in pendingset: @@ -1030,7 +1028,7 @@ the input set. """ headrevs = set(revs) - parents = {node.nullrev} + parents = {nullrev} up = parents.update for rev in revs: @@ -1104,7 +1102,7 @@ visit.append(-rev - 1) for prev in parentsfn(rev): - if prev == node.nullrev or prev not in revs or prev in finished: + if prev == nullrev or prev not in revs or prev in finished: continue visit.append(prev) diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/hg.py --- a/mercurial/hg.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/hg.py Tue Dec 01 21:54:46 2020 +0100 @@ -14,7 +14,12 @@ import stat from .i18n import _ -from .node import nullid +from .node import ( + hex, + nullhex, + nullid, + short, +) from .pycompat import getattr from . import ( @@ -35,7 +40,6 @@ merge as mergemod, mergestate as mergestatemod, narrowspec, - node, phases, pycompat, requirements, @@ -108,7 +112,7 @@ raise error.Abort(_(b"dirstate branch not accessible")) branch = lrepo.dirstate.branch() if branch in branchmap: - revs.extend(node.hex(r) for r in reversed(branchmap[branch])) + revs.extend(hex(r) for r in reversed(branchmap[branch])) return True else: return False @@ -762,8 +766,8 @@ }, ).result() - if rootnode != node.nullid: - sharepath = os.path.join(sharepool, node.hex(rootnode)) + if rootnode != nullid: + sharepath = os.path.join(sharepool, hex(rootnode)) else: ui.status( _( @@ -780,7 +784,7 @@ ) elif sharenamemode == b'remote': sharepath = os.path.join( - sharepool, node.hex(hashutil.sha1(source).digest()) + sharepool, hex(hashutil.sha1(source).digest()) ) else: raise error.Abort( @@ -872,9 +876,7 @@ # we need to re-init the repo after manually copying the data # into it destpeer = peer(srcrepo, peeropts, dest) - srcrepo.hook( - b'outgoing', source=b'clone', node=node.hex(node.nullid) - ) + srcrepo.hook(b'outgoing', source=b'clone', node=nullhex) else: try: # only pass ui when no srcrepo @@ -1379,7 +1381,7 @@ except Exception: repo.ui.warn( _(b'.hgsubstate is corrupt in revision %s\n') - % node.short(ctx.node()) + % short(ctx.node()) ) return ret diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/keepalive.py --- a/mercurial/keepalive.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/keepalive.py Tue Dec 01 21:54:46 2020 +0100 @@ -93,8 +93,8 @@ from .i18n import _ from .pycompat import getattr +from .node import hex from . import ( - node, pycompat, urllibcompat, util, @@ -723,7 +723,7 @@ foo = fo.read() fo.close() m = md5(foo) - print(format % (b'normal urllib', node.hex(m.digest()))) + print(format % (b'normal urllib', hex(m.digest()))) # now install the keepalive handler and try again opener = urlreq.buildopener(HTTPHandler()) @@ -733,7 +733,7 @@ foo = fo.read() fo.close() m = md5(foo) - print(format % (b'keepalive read', node.hex(m.digest()))) + print(format % (b'keepalive read', hex(m.digest()))) fo = urlreq.urlopen(url) foo = b'' @@ -745,7 +745,7 @@ break fo.close() m = md5(foo) - print(format % (b'keepalive readline', node.hex(m.digest()))) + print(format % (b'keepalive readline', hex(m.digest()))) def comp(N, url): diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/metadata.py --- a/mercurial/metadata.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/metadata.py Tue Dec 01 21:54:46 2020 +0100 @@ -11,9 +11,12 @@ import multiprocessing import struct +from .node import ( + nullid, + nullrev, +) from . import ( error, - node, pycompat, util, ) @@ -239,11 +242,11 @@ """compute the files changed by a revision""" p1 = ctx.p1() p2 = ctx.p2() - if p1.rev() == node.nullrev and p2.rev() == node.nullrev: + if p1.rev() == nullrev and p2.rev() == nullrev: return _process_root(ctx) - elif p1.rev() != node.nullrev and p2.rev() == node.nullrev: + elif p1.rev() != nullrev and p2.rev() == nullrev: return _process_linear(p1, ctx) - elif p1.rev() == node.nullrev and p2.rev() != node.nullrev: + elif p1.rev() == nullrev and p2.rev() != nullrev: # In the wild, one can encounter changeset where p1 is null but p2 is not return _process_linear(p1, ctx, parent=2) elif p1.rev() == p2.rev(): @@ -423,7 +426,7 @@ p1_ctx.node(), p2_ctx.node() ) if not cahs: - cahs = [node.nullrev] + cahs = [nullrev] mas = [ctx.repo()[r].manifest() for r in cahs] copy_candidates = [] @@ -560,7 +563,7 @@ p2n = p2.node() cahs = ctx.repo().changelog.commonancestorsheads(p1n, p2n) if not cahs: - cahs = [node.nullrev] + cahs = [nullrev] return [ctx.repo()[r].manifest() for r in cahs] def deletionfromparent(f): @@ -597,7 +600,7 @@ if f in ctx: fctx = ctx[f] parents = fctx._filelog.parents(fctx._filenode) - if parents[1] != node.nullid: + if parents[1] != nullid: merged.append(f) return merged diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/obsolete.py --- a/mercurial/obsolete.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/obsolete.py Tue Dec 01 21:54:46 2020 +0100 @@ -74,10 +74,14 @@ from .i18n import _ from .pycompat import getattr +from .node import ( + bin, + hex, + nullid, +) from . import ( encoding, error, - node, obsutil, phases, policy, @@ -235,7 +239,7 @@ parents = () if parents is not None: try: - parents = tuple(node.bin(p) for p in parents) + parents = tuple(bin(p) for p in parents) # if parent content is not a nodeid, drop the data for p in parents: if len(p) != 20: @@ -262,7 +266,7 @@ # mark that we explicitly recorded no parents metadata[b'p0'] = b'' for i, p in enumerate(parents, 1): - metadata[b'p%i' % i] = node.hex(p) + metadata[b'p%i' % i] = hex(p) metadata = _fm0encodemeta(metadata) numsuc = len(sucs) format = _fm0fixed + (_fm0node * numsuc) @@ -529,7 +533,7 @@ subtle handling. """ for mark in markers: - if node.nullid in mark[1]: + if nullid in mark[1]: raise error.Abort( _( b'bad obsolescence marker detected: ' @@ -639,7 +643,7 @@ raise ValueError(succ) if prec in succs: raise ValueError( - 'in-marker cycle with %s' % pycompat.sysstr(node.hex(prec)) + 'in-marker cycle with %s' % pycompat.sysstr(hex(prec)) ) metadata = tuple(sorted(pycompat.iteritems(metadata))) @@ -1031,7 +1035,7 @@ folddigest.update(p.node()) # Since fold only has to compete against fold for the same successors, it # seems fine to use a small ID. Smaller ID save space. - return node.hex(folddigest.digest())[:8] + return hex(folddigest.digest())[:8] def createmarkers( diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/obsutil.py --- a/mercurial/obsutil.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/obsutil.py Tue Dec 01 21:54:46 2020 +0100 @@ -10,11 +10,14 @@ import re from .i18n import _ +from .node import ( + hex, + short, +) from . import ( diffutil, encoding, error, - node as nodemod, phases, pycompat, util, @@ -957,13 +960,13 @@ elif fate == b'diverged': return filteredmsgtable[b'diverged'] % changeid elif fate == b'superseded': - single_successor = nodemod.short(successors[0][0]) + single_successor = short(successors[0][0]) return filteredmsgtable[b'superseded'] % (changeid, single_successor) elif fate == b'superseded_split': succs = [] for node_id in successors[0]: - succs.append(nodemod.short(node_id)) + succs.append(short(node_id)) if len(succs) <= 2: fmtsuccs = b', '.join(succs) @@ -1040,7 +1043,7 @@ b'instability': b'content-divergent', b'divergentnodes': divnodes, b'reason': b'predecessor', - b'node': nodemod.hex(dset[b'commonpredecessor']), + b'node': hex(dset[b'commonpredecessor']), } ) return result diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/revlogutils/nodemap.py --- a/mercurial/revlogutils/nodemap.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/revlogutils/nodemap.py Tue Dec 01 21:54:46 2020 +0100 @@ -14,10 +14,10 @@ import struct from ..i18n import _ +from ..node import hex from .. import ( error, - node as nodemod, util, ) @@ -278,7 +278,7 @@ """return a new unique identifier. The identifier is random and composed of ascii characters.""" - return nodemod.hex(os.urandom(ID_SIZE)) + return hex(os.urandom(ID_SIZE)) class NodeMapDocket(object): @@ -461,8 +461,8 @@ """ root = Block() for rev in range(len(index)): - hex = nodemod.hex(index[rev][7]) - _insert_into_block(index, 0, root, rev, hex) + current_hex = hex(index[rev][7]) + _insert_into_block(index, 0, root, rev, current_hex) return root @@ -470,8 +470,8 @@ """consume""" changed = 0 for rev in range(last_rev + 1, len(index)): - hex = nodemod.hex(index[rev][7]) - changed += _insert_into_block(index, 0, root, rev, hex) + current_hex = hex(index[rev][7]) + changed += _insert_into_block(index, 0, root, rev, current_hex) return changed, root @@ -500,7 +500,7 @@ else: # collision with a previously unique prefix, inserting new # vertices to fit both entry. - other_hex = nodemod.hex(index[entry][7]) + other_hex = hex(index[entry][7]) other_rev = entry new = Block() block[hex_digit] = new @@ -604,7 +604,7 @@ ret = 1 else: all_revs.remove(r) - nm_rev = _find_node(root, nodemod.hex(index[r][7])) + nm_rev = _find_node(root, hex(index[r][7])) if nm_rev is None: msg = b" revision node does not match any entries: %d\n" % r ui.write_err(msg) diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/revset.py --- a/mercurial/revset.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/revset.py Tue Dec 01 21:54:46 2020 +0100 @@ -11,6 +11,11 @@ from .i18n import _ from .pycompat import getattr +from .node import ( + bin, + nullrev, + wdirrev, +) from . import ( dagop, destutil, @@ -20,7 +25,6 @@ grep as grepmod, hbisect, match as matchmod, - node, obsolete as obsmod, obsutil, pathutil, @@ -55,7 +59,7 @@ fullreposet = smartset.fullreposet # revisions not included in all(), but populated if specified -_virtualrevs = (node.nullrev, node.wdirrev) +_virtualrevs = (nullrev, wdirrev) # Constants for ordering requirement, used in getset(): # @@ -177,9 +181,9 @@ def _makerangeset(repo, subset, m, n, order): if m == n: r = baseset([m]) - elif n == node.wdirrev: + elif n == wdirrev: r = spanset(repo, m, len(repo)) + baseset([n]) - elif m == node.wdirrev: + elif m == wdirrev: r = baseset([m]) + spanset(repo, repo.changelog.tiprev(), n - 1) elif m < n: r = spanset(repo, m, n + 1) @@ -597,7 +601,7 @@ bms.add(repo[bmrev].rev()) else: bms = {repo[r].rev() for r in repo._bookmarks.values()} - bms -= {node.nullrev} + bms -= {nullrev} return subset & bms @@ -722,7 +726,6 @@ cs = set() pr = repo.changelog.parentrevs minrev = parentset.min() - nullrev = node.nullrev for r in subset: if r <= minrev: continue @@ -1396,7 +1399,7 @@ b'_matchfiles expected at most one revision' ) if value == b'': # empty means working directory - rev = node.wdirrev + rev = wdirrev else: rev = value elif prefix == b'd:': @@ -1416,7 +1419,6 @@ # This directly read the changelog data as creating changectx for all # revisions is quite expensive. getfiles = repo.changelog.readfiles - wdirrev = node.wdirrev def matches(x): if x == wdirrev: @@ -1490,15 +1492,15 @@ order = followorder inputset = getset(repo, fullreposet(repo), x, order=order) wdirparents = None - if node.wdirrev in inputset: + if wdirrev in inputset: # a bit slower, but not common so good enough for now wdirparents = [p.rev() for p in repo[None].parents()] inputset = set(inputset) - inputset.discard(node.wdirrev) + inputset.discard(wdirrev) heads = repo.changelog.headrevs(inputset) if wdirparents is not None: heads.difference_update(wdirparents) - heads.add(node.wdirrev) + heads.add(wdirrev) heads = baseset(heads) return subset & heads @@ -1598,7 +1600,6 @@ # i18n: "merge" is a keyword getargs(x, 0, 0, _(b"merge takes no arguments")) cl = repo.changelog - nullrev = node.nullrev def ismerge(r): try: @@ -1692,7 +1693,7 @@ if name not in ns.deprecated: names.update(repo[n].rev() for n in ns.nodes(repo, name)) - names -= {node.nullrev} + names -= {nullrev} return subset & names @@ -1705,9 +1706,9 @@ n = getstring(l[0], _(b"id requires a string")) if len(n) == 40: try: - rn = repo.changelog.rev(node.bin(n)) + rn = repo.changelog.rev(bin(n)) except error.WdirUnsupported: - rn = node.wdirrev + rn = wdirrev except (LookupError, TypeError): rn = None else: @@ -1719,7 +1720,7 @@ except LookupError: pass except error.WdirUnsupported: - rn = node.wdirrev + rn = wdirrev if rn is None: return baseset() @@ -1864,7 +1865,7 @@ ps.add(cl.parentrevs(r)[0]) except error.WdirUnsupported: ps.add(repo[r].p1().rev()) - ps -= {node.nullrev} + ps -= {nullrev} # XXX we should turn this into a baseset instead of a set, smartset may do # some optimizations from the fact this is a baseset. return subset & ps @@ -1892,7 +1893,7 @@ parents = repo[r].parents() if len(parents) == 2: ps.add(parents[1]) - ps -= {node.nullrev} + ps -= {nullrev} # XXX we should turn this into a baseset instead of a set, smartset may do # some optimizations from the fact this is a baseset. return subset & ps @@ -1919,7 +1920,7 @@ up(parentrevs(r)) except error.WdirUnsupported: up(p.rev() for p in repo[r].parents()) - ps -= {node.nullrev} + ps -= {nullrev} return subset & ps @@ -1994,7 +1995,7 @@ else: try: parents = cl.parentrevs(r) - if parents[1] != node.nullrev: + if parents[1] != nullrev: ps.add(parents[1]) except error.WdirUnsupported: parents = repo[r].parents() @@ -2567,8 +2568,8 @@ """Working directory. (EXPERIMENTAL)""" # i18n: "wdir" is a keyword getargs(x, 0, 0, _(b"wdir takes no arguments")) - if node.wdirrev in subset or isinstance(subset, fullreposet): - return baseset([node.wdirrev]) + if wdirrev in subset or isinstance(subset, fullreposet): + return baseset([wdirrev]) return baseset() @@ -2638,7 +2639,7 @@ if not s: return baseset() cl = repo.changelog - ls = [cl.rev(node.bin(r)) for r in s.split(b'\0')] + ls = [cl.rev(bin(r)) for r in s.split(b'\0')] s = subset return baseset([r for r in ls if r in s]) diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/revsetlang.py --- a/mercurial/revsetlang.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/revsetlang.py Tue Dec 01 21:54:46 2020 +0100 @@ -11,9 +11,9 @@ from .i18n import _ from .pycompat import getattr +from .node import hex from . import ( error, - node, parser, pycompat, smartset, @@ -687,7 +687,7 @@ parse(arg) # make sure syntax errors are confined return b'(%s)' % arg elif c == b'n': - return _quote(node.hex(arg)) + return _quote(hex(arg)) elif c == b'b': try: return _quote(arg.branch()) @@ -707,7 +707,7 @@ elif t == b's': return b"_list(%s)" % _quote(b"\0".join(s)) elif t == b'n': - return b"_hexlist('%s')" % b"\0".join(node.hex(a) for a in s) + return b"_hexlist('%s')" % b"\0".join(hex(a) for a in s) elif t == b'b': try: return b"_list('%s')" % b"\0".join(a.branch() for a in s) diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/rewriteutil.py --- a/mercurial/rewriteutil.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/rewriteutil.py Tue Dec 01 21:54:46 2020 +0100 @@ -10,10 +10,13 @@ import re from .i18n import _ +from .node import ( + hex, + nullrev, +) from . import ( error, - node, obsolete, obsutil, revset, @@ -30,7 +33,7 @@ Make sure this function is called after taking the lock. """ - if node.nullrev in revs: + if nullrev in revs: msg = _(b"cannot %s null changeset") % action hint = _(b"no changeset checked out") raise error.InputError(msg, hint=hint) @@ -113,7 +116,7 @@ if len(successors) == 1 and len(successors[0]) == 1: successor = successors[0][0] if successor is not None: - newhash = node.hex(successor) + newhash = hex(successor) commitmsg = commitmsg.replace(h, newhash[: len(h)]) else: repo.ui.note( diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/shelve.py --- a/mercurial/shelve.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/shelve.py Tue Dec 01 21:54:46 2020 +0100 @@ -29,6 +29,12 @@ from .i18n import _ from .pycompat import open +from .node import ( + bin, + hex, + nullid, + nullrev, +) from . import ( bookmarks, bundle2, @@ -43,7 +49,6 @@ mdiff, merge, mergestate as mergestatemod, - node as nodemod, patch, phases, pycompat, @@ -196,11 +201,11 @@ def _verifyandtransform(cls, d): """Some basic shelvestate syntactic verification and transformation""" try: - d[b'originalwctx'] = nodemod.bin(d[b'originalwctx']) - d[b'pendingctx'] = nodemod.bin(d[b'pendingctx']) - d[b'parents'] = [nodemod.bin(h) for h in d[b'parents'].split(b' ')] + d[b'originalwctx'] = bin(d[b'originalwctx']) + d[b'pendingctx'] = bin(d[b'pendingctx']) + d[b'parents'] = [bin(h) for h in d[b'parents'].split(b' ')] d[b'nodestoremove'] = [ - nodemod.bin(h) for h in d[b'nodestoremove'].split(b' ') + bin(h) for h in d[b'nodestoremove'].split(b' ') ] except (ValueError, TypeError, KeyError) as err: raise error.CorruptedState(pycompat.bytestr(err)) @@ -296,14 +301,10 @@ ): info = { b"name": name, - b"originalwctx": nodemod.hex(originalwctx.node()), - b"pendingctx": nodemod.hex(pendingctx.node()), - b"parents": b' '.join( - [nodemod.hex(p) for p in repo.dirstate.parents()] - ), - b"nodestoremove": b' '.join( - [nodemod.hex(n) for n in nodestoremove] - ), + b"originalwctx": hex(originalwctx.node()), + b"pendingctx": hex(pendingctx.node()), + b"parents": b' '.join([hex(p) for p in repo.dirstate.parents()]), + b"nodestoremove": b' '.join([hex(n) for n in nodestoremove]), b"branchtorestore": branchtorestore, b"keep": cls._keep if keep else cls._nokeep, b"activebook": activebook or cls._noactivebook, @@ -400,7 +401,7 @@ """return all mutable ancestors for ctx (included) Much faster than the revset ancestors(ctx) & draft()""" - seen = {nodemod.nullrev} + seen = {nullrev} visit = collections.deque() visit.append(ctx) while visit: @@ -464,7 +465,7 @@ def _shelvecreatedcommit(repo, node, name, match): - info = {b'node': nodemod.hex(node)} + info = {b'node': hex(node)} shelvedfile(repo, name, b'shelve').writeinfo(info) bases = list(mutableancestors(repo[node])) shelvedfile(repo, name, b'hg').writebundle(bases, node) @@ -501,7 +502,7 @@ parent = parents[0] origbranch = wctx.branch() - if parent.node() != nodemod.nullid: + if parent.node() != nullid: desc = b"changes to: %s" % parent.description().split(b'\n', 1)[0] else: desc = b'(changes in empty repository)' @@ -816,7 +817,7 @@ pendingctx = state.pendingctx with repo.dirstate.parentchange(): - repo.setparents(state.pendingctx.node(), nodemod.nullid) + repo.setparents(state.pendingctx.node(), nullid) repo.dirstate.write(repo.currenttransaction()) targetphase = phases.internal @@ -825,7 +826,7 @@ overrides = {(b'phases', b'new-commit'): targetphase} with repo.ui.configoverride(overrides, b'unshelve'): with repo.dirstate.parentchange(): - repo.setparents(state.parents[0], nodemod.nullid) + repo.setparents(state.parents[0], nullid) newnode, ispartialunshelve = _createunshelvectx( ui, repo, shelvectx, basename, interactive, opts ) @@ -901,7 +902,7 @@ # We might not strip the unbundled changeset, so we should keep track of # the unshelve node in case we need to reuse it (eg: unshelve --keep) if node is None: - info = {b'node': nodemod.hex(shelvectx.node())} + info = {b'node': hex(shelvectx.node())} shelvedfile(repo, basename, b'shelve').writeinfo(info) else: shelvectx = repo[node] @@ -1020,7 +1021,7 @@ raise error.ConflictResolutionRequired(b'unshelve') with repo.dirstate.parentchange(): - repo.setparents(tmpwctx.node(), nodemod.nullid) + repo.setparents(tmpwctx.node(), nullid) newnode, ispartialunshelve = _createunshelvectx( ui, repo, shelvectx, basename, interactive, opts ) diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/simplemerge.py --- a/mercurial/simplemerge.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/simplemerge.py Tue Dec 01 21:54:46 2020 +0100 @@ -19,10 +19,10 @@ from __future__ import absolute_import from .i18n import _ +from .node import nullid from . import ( error, mdiff, - node as nodemod, pycompat, util, ) @@ -452,7 +452,7 @@ def is_not_null(ctx): if not util.safehasattr(ctx, "node"): return False - return ctx.node() != nodemod.nullid + return ctx.node() != nullid def _mergediff(m3, name_a, name_b, name_base): diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/sslutil.py --- a/mercurial/sslutil.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/sslutil.py Tue Dec 01 21:54:46 2020 +0100 @@ -16,10 +16,10 @@ from .i18n import _ from .pycompat import getattr +from .node import hex from . import ( encoding, error, - node, pycompat, util, ) @@ -762,9 +762,9 @@ # If a certificate fingerprint is pinned, use it and only it to # validate the remote cert. peerfingerprints = { - b'sha1': node.hex(hashutil.sha1(peercert).digest()), - b'sha256': node.hex(hashlib.sha256(peercert).digest()), - b'sha512': node.hex(hashlib.sha512(peercert).digest()), + b'sha1': hex(hashutil.sha1(peercert).digest()), + b'sha256': hex(hashlib.sha256(peercert).digest()), + b'sha512': hex(hashlib.sha512(peercert).digest()), } def fmtfingerprint(s): diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/store.py --- a/mercurial/store.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/store.py Tue Dec 01 21:54:46 2020 +0100 @@ -14,11 +14,11 @@ from .i18n import _ from .pycompat import getattr +from .node import hex from . import ( changelog, error, manifest, - node, policy, pycompat, util, @@ -273,7 +273,7 @@ def _hashencode(path, dotencode): - digest = node.hex(hashutil.sha1(path).digest()) + digest = hex(hashutil.sha1(path).digest()) le = lowerencode(path[5:]).split(b'/') # skips prefix 'data/' or 'meta/' parts = _auxencode(le, dotencode) basename = parts[-1] diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/strip.py --- a/mercurial/strip.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/strip.py Tue Dec 01 21:54:46 2020 +0100 @@ -2,6 +2,7 @@ from .i18n import _ from .pycompat import getattr +from .node import nullid from . import ( bookmarks as bookmarksmod, cmdutil, @@ -9,7 +10,6 @@ hg, lock as lockmod, mergestate as mergestatemod, - node as nodemod, pycompat, registrar, repair, @@ -17,7 +17,6 @@ util, ) -nullid = nodemod.nullid release = lockmod.release cmdtable = {} diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/subrepo.py --- a/mercurial/subrepo.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/subrepo.py Tue Dec 01 21:54:46 2020 +0100 @@ -18,6 +18,12 @@ import xml.dom.minidom from .i18n import _ +from .node import ( + bin, + hex, + nullid, + short, +) from . import ( cmdutil, encoding, @@ -26,7 +32,6 @@ logcmdutil, match as matchmod, merge as merge, - node, pathutil, phases, pycompat, @@ -61,7 +66,7 @@ def _getstorehashcachename(remotepath): '''get a unique filename for the store hash cache of a remote repository''' - return node.hex(hashutil.sha1(_expandedabspath(remotepath)).digest())[0:12] + return hex(hashutil.sha1(_expandedabspath(remotepath)).digest())[0:12] class SubrepoAbort(error.Abort): @@ -508,7 +513,7 @@ yield b'# %s\n' % _expandedabspath(remotepath) vfs = self._repo.vfs for relname in filelist: - filehash = node.hex(hashutil.sha1(vfs.tryread(relname)).digest()) + filehash = hex(hashutil.sha1(vfs.tryread(relname)).digest()) yield b'%s = %s\n' % (relname, filehash) @propertycache @@ -601,11 +606,11 @@ @annotatesubrepoerror def diff(self, ui, diffopts, node2, match, prefix, **opts): try: - node1 = node.bin(self._state[1]) + node1 = bin(self._state[1]) # We currently expect node2 to come from substate and be # in hex format if node2 is not None: - node2 = node.bin(node2) + node2 = bin(node2) logcmdutil.diffordiffstat( ui, self._repo, @@ -669,7 +674,7 @@ n = self._repo.commit(text, user, date) if not n: return self._repo[b'.'].hex() # different version checked out - return node.hex(n) + return hex(n) @annotatesubrepoerror def phase(self, state): @@ -680,7 +685,7 @@ # we can't fully delete the repository as it may contain # local-only history self.ui.note(_(b'removing subrepo %s\n') % subrelpath(self)) - hg.clean(self._repo, node.nullid, False) + hg.clean(self._repo, nullid, False) def _get(self, state): source, revision, kind = state @@ -1019,7 +1024,7 @@ # explicit warning. msg = _(b"subrepo '%s' is hidden in revision %s") % ( self._relpath, - node.short(self._ctx.node()), + short(self._ctx.node()), ) if onpush: @@ -1032,7 +1037,7 @@ # don't treat this as an error for `hg verify`. msg = _(b"subrepo '%s' not found in revision %s") % ( self._relpath, - node.short(self._ctx.node()), + short(self._ctx.node()), ) if onpush: diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/tagmerge.py --- a/mercurial/tagmerge.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/tagmerge.py Tue Dec 01 21:54:46 2020 +0100 @@ -75,16 +75,13 @@ from .i18n import _ from .node import ( - hex, - nullid, + nullhex, ) from . import ( tags as tagsmod, util, ) -hexnullid = hex(nullid) - def readtagsformerge(ui, repo, lines, fn=b'', keeplinenums=False): """read the .hgtags file into a structure that is suitable for merging @@ -246,8 +243,8 @@ pnlosttagset = basetagset - pntagset for t in pnlosttagset: pntags[t] = basetags[t] - if pntags[t][-1][0] != hexnullid: - pntags[t].append([hexnullid, None]) + if pntags[t][-1][0] != nullhex: + pntags[t].append([nullhex, None]) conflictedtags = [] # for reporting purposes mergedtags = util.sortdict(p1tags) diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/templatefilters.py --- a/mercurial/templatefilters.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/templatefilters.py Tue Dec 01 21:54:46 2020 +0100 @@ -12,10 +12,10 @@ import time from .i18n import _ +from .node import hex from . import ( encoding, error, - node, pycompat, registrar, smartset, @@ -280,7 +280,7 @@ """Any text. Convert a binary Mercurial node identifier into its long hexadecimal representation. """ - return node.hex(text) + return hex(text) @templatefilter(b'hgdate', intype=templateutil.date) diff -r d6afa9c149c3 -r 59fa3890d40a mercurial/util.py --- a/mercurial/util.py Sun Dec 13 18:29:22 2020 -0800 +++ b/mercurial/util.py Tue Dec 01 21:54:46 2020 +0100 @@ -42,12 +42,12 @@ open, setattr, ) +from .node import hex from hgdemandimport import tracing from . import ( encoding, error, i18n, - node as nodemod, policy, pycompat, urllibcompat, @@ -254,7 +254,7 @@ def __getitem__(self, key): if key not in DIGESTS: raise error.Abort(_(b'unknown digest type: %s') % k) - return nodemod.hex(self._hashes[key].digest()) + return hex(self._hashes[key].digest()) def __iter__(self): return iter(self._hashes) diff -r d6afa9c149c3 -r 59fa3890d40a tests/drawdag.py --- a/tests/drawdag.py Sun Dec 13 18:29:22 2020 -0800 +++ b/tests/drawdag.py Tue Dec 01 21:54:46 2020 +0100 @@ -86,11 +86,11 @@ import itertools import re +from mercurial.node import nullid from mercurial.i18n import _ from mercurial import ( context, error, - node, obsolete, pycompat, registrar, @@ -299,7 +299,7 @@ self._added = added self._parents = parentctxs while len(self._parents) < 2: - self._parents.append(repo[node.nullid]) + self._parents.append(repo[nullid]) def filectx(self, key): return simplefilectx(key, self._added[key]) @@ -388,7 +388,7 @@ content = content.replace(br'\n', b'\n').replace(br'\1', b'\1') files[name][path] = content - committed = {None: node.nullid} # {name: node} + committed = {None: nullid} # {name: node} # for leaf nodes, try to find existing nodes in repo for name, parents in edges.items(): diff -r d6afa9c149c3 -r 59fa3890d40a tests/test-parseindex2.py --- a/tests/test-parseindex2.py Sun Dec 13 18:29:22 2020 -0800 +++ b/tests/test-parseindex2.py Tue Dec 01 21:54:46 2020 +0100 @@ -12,11 +12,12 @@ import unittest from mercurial.node import ( + bin, + hex, nullid, nullrev, ) from mercurial import ( - node as nodemod, policy, pycompat, ) @@ -232,7 +233,7 @@ self.assertEqual( ix[r[7]], i, - 'Reverse lookup inconsistent for %r' % nodemod.hex(r[7]), + 'Reverse lookup inconsistent for %r' % hex(r[7]), ) except TypeError: # pure version doesn't support this @@ -255,7 +256,7 @@ if rev == nullrev: return b'\xff\xff\xff\xff' else: - return nodemod.bin('%08x' % rev) + return bin('%08x' % rev) def appendrev(p1, p2=nullrev): # node won't matter for this test, let's just make sure diff -r d6afa9c149c3 -r 59fa3890d40a tests/test-revlog-raw.py --- a/tests/test-revlog-raw.py Sun Dec 13 18:29:22 2020 -0800 +++ b/tests/test-revlog-raw.py Tue Dec 01 21:54:46 2020 +0100 @@ -6,9 +6,9 @@ import hashlib import sys +from mercurial.node import nullid from mercurial import ( encoding, - node, revlog, transaction, vfs, @@ -93,7 +93,7 @@ """ nextrev = len(rlog) p1 = rlog.node(nextrev - 1) - p2 = node.nullid + p2 = nullid if isext: flags = revlog.REVIDX_EXTSTORED else: @@ -127,7 +127,7 @@ class dummychangegroup(object): @staticmethod def deltachunk(pnode): - pnode = pnode or node.nullid + pnode = pnode or nullid parentrev = rlog.rev(pnode) r = parentrev + 1 if r >= len(rlog): @@ -142,7 +142,7 @@ return { b'node': rlog.node(r), b'p1': pnode, - b'p2': node.nullid, + b'p2': nullid, b'cs': rlog.node(rlog.linkrev(r)), b'flags': rlog.flags(r), b'deltabase': rlog.node(deltaparent), @@ -181,7 +181,7 @@ dlog = newrevlog(destname, recreate=True) for r in rlog: p1 = rlog.node(r - 1) - p2 = node.nullid + p2 = nullid if r == 0 or (rlog.flags(r) & revlog.REVIDX_EXTSTORED): text = rlog.rawdata(r) cachedelta = None diff -r d6afa9c149c3 -r 59fa3890d40a tests/test-rust-ancestor.py --- a/tests/test-rust-ancestor.py Sun Dec 13 18:29:22 2020 -0800 +++ b/tests/test-rust-ancestor.py Tue Dec 01 21:54:46 2020 +0100 @@ -2,10 +2,8 @@ import sys import unittest -from mercurial import ( - error, - node, -) +from mercurial.node import wdirrev +from mercurial import error from mercurial.testing import revlog as revlogtesting @@ -150,7 +148,7 @@ # WdirUnsupported directly idx = self.parseindex() with self.assertRaises(error.WdirUnsupported): - list(AncestorsIterator(idx, [node.wdirrev], -1, False)) + list(AncestorsIterator(idx, [wdirrev], -1, False)) def testheadrevs(self): idx = self.parseindex() diff -r d6afa9c149c3 -r 59fa3890d40a tests/testlib/ext-sidedata.py --- a/tests/testlib/ext-sidedata.py Sun Dec 13 18:29:22 2020 -0800 +++ b/tests/testlib/ext-sidedata.py Tue Dec 01 21:54:46 2020 +0100 @@ -10,9 +10,12 @@ import hashlib import struct +from mercurial.node import ( + nullid, + nullrev, +) from mercurial import ( extensions, - node, requirements, revlog, ) @@ -41,7 +44,7 @@ text = orig(self, nodeorrev, *args, **kwargs) if getattr(self, 'sidedatanocheck', False): return text - if nodeorrev != node.nullrev and nodeorrev != node.nullid: + if nodeorrev != nullrev and nodeorrev != nullid: sd = self.sidedata(nodeorrev) if len(text) != struct.unpack('>I', sd[sidedata.SD_TEST1])[0]: raise RuntimeError('text size mismatch')