diff -r 05a682c8907d -r 7f0dd352fb4d mercurial/cmdutil.py --- 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