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