diff rust/hg-core/src/revlog/changelog.rs @ 48198:61ce70fd420e

rhg: handle null changelog and manifest revisions Differential Revision: https://phab.mercurial-scm.org/D11650
author Arseniy Alekseyev <aalekseyev@janestreet.com>
date Tue, 12 Oct 2021 19:43:51 +0100
parents 87e3f878e65f
children 20d0d896183e
line wrap: on
line diff
--- a/rust/hg-core/src/revlog/changelog.rs	Tue Oct 12 15:43:45 2021 +0200
+++ b/rust/hg-core/src/revlog/changelog.rs	Tue Oct 12 19:43:51 2021 +0100
@@ -1,5 +1,6 @@
 use crate::errors::HgError;
 use crate::repo::Repo;
+use crate::revlog::node::NULL_NODE;
 use crate::revlog::revlog::{Revlog, RevlogError};
 use crate::revlog::Revision;
 use crate::revlog::{Node, NodePrefix};
@@ -58,10 +59,9 @@
     /// Return the node id of the `manifest` referenced by this `changelog`
     /// entry.
     pub fn manifest_node(&self) -> Result<Node, HgError> {
-        Node::from_hex_for_repo(
-            self.lines()
-                .next()
-                .ok_or_else(|| HgError::corrupted("empty changelog entry"))?,
-        )
+        match self.lines().next() {
+            None => Ok(NULL_NODE),
+            Some(x) => Node::from_hex_for_repo(x),
+        }
     }
 }