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(