[Updated] D12442: rust-revlog: add methods for getting parent revs and entries
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Mon Apr 11 16:07:19 UTC 2022
martinvonz retitled this revision from "[RFC] rust-revlog: implement more methods on revlogs" to "rust-revlog: add methods for getting parent revs and entries".
martinvonz updated this revision to Diff 33004.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D12442?vs=32990&id=33004
BRANCH
default
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D12442/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D12442
AFFECTED FILES
rust/hg-core/src/revlog/changelog.rs
rust/hg-core/src/revlog/revlog.rs
CHANGE DETAILS
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
@@ -331,6 +331,10 @@
self.rev
}
+ pub fn node(&self) -> &Node {
+ &self.hash
+ }
+
pub fn uncompressed_len(&self) -> Option<u32> {
u32::try_from(self.uncompressed_len).ok()
}
@@ -339,6 +343,38 @@
self.p1 != NULL_REVISION
}
+ pub fn p1_entry(&self) -> Result<Option<RevlogEntry>, RevlogError> {
+ if self.p1 == NULL_REVISION {
+ Ok(None)
+ } else {
+ Ok(Some(self.revlog.get_entry(self.p1)?))
+ }
+ }
+
+ pub fn p2_entry(&self) -> Result<Option<RevlogEntry>, RevlogError> {
+ if self.p2 == NULL_REVISION {
+ Ok(None)
+ } else {
+ Ok(Some(self.revlog.get_entry(self.p2)?))
+ }
+ }
+
+ pub fn p1(&self) -> Option<Revision> {
+ if self.p1 == NULL_REVISION {
+ None
+ } else {
+ Some(self.p1)
+ }
+ }
+
+ pub fn p2(&self) -> Option<Revision> {
+ if self.p2 == NULL_REVISION {
+ None
+ } else {
+ Some(self.p2)
+ }
+ }
+
pub fn is_cencored(&self) -> bool {
(self.flags & REVISION_FLAG_CENSORED) != 0
}
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
@@ -1,6 +1,6 @@
use crate::errors::HgError;
use crate::repo::Repo;
-use crate::revlog::revlog::{Revlog, RevlogError};
+use crate::revlog::revlog::{Revlog, RevlogEntry, RevlogError};
use crate::revlog::Revision;
use crate::revlog::{Node, NodePrefix};
use crate::utils::hg_path::HgPath;
@@ -30,6 +30,14 @@
self.data_for_rev(rev)
}
+ /// Return the `RevlogEntry` of the given revision number.
+ pub fn entry_for_rev(
+ &self,
+ rev: Revision,
+ ) -> Result<RevlogEntry, RevlogError> {
+ self.revlog.get_entry(rev)
+ }
+
/// Return the `ChangelogEntry` of the given revision number.
pub fn data_for_rev(
&self,
@@ -51,6 +59,13 @@
pub fn node_from_rev(&self, rev: Revision) -> Option<&Node> {
self.revlog.node_from_rev(rev)
}
+
+ pub fn rev_from_node(
+ &self,
+ node: NodePrefix,
+ ) -> Result<Revision, RevlogError> {
+ self.revlog.rev_from_node(node)
+ }
}
/// `Changelog` entry which knows how to interpret the `changelog` data bytes.
To: martinvonz, #hg-reviewers, Alphare
Cc: Alphare, Raphael, mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20220411/7bd2a221/attachment-0002.html>
More information about the Mercurial-patches
mailing list