2809 # walk dirstate to fill `names` |
2809 # walk dirstate to fill `names` |
2810 |
2810 |
2811 interactive = opts.get('interactive', False) |
2811 interactive = opts.get('interactive', False) |
2812 wctx = repo[None] |
2812 wctx = repo[None] |
2813 m = scmutil.match(wctx, pats, opts) |
2813 m = scmutil.match(wctx, pats, opts) |
|
2814 |
|
2815 # we'll need this later |
|
2816 targetsubs = sorted(s for s in wctx.substate if m(s)) |
|
2817 |
2814 if not m.always(): |
2818 if not m.always(): |
2815 m.bad = lambda x, y: False |
2819 m.bad = lambda x, y: False |
2816 for abs in repo.walk(m): |
2820 for abs in repo.walk(m): |
2817 names[abs] = m.rel(abs), m.exact(abs) |
2821 names[abs] = m.rel(abs), m.exact(abs) |
2818 |
2822 |
3046 if not opts.get('dry_run'): |
3050 if not opts.get('dry_run'): |
3047 needdata = ('revert', 'add', 'undelete') |
3051 needdata = ('revert', 'add', 'undelete') |
3048 _revertprefetch(repo, ctx, *[actions[name][0] for name in needdata]) |
3052 _revertprefetch(repo, ctx, *[actions[name][0] for name in needdata]) |
3049 _performrevert(repo, parents, ctx, actions, interactive) |
3053 _performrevert(repo, parents, ctx, actions, interactive) |
3050 |
3054 |
3051 # get the list of subrepos that must be reverted |
|
3052 subrepomatch = scmutil.match(wctx, pats, opts) |
|
3053 targetsubs = sorted(s for s in wctx.substate if subrepomatch(s)) |
|
3054 |
|
3055 if targetsubs: |
3055 if targetsubs: |
3056 # Revert the subrepos on the revert list |
3056 # Revert the subrepos on the revert list |
3057 for sub in targetsubs: |
3057 for sub in targetsubs: |
3058 try: |
3058 try: |
3059 wctx.sub(sub).revert(ctx.substate[sub], *pats, **opts) |
3059 wctx.sub(sub).revert(ctx.substate[sub], *pats, **opts) |