diff --git a/mercurial/mergestate.py b/mercurial/mergestate.py
--- a/mercurial/mergestate.py
+++ b/mercurial/mergestate.py
@@ -776,7 +776,9 @@
 
     # exec change
     for f, args, msg in actions.get(ACTION_EXEC, []):
-        repo.dirstate.normallookup(f)
+        repo.dirstate.update_file(
+            f, p1_tracked=True, wc_tracked=True, possibly_dirty=True
+        )
 
     # keep
     for f, args, msg in actions.get(ACTION_KEEP, []):