# HG changeset patch # User Yuya Nishihara # Date 2018-03-25 09:34:07 # Node ID a0d71618074f3c90180b4e6615544ab20b2cdda4 # Parent d7114f88350534be840e0bfe290231dc43aa8380 revlog: detect pseudo file nodeids to raise WdirUnsupported exception Again, I'm not sure if this is the right thing, but adding a few more pseudo hashes wouldn't be any worse than the current state. Differential Revision: https://phab.mercurial-scm.org/D2942 diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -29,6 +29,7 @@ from .node import ( hex, nullid, nullrev, + wdirfilenodeids, wdirhex, wdirid, wdirrev, @@ -807,7 +808,7 @@ class revlog(object): raise except RevlogError: # parsers.c radix tree lookup failed - if node == wdirid: + if node == wdirid or node in wdirfilenodeids: raise error.WdirUnsupported raise LookupError(node, self.indexfile, _('no node')) except KeyError: @@ -823,7 +824,7 @@ class revlog(object): if v == node: self._nodepos = r - 1 return r - if node == wdirid: + if node == wdirid or node in wdirfilenodeids: raise error.WdirUnsupported raise LookupError(node, self.indexfile, _('no node')) @@ -1436,6 +1437,7 @@ class revlog(object): pass def _partialmatch(self, id): + # we don't care wdirfilenodeids as they should be always full hash maybewdir = wdirhex.startswith(id) try: partial = self.index.partialmatch(id) @@ -2114,7 +2116,7 @@ class revlog(object): if node == nullid: raise RevlogError(_("%s: attempt to add null revision") % (self.indexfile)) - if node == wdirid: + if node == wdirid or node in wdirfilenodeids: raise RevlogError(_("%s: attempt to add wdir revision") % (self.indexfile)) diff --git a/tests/test-grep.t b/tests/test-grep.t --- a/tests/test-grep.t +++ b/tests/test-grep.t @@ -245,7 +245,7 @@ Test wdir $ hg stat M port2 $ hg grep -r 'wdir()' port - abort: data/port2.i@303030303030: no node! + abort: working directory revision cannot be specified [255] $ cd ..