Mercurial > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
48044:d5528ac9b4f2 | 48045:32ef647821b2 |
---|---|
127 }, | 127 }, |
128 None => Ok(default) | 128 None => Ok(default) |
129 } | 129 } |
130 } | 130 } |
131 | 131 |
132 def set_v1(&self, path: PyObject, item: PyObject) -> PyResult<PyObject> { | 132 def set_dirstate_item( |
133 &self, | |
134 path: PyObject, | |
135 item: DirstateItem | |
136 ) -> PyResult<PyObject> { | |
133 let f = path.extract::<PyBytes>(py)?; | 137 let f = path.extract::<PyBytes>(py)?; |
134 let filename = HgPath::new(f.data(py)); | 138 let filename = HgPath::new(f.data(py)); |
135 let state = item.getattr(py, "state")?.extract::<PyBytes>(py)?; | 139 self.inner(py).borrow_mut().set_entry(filename, item.get_entry(py)); |
136 let state = state.data(py)[0]; | |
137 let entry = DirstateEntry::from_v1_data( | |
138 state.try_into().expect("state is always valid"), | |
139 item.getattr(py, "mode")?.extract(py)?, | |
140 item.getattr(py, "size")?.extract(py)?, | |
141 item.getattr(py, "mtime")?.extract(py)?, | |
142 ); | |
143 self.inner(py).borrow_mut().set_v1(filename, entry); | |
144 Ok(py.None()) | 140 Ok(py.None()) |
145 } | 141 } |
146 | 142 |
147 def addfile( | 143 def addfile( |
148 &self, | 144 &self, |