mercurial/subrepo.py
changeset 24183 932de135041f
parent 24182 00ef3edcf1d5
child 24209 6944b64cc28d
--- a/mercurial/subrepo.py	Thu Feb 26 15:53:54 2015 -0500
+++ b/mercurial/subrepo.py	Fri Feb 27 23:30:42 2015 -0500
@@ -1530,10 +1530,17 @@
         (modified, added, removed,
          deleted, unknown, ignored, clean) = self.status(None)
 
+        tracked = set()
+        # dirstates 'amn' warn, 'r' is added again
+        for l in (modified, added, deleted, clean):
+            tracked.update(l)
+
         # Unknown files not of interest will be rejected by the matcher
         files = unknown
         files.extend(match.files())
 
+        rejected = []
+
         files = [f for f in sorted(set(files)) if match(f)]
         for f in files:
             exact = match.exact(f)
@@ -1542,9 +1549,18 @@
                 command.append("-f") #should be added, even if ignored
             if ui.verbose or not exact:
                 ui.status(_('adding %s\n') % match.rel(f))
+
+            if f in tracked:  # hg prints 'adding' even if already tracked
+                if exact:
+                    rejected.append(f)
+                continue
             if not opts.get('dry_run'):
                 self._gitcommand(command + [f])
-        return []
+
+        for f in rejected:
+            ui.warn(_("%s already tracked!\n") % match.abs(f))
+
+        return rejected
 
     @annotatesubrepoerror
     def remove(self):