mercurial/cmdutil.py
changeset 15911 c654eac03452
parent 15907 51fc43253a52
child 15912 2bd54ffaa27e
--- a/mercurial/cmdutil.py	Tue Jan 17 19:10:54 2012 -0500
+++ b/mercurial/cmdutil.py	Tue Jan 17 19:10:58 2012 -0500
@@ -1162,7 +1162,7 @@
                 yield change(rev)
     return iterate()
 
-def add(ui, repo, match, dryrun, listsubrepos, prefix):
+def add(ui, repo, match, dryrun, listsubrepos, prefix, explicitonly):
     join = lambda f: os.path.join(prefix, f)
     bad = []
     oldbad = match.bad
@@ -1175,7 +1175,7 @@
         cca = scmutil.casecollisionauditor(ui, abort, wctx)
     for f in repo.walk(match):
         exact = match.exact(f)
-        if exact or f not in repo.dirstate:
+        if exact or not explicitonly and f not in repo.dirstate:
             if cca:
                 cca(f)
             names.append(f)
@@ -1187,11 +1187,11 @@
         try:
             submatch = matchmod.narrowmatcher(subpath, match)
             if listsubrepos:
-                bad.extend(sub.add(ui, submatch, dryrun, prefix))
+                bad.extend(sub.add(ui, submatch, dryrun, listsubrepos, prefix,
+                                   False))
             else:
-                for f in sub.walk(submatch):
-                    if submatch.exact(f):
-                        bad.extend(sub.add(ui, submatch, dryrun, prefix))
+                bad.extend(sub.add(ui, submatch, dryrun, listsubrepos, prefix,
+                                   True))
         except error.LookupError:
             ui.status(_("skipping missing subrepository: %s\n")
                            % join(subpath))