Mercurial > public > mercurial-scm > hg
diff rust/hg-cpython/src/dirstate/dirstate_map.rs @ 48045:32ef647821b2
dirstate: Skip no-op conversion in Rust DirstateMap::set_v1
Now that the `DirstateItem` python class is implemented in Rust containing
a `DirstateEntry` value, use that value directly instead of reconstructing
it from v1 data.
Also rename from `set_v1` since dirstate-v1 data is not used anymore.
Differential Revision: https://phab.mercurial-scm.org/D11487
author | Simon Sapin <simon.sapin@octobus.net> |
---|---|
date | Wed, 22 Sep 2021 18:21:58 +0200 |
parents | d5528ac9b4f2 |
children | 9b2a51b2c36a |
line wrap: on
line diff
--- a/rust/hg-cpython/src/dirstate/dirstate_map.rs Wed Sep 22 11:33:29 2021 +0200 +++ b/rust/hg-cpython/src/dirstate/dirstate_map.rs Wed Sep 22 18:21:58 2021 +0200 @@ -129,18 +129,14 @@ } } - def set_v1(&self, path: PyObject, item: PyObject) -> PyResult<PyObject> { + def set_dirstate_item( + &self, + path: PyObject, + item: DirstateItem + ) -> PyResult<PyObject> { let f = path.extract::<PyBytes>(py)?; let filename = HgPath::new(f.data(py)); - let state = item.getattr(py, "state")?.extract::<PyBytes>(py)?; - let state = state.data(py)[0]; - 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); + self.inner(py).borrow_mut().set_entry(filename, item.get_entry(py)); Ok(py.None()) }