# HG changeset patch # User Matt Mackall # Date 1350940007 18000 # Node ID 66f0c78350abc19d6a4eb3574b5a4ea601dfb45c # Parent 1e4eb1faba6e6a68c14dc6ab07db858cdb0434d8 remove: don't return error on directories with tracked files Spotted by Sergey diff -r 1e4eb1faba6e -r 66f0c78350ab mercurial/commands.py --- a/mercurial/commands.py Sat Oct 20 21:43:46 2012 -0400 +++ b/mercurial/commands.py Mon Oct 22 16:06:47 2012 -0500 @@ -4842,11 +4842,18 @@ s = repo.status(match=m, clean=True) modified, added, deleted, clean = s[0], s[1], s[3], s[6] + # warn about failure to delete explicit files/dirs + wctx = repo[None] for f in m.files(): - if f not in repo.dirstate and not os.path.isdir(m.rel(f)): - if os.path.exists(m.rel(f)): + if f in repo.dirstate or f in wctx.dirs(): + continue + if os.path.exists(m.rel(f)): + if os.path.isdir(m.rel(f)): + ui.warn(_('not removing %s: no tracked files\n') % m.rel(f)) + else: ui.warn(_('not removing %s: file is untracked\n') % m.rel(f)) - ret = 1 + # missing files will generate a warning elsewhere + ret = 1 if force: list = modified + deleted + clean + added diff -r 1e4eb1faba6e -r 66f0c78350ab tests/test-remove.t --- a/tests/test-remove.t Sat Oct 20 21:43:46 2012 -0400 +++ b/tests/test-remove.t Mon Oct 22 16:06:47 2012 -0500 @@ -265,4 +265,17 @@ nothing changed [1] - $ cd .. +handling of untracked directories and missing files + + $ mkdir d1 + $ echo a > d1/a + $ hg rm --after d1 + not removing d1: no tracked files + [1] + $ hg add d1/a + $ rm d1/a + $ hg rm --after d1 + removing d1/a + $ hg rm --after nosuch + nosuch: No such file or directory + [1]