# HG changeset patch # User Brendan Cully # Date 1177949607 25200 # Node ID cf5f35ec47207b28b8f3c83b1ff9386caa85b95a # Parent 9770d260a4058e9098f36e078a7f6f5bae4ce95a Fix rm -A with no patterns, which I just broke. 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: diff --git a/tests/test-remove b/tests/test-remove --- a/tests/test-remove +++ b/tests/test-remove @@ -29,7 +29,14 @@ echo c >> b hg rm b hg rm -f b hg rm -A c +hg st cat c +hg revert c +hg rm -A +hg st +rm c +hg rm -A +hg st cd .. hg clone a b diff --git a/tests/test-remove.out b/tests/test-remove.out --- a/tests/test-remove.out +++ b/tests/test-remove.out @@ -54,5 +54,11 @@ adding a adding b adding c not removing b: file is modified (use -f to force removal) +R b +R c c +R b +removing c +R b +R c 3 files updated, 0 files merged, 0 files removed, 0 files unresolved