Show More
@@ -620,6 +620,21 b' static PyObject *dirstate_item_get_from_' | |||||
620 | } |
|
620 | } | |
621 | }; |
|
621 | }; | |
622 |
|
622 | |||
|
623 | static PyObject *dirstate_item_get_maybe_clean(dirstateItemObject *self) | |||
|
624 | { | |||
|
625 | if (!(self->flags & dirstate_flag_wc_tracked)) { | |||
|
626 | Py_RETURN_FALSE; | |||
|
627 | } else if (dirstate_item_c_added(self)) { | |||
|
628 | Py_RETURN_FALSE; | |||
|
629 | } else if (self->flags & dirstate_flag_merged) { | |||
|
630 | Py_RETURN_FALSE; | |||
|
631 | } else if (self->flags & dirstate_flag_clean_p2) { | |||
|
632 | Py_RETURN_FALSE; | |||
|
633 | } else { | |||
|
634 | Py_RETURN_TRUE; | |||
|
635 | } | |||
|
636 | }; | |||
|
637 | ||||
623 | static PyObject *dirstate_item_get_removed(dirstateItemObject *self) |
|
638 | static PyObject *dirstate_item_get_removed(dirstateItemObject *self) | |
624 | { |
|
639 | { | |
625 | if (dirstate_item_c_removed(self)) { |
|
640 | if (dirstate_item_c_removed(self)) { | |
@@ -638,6 +653,8 b' static PyGetSetDef dirstate_item_getset[' | |||||
638 | {"added", (getter)dirstate_item_get_added, NULL, "added", NULL}, |
|
653 | {"added", (getter)dirstate_item_get_added, NULL, "added", NULL}, | |
639 | {"merged", (getter)dirstate_item_get_merged, NULL, "merged", NULL}, |
|
654 | {"merged", (getter)dirstate_item_get_merged, NULL, "merged", NULL}, | |
640 | {"from_p2", (getter)dirstate_item_get_from_p2, NULL, "from_p2", NULL}, |
|
655 | {"from_p2", (getter)dirstate_item_get_from_p2, NULL, "from_p2", NULL}, | |
|
656 | {"maybe_clean", (getter)dirstate_item_get_maybe_clean, NULL, "maybe_clean", | |||
|
657 | NULL}, | |||
641 | {"removed", (getter)dirstate_item_get_removed, NULL, "removed", NULL}, |
|
658 | {"removed", (getter)dirstate_item_get_removed, NULL, "removed", NULL}, | |
642 | {NULL} /* Sentinel */ |
|
659 | {NULL} /* Sentinel */ | |
643 | }; |
|
660 | }; |
@@ -319,6 +319,19 b' class DirstateItem(object):' | |||||
319 | return self._wc_tracked and not (self._p1_tracked or self._p2_tracked) |
|
319 | return self._wc_tracked and not (self._p1_tracked or self._p2_tracked) | |
320 |
|
320 | |||
321 | @property |
|
321 | @property | |
|
322 | def maybe_clean(self): | |||
|
323 | """True if the file has a chance to be in the "clean" state""" | |||
|
324 | if not self._wc_tracked: | |||
|
325 | return False | |||
|
326 | elif self.added: | |||
|
327 | return False | |||
|
328 | elif self._merged: | |||
|
329 | return False | |||
|
330 | elif self._clean_p2: | |||
|
331 | return False | |||
|
332 | return True | |||
|
333 | ||||
|
334 | @property | |||
322 | def merged(self): |
|
335 | def merged(self): | |
323 | """True if the file has been merged |
|
336 | """True if the file has been merged | |
324 |
|
337 |
@@ -191,6 +191,20 b' impl DirstateEntry {' | |||||
191 | self.flags.contains(Flags::WDIR_TRACKED | Flags::CLEAN_P2) |
|
191 | self.flags.contains(Flags::WDIR_TRACKED | Flags::CLEAN_P2) | |
192 | } |
|
192 | } | |
193 |
|
193 | |||
|
194 | pub fn maybe_clean(&self) -> bool { | |||
|
195 | if !self.flags.contains(Flags::WDIR_TRACKED) { | |||
|
196 | false | |||
|
197 | } else if self.added() { | |||
|
198 | false | |||
|
199 | } else if self.flags.contains(Flags::MERGED) { | |||
|
200 | false | |||
|
201 | } else if self.flags.contains(Flags::CLEAN_P2) { | |||
|
202 | false | |||
|
203 | } else { | |||
|
204 | true | |||
|
205 | } | |||
|
206 | } | |||
|
207 | ||||
194 | pub fn state(&self) -> EntryState { |
|
208 | pub fn state(&self) -> EntryState { | |
195 | if self.removed() { |
|
209 | if self.removed() { | |
196 | EntryState::Removed |
|
210 | EntryState::Removed |
@@ -85,6 +85,11 b' py_class!(pub class DirstateItem |py| {' | |||||
85 | Ok(self.entry(py).get().from_p2()) |
|
85 | Ok(self.entry(py).get().from_p2()) | |
86 | } |
|
86 | } | |
87 |
|
87 | |||
|
88 | @property | |||
|
89 | def maybe_clean(&self) -> PyResult<bool> { | |||
|
90 | Ok(self.entry(py).get().maybe_clean()) | |||
|
91 | } | |||
|
92 | ||||
88 | def v1_state(&self) -> PyResult<PyBytes> { |
|
93 | def v1_state(&self) -> PyResult<PyBytes> { | |
89 | let (state, _mode, _size, _mtime) = self.entry(py).get().v1_data(); |
|
94 | let (state, _mode, _size, _mtime) = self.entry(py).get().v1_data(); | |
90 | let state_byte: u8 = state.into(); |
|
95 | let state_byte: u8 = state.into(); |
General Comments 0
You need to be logged in to leave comments.
Login now