--- a/mercurial/subrepo.py Wed Jan 14 01:15:26 2015 +0100
+++ b/mercurial/subrepo.py Thu Feb 26 15:53:54 2015 -0500
@@ -1526,14 +1526,15 @@
def add(self, ui, match, prefix, explicitonly, **opts):
if self._gitmissing():
return []
- if match.files():
- files = match.files()
- else:
- (modified, added, removed,
- deleted, unknown, ignored, clean) = self.status(None)
- files = unknown
+
+ (modified, added, removed,
+ deleted, unknown, ignored, clean) = self.status(None)
- files = [f for f in files if match(f)]
+ # Unknown files not of interest will be rejected by the matcher
+ files = unknown
+ files.extend(match.files())
+
+ files = [f for f in sorted(set(files)) if match(f)]
for f in files:
exact = match.exact(f)
command = ["add"]