Show More
@@ -73,6 +73,19 b' pub fn make_dirstate_item(' | |||
|
73 | 73 | maybe_obj.ok_or_else(|| PyErr::fetch(py)) |
|
74 | 74 | } |
|
75 | 75 | |
|
76 | // XXX a bit strange to have a dedicated function, but directory are not | |
|
77 | // treated as dirstate node by hg-core for now so… | |
|
78 | pub fn make_directory_item(py: Python, mtime: i32) -> PyResult<PyObject> { | |
|
79 | // might be silly to retrieve capsule function in hot loop | |
|
80 | let make = make_dirstate_item_capi::retrieve(py)?; | |
|
81 | ||
|
82 | let maybe_obj = unsafe { | |
|
83 | let ptr = make(b'd' as c_char, 0 as i32, 0 as i32, mtime); | |
|
84 | PyObject::from_owned_ptr_opt(py, ptr) | |
|
85 | }; | |
|
86 | maybe_obj.ok_or_else(|| PyErr::fetch(py)) | |
|
87 | } | |
|
88 | ||
|
76 | 89 | pub fn extract_dirstate(py: Python, dmap: &PyDict) -> Result<StateMap, PyErr> { |
|
77 | 90 | dmap.items(py) |
|
78 | 91 | .iter() |
@@ -19,6 +19,7 b' use cpython::{' | |||
|
19 | 19 | |
|
20 | 20 | use crate::{ |
|
21 | 21 | dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator}, |
|
22 | dirstate::make_directory_item, | |
|
22 | 23 | dirstate::make_dirstate_item, |
|
23 | 24 | dirstate::non_normal_entries::{ |
|
24 | 25 | NonNormalEntries, NonNormalEntriesIterator, |
@@ -519,7 +520,8 b' py_class!(pub class DirstateMap |py| {' | |||
|
519 | 520 | let (path, mtime) = item.map_err(|e| v2_error(py, e))?; |
|
520 | 521 | let path = PyBytes::new(py, path.as_bytes()); |
|
521 | 522 | let mtime = mtime.map(|t| t.0).unwrap_or(-1); |
|
522 | let tuple = (path, (b'd', 0, 0, mtime)); | |
|
523 | let item = make_directory_item(py, mtime as i32)?; | |
|
524 | let tuple = (path, item); | |
|
523 | 525 | dirs.append(py, tuple.to_py_object(py).into_object()) |
|
524 | 526 | } |
|
525 | 527 | Ok(dirs) |
General Comments 0
You need to be logged in to leave comments.
Login now