diff -r d4e1e947444b -r 9ac4e81b9659 mercurial/match.py --- a/mercurial/match.py Thu Aug 06 17:21:46 2015 -0700 +++ b/mercurial/match.py Thu Aug 06 21:00:16 2015 -0400 @@ -386,7 +386,8 @@ def __init__(self, root, cwd, patterns, include, exclude, default, auditor, ctx, listsubrepos=False, badfn=None): init = super(icasefsmatcher, self).__init__ - self._dsnormalize = ctx.repo().dirstate.normalize + self._dirstate = ctx.repo().dirstate + self._dsnormalize = self._dirstate.normalize init(root, cwd, patterns, include, exclude, default, auditor=auditor, ctx=ctx, listsubrepos=listsubrepos, badfn=badfn) @@ -402,7 +403,13 @@ kindpats = [] for kind, pats, source in self._kp: if kind not in ('re', 'relre'): # regex can't be normalized + p = pats pats = self._dsnormalize(pats) + + # Preserve the original to handle a case only rename. + if p != pats and p in self._dirstate: + kindpats.append((kind, p, source)) + kindpats.append((kind, pats, source)) return kindpats