Mercurial > hg
comparison rust/hg-cpython/src/dirstate/dirstate_map.rs @ 50243:6cce0afc1454 stable
rust-dirstate: remember the data file uuid dirstate was loaded with
This will be used in the next patch to fix a race condition.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Mon, 12 Dec 2022 17:08:12 +0100 |
parents | ecd28d89c29e |
children | dbe09fb038fc |
comparison
equal
deleted
inserted
replaced
50242:379a78001d8e | 50243:6cce0afc1454 |
---|---|
64 @staticmethod | 64 @staticmethod |
65 def new_v2( | 65 def new_v2( |
66 on_disk: PyBytes, | 66 on_disk: PyBytes, |
67 data_size: usize, | 67 data_size: usize, |
68 tree_metadata: PyBytes, | 68 tree_metadata: PyBytes, |
69 uuid: PyBytes, | |
69 ) -> PyResult<PyObject> { | 70 ) -> PyResult<PyObject> { |
70 let dirstate_error = |e: DirstateError| { | 71 let dirstate_error = |e: DirstateError| { |
71 PyErr::new::<exc::OSError, _>(py, format!("Dirstate error: {:?}", e)) | 72 PyErr::new::<exc::OSError, _>(py, format!("Dirstate error: {:?}", e)) |
72 }; | 73 }; |
73 let on_disk = PyBytesDeref::new(py, on_disk); | 74 let on_disk = PyBytesDeref::new(py, on_disk); |
75 let uuid = uuid.data(py); | |
74 let map = OwningDirstateMap::new_v2( | 76 let map = OwningDirstateMap::new_v2( |
75 on_disk, data_size, tree_metadata.data(py), | 77 on_disk, data_size, tree_metadata.data(py), uuid.to_owned(), |
76 ).map_err(dirstate_error)?; | 78 ).map_err(dirstate_error)?; |
79 let map = Self::create_instance(py, map)?; | |
80 Ok(map.into_object()) | |
81 } | |
82 | |
83 /// Returns an empty DirstateMap. Only used for a new dirstate. | |
84 @staticmethod | |
85 def new_empty() -> PyResult<PyObject> { | |
86 let map = OwningDirstateMap::new_empty(vec![]); | |
77 let map = Self::create_instance(py, map)?; | 87 let map = Self::create_instance(py, map)?; |
78 Ok(map.into_object()) | 88 Ok(map.into_object()) |
79 } | 89 } |
80 | 90 |
81 def clear(&self) -> PyResult<PyObject> { | 91 def clear(&self) -> PyResult<PyObject> { |