rust/hg-cpython/src/dirstate/dirstate_map.rs
changeset 47123 d8ac62374943
parent 47122 9aba0cde0ed9
child 47124 cd8ca38fccff
equal deleted inserted replaced
47122:9aba0cde0ed9 47123:d8ac62374943
    20 use crate::{
    20 use crate::{
    21     dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator},
    21     dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator},
    22     dirstate::non_normal_entries::{
    22     dirstate::non_normal_entries::{
    23         NonNormalEntries, NonNormalEntriesIterator,
    23         NonNormalEntries, NonNormalEntriesIterator,
    24     },
    24     },
       
    25     dirstate::owning::OwningDirstateMap,
    25     dirstate::{dirs_multiset::Dirs, make_dirstate_tuple},
    26     dirstate::{dirs_multiset::Dirs, make_dirstate_tuple},
    26     parsers::dirstate_parents_to_pytuple,
    27     parsers::dirstate_parents_to_pytuple,
    27 };
    28 };
    28 use hg::{
    29 use hg::{
    29     dirstate::parsers::Timestamp,
    30     dirstate::parsers::Timestamp,
    56     @staticmethod
    57     @staticmethod
    57     def new(use_dirstate_tree: bool, on_disk: PyBytes) -> PyResult<PyObject> {
    58     def new(use_dirstate_tree: bool, on_disk: PyBytes) -> PyResult<PyObject> {
    58         let dirstate_error = |_: DirstateError| {
    59         let dirstate_error = |_: DirstateError| {
    59             PyErr::new::<exc::OSError, _>(py, "Dirstate error".to_string())
    60             PyErr::new::<exc::OSError, _>(py, "Dirstate error".to_string())
    60         };
    61         };
    61         let bytes = on_disk.data(py);
       
    62         let (inner, parents) = if use_dirstate_tree {
    62         let (inner, parents) = if use_dirstate_tree {
    63             let mut map = hg::dirstate_tree::dirstate_map::DirstateMap::new();
    63             let (map, parents) =
    64             let parents = map.read(bytes).map_err(dirstate_error)?;
    64                 OwningDirstateMap::new(py, on_disk)
       
    65                 .map_err(dirstate_error)?;
    65             (Box::new(map) as _, parents)
    66             (Box::new(map) as _, parents)
    66         } else {
    67         } else {
       
    68             let bytes = on_disk.data(py);
    67             let mut map = RustDirstateMap::default();
    69             let mut map = RustDirstateMap::default();
    68             let parents = map.read(bytes).map_err(dirstate_error)?;
    70             let parents = map.read(bytes).map_err(dirstate_error)?;
    69             (Box::new(map) as _, parents)
    71             (Box::new(map) as _, parents)
    70         };
    72         };
    71         let map = Self::create_instance(py, inner)?;
    73         let map = Self::create_instance(py, inner)?;