comparison rust/hg-core/src/operations/cat.rs @ 47959:21d25e9ee58e

rust: Keep lazily-initialized Changelog and Manifest log on the Repo object That way if one of them is accessed multiple times it won?t be reopened from the filesystem. Differential Revision: https://phab.mercurial-scm.org/D11406
author Simon Sapin <simon.sapin@octobus.net>
date Mon, 13 Sep 2021 13:29:55 +0200
parents d44740725b95
children cfb6e6699b25
comparison
equal deleted inserted replaced
47958:fc208d6faed3 47959:21d25e9ee58e
6 // GNU General Public License version 2 or any later version. 6 // GNU General Public License version 2 or any later version.
7 7
8 use std::path::PathBuf; 8 use std::path::PathBuf;
9 9
10 use crate::repo::Repo; 10 use crate::repo::Repo;
11 use crate::revlog::changelog::Changelog;
12 use crate::revlog::manifest::Manifestlog;
13 use crate::revlog::path_encode::path_encode; 11 use crate::revlog::path_encode::path_encode;
14 use crate::revlog::revlog::Revlog; 12 use crate::revlog::revlog::Revlog;
15 use crate::revlog::revlog::RevlogError; 13 use crate::revlog::revlog::RevlogError;
16 use crate::revlog::Node; 14 use crate::revlog::Node;
17 use crate::utils::files::get_path_from_bytes; 15 use crate::utils::files::get_path_from_bytes;
40 repo: &Repo, 38 repo: &Repo,
41 revset: &str, 39 revset: &str,
42 files: &'a [HgPathBuf], 40 files: &'a [HgPathBuf],
43 ) -> Result<CatOutput, RevlogError> { 41 ) -> Result<CatOutput, RevlogError> {
44 let rev = crate::revset::resolve_single(revset, repo)?; 42 let rev = crate::revset::resolve_single(revset, repo)?;
45 let changelog = Changelog::open(repo)?; 43 let changelog = repo.changelog()?;
46 let manifest = Manifestlog::open(repo)?; 44 let manifest = repo.manifestlog()?;
47 let changelog_entry = changelog.get_rev(rev)?; 45 let changelog_entry = changelog.get_rev(rev)?;
48 let node = *changelog 46 let node = *changelog
49 .node_from_rev(rev) 47 .node_from_rev(rev)
50 .expect("should succeed when changelog.get_rev did"); 48 .expect("should succeed when changelog.get_rev did");
51 let manifest_node = 49 let manifest_node =