mercurial/cmdutil.py
changeset 6651 7f0dd352fb4d
parent 6566 30d3d531e11a
child 6656 2cbe0f72c379
--- a/mercurial/cmdutil.py	Fri Jun 06 18:23:33 2008 +0200
+++ b/mercurial/cmdutil.py	Wed May 07 14:32:00 2008 +0400
@@ -274,14 +274,20 @@
         similarity = float(opts.get('similarity') or 0)
     add, remove = [], []
     mapping = {}
+    audit_path = util.path_auditor(repo.root)
     for src, abs, rel, exact in walk(repo, pats, opts):
         target = repo.wjoin(abs)
-        if src == 'f' and abs not in repo.dirstate:
+        good = True
+        try:
+            audit_path(abs)
+        except:
+            good = False
+        if src == 'f' and good and abs not in repo.dirstate:
             add.append(abs)
             mapping[abs] = rel, exact
             if repo.ui.verbose or not exact:
                 repo.ui.status(_('adding %s\n') % ((pats and rel) or abs))
-        if repo.dirstate[abs] != 'r' and (not util.lexists(target)
+        if repo.dirstate[abs] != 'r' and (not good or not util.lexists(target)
             or (os.path.isdir(target) and not os.path.islink(target))):
             remove.append(abs)
             mapping[abs] = rel, exact