diff -r 627cd8f33db0 -r f2a9db29cb2d rust/hg-cpython/src/dirstate/dirstate_map.rs --- a/rust/hg-cpython/src/dirstate/dirstate_map.rs Mon Sep 20 13:16:36 2021 +0200 +++ b/rust/hg-cpython/src/dirstate/dirstate_map.rs Fri Sep 17 13:33:45 2021 +0200 @@ -135,12 +135,12 @@ let filename = HgPath::new(f.data(py)); let state = item.getattr(py, "state")?.extract::(py)?; let state = state.data(py)[0]; - let entry = DirstateEntry { - state: state.try_into().expect("state is always valid"), - mtime: item.getattr(py, "mtime")?.extract(py)?, - size: item.getattr(py, "size")?.extract(py)?, - mode: item.getattr(py, "mode")?.extract(py)?, - }; + let entry = DirstateEntry::from_v1_data( + state.try_into().expect("state is always valid"), + item.getattr(py, "mode")?.extract(py)?, + item.getattr(py, "size")?.extract(py)?, + item.getattr(py, "mtime")?.extract(py)?, + ); self.inner(py).borrow_mut().set_v1(filename, entry); Ok(py.None()) } @@ -176,13 +176,7 @@ } else { mtime.extract(py)? }; - let entry = DirstateEntry { - // XXX Arbitrary default value since the value is determined later - state: EntryState::Normal, - mode: mode, - size: size, - mtime: mtime, - }; + let entry = DirstateEntry::new_for_add_file(mode, size, mtime); let added = added.extract::(py)?.is_true(); let merged = merged.extract::(py)?.is_true(); let from_p2 = from_p2.extract::(py)?.is_true(); @@ -422,7 +416,7 @@ let dict = PyDict::new(py); for item in self.inner(py).borrow_mut().iter() { let (path, entry) = item.map_err(|e| v2_error(py, e))?; - if entry.state != EntryState::Removed { + if entry.state() != EntryState::Removed { let key = normalize_case(path); let value = path; dict.set_item(