Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-core/src/repo.rs @ 47380:bd88b6bfd8da
rhg: Add support for dirstate-v2
Differential Revision: https://phab.mercurial-scm.org/D10804
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Tue, 25 May 2021 09:20:30 +0200 |
parents | c71e8d9e7f2a |
children | ebdef6283798 |
line wrap: on
line diff
--- a/rust/hg-core/src/repo.rs Wed May 26 11:53:37 2021 +0200 +++ b/rust/hg-core/src/repo.rs Tue May 25 09:20:30 2021 +0200 @@ -218,12 +218,23 @@ } } + pub fn has_dirstate_v2(&self) -> bool { + self.requirements + .contains(requirements::DIRSTATE_V2_REQUIREMENT) + } + pub fn dirstate_parents( &self, ) -> Result<crate::dirstate::DirstateParents, HgError> { let dirstate = self.hg_vfs().mmap_open("dirstate")?; - let parents = - crate::dirstate::parsers::parse_dirstate_parents(&dirstate)?; + if dirstate.is_empty() { + return Ok(crate::dirstate::DirstateParents::NULL); + } + let parents = if self.has_dirstate_v2() { + crate::dirstate_tree::on_disk::parse_dirstate_parents(&dirstate)? + } else { + crate::dirstate::parsers::parse_dirstate_parents(&dirstate)? + }; Ok(parents.clone()) } }