D7658: rust-index: expose a method to retrieve the C index

gracinet (Georges Racinet) phabricator at mercurial-scm.org
Wed Jan 8 13:11:07 EST 2020


Closed by commit rHG443dc1655923: rust-index: expose a method to retrieve the C index (authored by gracinet).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Review".

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D7658?vs=18942&id=19082

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7658/new/

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

AFFECTED FILES
  rust/hg-cpython/src/revlog.rs
  tests/test-rust-revlog.py

CHANGE DETAILS

diff --git a/tests/test-rust-revlog.py b/tests/test-rust-revlog.py
--- a/tests/test-rust-revlog.py
+++ b/tests/test-rust-revlog.py
@@ -25,6 +25,13 @@
         rustidx = revlog.MixedIndex(idx)
         self.assertEqual(rustidx.headrevs(), idx.headrevs())
 
+    def test_get_cindex(self):
+        # drop me once we no longer need the method for shortest node
+        idx = self.parseindex()
+        rustidx = revlog.MixedIndex(idx)
+        cidx = rustidx.get_cindex()
+        self.assertTrue(idx is cidx)
+
     def test_len(self):
         idx = self.parseindex()
         rustidx = revlog.MixedIndex(idx)
diff --git a/rust/hg-cpython/src/revlog.rs b/rust/hg-cpython/src/revlog.rs
--- a/rust/hg-cpython/src/revlog.rs
+++ b/rust/hg-cpython/src/revlog.rs
@@ -29,6 +29,17 @@
             cindex::Index::new(py, cindex)?))
     }
 
+    /// Compatibility layer used for Python consumers needing access to the C index
+    ///
+    /// Only use case so far is `scmutil.shortesthexnodeidprefix`,
+    /// that may need to build a custom `nodetree`, based on a specified revset.
+    /// With a Rust implementation of the nodemap, we will be able to get rid of
+    /// this, by exposing our own standalone nodemap class,
+    /// ready to accept `MixedIndex`.
+    def get_cindex(&self) -> PyResult<PyObject> {
+        Ok(self.cindex(py).borrow().inner().clone_ref(py))
+    }
+
 
     // Reforwarded C index API
 



To: marmoute, #hg-reviewers, Alphare
Cc: durin42, kevincox, mjpieters, mercurial-devel


More information about the Mercurial-devel mailing list