diff rust/hg-core/src/operations/debugdata.rs @ 46167:8a4914397d02

rust: introduce Repo and Vfs types for filesystem abstraction This is similar to the corresponding Python classes. Repo represents a repository and knows the path to the `.hg` directory, the `store` directory, and the working directory. Separating these will enable supporting the share extension. A Vfs is created from a Repo for one of these three directories. It has filesystem access APIs that take a relative std::path::Path as a parameter. Differential Revision: https://phab.mercurial-scm.org/D9596
author Simon Sapin <simon.sapin@octobus.net>
date Mon, 14 Dec 2020 16:33:15 +0100
parents dca9cb99971c
children 645ee7225fab
line wrap: on
line diff
--- a/rust/hg-core/src/operations/debugdata.rs	Sat Dec 19 15:56:54 2020 +0100
+++ b/rust/hg-core/src/operations/debugdata.rs	Mon Dec 14 16:33:15 2020 +0100
@@ -5,8 +5,7 @@
 // This software may be used and distributed according to the terms of the
 // GNU General Public License version 2 or any later version.
 
-use std::path::Path;
-
+use crate::repo::Repo;
 use crate::revlog::revlog::{Revlog, RevlogError};
 use crate::revlog::NodePrefix;
 use crate::revlog::Revision;
@@ -79,15 +78,15 @@
 
 /// Dump the contents data of a revision.
 pub fn debug_data(
-    root: &Path,
+    repo: &Repo,
     rev: &str,
     kind: DebugDataKind,
 ) -> Result<Vec<u8>, DebugDataError> {
     let index_file = match kind {
-        DebugDataKind::Changelog => root.join(".hg/store/00changelog.i"),
-        DebugDataKind::Manifest => root.join(".hg/store/00manifest.i"),
+        DebugDataKind::Changelog => "00changelog.i",
+        DebugDataKind::Manifest => "00manifest.i",
     };
-    let revlog = Revlog::open(&index_file, None)?;
+    let revlog = Revlog::open(repo, index_file, None)?;
 
     let data = match rev.parse::<Revision>() {
         Ok(rev) => revlog.get_rev_data(rev)?,