rust/hg-core/src/operations/list_tracked_files.rs
changeset 46167 8a4914397d02
parent 46135 dca9cb99971c
child 46431 645ee7225fab
--- a/rust/hg-core/src/operations/list_tracked_files.rs	Sat Dec 19 15:56:54 2020 +0100
+++ b/rust/hg-core/src/operations/list_tracked_files.rs	Mon Dec 14 16:33:15 2020 +0100
@@ -6,6 +6,7 @@
 // GNU General Public License version 2 or any later version.
 
 use crate::dirstate::parsers::parse_dirstate;
+use crate::repo::Repo;
 use crate::revlog::changelog::Changelog;
 use crate::revlog::manifest::{Manifest, ManifestEntry};
 use crate::revlog::node::{Node, NodePrefix};
@@ -15,8 +16,6 @@
 use crate::{DirstateParseError, EntryState};
 use rayon::prelude::*;
 use std::convert::From;
-use std::fs;
-use std::path::Path;
 
 /// Kind of error encountered by `ListDirstateTrackedFiles`
 #[derive(Debug)]
@@ -57,9 +56,8 @@
 }
 
 impl Dirstate {
-    pub fn new(root: &Path) -> Result<Self, ListDirstateTrackedFilesError> {
-        let dirstate = root.join(".hg/dirstate");
-        let content = fs::read(&dirstate)?;
+    pub fn new(repo: &Repo) -> Result<Self, ListDirstateTrackedFilesError> {
+        let content = repo.hg_vfs().read("dirstate")?;
         Ok(Self { content })
     }
 
@@ -138,11 +136,11 @@
 
 /// List files under Mercurial control at a given revision.
 pub fn list_rev_tracked_files(
-    root: &Path,
+    repo: &Repo,
     rev: &str,
 ) -> Result<FilesForRev, ListRevTrackedFilesError> {
-    let changelog = Changelog::open(root)?;
-    let manifest = Manifest::open(root)?;
+    let changelog = Changelog::open(repo)?;
+    let manifest = Manifest::open(repo)?;
 
     let changelog_entry = match rev.parse::<Revision>() {
         Ok(rev) => changelog.get_rev(rev)?,