##// END OF EJS Templates
rust-revlog: move check for nodemap requirement to caller...
Martin von Zweigbergk -
r49978:bfc11764 default
parent child Browse files
Show More
@@ -6,6 +6,7 b''
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 crate::repo::Repo;
8 use crate::repo::Repo;
9 use crate::requirements;
9 use crate::revlog::revlog::{Revlog, RevlogError};
10 use crate::revlog::revlog::{Revlog, RevlogError};
10
11
11 /// Kind of data to debug
12 /// Kind of data to debug
@@ -25,7 +26,10 b' pub fn debug_data('
25 DebugDataKind::Changelog => "00changelog.i",
26 DebugDataKind::Changelog => "00changelog.i",
26 DebugDataKind::Manifest => "00manifest.i",
27 DebugDataKind::Manifest => "00manifest.i",
27 };
28 };
28 let revlog = Revlog::open(repo, index_file, None)?;
29 let use_nodemap = repo
30 .requirements()
31 .contains(requirements::NODEMAP_REQUIREMENT);
32 let revlog = Revlog::open(repo, index_file, None, use_nodemap)?;
29 let rev =
33 let rev =
30 crate::revset::resolve_rev_number_or_hex_prefix(revset, &revlog)?;
34 crate::revset::resolve_rev_number_or_hex_prefix(revset, &revlog)?;
31 let data = revlog.get_rev_data(rev)?;
35 let data = revlog.get_rev_data(rev)?;
@@ -1,5 +1,6 b''
1 use crate::errors::HgError;
1 use crate::errors::HgError;
2 use crate::repo::Repo;
2 use crate::repo::Repo;
3 use crate::requirements;
3 use crate::revlog::revlog::{Revlog, RevlogEntry, RevlogError};
4 use crate::revlog::revlog::{Revlog, RevlogEntry, RevlogError};
4 use crate::revlog::Revision;
5 use crate::revlog::Revision;
5 use crate::revlog::{Node, NodePrefix};
6 use crate::revlog::{Node, NodePrefix};
@@ -17,7 +18,10 b' pub struct Changelog {'
17 impl Changelog {
18 impl Changelog {
18 /// Open the `changelog` of a repository given by its root.
19 /// Open the `changelog` of a repository given by its root.
19 pub fn open(repo: &Repo) -> Result<Self, HgError> {
20 pub fn open(repo: &Repo) -> Result<Self, HgError> {
20 let revlog = Revlog::open(repo, "00changelog.i", None)?;
21 let use_nodemap = repo
22 .requirements()
23 .contains(requirements::NODEMAP_REQUIREMENT);
24 let revlog = Revlog::open(repo, "00changelog.i", None, use_nodemap)?;
21 Ok(Self { revlog })
25 Ok(Self { revlog })
22 }
26 }
23
27
@@ -213,7 +217,6 b' fn debug_bytes(bytes: &[u8]) -> String {'
213 #[cfg(test)]
217 #[cfg(test)]
214 mod tests {
218 mod tests {
215 use super::*;
219 use super::*;
216 use itertools::Itertools;
217 use pretty_assertions::assert_eq;
220 use pretty_assertions::assert_eq;
218
221
219 #[test]
222 #[test]
@@ -1,5 +1,6 b''
1 use crate::errors::HgError;
1 use crate::errors::HgError;
2 use crate::repo::Repo;
2 use crate::repo::Repo;
3 use crate::requirements;
3 use crate::revlog::path_encode::path_encode;
4 use crate::revlog::path_encode::path_encode;
4 use crate::revlog::revlog::RevlogEntry;
5 use crate::revlog::revlog::RevlogEntry;
5 use crate::revlog::revlog::{Revlog, RevlogError};
6 use crate::revlog::revlog::{Revlog, RevlogError};
@@ -20,7 +21,11 b' impl Filelog {'
20 pub fn open(repo: &Repo, file_path: &HgPath) -> Result<Self, HgError> {
21 pub fn open(repo: &Repo, file_path: &HgPath) -> Result<Self, HgError> {
21 let index_path = store_path(file_path, b".i");
22 let index_path = store_path(file_path, b".i");
22 let data_path = store_path(file_path, b".d");
23 let data_path = store_path(file_path, b".d");
23 let revlog = Revlog::open(repo, index_path, Some(&data_path))?;
24 let use_nodemap = repo
25 .requirements()
26 .contains(requirements::NODEMAP_REQUIREMENT);
27 let revlog =
28 Revlog::open(repo, index_path, Some(&data_path), use_nodemap)?;
24 Ok(Self { revlog })
29 Ok(Self { revlog })
25 }
30 }
26
31
@@ -1,5 +1,6 b''
1 use crate::errors::HgError;
1 use crate::errors::HgError;
2 use crate::repo::Repo;
2 use crate::repo::Repo;
3 use crate::requirements;
3 use crate::revlog::revlog::{Revlog, RevlogError};
4 use crate::revlog::revlog::{Revlog, RevlogError};
4 use crate::revlog::Revision;
5 use crate::revlog::Revision;
5 use crate::revlog::{Node, NodePrefix};
6 use crate::revlog::{Node, NodePrefix};
@@ -15,7 +16,10 b' pub struct Manifestlog {'
15 impl Manifestlog {
16 impl Manifestlog {
16 /// Open the `manifest` of a repository given by its root.
17 /// Open the `manifest` of a repository given by its root.
17 pub fn open(repo: &Repo) -> Result<Self, HgError> {
18 pub fn open(repo: &Repo) -> Result<Self, HgError> {
18 let revlog = Revlog::open(repo, "00manifest.i", None)?;
19 let use_nodemap = repo
20 .requirements()
21 .contains(requirements::NODEMAP_REQUIREMENT);
22 let revlog = Revlog::open(repo, "00manifest.i", None, use_nodemap)?;
19 Ok(Self { revlog })
23 Ok(Self { revlog })
20 }
24 }
21
25
@@ -18,7 +18,7 b' 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::{requirements, Node, NULL_REVISION};
21 use crate::{Node, NULL_REVISION};
22
22
23 const REVISION_FLAG_CENSORED: u16 = 1 << 15;
23 const REVISION_FLAG_CENSORED: u16 = 1 << 15;
24 const REVISION_FLAG_ELLIPSIS: u16 = 1 << 14;
24 const REVISION_FLAG_ELLIPSIS: u16 = 1 << 14;
@@ -84,6 +84,7 b' impl Revlog {'
84 repo: &Repo,
84 repo: &Repo,
85 index_path: impl AsRef<Path>,
85 index_path: impl AsRef<Path>,
86 data_path: Option<&Path>,
86 data_path: Option<&Path>,
87 use_nodemap: bool,
87 ) -> Result<Self, HgError> {
88 ) -> Result<Self, HgError> {
88 let index_path = index_path.as_ref();
89 let index_path = index_path.as_ref();
89 let index = {
90 let index = {
@@ -111,11 +112,7 b' impl Revlog {'
111
112
112 let nodemap = if index.is_inline() {
113 let nodemap = if index.is_inline() {
113 None
114 None
114 } else if !repo
115 } else if !use_nodemap {
115 .requirements()
116 .contains(requirements::NODEMAP_REQUIREMENT)
117 {
118 // If .hg/requires does not opt it, don’t try to open a nodemap
119 None
116 None
120 } else {
117 } else {
121 NodeMapDocket::read_from_file(&repo.store_vfs(), index_path)?.map(
118 NodeMapDocket::read_from_file(&repo.store_vfs(), index_path)?.map(
General Comments 0
You need to be logged in to leave comments. Login now