diff -r 36111f98f23d -r ccb1623266eb mercurial/context.py --- a/mercurial/context.py Mon May 18 22:35:27 2015 -0500 +++ b/mercurial/context.py Sun May 17 01:06:10 2015 -0400 @@ -9,7 +9,7 @@ from i18n import _ import mdiff, error, util, scmutil, subrepo, patch, encoding, phases import match as matchmod -import os, errno, stat +import copy, os, errno, stat import obsolete as obsmod import repoview import fileset @@ -590,8 +590,14 @@ '''Generates matching file names.''' # Override match.bad method to have message with nodeid + match = copy.copy(match) oldbad = match.bad def bad(fn, msg): + # The manifest doesn't know about subrepos, so don't complain about + # paths into valid subrepos. + if util.any(fn == s or fn.startswith(s + '/') + for s in self.substate): + return oldbad(fn, _('no such file in rev %s') % self) match.bad = bad