Mercurial > public > mercurial-scm > hg
diff mercurial/cmdutil.py @ 24548:c780a63f61ca stable
forget: cleanup the output for an inexact case match on icasefs
Previously, specifying a file name but not matching the dirstate case yielded
the following, even though the file was actually removed:
$ hg forget capsdir1/capsdir/abc.txt
not removing capsdir\a.txt: file is already untracked
removing CapsDir\A.txt
[1]
This change doesn't appear to cause any extra filesystem accesses, even if a
nonexistant file is specified.
If a directory is specified without a case match, it is (and was previously)
still silently ignored.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Tue, 31 Mar 2015 17:42:46 -0400 |
parents | ac41aa4a66ab |
children | 6e73c66a6919 |
line wrap: on
line diff
--- a/mercurial/cmdutil.py Tue Mar 31 11:11:39 2015 -0400 +++ b/mercurial/cmdutil.py Tue Mar 31 17:42:46 2015 -0400 @@ -2044,6 +2044,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))