Mercurial > hg-stable
diff mercurial/pure/parsers.py @ 38890:781b2720d2ac
index: don't include nullid in len()
I suspect the reason the nullid is in the index in the last position
is that it lets index[i] for regular revision number, even when index
was just a regular Python list. An alternative solution would have
been to reserve revision number 0 for the null revision. I don't know
why that wasn't done. Now that we have classes backing the index, we
can easily make index[-1] get the nullid without having to put it last
in the list and including it in the len().
This patch just hides the nullid -- it will still be accessible at
index[len(index)].
I realize that this will be annoying when checking out across this
commit for debugging (including bisection).
Differential Revision: https://phab.mercurial-scm.org/D4022
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 20 Jul 2018 08:10:32 -0700 |
parents | 6104b203bec8 |
children | a1f934573c0b |
line wrap: on
line diff
--- a/mercurial/pure/parsers.py Wed Aug 01 10:57:14 2018 -0700 +++ b/mercurial/pure/parsers.py Fri Jul 20 08:10:32 2018 -0700 @@ -39,7 +39,7 @@ class BaseIndexObject(object): def __len__(self): - return self._lgt + len(self._extra) + 1 + return self._lgt + len(self._extra) def append(self, tup): self._extra.append(tup) @@ -47,12 +47,12 @@ def _fix_index(self, i): if not isinstance(i, int): raise TypeError("expecting int indexes") - if i < 0 or i >= len(self): + if i < 0 or i >= len(self) + 1: raise IndexError return i def __getitem__(self, i): - if i == -1 or i == len(self) - 1: + if i == -1 or i == len(self): return (0, 0, 0, -1, -1, -1, -1, nullid) i = self._fix_index(i) if i >= self._lgt: