D11792: win32text: drop associated dirstate cache information on revert
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Wed Nov 24 11:15:58 UTC 2021
marmoute created this revision.
Herald added a reviewer: durin42.
Herald added a reviewer: martinvonz.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
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 previous introduced error.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D11792
AFFECTED FILES
hgext/narrow/narrowdirstate.py
hgext/win32text.py
tests/test-win32text.t
CHANGE DETAILS
diff --git a/tests/test-win32text.t b/tests/test-win32text.t
--- a/tests/test-win32text.t
+++ b/tests/test-win32text.t
@@ -418,7 +418,6 @@
$ hg revert -a
reverting linefeed
$ hg st -q
- M linefeed (known-bad-output !)
$ cat linefeed
% just linefeed\r (esc)
diff --git a/hgext/win32text.py b/hgext/win32text.py
--- a/hgext/win32text.py
+++ b/hgext/win32text.py
@@ -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)
diff --git a/hgext/narrow/narrowdirstate.py b/hgext/narrow/narrowdirstate.py
--- a/hgext/narrow/narrowdirstate.py
+++ b/hgext/narrow/narrowdirstate.py
@@ -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):
To: marmoute, durin42, martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list