Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revlog.py @ 16665:e410be860393
revlog: speed up prefix matching against nodes
The radix tree already contains all the information we need to
determine whether a short string is an unambiguous node identifier.
We now make use of this information.
In a kernel tree, this improves the performance of
"hg log -q -r24bf01de75" from 0.27 seconds to 0.06.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Sat, 12 May 2012 10:55:08 +0200 |
parents | 95698ee29181 |
children | 67964cda8701 |
line wrap: on
line diff
--- a/mercurial/revlog.py Sat May 12 10:55:08 2012 +0200 +++ b/mercurial/revlog.py Sat May 12 10:55:08 2012 +0200 @@ -756,6 +756,15 @@ pass def _partialmatch(self, id): + try: + return self.index.partialmatch(id) + except RevlogError: + # parsers.c radix tree lookup gave multiple matches + raise LookupError(id, self.indexfile, _("ambiguous identifier")) + except (AttributeError, ValueError): + # we are pure python, or key was too short to search radix tree + pass + if id in self._pcache: return self._pcache[id]