Show More
@@ -1029,6 +1029,27 b' static int index_issnapshotrev(indexObje' | |||
|
1029 | 1029 | return rev == -1; |
|
1030 | 1030 | } |
|
1031 | 1031 | |
|
1032 | static PyObject *index_issnapshot(indexObject *self, PyObject *value) | |
|
1033 | { | |
|
1034 | long rev; | |
|
1035 | int issnap; | |
|
1036 | Py_ssize_t length = index_length(self); | |
|
1037 | ||
|
1038 | if (!pylong_to_long(value, &rev)) { | |
|
1039 | return NULL; | |
|
1040 | } | |
|
1041 | if (rev < -1 || rev >= length) { | |
|
1042 | PyErr_Format(PyExc_ValueError, "revlog index out of range: %ld", | |
|
1043 | rev); | |
|
1044 | return NULL; | |
|
1045 | }; | |
|
1046 | issnap = index_issnapshotrev(self, (Py_ssize_t)rev); | |
|
1047 | if (issnap < 0) { | |
|
1048 | return NULL; | |
|
1049 | }; | |
|
1050 | return PyBool_FromLong((long)issnap); | |
|
1051 | } | |
|
1052 | ||
|
1032 | 1053 | static PyObject *index_deltachain(indexObject *self, PyObject *args) |
|
1033 | 1054 | { |
|
1034 | 1055 | int rev, generaldelta; |
@@ -2641,6 +2662,8 b' static PyMethodDef index_methods[] = {' | |||
|
2641 | 2662 | "get head revisions"}, /* Can do filtering since 3.2 */ |
|
2642 | 2663 | {"headrevsfiltered", (PyCFunction)index_headrevs, METH_VARARGS, |
|
2643 | 2664 | "get filtered head revisions"}, /* Can always do filtering */ |
|
2665 | {"issnapshot", (PyCFunction)index_issnapshot, METH_O, | |
|
2666 | "True if the object is a snapshot"}, | |
|
2644 | 2667 | {"deltachain", (PyCFunction)index_deltachain, METH_VARARGS, |
|
2645 | 2668 | "determine revisions with deltas to reconstruct fulltext"}, |
|
2646 | 2669 | {"slicechunktodensity", (PyCFunction)index_slicechunktodensity, |
@@ -1533,14 +1533,18 b' class revlog(object):' | |||
|
1533 | 1533 | def issnapshot(self, rev): |
|
1534 | 1534 | """tells whether rev is a snapshot |
|
1535 | 1535 | """ |
|
1536 | if not self._sparserevlog: | |
|
1537 | return self.deltaparent(rev) == nullrev | |
|
1538 | elif util.safehasattr(self.index, 'issnapshot'): | |
|
1539 | # directly assign the method to cache the testing and access | |
|
1540 | self.issnapshot = self.index.issnapshot | |
|
1541 | return self.issnapshot(rev) | |
|
1536 | 1542 | if rev == nullrev: |
|
1537 | 1543 | return True |
|
1538 | 1544 | entry = self.index[rev] |
|
1539 | 1545 | base = entry[3] |
|
1540 | 1546 | if base == rev: |
|
1541 | 1547 | return True |
|
1542 | elif not self._sparserevlog: | |
|
1543 | return False | |
|
1544 | 1548 | if base == nullrev: |
|
1545 | 1549 | return True |
|
1546 | 1550 | p1 = entry[5] |
General Comments 0
You need to be logged in to leave comments.
Login now