Mercurial > hg
changeset 48388:f5dea753fe4e
win32text: drop associated dirstate cache information on revert
Otherwise the could get size from one version of the file while the on-disk
version is still clean but with another size.
This fix the previously introduced error.
Differential Revision: https://phab.mercurial-scm.org/D11792
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 23 Nov 2021 03:22:30 +0100 |
parents | f838f5bca038 |
children | 03644a929d6e |
files | hgext/narrow/narrowdirstate.py hgext/win32text.py tests/test-win32text.t |
diffstat | 3 files changed, 22 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/narrow/narrowdirstate.py Wed Nov 17 20:27:27 2021 +0100 +++ b/hgext/narrow/narrowdirstate.py Tue Nov 23 03:22:30 2021 +0100 @@ -38,8 +38,8 @@ return super(narrowdirstate, self).normal(*args, **kwargs) @_editfunc - def set_tracked(self, *args): - return super(narrowdirstate, self).set_tracked(*args) + def set_tracked(self, *args, **kwargs): + return super(narrowdirstate, self).set_tracked(*args, **kwargs) @_editfunc def set_untracked(self, *args):
--- a/hgext/win32text.py Wed Nov 17 20:27:27 2021 +0100 +++ b/hgext/win32text.py Tue Nov 23 03:22:30 2021 +0100 @@ -47,6 +47,8 @@ from mercurial.i18n import _ from mercurial.node import short from mercurial import ( + cmdutil, + extensions, pycompat, registrar, ) @@ -215,6 +217,23 @@ repo.adddatafilter(name, fn) +def wrap_revert(orig, repo, ctx, names, uipathfn, actions, *args, **kwargs): + # reset dirstate cache for file we touch + ds = repo.dirstate + with ds.parentchange(): + for filename in actions[b'revert'][0]: + entry = ds.get_entry(filename) + if entry is not None: + if entry.p1_tracked: + ds.update_file( + filename, + entry.tracked, + p1_tracked=True, + p2_info=entry.p2_info, + ) + return orig(repo, ctx, names, uipathfn, actions, *args, **kwargs) + + def extsetup(ui): # deprecated config: win32text.warn if ui.configbool(b'win32text', b'warn'): @@ -224,3 +243,4 @@ b"https://mercurial-scm.org/wiki/Win32TextExtension\n" ) ) + extensions.wrapfunction(cmdutil, '_performrevert', wrap_revert)