diff --git a/hgext/keyword.py b/hgext/keyword.py --- a/hgext/keyword.py +++ b/hgext/keyword.py @@ -264,8 +264,17 @@ class kwtemplater(object): if util.binary(data): continue if expand: + parents = ctx.parents() if lookup: ctx = self.linkctx(f, mf[f]) + elif self.restrict and len(parents) > 1: + # merge commit + # in case of conflict f is in modified state during + # merge, even if f does not differ from f in parent + for p in parents: + if f in p and not p[f].cmp(ctx[f]): + ctx = p[f].changectx() + break data, found = self.substitute(data, f, ctx, re_kw.subn) elif self.restrict: found = re_kw.search(data) diff --git a/tests/test-keyword.t b/tests/test-keyword.t --- a/tests/test-keyword.t +++ b/tests/test-keyword.t @@ -1062,13 +1062,13 @@ conflict: keyword should stay outside co foo >>>>>>> other: 85d2d2d732a5 - test: simplemerge -resolve to local +resolve to local, m must contain hash of last change (local parent) $ hg resolve -t internal:local -a (no more unresolved files) $ hg commit -m localresolve $ cat m - $Id: m 800511b3a22d Thu, 01 Jan 1970 00:00:00 +0000 test $ + $Id: m 88a80c8d172e Thu, 01 Jan 1970 00:00:00 +0000 test $ bar Test restricted mode with transplant -b