comparison rust/hg-core/src/revlog/revlog.rs @ 47962:8c29af0f6d6e

rhg: Align with Python on some revset parsing corner cases In particular: * A string of ASCII digits can be either an integer on a hex prefix * The NULL node ID should convert to the NULL revision number Differential Revision: https://phab.mercurial-scm.org/D11409
author Simon Sapin <simon.sapin@octobus.net>
date Mon, 13 Sep 2021 17:23:42 +0200
parents fad504cfc94b
children 001d747c2baf
comparison
equal deleted inserted replaced
47961:4d2a5ca060e3 47962:8c29af0f6d6e
16 use super::nodemap_docket::NodeMapDocket; 16 use super::nodemap_docket::NodeMapDocket;
17 use super::patch; 17 use super::patch;
18 use crate::errors::HgError; 18 use crate::errors::HgError;
19 use crate::repo::Repo; 19 use crate::repo::Repo;
20 use crate::revlog::Revision; 20 use crate::revlog::Revision;
21 use crate::NULL_REVISION;
21 22
22 #[derive(derive_more::From)] 23 #[derive(derive_more::From)]
23 pub enum RevlogError { 24 pub enum RevlogError {
24 InvalidRevision, 25 InvalidRevision,
25 /// Working directory is not supported 26 /// Working directory is not supported
122 #[timed] 123 #[timed]
123 pub fn get_node_rev( 124 pub fn get_node_rev(
124 &self, 125 &self,
125 node: NodePrefix, 126 node: NodePrefix,
126 ) -> Result<Revision, RevlogError> { 127 ) -> Result<Revision, RevlogError> {
128 if node.is_prefix_of(&NULL_NODE) {
129 return Ok(NULL_REVISION);
130 }
131
127 if let Some(nodemap) = &self.nodemap { 132 if let Some(nodemap) = &self.nodemap {
128 return nodemap 133 return nodemap
129 .find_bin(&self.index, node)? 134 .find_bin(&self.index, node)?
130 .ok_or(RevlogError::InvalidRevision); 135 .ok_or(RevlogError::InvalidRevision);
131 } 136 }