Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-core/src/operations/debugdata.rs @ 46501: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/debugdata.rs Mon Jan 25 18:25:26 2021 +0100 +++ b/rust/hg-core/src/operations/debugdata.rs Tue Jan 26 18:31:46 2021 +0100 @@ -7,8 +7,6 @@ use crate::repo::Repo; use crate::revlog::revlog::{Revlog, RevlogError}; -use crate::revlog::NodePrefix; -use crate::revlog::Revision; /// Kind of data to debug #[derive(Debug, Copy, Clone)] @@ -79,7 +77,7 @@ /// Dump the contents data of a revision. pub fn debug_data( repo: &Repo, - rev: &str, + revset: &str, kind: DebugDataKind, ) -> Result<Vec<u8>, DebugDataError> { let index_file = match kind { @@ -87,16 +85,8 @@ DebugDataKind::Manifest => "00manifest.i", }; let revlog = Revlog::open(repo, index_file, None)?; - - let data = match rev.parse::<Revision>() { - Ok(rev) => revlog.get_rev_data(rev)?, - _ => { - let node = NodePrefix::from_hex(&rev) - .map_err(|_| DebugDataErrorKind::InvalidRevision)?; - let rev = revlog.get_node_rev(node)?; - revlog.get_rev_data(rev)? - } - }; - + let rev = + crate::revset::resolve_rev_number_or_hex_prefix(revset, &revlog)?; + let data = revlog.get_rev_data(rev)?; Ok(data) }