comparison rust/hg-core/src/operations/debugdata.rs @ 46033:88e741bf2d93

rust: use NodePrefix::from_hex instead of hex::decode directly This adds support for prefixes with an odd number of hex digits. Differential Revision: https://phab.mercurial-scm.org/D9490
author Simon Sapin <simon-commits@exyr.org>
date Wed, 02 Dec 2020 15:00:49 +0100
parents 8d6164098782
children dca9cb99971c
comparison
equal deleted inserted replaced
46032:8d6164098782 46033:88e741bf2d93
5 // This software may be used and distributed according to the terms of the 5 // This software may be used and distributed according to the terms of the
6 // GNU General Public License version 2 or any later version. 6 // GNU General Public License version 2 or any later version.
7 7
8 use super::find_root; 8 use super::find_root;
9 use crate::revlog::revlog::{Revlog, RevlogError}; 9 use crate::revlog::revlog::{Revlog, RevlogError};
10 use crate::revlog::NodePrefix;
10 use crate::revlog::Revision; 11 use crate::revlog::Revision;
11 12
12 /// Kind of data to debug 13 /// Kind of data to debug
13 #[derive(Debug, Copy, Clone)] 14 #[derive(Debug, Copy, Clone)]
14 pub enum DebugDataKind { 15 pub enum DebugDataKind {
105 let revlog = Revlog::open(&index_file, None)?; 106 let revlog = Revlog::open(&index_file, None)?;
106 107
107 let data = match self.rev.parse::<Revision>() { 108 let data = match self.rev.parse::<Revision>() {
108 Ok(rev) => revlog.get_rev_data(rev)?, 109 Ok(rev) => revlog.get_rev_data(rev)?,
109 _ => { 110 _ => {
110 let node = hex::decode(&self.rev) 111 let node = NodePrefix::from_hex(&self.rev)
111 .map_err(|_| DebugDataErrorKind::InvalidRevision)?; 112 .map_err(|_| DebugDataErrorKind::InvalidRevision)?;
112 let rev = revlog.get_node_rev(&node)?; 113 let rev = revlog.get_node_rev(node.borrow())?;
113 revlog.get_rev_data(rev)? 114 revlog.get_rev_data(rev)?
114 } 115 }
115 }; 116 };
116 117
117 Ok(data) 118 Ok(data)