Mercurial > public > mercurial-scm > hg
changeset 52397:42bd36bbed67
hg-core: refactor rev parsing in operations::status_rev_rev
This is in preparation for a follow-up changeset that will implement
rhg status --change.
author | Mitchell Kember <mkember@janestreet.com> |
---|---|
date | Tue, 03 Dec 2024 09:37:34 -0500 |
parents | b0b6c28b340b |
children | bde718849153 |
files | rust/rhg/src/commands/status.rs |
diffstat | 1 files changed, 9 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/rhg/src/commands/status.rs Tue Dec 03 09:31:24 2024 -0500 +++ b/rust/rhg/src/commands/status.rs Tue Dec 03 09:37:34 2024 -0500 @@ -162,22 +162,17 @@ repo: &Repo, revs: Option<Vec<String>>, ) -> Result<Option<(Revision, Revision)>, CommandError> { - let revs = match revs { - None => return Ok(None), - Some(revs) => revs, + let Some(revs) = revs else { + return Ok(None); }; - if revs.is_empty() { - return Ok(None); + match revs.as_slice() { + [] => Ok(None), + [rev1, rev2] => Ok(Some(( + hg::revset::resolve_single(rev1, repo)?, + hg::revset::resolve_single(rev2, repo)?, + ))), + _ => Err(CommandError::unsupported("expected 0 or 2 --rev flags")), } - if revs.len() != 2 { - return Err(CommandError::unsupported("expected 0 or 2 --rev flags")); - } - - let rev1 = &revs[0]; - let rev2 = &revs[1]; - let rev1 = hg::revset::resolve_single(rev1, repo)?; - let rev2 = hg::revset::resolve_single(rev2, repo)?; - Ok(Some((rev1, rev2))) } /// Pure data type allowing the caller to specify file states to display