Fix local file changes being ignored after non-branch merge
Bug introduced in eea96285cbf9
Spotted by TAH
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -1506,7 +1506,9 @@ class localrepository:
m, o, flag = merge[f]
self.merge3(f, m, o)
util.set_exec(self.wjoin(f), flag)
- if moddirstate:
+ if moddirstate and mode == 'm':
+ # only update dirstate on branch merge, otherwise we
+ # could mark files with changes as unchanged
self.dirstate.update([f], mode)
remove.sort()
--- a/tests/test-up-local-change.out
+++ b/tests/test-up-local-change.out
@@ -70,3 +70,9 @@ 1
+ hg diff
+ sed 's/\(\(---\|+++\).*\)\t.*/\1/'
+diff -r 1e71731e6fbb a
+--- a/a
++++ b/a
+@@ -1,1 +1,1 @@
+-a2
++abc