diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2798,7 +2798,7 @@ def pull(ui, repo, source="default", **o try: revs = [other.lookup(rev) for rev in revs] except error.CapabilityError: - err = _("Other repository doesn't support revision lookup, " + err = _("other repository doesn't support revision lookup, " "so a rev cannot be specified.") raise util.Abort(err) @@ -2913,21 +2913,24 @@ def remove(ui, repo, *pats, **opts): ui.warn(_('not removing %s: file is untracked\n') % m.rel(f)) ret = 1 - def warn(files, reason): - for f in files: - ui.warn(_('not removing %s: file %s (use -f to force removal)\n') - % (m.rel(f), reason)) - ret = 1 - if force: remove, forget = modified + deleted + clean, added elif after: remove, forget = deleted, [] - warn(modified + added + clean, _('still exists')) + for f in modified + added + clean: + ui.warn(_('not removing %s: file still exists (use -f' + ' to force removal)\n') % m.rel(f)) + ret = 1 else: remove, forget = deleted + clean, [] - warn(modified, _('is modified')) - warn(added, _('has been marked for add')) + for f in modified: + ui.warn(_('not removing %s: file is modified (use -f' + ' to force removal)\n') % m.rel(f)) + ret = 1 + for f in added: + ui.warn(_('not removing %s: file has been marked for add (use -f' + ' to force removal)\n') % m.rel(f)) + ret = 1 for f in sorted(remove + forget): if ui.verbose or not m.exact(f): diff --git a/tests/test-remove.t b/tests/test-remove.t --- a/tests/test-remove.t +++ b/tests/test-remove.t @@ -1,5 +1,6 @@ $ remove() { > hg rm $@ + > echo "exit code: $?" > hg st > # do not use ls -R, which recurses in .hg subdirs on Mac OS X 10.5 > find . -name .hg -prune -o -type f -print | sort @@ -14,6 +15,7 @@ file not managed $ remove foo not removing foo: file is untracked + exit code: 1 ? foo ./foo 0 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -28,6 +30,7 @@ 00 state added, options none $ hg add bar $ remove bar not removing bar: file has been marked for add (use -f to force removal) + exit code: 1 A bar ./bar ./foo @@ -36,6 +39,7 @@ 00 state added, options none 01 state clean, options none $ remove foo + exit code: 0 R foo ? bar ./bar @@ -46,6 +50,7 @@ 02 state modified, options none $ echo b >> foo $ remove foo not removing foo: file is modified (use -f to force removal) + exit code: 1 M foo ? bar ./bar @@ -56,6 +61,7 @@ 03 state missing, options none $ rm foo $ remove foo + exit code: 0 R foo ? bar ./bar @@ -66,6 +72,7 @@ 10 state added, options -f $ echo b > bar $ hg add bar $ remove -f bar + exit code: 0 ? bar ./bar ./foo @@ -75,6 +82,7 @@ 10 state added, options -f 11 state clean, options -f $ remove -f foo + exit code: 0 R foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -82,6 +90,7 @@ 12 state modified, options -f $ echo b >> foo $ remove -f foo + exit code: 0 R foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -89,6 +98,7 @@ 13 state missing, options -f $ rm foo $ remove -f foo + exit code: 0 R foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -98,6 +108,7 @@ 20 state added, options -A $ hg add bar $ remove -A bar not removing bar: file still exists (use -f to force removal) + exit code: 1 A bar ./bar ./foo @@ -107,6 +118,7 @@ 21 state clean, options -A $ remove -A foo not removing foo: file still exists (use -f to force removal) + exit code: 1 ? bar ./bar ./foo @@ -117,6 +129,7 @@ 22 state modified, options -A $ echo b >> foo $ remove -A foo not removing foo: file still exists (use -f to force removal) + exit code: 1 M foo ? bar ./bar @@ -127,6 +140,7 @@ 23 state missing, options -A $ rm foo $ remove -A foo + exit code: 0 R foo ? bar ./bar @@ -137,6 +151,7 @@ 30 state added, options -Af $ echo b > bar $ hg add bar $ remove -Af bar + exit code: 0 ? bar ./bar ./foo @@ -146,6 +161,7 @@ 30 state added, options -Af 31 state clean, options -Af $ remove -Af foo + exit code: 0 R foo ./foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -154,6 +170,7 @@ 32 state modified, options -Af $ echo b >> foo $ remove -Af foo + exit code: 0 R foo ./foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -162,6 +179,7 @@ 33 state missing, options -Af $ rm foo $ remove -Af foo + exit code: 0 R foo 1 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -180,6 +198,7 @@ dir, options none $ remove test removing test/bar removing test/foo + exit code: 0 R test/bar R test/foo ./foo @@ -191,6 +210,7 @@ dir, options -f $ remove -f test removing test/bar removing test/foo + exit code: 0 R test/bar R test/foo ./foo @@ -202,6 +222,7 @@ dir, options -A $ remove -A test not removing test/foo: file still exists (use -f to force removal) removing test/bar + exit code: 1 R test/bar ./foo ./test/foo @@ -213,6 +234,7 @@ dir, options -Af $ remove -Af test removing test/bar removing test/foo + exit code: 0 R test/bar R test/foo ./foo