Show More
@@ -130,30 +130,6 b' class _dirstatemapcommon:' | |||||
130 | self._refresh_entry(filename, entry) |
|
130 | self._refresh_entry(filename, entry) | |
131 | self.copymap.pop(filename, None) |
|
131 | self.copymap.pop(filename, None) | |
132 |
|
132 | |||
133 | def set_tracked(self, filename): |
|
|||
134 | new = False |
|
|||
135 | entry = self.get(filename) |
|
|||
136 | if entry is None: |
|
|||
137 | self._dirs_incr(filename) |
|
|||
138 | entry = DirstateItem( |
|
|||
139 | wc_tracked=True, |
|
|||
140 | ) |
|
|||
141 |
|
||||
142 | self._insert_entry(filename, entry) |
|
|||
143 | new = True |
|
|||
144 | elif not entry.tracked: |
|
|||
145 | self._dirs_incr(filename, entry) |
|
|||
146 | entry.set_tracked() |
|
|||
147 | self._refresh_entry(filename, entry) |
|
|||
148 | new = True |
|
|||
149 | else: |
|
|||
150 | # XXX This is probably overkill for more case, but we need this to |
|
|||
151 | # fully replace the `normallookup` call with `set_tracked` one. |
|
|||
152 | # Consider smoothing this in the future. |
|
|||
153 | entry.set_possibly_dirty() |
|
|||
154 | self._refresh_entry(filename, entry) |
|
|||
155 | return new |
|
|||
156 |
|
||||
157 | def set_untracked(self, f): |
|
133 | def set_untracked(self, f): | |
158 | """Mark a file as no longer tracked in the dirstate map""" |
|
134 | """Mark a file as no longer tracked in the dirstate map""" | |
159 | entry = self.get(f) |
|
135 | entry = self.get(f) | |
@@ -538,6 +514,30 b' class dirstatemap(_dirstatemapcommon):' | |||||
538 |
|
514 | |||
539 | ### code related to manipulation of entries and copy-sources |
|
515 | ### code related to manipulation of entries and copy-sources | |
540 |
|
516 | |||
|
517 | def set_tracked(self, filename): | |||
|
518 | new = False | |||
|
519 | entry = self.get(filename) | |||
|
520 | if entry is None: | |||
|
521 | self._dirs_incr(filename) | |||
|
522 | entry = DirstateItem( | |||
|
523 | wc_tracked=True, | |||
|
524 | ) | |||
|
525 | ||||
|
526 | self._insert_entry(filename, entry) | |||
|
527 | new = True | |||
|
528 | elif not entry.tracked: | |||
|
529 | self._dirs_incr(filename, entry) | |||
|
530 | entry.set_tracked() | |||
|
531 | self._refresh_entry(filename, entry) | |||
|
532 | new = True | |||
|
533 | else: | |||
|
534 | # XXX This is probably overkill for more case, but we need this to | |||
|
535 | # fully replace the `normallookup` call with `set_tracked` one. | |||
|
536 | # Consider smoothing this in the future. | |||
|
537 | entry.set_possibly_dirty() | |||
|
538 | self._refresh_entry(filename, entry) | |||
|
539 | return new | |||
|
540 | ||||
541 | def _refresh_entry(self, f, entry): |
|
541 | def _refresh_entry(self, f, entry): | |
542 | if not entry.any_tracked: |
|
542 | if not entry.any_tracked: | |
543 | self._map.pop(f, None) |
|
543 | self._map.pop(f, None) | |
@@ -722,6 +722,9 b' if rustmod is not None:' | |||||
722 | def _insert_entry(self, f, entry): |
|
722 | def _insert_entry(self, f, entry): | |
723 | self._map.addfile(f, entry) |
|
723 | self._map.addfile(f, entry) | |
724 |
|
724 | |||
|
725 | def set_tracked(self, f): | |||
|
726 | return self._map.set_tracked(f) | |||
|
727 | ||||
725 | def _drop_entry(self, f): |
|
728 | def _drop_entry(self, f): | |
726 | self._map.drop_item_and_copy_source(f) |
|
729 | self._map.drop_item_and_copy_source(f) | |
727 |
|
730 |
@@ -131,6 +131,16 b' py_class!(pub class DirstateMap |py| {' | |||||
131 | Ok(PyNone) |
|
131 | Ok(PyNone) | |
132 | } |
|
132 | } | |
133 |
|
133 | |||
|
134 | def set_tracked(&self, f: PyObject) -> PyResult<PyBool> { | |||
|
135 | let bytes = f.extract::<PyBytes>(py)?; | |||
|
136 | let path = HgPath::new(bytes.data(py)); | |||
|
137 | let res = self.inner(py).borrow_mut().set_tracked(path); | |||
|
138 | let was_tracked = res.or_else(|_| { | |||
|
139 | Err(PyErr::new::<exc::OSError, _>(py, "Dirstate error".to_string())) | |||
|
140 | })?; | |||
|
141 | Ok(was_tracked.to_py_object(py)) | |||
|
142 | } | |||
|
143 | ||||
134 | def removefile( |
|
144 | def removefile( | |
135 | &self, |
|
145 | &self, | |
136 | f: PyObject, |
|
146 | f: PyObject, |
General Comments 0
You need to be logged in to leave comments.
Login now