--- 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):