changeset 47400:ac60a1366a49

revlog: move `offset_type` to `revlogutils` This multiple module are using this so it make sense to move it at the utility level. Differential Revision: https://phab.mercurial-scm.org/D10792
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sun, 30 May 2021 16:19:36 +0200
parents 7a0ec25d5836
children a669404f0f4a
files mercurial/bundlerepo.py mercurial/pure/parsers.py mercurial/revlog.py mercurial/revlogutils/__init__.py mercurial/revlogutils/revlogv0.py tests/flagprocessorext.py
diffstat 6 files changed, 19 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/bundlerepo.py	Sat May 22 00:06:22 2021 +0200
+++ b/mercurial/bundlerepo.py	Sun May 30 16:19:36 2021 +0200
@@ -39,6 +39,7 @@
     phases,
     pycompat,
     revlog,
+    revlogutils,
     util,
     vfs as vfsmod,
 )
@@ -95,7 +96,7 @@
             baserev = self.rev(deltabase)
             # start, size, full unc. size, base (unused), link, p1, p2, node, sidedata_offset (unused), sidedata_size (unused)
             e = (
-                revlog.offset_type(start, flags),
+                revlogutils.offset_type(start, flags),
                 size,
                 -1,
                 baserev,
--- a/mercurial/pure/parsers.py	Sat May 22 00:06:22 2021 +0200
+++ b/mercurial/pure/parsers.py	Sun May 30 16:19:36 2021 +0200
@@ -17,6 +17,7 @@
 from .. import (
     error,
     pycompat,
+    revlogutils,
     util,
 )
 
@@ -42,10 +43,6 @@
     return int(q & 0xFFFF)
 
 
-def offset_type(offset, type):
-    return int(int(offset) << 16 | type)
-
-
 class BaseIndexObject(object):
     # Can I be passed to an algorithme implemented in Rust ?
     rust_ext_compat = 0
@@ -145,7 +142,8 @@
             data = self._data[index : index + self.entry_size]
         r = self._unpack_entry(i, data)
         if self._lgt and i == 0:
-            r = (offset_type(0, gettype(r[0])),) + r[1:]
+            offset = revlogutils.offset_type(0, gettype(r[0]))
+            r = (offset,) + r[1:]
         return r
 
     def _unpack_entry(self, rev, data):
--- a/mercurial/revlog.py	Sat May 22 00:06:22 2021 +0200
+++ b/mercurial/revlog.py	Sun May 30 16:19:36 2021 +0200
@@ -72,6 +72,7 @@
     mdiff,
     policy,
     pycompat,
+    revlogutils,
     templatefilters,
     util,
 )
@@ -146,12 +147,6 @@
 )
 
 
-def offset_type(offset, type):
-    if (type & ~flagutil.REVIDX_KNOWN_FLAGS) != 0:
-        raise ValueError(b'unknown revlog index flags')
-    return int(int(offset) << 16 | type)
-
-
 def _verify_revision(rl, skipflags, state, node):
     """Verify the integrity of the given revlog ``node`` while providing a hook
     point for extensions to influence the operation."""
@@ -2590,7 +2585,7 @@
             sidedata_offset = 0
 
         e = (
-            offset_type(offset, flags),
+            revlogutils.offset_type(offset, flags),
             deltainfo.deltalen,
             textlen,
             deltainfo.base,
--- a/mercurial/revlogutils/__init__.py	Sat May 22 00:06:22 2021 +0200
+++ b/mercurial/revlogutils/__init__.py	Sun May 30 16:19:36 2021 +0200
@@ -6,3 +6,11 @@
 # GNU General Public License version 2 or any later version.
 
 from __future__ import absolute_import
+
+from ..interfaces import repository
+
+
+def offset_type(offset, type):
+    if (type & ~repository.REVISION_FLAGS_KNOWN) != 0:
+        raise ValueError(b'unknown revlog index flags: %d' % type)
+    return int(int(offset) << 16 | type)
--- a/mercurial/revlogutils/revlogv0.py	Sat May 22 00:06:22 2021 +0200
+++ b/mercurial/revlogutils/revlogv0.py	Sun May 30 16:19:36 2021 +0200
@@ -18,6 +18,7 @@
     error,
     node,
     pycompat,
+    revlogutils,
     util,
 )
 
@@ -35,12 +36,6 @@
     return int(q & 0xFFFF)
 
 
-def offset_type(offset, type):
-    if (type & ~flagutil.REVIDX_KNOWN_FLAGS) != 0:
-        raise ValueError(b'unknown revlog index flags')
-    return int(int(offset) << 16 | type)
-
-
 class revlogoldindex(list):
     rust_ext_compat = 0
     entry_size = INDEX_ENTRY_V0.size
@@ -143,7 +138,7 @@
         e = INDEX_ENTRY_V0.unpack(cur)
         # transform to revlogv1 format
         e2 = (
-            offset_type(e[0], 0),
+            revlogutils.offset_type(e[0], 0),
             e[1],
             -1,
             e[2],
--- a/tests/flagprocessorext.py	Sat May 22 00:06:22 2021 +0200
+++ b/tests/flagprocessorext.py	Sun May 30 16:19:36 2021 +0200
@@ -13,6 +13,7 @@
     util,
 )
 from mercurial.revlogutils import flagutil
+from mercurial.interfaces import repository
 
 # Test only: These flags are defined here only in the context of testing the
 # behavior of the flag processor. The canonical way to add flags is to get in
@@ -131,6 +132,7 @@
     # Teach revlog about our test flags
     flags = [REVIDX_NOOP, REVIDX_BASE64, REVIDX_GZIP, REVIDX_FAIL]
     flagutil.REVIDX_KNOWN_FLAGS |= util.bitsfrom(flags)
+    repository.REVISION_FLAGS_KNOWN |= util.bitsfrom(flags)
     revlog.REVIDX_FLAGS_ORDER.extend(flags)
 
     # Teach exchange to use changegroup 3