# HG changeset patch # User Georges Racinet # Date 2023-03-30 08:29:29 # Node ID 0159b014f3ab9c3990d235b998611c08de53306d # Parent 48d9af6bd043a2aa65fe223b830322c7a7ea393e rust-revlog: split out method for `rev_from_node` without persistent nodemap This will make easier for the bug fix that is about to come. diff --git a/rust/hg-core/src/revlog/mod.rs b/rust/hg-core/src/revlog/mod.rs --- a/rust/hg-core/src/revlog/mod.rs +++ b/rust/hg-core/src/revlog/mod.rs @@ -234,11 +234,19 @@ impl Revlog { .find_bin(&self.index, node)? .ok_or(RevlogError::InvalidRevision); } + self.rev_from_node_no_persistent_nodemap(node) + } - // Fallback to linear scan when a persistent nodemap is not present. - // This happens when the persistent-nodemap experimental feature is not - // enabled, or for small revlogs. - // + /// Same as `rev_from_node`, without using a persistent nodemap + /// + /// This is used as fallback when a persistent nodemap is not present. + /// This happens when the persistent-nodemap experimental feature is not + /// enabled, or for small revlogs. + fn rev_from_node_no_persistent_nodemap( + &self, + node: NodePrefix, + ) -> Result { + // Linear scan of the revlog // TODO: consider building a non-persistent nodemap in memory to // optimize these cases. let mut found_by_prefix = None;