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) } } 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 + 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(