D7658: rust-index: expose a method to retrieve the C index
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Fri Dec 27 17:13:11 UTC 2019
marmoute updated this revision to Diff 18942.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D7658?vs=18891&id=18942
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