equal
deleted
inserted
replaced
26 dirstate::owning::OwningDirstateMap, |
26 dirstate::owning::OwningDirstateMap, |
27 parsers::dirstate_parents_to_pytuple, |
27 parsers::dirstate_parents_to_pytuple, |
28 }; |
28 }; |
29 use hg::{ |
29 use hg::{ |
30 dirstate::parsers::Timestamp, |
30 dirstate::parsers::Timestamp, |
|
31 dirstate::MTIME_UNSET, |
|
32 dirstate::SIZE_NON_NORMAL, |
31 dirstate_tree::dispatch::DirstateMapMethods, |
33 dirstate_tree::dispatch::DirstateMapMethods, |
32 dirstate_tree::on_disk::DirstateV2ParseError, |
34 dirstate_tree::on_disk::DirstateV2ParseError, |
33 errors::HgError, |
35 errors::HgError, |
34 revlog::Node, |
36 revlog::Node, |
35 utils::files::normalize_case, |
37 utils::files::normalize_case, |
108 f: PyObject, |
110 f: PyObject, |
109 oldstate: PyObject, |
111 oldstate: PyObject, |
110 state: PyObject, |
112 state: PyObject, |
111 mode: PyObject, |
113 mode: PyObject, |
112 size: PyObject, |
114 size: PyObject, |
113 mtime: PyObject |
115 mtime: PyObject, |
|
116 from_p2: PyObject, |
|
117 possibly_dirty: PyObject, |
114 ) -> PyResult<PyObject> { |
118 ) -> PyResult<PyObject> { |
115 let f = f.extract::<PyBytes>(py)?; |
119 let f = f.extract::<PyBytes>(py)?; |
116 let filename = HgPath::new(f.data(py)); |
120 let filename = HgPath::new(f.data(py)); |
117 let oldstate = oldstate.extract::<PyBytes>(py)?.data(py)[0] |
121 let oldstate = oldstate.extract::<PyBytes>(py)?.data(py)[0] |
118 .try_into() |
122 .try_into() |
123 .try_into() |
127 .try_into() |
124 .map_err(|e: HgError| { |
128 .map_err(|e: HgError| { |
125 PyErr::new::<exc::ValueError, _>(py, e.to_string()) |
129 PyErr::new::<exc::ValueError, _>(py, e.to_string()) |
126 })?; |
130 })?; |
127 let mode = mode.extract(py)?; |
131 let mode = mode.extract(py)?; |
128 let size = size.extract(py)?; |
132 let size = if size.is_none(py) { |
129 let mtime = mtime.extract(py)?; |
133 // fallback default value |
|
134 SIZE_NON_NORMAL |
|
135 } else { |
|
136 size.extract(py)? |
|
137 }; |
|
138 let mtime = if mtime.is_none(py) { |
|
139 // fallback default value |
|
140 MTIME_UNSET |
|
141 } else { |
|
142 mtime.extract(py)? |
|
143 }; |
130 let entry = DirstateEntry { |
144 let entry = DirstateEntry { |
131 state: state, |
145 state: state, |
132 mode: mode, |
146 mode: mode, |
133 size: size, |
147 size: size, |
134 mtime: mtime, |
148 mtime: mtime, |
135 }; |
149 }; |
|
150 let from_p2 = from_p2.extract::<PyBool>(py)?.is_true(); |
|
151 let possibly_dirty = possibly_dirty.extract::<PyBool>(py)?.is_true(); |
136 self.inner(py).borrow_mut().add_file( |
152 self.inner(py).borrow_mut().add_file( |
137 filename, |
153 filename, |
138 oldstate, |
154 oldstate, |
139 entry, |
155 entry, |
|
156 from_p2, |
|
157 possibly_dirty |
140 ).and(Ok(py.None())).or_else(|e: DirstateError| { |
158 ).and(Ok(py.None())).or_else(|e: DirstateError| { |
141 Err(PyErr::new::<exc::ValueError, _>(py, e.to_string())) |
159 Err(PyErr::new::<exc::ValueError, _>(py, e.to_string())) |
142 }) |
160 }) |
143 } |
161 } |
144 |
162 |