index: replace insert(-1, e) method by append(e) method
I want to make index[len(index) - 1] be the tip revision, not null
revision as it is today. insert(-1, e) will then make little
sense. Since insert() currently requires the first argument to be -1,
it seems simpler to replace it by a method that allows insertion only
at the end.
Note that revlogoldindex already has this method (by virtue of
extending list).
Differential Revision: https://phab.mercurial-scm.org/D4021
--- a/mercurial/bundlerepo.py Fri Jul 20 14:25:59 2018 -0700
+++ b/mercurial/bundlerepo.py Wed Aug 01 10:57:14 2018 -0700
@@ -80,7 +80,7 @@
# start, size, full unc. size, base (unused), link, p1, p2, node
e = (revlog.offset_type(start, flags), size, -1, baserev, link,
self.rev(p1), self.rev(p2), node)
- self.index.insert(-1, e)
+ self.index.append(e)
self.nodemap[node] = n
self.bundlerevs.add(n)
n += 1
--- a/mercurial/cext/parsers.c Fri Jul 20 14:25:59 2018 -0700
+++ b/mercurial/cext/parsers.c Wed Aug 01 10:57:14 2018 -0700
@@ -713,7 +713,7 @@
void manifest_module_init(PyObject *mod);
void revlog_module_init(PyObject *mod);
-static const int version = 5;
+static const int version = 6;
static void module_init(PyObject *mod)
{
--- a/mercurial/cext/revlog.c Fri Jul 20 14:25:59 2018 -0700
+++ b/mercurial/cext/revlog.c Wed Aug 01 10:57:14 2018 -0700
@@ -272,16 +272,11 @@
return -1;
}
-static PyObject *index_insert(indexObject *self, PyObject *args)
+static PyObject *index_append(indexObject *self, PyObject *obj)
{
- PyObject *obj;
char *node;
- int index;
Py_ssize_t len;
- if (!PyArg_ParseTuple(args, "iO", &index, &obj))
- return NULL;
-
if (!PyTuple_Check(obj) || PyTuple_GET_SIZE(obj) != 8) {
PyErr_SetString(PyExc_TypeError, "8-tuple required");
return NULL;
@@ -292,15 +287,6 @@
len = index_length(self);
- if (index < 0)
- index += len;
-
- if (index != len - 1) {
- PyErr_SetString(PyExc_IndexError,
- "insert only supported at index -1");
- return NULL;
- }
-
if (self->added == NULL) {
self->added = PyList_New(0);
if (self->added == NULL)
@@ -311,7 +297,7 @@
return NULL;
if (self->nt)
- nt_insert(self, node, index);
+ nt_insert(self, node, len - 1);
Py_CLEAR(self->headrevs);
Py_RETURN_NONE;
@@ -2065,8 +2051,8 @@
"get filtered head revisions"}, /* Can always do filtering */
{"deltachain", (PyCFunction)index_deltachain, METH_VARARGS,
"determine revisions with deltas to reconstruct fulltext"},
- {"insert", (PyCFunction)index_insert, METH_VARARGS,
- "insert an index entry"},
+ {"append", (PyCFunction)index_append, METH_O,
+ "append an index entry"},
{"partialmatch", (PyCFunction)index_partialmatch, METH_VARARGS,
"match a potentially ambiguous node ID"},
{"shortest", (PyCFunction)index_shortest, METH_VARARGS,
--- a/mercurial/policy.py Fri Jul 20 14:25:59 2018 -0700
+++ b/mercurial/policy.py Wed Aug 01 10:57:14 2018 -0700
@@ -69,7 +69,7 @@
(r'cext', r'bdiff'): 3,
(r'cext', r'mpatch'): 1,
(r'cext', r'osutil'): 4,
- (r'cext', r'parsers'): 5,
+ (r'cext', r'parsers'): 6,
}
# map import request to other package or module
--- a/mercurial/pure/parsers.py Fri Jul 20 14:25:59 2018 -0700
+++ b/mercurial/pure/parsers.py Wed Aug 01 10:57:14 2018 -0700
@@ -41,8 +41,7 @@
def __len__(self):
return self._lgt + len(self._extra) + 1
- def insert(self, i, tup):
- assert i == -1
+ def append(self, tup):
self._extra.append(tup)
def _fix_index(self, i):
--- a/mercurial/revlog.py Fri Jul 20 14:25:59 2018 -0700
+++ b/mercurial/revlog.py Wed Aug 01 10:57:14 2018 -0700
@@ -2549,7 +2549,7 @@
e = (offset_type(offset, flags), l, textlen,
base, link, p1r, p2r, node)
- self.index.insert(-1, e)
+ self.index.append(e)
self.nodemap[node] = curr
entry = self._io.packentry(e, self.node, self.version, curr)
--- a/mercurial/unionrepo.py Fri Jul 20 14:25:59 2018 -0700
+++ b/mercurial/unionrepo.py Wed Aug 01 10:57:14 2018 -0700
@@ -73,7 +73,7 @@
# I have no idea if csize is valid in the base revlog context.
e = (flags, None, rsize, base,
link, self.rev(p1node), self.rev(p2node), node)
- self.index.insert(-1, e)
+ self.index.append(e)
self.nodemap[node] = n
self.bundlerevs.add(n)
n += 1