Mercurial > hg
diff rust/hg-core/src/operations/list_tracked_files.rs @ 46433:4b381dbbf8b7
rhg: centralize parsing of `--rev` CLI arguments
This new module will be the place to implement more of the revset language
when we do so.
Differential Revision: https://phab.mercurial-scm.org/D9873
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Tue, 26 Jan 2021 18:31:46 +0100 |
parents | 645ee7225fab |
children | 3e2d539d0d1a |
line wrap: on
line diff
--- a/rust/hg-core/src/operations/list_tracked_files.rs Mon Jan 25 18:25:26 2021 +0100 +++ b/rust/hg-core/src/operations/list_tracked_files.rs Tue Jan 26 18:31:46 2021 +0100 @@ -9,9 +9,8 @@ use crate::repo::Repo; use crate::revlog::changelog::Changelog; use crate::revlog::manifest::{Manifest, ManifestEntry}; -use crate::revlog::node::{Node, NodePrefix}; +use crate::revlog::node::Node; use crate::revlog::revlog::RevlogError; -use crate::revlog::Revision; use crate::utils::hg_path::HgPath; use crate::{DirstateParseError, EntryState}; use rayon::prelude::*; @@ -137,19 +136,12 @@ /// List files under Mercurial control at a given revision. pub fn list_rev_tracked_files( repo: &Repo, - rev: &str, + revset: &str, ) -> Result<FilesForRev, ListRevTrackedFilesError> { + let rev = crate::revset::resolve_single(revset, repo)?; let changelog = Changelog::open(repo)?; let manifest = Manifest::open(repo)?; - - let changelog_entry = match rev.parse::<Revision>() { - Ok(rev) => changelog.get_rev(rev)?, - _ => { - let changelog_node = NodePrefix::from_hex(&rev) - .or(Err(ListRevTrackedFilesErrorKind::InvalidRevision))?; - changelog.get_node(changelog_node)? - } - }; + let changelog_entry = changelog.get_rev(rev)?; let manifest_node = Node::from_hex(&changelog_entry.manifest_node()?) .or(Err(ListRevTrackedFilesErrorKind::CorruptedRevlog))?; let manifest_entry = manifest.get_node(manifest_node.into())?;