comparison rust/hg-core/src/revset.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 e8ae91b1a63d
children 8c29af0f6d6e
comparison
equal deleted inserted replaced
47958:fc208d6faed3 47959:21d25e9ee58e
2 //! 2 //!
3 //! <https://www.mercurial-scm.org/repo/hg/help/revsets> 3 //! <https://www.mercurial-scm.org/repo/hg/help/revsets>
4 4
5 use crate::errors::HgError; 5 use crate::errors::HgError;
6 use crate::repo::Repo; 6 use crate::repo::Repo;
7 use crate::revlog::changelog::Changelog;
8 use crate::revlog::revlog::{Revlog, RevlogError}; 7 use crate::revlog::revlog::{Revlog, RevlogError};
9 use crate::revlog::NodePrefix; 8 use crate::revlog::NodePrefix;
10 use crate::revlog::{Revision, NULL_REVISION, WORKING_DIRECTORY_HEX}; 9 use crate::revlog::{Revision, NULL_REVISION, WORKING_DIRECTORY_HEX};
11 use crate::Node; 10 use crate::Node;
12 11
15 /// Only some of the revset language is implemented yet. 14 /// Only some of the revset language is implemented yet.
16 pub fn resolve_single( 15 pub fn resolve_single(
17 input: &str, 16 input: &str,
18 repo: &Repo, 17 repo: &Repo,
19 ) -> Result<Revision, RevlogError> { 18 ) -> Result<Revision, RevlogError> {
20 let changelog = Changelog::open(repo)?; 19 let changelog = repo.changelog()?;
21 20
22 match resolve_rev_number_or_hex_prefix(input, &changelog.revlog) { 21 match resolve_rev_number_or_hex_prefix(input, &changelog.revlog) {
23 Err(RevlogError::InvalidRevision) => {} // Try other syntax 22 Err(RevlogError::InvalidRevision) => {} // Try other syntax
24 result => return result, 23 result => return result,
25 } 24 }