Mercurial > hg
diff rust/hg-core/src/revset.rs @ 48078:ddde80830aea
rust-revset: add separate match logic for shortcuts
The next change will add a shortcut for the `.` revision.
One day we might start matching `tip` and others, so this is an easy refactor.
Differential Revision: https://phab.mercurial-scm.org/D11401
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Sat, 11 Sep 2021 00:05:08 +0200 |
parents | 6f579618ea7b |
children | 3da7bf75fdb2 |
line wrap: on
line diff
--- a/rust/hg-core/src/revset.rs Mon Sep 13 15:12:35 2021 +0200 +++ b/rust/hg-core/src/revset.rs Sat Sep 11 00:05:08 2021 +0200 @@ -18,21 +18,19 @@ ) -> Result<Revision, RevlogError> { let changelog = repo.changelog()?; - match resolve_rev_number_or_hex_prefix(input, &changelog.revlog) { - Err(RevlogError::InvalidRevision) => {} // Try other syntax - result => return result, + match input { + "null" => return Ok(NULL_REVISION), + _ => {} } - if input == "null" { - return Ok(NULL_REVISION); + match resolve_rev_number_or_hex_prefix(input, &changelog.revlog) { + Err(RevlogError::InvalidRevision) => { + // TODO: support for the rest of the language here. + let msg = format!("cannot parse revset '{}'", input); + Err(HgError::unsupported(msg).into()) + } + result => return result, } - - // TODO: support for the rest of the language here. - - Err( - HgError::unsupported(format!("cannot parse revset '{}'", input)) - .into(), - ) } /// Resolve the small subset of the language suitable for revlogs other than