diff -r 69a463a4f193 -r fe4641cf9b72 rust/hg-cpython/src/dirstate/dirstate_map.rs --- a/rust/hg-cpython/src/dirstate/dirstate_map.rs Sat Jul 03 20:59:26 2021 +0200 +++ b/rust/hg-cpython/src/dirstate/dirstate_map.rs Sun Jul 04 01:42:10 2021 +0200 @@ -112,17 +112,28 @@ mode: PyObject, size: PyObject, mtime: PyObject, + added: PyObject, from_p2: PyObject, possibly_dirty: PyObject, ) -> PyResult { let f = f.extract::(py)?; let filename = HgPath::new(f.data(py)); - let state = state.extract::(py)?.data(py)[0] + let state = if state.is_none(py) { + // Arbitrary default value + EntryState::Normal + } else { + state.extract::(py)?.data(py)[0] .try_into() .map_err(|e: HgError| { PyErr::new::(py, e.to_string()) - })?; - let mode = mode.extract(py)?; + })? + }; + let mode = if mode.is_none(py) { + // fallback default value + 0 + } else { + mode.extract(py)? + }; let size = if size.is_none(py) { // fallback default value SIZE_NON_NORMAL @@ -141,11 +152,13 @@ size: size, mtime: mtime, }; + let added = added.extract::(py)?.is_true(); let from_p2 = from_p2.extract::(py)?.is_true(); let possibly_dirty = possibly_dirty.extract::(py)?.is_true(); self.inner(py).borrow_mut().add_file( filename, entry, + added, from_p2, possibly_dirty ).and(Ok(py.None())).or_else(|e: DirstateError| {