D11789: dirstate: make it mandatory to provide parentfiledata in `set_clean`
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Wed Nov 24 11:14:42 UTC 2021
marmoute created this revision.
Herald added a reviewer: durin42.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
Gathering the mode, size and mtime, independently from determining that the file
is clean is a race-machine. So we just make it a required argument.
(note that the data is still gathered in a racy way in practice, but at least
the API is no longer encouraging it.)
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D11789
AFFECTED FILES
hgext/git/dirstate.py
mercurial/dirstate.py
CHANGE DETAILS
diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py
--- a/mercurial/dirstate.py
+++ b/mercurial/dirstate.py
@@ -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(),
diff --git a/hgext/git/dirstate.py b/hgext/git/dirstate.py
--- a/hgext/git/dirstate.py
+++ b/hgext/git/dirstate.py
@@ -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.
To: marmoute, durin42, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list