# HG changeset patch # User Pierre-Yves David # Date 1676417168 -3600 # Node ID 016dc2387943e1abce83d6a5aeed0879f8a74210 # Parent f93bccadcf42773810b9c12e94564ea6933b086b dirstate: introduce a `hacky_extension_update_file` method See inline documentation for details. diff -r f93bccadcf42 -r 016dc2387943 mercurial/dirstate.py --- a/mercurial/dirstate.py Tue Feb 07 09:36:35 2023 +0100 +++ b/mercurial/dirstate.py Wed Feb 15 00:26:08 2023 +0100 @@ -594,6 +594,48 @@ depending of what information ends up being relevant and useful to other processing. """ + self._update_file( + filename=filename, + wc_tracked=wc_tracked, + p1_tracked=p1_tracked, + p2_info=p2_info, + possibly_dirty=possibly_dirty, + parentfiledata=parentfiledata, + ) + + def hacky_extension_update_file(self, *args, **kwargs): + """NEVER USE THIS, YOU DO NOT NEED IT + + This function is a variant of "update_file" to be called by a small set + of extensions, it also adjust the internal state of file, but can be + called outside an `changing_parents` context. + + A very small number of extension meddle with the working copy content + in a way that requires to adjust the dirstate accordingly. At the time + this command is written they are : + - keyword, + - largefile, + PLEASE DO NOT GROW THIS LIST ANY FURTHER. + + This function could probably be replaced by more semantic one (like + "adjust expected size" or "always revalidate file content", etc) + however at the time where this is writen, this is too much of a detour + to be considered. + """ + self._update_file( + *args, + **kwargs, + ) + + def _update_file( + self, + filename, + wc_tracked, + p1_tracked, + p2_info=False, + possibly_dirty=False, + parentfiledata=None, + ): # note: I do not think we need to double check name clash here since we # are in a update/merge case that should already have taken care of