Patchwork D11414: rust: Make private the `index` field of the `Revlog` struct

login
register
mail settings
Submitter phabricator
Date Sept. 14, 2021, 4:45 p.m.
Message ID <differential-rev-PHID-DREV-47a6le45dwditvh3gqeb-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/49729/
State Superseded
Headers show

Comments

phabricator - Sept. 14, 2021, 4:45 p.m.
SimonSapin created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  To replace the previous use of this field from another module, add a
  `node_from_rev` method. This is the same method that already existed on
  `Changelog`.

REPOSITORY
  rHG Mercurial

BRANCH
  default

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

AFFECTED FILES
  rust/hg-core/src/revlog/changelog.rs
  rust/hg-core/src/revlog/revlog.rs

CHANGE DETAILS




To: SimonSapin, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/rust/hg-core/src/revlog/revlog.rs b/rust/hg-core/src/revlog/revlog.rs
--- a/rust/hg-core/src/revlog/revlog.rs
+++ b/rust/hg-core/src/revlog/revlog.rs
@@ -18,7 +18,7 @@ 
 use crate::errors::HgError;
 use crate::repo::Repo;
 use crate::revlog::Revision;
-use crate::NULL_REVISION;
+use crate::{Node, NULL_REVISION};
 
 #[derive(derive_more::From)]
 pub enum RevlogError {
@@ -51,7 +51,7 @@ 
     /// When index and data are not interleaved: bytes of the revlog index.
     /// When index and data are interleaved: bytes of the revlog index and
     /// data.
-    pub(crate) index: Index,
+    index: Index,
     /// When index and data are not interleaved: bytes of the revlog data
     data_bytes: Option<Box<dyn Deref<Target = [u8]> + Send>>,
     /// When present on disk: the persistent nodemap for this revlog
@@ -119,6 +119,11 @@ 
         self.index.is_empty()
     }
 
+    /// Returns the node ID for the given revision number, if it exists in this revlog
+    pub fn node_from_rev(&self, rev: Revision) -> Option<&Node> {
+        Some(self.index.get_entry(rev)?.hash())
+    }
+
     /// Return the full data associated to a node.
     #[timed]
     pub fn get_node_rev(
diff --git a/rust/hg-core/src/revlog/changelog.rs b/rust/hg-core/src/revlog/changelog.rs
--- a/rust/hg-core/src/revlog/changelog.rs
+++ b/rust/hg-core/src/revlog/changelog.rs
@@ -36,7 +36,7 @@ 
     }
 
     pub fn node_from_rev(&self, rev: Revision) -> Option<&Node> {
-        Some(self.revlog.index.get_entry(rev)?.hash())
+        self.revlog.node_from_rev(rev)
     }
 }