Mercurial > public > mercurial-scm > hg-stable
diff rust/hg-cpython/src/dirstate/item.rs @ 48263:602c8e8411f5
dirstate: add a concept of "fallback" flags to dirstate item
The concept is defined and "used" by the flag code, but it is neither persisted
nor set anywhere yet. We currently focus on defining the semantic of the
attribute. More to come in the next changesets
Check the inline documentation for details.
Differential Revision: https://phab.mercurial-scm.org/D11686
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 18 Oct 2021 20:02:15 +0200 |
parents | 1000db4a71f1 |
children | 948570aa7630 |
line wrap: on
line diff
--- a/rust/hg-cpython/src/dirstate/item.rs Fri Oct 15 16:33:19 2021 +0200 +++ b/rust/hg-cpython/src/dirstate/item.rs Mon Oct 18 20:02:15 2021 +0200 @@ -1,4 +1,5 @@ use cpython::exc; +use cpython::ObjectProtocol; use cpython::PyBytes; use cpython::PyErr; use cpython::PyNone; @@ -62,6 +63,70 @@ } @property + def has_fallback_exec(&self) -> PyResult<bool> { + match self.entry(py).get().get_fallback_exec() { + Some(_) => Ok(true), + None => Ok(false), + } + } + + @property + def fallback_exec(&self) -> PyResult<Option<bool>> { + match self.entry(py).get().get_fallback_exec() { + Some(exec) => Ok(Some(exec)), + None => Ok(None), + } + } + + @fallback_exec.setter + def set_fallback_exec(&self, value: Option<PyObject>) -> PyResult<()> { + match value { + None => {self.entry(py).get().set_fallback_exec(None);}, + Some(value) => { + if value.is_none(py) { + self.entry(py).get().set_fallback_exec(None); + } else { + self.entry(py).get().set_fallback_exec( + Some(value.is_true(py)?) + ); + }}, + } + Ok(()) + } + + @property + def has_fallback_symlink(&self) -> PyResult<bool> { + match self.entry(py).get().get_fallback_symlink() { + Some(_) => Ok(true), + None => Ok(false), + } + } + + @property + def fallback_symlink(&self) -> PyResult<Option<bool>> { + match self.entry(py).get().get_fallback_symlink() { + Some(symlink) => Ok(Some(symlink)), + None => Ok(None), + } + } + + @fallback_symlink.setter + def set_fallback_symlink(&self, value: Option<PyObject>) -> PyResult<()> { + match value { + None => {self.entry(py).get().set_fallback_symlink(None);}, + Some(value) => { + if value.is_none(py) { + self.entry(py).get().set_fallback_symlink(None); + } else { + self.entry(py).get().set_fallback_symlink( + Some(value.is_true(py)?) + ); + }}, + } + Ok(()) + } + + @property def tracked(&self) -> PyResult<bool> { Ok(self.entry(py).get().tracked()) }