Mercurial > hg-stable
changeset 48433:080151f18f3a
dirstate: make it mandatory to provide parentfiledata in `set_clean`
Gathering the mode, size and mtime, independently from determining that the file
is clean is a race-machine. So we just make these information required arguments.
(note that the data is still gathered in a racy way in practice, but at least
the API is no longer encouraging it.)
Differential Revision: https://phab.mercurial-scm.org/D11789
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 17 Nov 2021 20:26:14 +0100 |
parents | 9f1b9e128788 |
children | 6becd5773133 |
files | hgext/git/dirstate.py mercurial/dirstate.py |
diffstat | 2 files changed, 3 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/git/dirstate.py Mon Nov 22 15:58:51 2021 +0100 +++ b/hgext/git/dirstate.py Wed Nov 17 20:26:14 2021 +0100 @@ -257,7 +257,7 @@ if match(p): yield p - def set_clean(self, f, parentfiledata=None): + def set_clean(self, f, parentfiledata): """Mark a file normal and clean.""" # TODO: for now we just let libgit2 re-stat the file. We can # clearly do better.
--- a/mercurial/dirstate.py Mon Nov 22 15:58:51 2021 +0100 +++ b/mercurial/dirstate.py Wed Nov 17 20:26:14 2021 +0100 @@ -486,15 +486,12 @@ return ret @requires_no_parents_change - def set_clean(self, filename, parentfiledata=None): + def set_clean(self, filename, parentfiledata): """record that the current state of the file on disk is known to be clean""" self._dirty = True - if parentfiledata: - (mode, size, mtime) = parentfiledata - else: - (mode, size, mtime) = self._get_filedata(filename) if not self._map[filename].tracked: self._check_new_tracked_filename(filename) + (mode, size, mtime) = parentfiledata self._map.set_clean(filename, mode, size, mtime) if mtime > self._lastnormaltime: # Remember the most recent modification timeslot for status(),