Patchwork D10792: revlog: move `offset_type` to `revlogutils`

login
register
mail settings
Submitter phabricator
Date May 30, 2021, 5:31 p.m.
Message ID <differential-rev-PHID-DREV-zuz2dmh3br6k7cp6rm3e-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/49116/
State Superseded
Headers show

Comments

phabricator - May 30, 2021, 5:31 p.m.
marmoute created this revision.
Herald added a reviewer: indygreg.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This multiple module are using this so it make sense to move it at the utility
  level.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D10792

AFFECTED FILES
  mercurial/bundlerepo.py
  mercurial/pure/parsers.py
  mercurial/revlog.py
  mercurial/revlogutils/__init__.py
  mercurial/revlogutils/revlogv0.py
  tests/flagprocessorext.py

CHANGE DETAILS




To: marmoute, indygreg, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/tests/flagprocessorext.py b/tests/flagprocessorext.py
--- a/tests/flagprocessorext.py
+++ b/tests/flagprocessorext.py
@@ -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
diff --git a/mercurial/revlogutils/revlogv0.py b/mercurial/revlogutils/revlogv0.py
--- a/mercurial/revlogutils/revlogv0.py
+++ b/mercurial/revlogutils/revlogv0.py
@@ -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],
diff --git a/mercurial/revlogutils/__init__.py b/mercurial/revlogutils/__init__.py
--- a/mercurial/revlogutils/__init__.py
+++ b/mercurial/revlogutils/__init__.py
@@ -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)
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -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."""
@@ -2586,7 +2581,7 @@ 
             sidedata_offset = 0
 
         e = (
-            offset_type(offset, flags),
+            revlogutils.offset_type(offset, flags),
             deltainfo.deltalen,
             textlen,
             deltainfo.base,
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 (
     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):
diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
--- a/mercurial/bundlerepo.py
+++ b/mercurial/bundlerepo.py
@@ -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,