--- a/mercurial/cmdutil.py Tue Mar 31 15:41:02 2015 -0700
+++ b/mercurial/cmdutil.py Tue Mar 31 17:49:46 2015 -0500
@@ -2240,6 +2240,12 @@
if f not in repo.dirstate and not repo.wvfs.isdir(f):
if f not in forgot:
if repo.wvfs.exists(f):
+ # Don't complain if the exact case match wasn't given.
+ # But don't do this until after checking 'forgot', so
+ # that subrepo files aren't normalized, and this op is
+ # purely from data cached by the status walk above.
+ if repo.dirstate.normalize(f) in repo.dirstate:
+ continue
ui.warn(_('not removing %s: '
'file is already untracked\n')
% match.rel(f))
--- a/tests/test-add.t Tue Mar 31 15:41:02 2015 -0700
+++ b/tests/test-add.t Tue Mar 31 17:49:46 2015 -0500
@@ -179,6 +179,9 @@
$ hg add -v capsdir1/capsdir
adding CapsDir1/CapsDir/AbC.txt (glob)
adding CapsDir1/CapsDir/SubDir/Def.txt (glob)
+
+ $ hg forget capsdir1/capsdir/abc.txt
+ removing CapsDir1/CapsDir/AbC.txt (glob)
#endif
$ cd ..