Mercurial > hg
changeset 50117:3433723d1b9b
dirstate: warn if dirty when starting an edition
The dirstate should be clean before we start changing it. Otherwise we might
write unrelated changes. Having a dirty dirstate laying around is also
suspicious.
This is similar to what we do when opening a new transaction, but this time
this affect dirstate changes outside of a transaction.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 19 Feb 2023 03:21:12 +0100 |
parents | 9b49809eb612 |
children | 65943224c184 |
files | mercurial/dirstate.py |
diffstat | 1 files changed, 3 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/dirstate.py Tue Feb 21 03:22:51 2023 +0100 +++ b/mercurial/dirstate.py Sun Feb 19 03:21:12 2023 +0100 @@ -190,6 +190,9 @@ raise error.ProgrammingError(msg) has_tr = repo.currenttransaction() is not None + if not has_tr and self._changing_level == 0 and self._dirty: + msg = "entering a changing context, but dirstate is already dirty" + raise error.ProgrammingError(msg) # different type of change are mutually exclusive if self._change_type is None: