changeset 4225:281f9f8f1bd4

Fix confusing message from hg revert (issue332) % mkdir sub1 % touch sub1/file1 % hg add sub1/ adding sub1/file1 % hg rev sub1 sub1: No such file in rev e4c586763258 forgetting sub1/file1
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Fri, 16 Mar 2007 00:22:52 -0300
parents 2216535f07d7
children fffacca46f09
files mercurial/commands.py tests/test-revert tests/test-revert.out
diffstat 3 files changed, 17 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Thu Mar 15 18:55:53 2007 -0500
+++ b/mercurial/commands.py	Fri Mar 16 00:22:52 2007 -0300
@@ -2166,9 +2166,19 @@
 
     # walk target manifest.
 
+    def badmatch(path):
+        if path in names:
+            return True
+        path_ = path + '/'
+        for f in names:
+            if f.startswith(path_):
+                return True
+        return False
+
     for src, abs, rel, exact in cmdutil.walk(repo, pats, opts, node=node,
-                                             badmatch=names.has_key):
-        if abs in names: continue
+                                             badmatch=badmatch):
+        if abs in names or src == 'b':
+            continue
         names[abs] = (rel, exact)
         target_only[abs] = True
 
--- a/tests/test-revert	Thu Mar 15 18:55:53 2007 -0500
+++ b/tests/test-revert	Fri Mar 16 00:22:52 2007 -0300
@@ -88,5 +88,8 @@
 echo %% issue332
 hg ci -A -m b -d '1000001 0'
 echo foobar > b/b
-hg revert b
+mkdir newdir
+echo foo > newdir/newfile
+hg add newdir/newfile
+hg revert b newdir
 true
--- a/tests/test-revert.out	Thu Mar 15 18:55:53 2007 -0500
+++ b/tests/test-revert.out	Fri Mar 16 00:22:52 2007 -0300
@@ -61,3 +61,4 @@
 %% issue332
 adding b/b
 reverting b/b
+forgetting newdir/newfile