diff -r 85ade05dc5b3 -r 8d707da26f9b mercurial/cmdutil.py --- a/mercurial/cmdutil.py Tue Sep 23 14:20:08 2014 -0400 +++ b/mercurial/cmdutil.py Fri Sep 19 18:40:39 2014 -0700 @@ -2503,9 +2503,6 @@ if abs not in names: names[abs] = m.rel(abs), m.exact(abs) - # get the list of subrepos that must be reverted - targetsubs = sorted(s for s in ctx.substate if m(s)) - # Find status of all file in `names`. m = scmutil.matchfiles(repo, names) @@ -2692,6 +2689,10 @@ if not opts.get('dry_run'): _performrevert(repo, parents, ctx, actions) + # get the list of subrepos that must be reverted + subrepomatch = scmutil.match(ctx, pats, opts) + targetsubs = sorted(s for s in ctx.substate if subrepomatch(s)) + if targetsubs: # Revert the subrepos on the revert list for sub in targetsubs: