diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2083,7 +2083,8 @@ def remove(ui, repo, *pats, **opts): entire project history. If the files still exist in the working directory, they will be deleted from it. If invoked with --after, files are marked as removed, but not actually unlinked unless --force - is also given. + is also given. Without an explicit pattern, --after will only mark + files as removed if they are no longer in the working directory. This command schedules the files to be removed at the next commit. To undo a remove before that, see hg revert. @@ -2110,6 +2111,8 @@ def remove(ui, repo, *pats, **opts): reason = _('has been marked for add (use -f to force removal)') elif abs in unknown: reason = _('is not managed') + elif opts['after'] and not pats and abs not in deleted: + continue elif abs in removed: continue if reason: