Closed Bug 1758148 Opened 4 years ago Closed 4 years ago

Mercurial 6.1: "unhashable type: 'set'"

Categories

(Developer Services :: General, defect)

defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: mhentges, Unassigned)

References

Details

Bug Description

When using Mercurial >= 6.1, the following error occurs:

$ hg log -r "draft() and ancestors(.)"
** Unknown exception encountered with possibly-broken third-party extension "evolve" 10.4.1
** which supports versions 6.0 of Mercurial.
** Please disable "evolve" and try your action again.
** If that fixes the bug please report it to https://bz.mercurial-scm.org/
** Python 3.9.10 (tags/v3.9.10:f2f3f53, Jan 17 2022, 15:14:21) [MSC v.1929 64 bit (AMD64)]
** Mercurial Distributed SCM (version 6.1+hg7.3c9bf1787bfd)
** Extensions loaded: absorb, blackbox, evolve 10.4.1, fsmonitor, histedit, rebase
Traceback (most recent call last):
  File "C:\mozilla-build-4.0pre0\python3\Scripts\hg", line 61, in <module>
    dispatch.run()
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 144, in run
    status = dispatch(req)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 250, in dispatch
    status = _rundispatch(req)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 294, in _rundispatch
    ret = _runcatch(req) or 0
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 470, in _runcatch
    return _callcatch(ui, _runcatchfunc)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 480, in _callcatch
    return scmutil.callcatch(ui, func)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\scmutil.py", line 153, in callcatch
    return func()
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 460, in _runcatchfunc
    return _dispatch(req)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 1273, in _dispatch
    return runcommand(
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 918, in runcommand
    ret = _runcommand(ui, options, cmd, d)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 1285, in _runcommand
    return cmdfunc()
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\dispatch.py", line 1271, in <lambda>
    d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\util.py", line 1887, in check
    return func(*args, **kwargs)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\commands.py", line 4721, in log
    revs, differ = logcmdutil.getrevs(repo, walk_opts)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\logcmdutil.py", line 1094, in getrevs
    revs, filematcher = makewalker(repo, wopts)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\logcmdutil.py", line 1044, in makewalker
    revs = _initialrevs(repo, wopts)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\logcmdutil.py", line 1026, in _initialrevs
    revs = revrange(repo, wopts.revspec)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\logcmdutil.py", line 946, in revrange
    return scmutil.revrange(repo, specs, localalias)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\scmutil.py", line 769, in revrange
    return repo.anyrevs(allspecs, user=True, localalias=localalias)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\localrepo.py", line 2018, in anyrevs
    m = revset.matchany(
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\revset.py", line 2767, in matchany
    tree = revsetlang.parse(specs[0], lookup)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\revsetlang.py", line 650, in parse
    return _parsewith(spec, lookup=lookup)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\revsetlang.py", line 581, in _parsewith
    tree, pos = p.parse(
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\parser.py", line 90, in parse
    self._advance()
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\parser.py", line 38, in _advance
    self.current = next(self._iter, None)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\revsetlang.py", line 120, in tokenize
    if all(lookup(sym) for sym in parts if sym):
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\revsetlang.py", line 120, in <genexpr>
    if all(lookup(sym) for sym in parts if sym):
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\revset.py", line 2734, in fn
    return scmutil.isrevsymbol(repo, symbol)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\scmutil.py", line 598, in isrevsymbol
    revsymbol(repo, symbol)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\scmutil.py", line 648, in revsymbol
    node = repo.names.singlenode(repo, symbol)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\namespaces.py", line 124, in singlenode
    n = v.singlenode(repo, name)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\namespaces.py", line 237, in singlenode
    n = self.namemap(repo, name)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\namespaces.py", line 66, in <lambda>
    bnamemap = lambda repo, name: tolist(repo.branchtip(name, True))
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\localrepo.py", line 2175, in branchtip
    return self.branchmap().branchtip(branch)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\localrepo.py", line 2155, in branchmap
    return self._branchcaches[self]
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 73, in __getitem__
    self.updatecache(repo)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 97, in updatecache
    bcache = self[subset].copy()
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 73, in __getitem__
    self.updatecache(repo)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 97, in updatecache
    bcache = self[subset].copy()
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 73, in __getitem__
    self.updatecache(repo)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 97, in updatecache
    bcache = self[subset].copy()
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 73, in __getitem__
    self.updatecache(repo)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 106, in updatecache
    bcache.update(repo, revs)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 583, in update
    if not self.validfor(repo):
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\branchmap.py", line 369, in validfor
    tiphash = scmutil.filteredhash(repo, self.tiprev, needobsolete=True)
  File "C:\Users\Mitch\AppData\Roaming\Python\Python39\site-packages\mercurial\scmutil.py", line 369, in filteredhash
    key = (maxrev, hash(cl.filteredrevs), hash(obsrevs))
TypeError: unhashable type: 'set'

Unfortunately, ./mach vcs-setup doesn't fix this, as it encounters the same error.

Workaround

Run ./mach vcs-setup.
It will print the big stack trace warning once, but it'll still update evolve, resolving the issue.

Assignee: nobody → mhentges
Status: NEW → ASSIGNED
Assignee: mhentges → nobody
Status: ASSIGNED → UNCONFIRMED
Ever confirmed: false

(Edited my previous comment - I thought that ./mach vcs-setup wasn't fixing the issue , but that was due to local modifications. All good actually!)

Status: UNCONFIRMED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.