Comments
Patch
@@ -18,7 +18,7 @@
use crate::errors::HgError;
use crate::repo::Repo;
use crate::revlog::Revision;
-use crate::{Node, NULL_REVISION};
+use crate::{Node, RevlogIndex, NULL_REVISION};
const REVISION_FLAG_CENSORED: u16 = 1 << 15;
const REVISION_FLAG_ELLIPSIS: u16 = 1 << 14;
@@ -112,14 +112,23 @@
let nodemap = if index.is_inline() {
None
} else {
- NodeMapDocket::read_from_file(repo, index_path)?.map(
- |(docket, data)| {
- nodemap::NodeTree::load_bytes(
- Box::new(data),
- docket.data_length,
- )
- },
- )
+ if let Some((docket, data)) =
+ NodeMapDocket::read_from_file(repo, index_path)?
+ {
+ Some(nodemap::NodeTree::load_bytes(
+ Box::new(data),
+ docket.data_length,
+ ))
+ } else {
+ let mut nodemap = nodemap::NodeTree::default();
+ for rev in 0..index.len() {
+ let rev = rev as Revision;
+ nodemap
+ .insert(&index, index.node(rev).unwrap(), rev)
+ .unwrap();
+ }
+ Some(nodemap)
+ }
};
Ok(Revlog {