D7658: rust-index: expose a method to retrieve the C index
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Fri Dec 13 20:13:09 UTC 2019
marmoute created this revision.
Herald added subscribers: mercurial-devel, mjpieters, kevincox, durin42.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
The code for `shortesthexnodeidprefix` need to access the actual C index. For
now we grant its wish and expose a method to do so. Once we have the nodemap in
Rust, we will be able to implement the same feature from rust and we will be
able to drop this method.
REPOSITORY
rHG Mercurial
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
Cc: durin42, kevincox, mjpieters, mercurial-devel
More information about the Mercurial-devel
mailing list