Mercurial > hg
comparison rust/hg-core/src/repo.rs @ 49005:12adf8c695ed
merge: stable into default
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Tue, 05 Apr 2022 11:09:03 +0200 |
parents | 1d5fd9def5ac dd6b67d5c256 |
children | a5ef50becea8 |
comparison
equal
deleted
inserted
replaced
48997:20c6c9e43397 | 49005:12adf8c695ed |
---|---|
1 use crate::changelog::Changelog; | 1 use crate::changelog::Changelog; |
2 use crate::config::{Config, ConfigError, ConfigParseError}; | 2 use crate::config::{Config, ConfigError, ConfigParseError}; |
3 use crate::dirstate::DirstateParents; | 3 use crate::dirstate::DirstateParents; |
4 use crate::dirstate_tree::dirstate_map::DirstateMap; | |
5 use crate::dirstate_tree::on_disk::Docket as DirstateDocket; | 4 use crate::dirstate_tree::on_disk::Docket as DirstateDocket; |
6 use crate::dirstate_tree::owning::OwningDirstateMap; | 5 use crate::dirstate_tree::owning::OwningDirstateMap; |
7 use crate::errors::HgResultExt; | 6 use crate::errors::HgResultExt; |
8 use crate::errors::{HgError, IoResultExt}; | 7 use crate::errors::{HgError, IoResultExt}; |
9 use crate::lock::{try_with_lock_no_wait, LockError}; | 8 use crate::lock::{try_with_lock_no_wait, LockError}; |
314 self.dirstate_parents.set(docket.parents()); | 313 self.dirstate_parents.set(docket.parents()); |
315 self.dirstate_data_file_uuid | 314 self.dirstate_data_file_uuid |
316 .set(Some(docket.uuid.to_owned())); | 315 .set(Some(docket.uuid.to_owned())); |
317 let data_size = docket.data_size(); | 316 let data_size = docket.data_size(); |
318 let metadata = docket.tree_metadata(); | 317 let metadata = docket.tree_metadata(); |
319 let mut map = if let Some(data_mmap) = self | 318 if let Some(data_mmap) = self |
320 .hg_vfs() | 319 .hg_vfs() |
321 .mmap_open(docket.data_filename()) | 320 .mmap_open(docket.data_filename()) |
322 .io_not_found_as_none()? | 321 .io_not_found_as_none()? |
323 { | 322 { |
324 OwningDirstateMap::new_empty(data_mmap) | 323 OwningDirstateMap::new_v2(data_mmap, data_size, metadata) |
325 } else { | 324 } else { |
326 OwningDirstateMap::new_empty(Vec::new()) | 325 OwningDirstateMap::new_v2(Vec::new(), data_size, metadata) |
327 }; | 326 } |
328 let (on_disk, placeholder) = map.get_pair_mut(); | 327 } else { |
329 *placeholder = DirstateMap::new_v2(on_disk, data_size, metadata)?; | 328 let (map, parents) = |
330 Ok(map) | 329 OwningDirstateMap::new_v1(dirstate_file_contents)?; |
331 } else { | 330 self.dirstate_parents.set(parents); |
332 let mut map = OwningDirstateMap::new_empty(dirstate_file_contents); | |
333 let (on_disk, placeholder) = map.get_pair_mut(); | |
334 let (inner, parents) = DirstateMap::new_v1(on_disk)?; | |
335 self.dirstate_parents | |
336 .set(parents.unwrap_or(DirstateParents::NULL)); | |
337 *placeholder = inner; | |
338 Ok(map) | 331 Ok(map) |
339 } | 332 } |
340 } | 333 } |
341 | 334 |
342 pub fn dirstate_map( | 335 pub fn dirstate_map( |