Mercurial > hg
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 } |