diff -r 2a3f24786d09 -r b2fb1403994e mercurial/dirstate.py --- a/mercurial/dirstate.py Sat Apr 04 19:06:43 2015 -0400 +++ b/mercurial/dirstate.py Mon Apr 06 17:16:55 2015 -0500 @@ -842,9 +842,16 @@ audit_path = pathutil.pathauditor(self._root) for nf in iter(visit): + # If a stat for the same file was already added with a + # different case, don't add one for this, since that would + # make it appear as if the file exists under both names + # on disk. + if (normalizefile and + normalizefile(nf, True, True) in results): + results[nf] = None # Report ignored items in the dmap as long as they are not # under a symlink directory. - if audit_path.check(nf): + elif audit_path.check(nf): try: results[nf] = lstat(join(nf)) # file was just ignored, no links, and exists