diff --git a/mercurial/pure/parsers.py b/mercurial/pure/parsers.py
--- a/mercurial/pure/parsers.py
+++ b/mercurial/pure/parsers.py
@@ -17,6 +17,7 @@ from .. import (
 )
 
 from ..revlogutils import nodemap as nodemaputil
+from ..revlogutils import constants as revlog_constants
 
 stringio = pycompat.bytesio
 
@@ -43,13 +44,13 @@ def offset_type(offset, type):
 
 class BaseIndexObject(object):
     # Format of an index entry according to Python's `struct` language
-    index_format = b">Qiiiiii20s12x"
+    index_format = revlog_constants.INDEX_ENTRY_V1.format
     # Size of a C unsigned long long int, platform independent
     big_int_size = struct.calcsize(b'>Q')
     # Size of a C long int, platform independent
     int_size = struct.calcsize(b'>i')
     # Size of the entire index format
-    index_size = struct.calcsize(index_format)
+    index_size = revlog_constants.INDEX_ENTRY_V1.size
     # An empty index entry, used as a default value to be overridden, or nullrev
     null_item = (0, 0, 0, -1, -1, -1, -1, nullid)
 
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -42,6 +42,7 @@ from .revlogutils.constants import (
     FLAG_GENERALDELTA,
     FLAG_INLINE_DATA,
     INDEX_ENTRY_V0,
+    INDEX_ENTRY_V1,
     REVLOGV0,
     REVLOGV1,
     REVLOGV1_FLAGS,
@@ -326,18 +327,6 @@ class revlogoldio(object):
         return INDEX_ENTRY_V0.pack(*e2)
 
 
-# index ng:
-#  6 bytes: offset
-#  2 bytes: flags
-#  4 bytes: compressed length
-#  4 bytes: uncompressed length
-#  4 bytes: base rev
-#  4 bytes: link rev
-#  4 bytes: parent 1 rev
-#  4 bytes: parent 2 rev
-# 32 bytes: nodeid
-indexformatng = struct.Struct(b">Qiiiiii20s12x")
-indexformatng_pack = indexformatng.pack
 versionformat = struct.Struct(b">I")
 versionformat_pack = versionformat.pack
 versionformat_unpack = versionformat.unpack
@@ -349,7 +338,7 @@ versionformat_unpack = versionformat.unp
 
 class revlogio(object):
     def __init__(self):
-        self.size = indexformatng.size
+        self.size = INDEX_ENTRY_V1.size
 
     def parseindex(self, data, inline):
         # call the C implementation to parse the index data
@@ -357,7 +346,7 @@ class revlogio(object):
         return index, cache
 
     def packentry(self, entry, node, version, rev):
-        p = indexformatng_pack(*entry)
+        p = INDEX_ENTRY_V1.pack(*entry)
         if rev == 0:
             p = versionformat_pack(version) + p[4:]
         return p
diff --git a/mercurial/revlogutils/constants.py b/mercurial/revlogutils/constants.py
--- a/mercurial/revlogutils/constants.py
+++ b/mercurial/revlogutils/constants.py
@@ -44,6 +44,19 @@ REVLOGV2_FLAGS = FLAG_INLINE_DATA
 # 20 bytes: nodeid
 INDEX_ENTRY_V0 = struct.Struct(b">4l20s20s20s")
 
+## index v1
+#  6 bytes: offset
+#  2 bytes: flags
+#  4 bytes: compressed length
+#  4 bytes: uncompressed length
+#  4 bytes: base rev
+#  4 bytes: link rev
+#  4 bytes: parent 1 rev
+#  4 bytes: parent 2 rev
+# 32 bytes: nodeid
+INDEX_ENTRY_V1 = struct.Struct(b">Qiiiiii20s12x")
+assert INDEX_ENTRY_V1.size == 32 * 2
+
 # revlog index flags
 
 # For historical reasons, revlog's internal flags were exposed via the