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