rust/hg-core/src/repo.rs
changeset 49005 12adf8c695ed
parent 48809 1d5fd9def5ac
parent 49000 dd6b67d5c256
child 49090 a5ef50becea8
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(