diff rust/hg-core/src/revlog/revlog.rs @ 49123:5d205e476057

rust-revlog: add methods for getting parent revs and entries Differential Revision: https://phab.mercurial-scm.org/D12442
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 05 Apr 2022 12:06:32 -0700
parents e91aa800ae5b
children 07d8d144c222
line wrap: on
line diff
--- a/rust/hg-core/src/revlog/revlog.rs	Tue Apr 05 08:47:04 2022 -0700
+++ b/rust/hg-core/src/revlog/revlog.rs	Tue Apr 05 12:06:32 2022 -0700
@@ -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
     }