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,