Mercurial > public > mercurial-scm > hg
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 = |