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::{ |
|
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 ! |
|
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