Mercurial > public > mercurial-scm > hg
diff rust/hg-cpython/src/dirstate/dirstate_map.rs @ 52040:0cd16b1d613f
rust-dirstate: use a struct as arguments for the high-level `reset_state`
This makes the interface a lot clearer at the call site and prevents silly
mistakes, as an API with a bunch of booleans is prone to errors.
This refactor adds a `from_empty` parameter for a fast-path when resetting
and entry we're sure does not exist. It will be used in the upcoming update
Rust fastpath, and was not split to prevent more churn.
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Mon, 30 Sep 2024 17:19:35 +0200 |
parents | 88aa21d654e5 |
children | ea0467ed76aa |
line wrap: on
line diff
--- a/rust/hg-cpython/src/dirstate/dirstate_map.rs Mon Sep 30 16:55:11 2024 +0200 +++ b/rust/hg-cpython/src/dirstate/dirstate_map.rs Mon Sep 30 17:19:35 2024 +0200 @@ -14,7 +14,10 @@ exc, PyBool, PyBytes, PyClone, PyDict, PyErr, PyList, PyNone, PyObject, PyResult, Python, PythonObject, ToPyObject, UnsafePyLeaked, }; -use hg::dirstate::{ParentFileData, TruncatedTimestamp}; +use hg::{ + dirstate::{ParentFileData, TruncatedTimestamp}, + dirstate_tree::dirstate_map::DirstateEntryReset, +}; use crate::{ dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator}, @@ -196,14 +199,16 @@ }; let bytes = f.extract::<PyBytes>(py)?; let path = HgPath::new(bytes.data(py)); - let res = self.inner(py).borrow_mut().reset_state( - path, + let reset = DirstateEntryReset { + filename: path, wc_tracked, p1_tracked, p2_info, has_meaningful_mtime, - parent_file_data, - ); + parent_file_data_opt: parent_file_data, + from_empty: false + }; + let res = self.inner(py).borrow_mut().reset_state(reset); res.map_err(|_| PyErr::new::<exc::OSError, _>(py, "Dirstate error".to_string()))?; Ok(PyNone) }