--- a/rust/hg-core/src/repo.rs Mon Sep 13 18:02:45 2021 +0200
+++ b/rust/hg-core/src/repo.rs Mon Sep 13 18:09:10 2021 +0200
@@ -5,15 +5,15 @@
use crate::dirstate_tree::owning::OwningDirstateMap;
use crate::errors::HgError;
use crate::errors::HgResultExt;
+use crate::exit_codes;
use crate::manifest::{Manifest, Manifestlog};
-use crate::requirements;
use crate::revlog::filelog::Filelog;
use crate::revlog::revlog::RevlogError;
use crate::utils::files::get_path_from_bytes;
use crate::utils::hg_path::HgPath;
use crate::utils::SliceExt;
use crate::vfs::{is_dir, is_file, Vfs};
-use crate::{exit_codes, Node};
+use crate::{requirements, NodePrefix};
use crate::{DirstateError, Revision};
use std::cell::{Cell, Ref, RefCell, RefMut};
use std::collections::HashSet;
@@ -336,17 +336,27 @@
self.manifestlog.get_mut_or_init(self)
}
+ /// Returns the manifest of the given node ID
+ pub fn manifest_for_node(
+ &self,
+ node: impl Into<NodePrefix>,
+ ) -> Result<Manifest, RevlogError> {
+ self.manifestlog()?.get_node(
+ self.changelog()?
+ .get_node(node.into())?
+ .manifest_node()?
+ .into(),
+ )
+ }
+
/// Returns the manifest of the given revision
- pub fn manifest(
+ pub fn manifest_for_rev(
&self,
revision: Revision,
) -> Result<Manifest, RevlogError> {
- let changelog = self.changelog()?;
- let manifest = self.manifestlog()?;
- let changelog_entry = changelog.get_rev(revision)?;
- let manifest_node =
- Node::from_hex_for_repo(&changelog_entry.manifest_node()?)?;
- manifest.get_node(manifest_node.into())
+ self.manifestlog()?.get_node(
+ self.changelog()?.get_rev(revision)?.manifest_node()?.into(),
+ )
}
pub fn filelog(&self, path: &HgPath) -> Result<Filelog, HgError> {