mercurial/cmdutil.py
changeset 24475 06cbff4674a3
parent 24472 1bf71faf042e
child 24476 1378f20c8564
equal deleted inserted replaced
24474:61a99993f8a7 24475:06cbff4674a3
  2808     wlock = repo.wlock()
  2808     wlock = repo.wlock()
  2809     try:
  2809     try:
  2810         ## filling of the `names` mapping
  2810         ## filling of the `names` mapping
  2811         # walk dirstate to fill `names`
  2811         # walk dirstate to fill `names`
  2812 
  2812 
       
  2813         interactive = opts.get('interactive', False)
  2813         wctx = repo[None]
  2814         wctx = repo[None]
  2814         m = scmutil.match(wctx, pats, opts)
  2815         m = scmutil.match(wctx, pats, opts)
  2815         if not m.always():
  2816         if not m.always():
  2816             m.bad = lambda x, y: False
  2817             m.bad = lambda x, y: False
  2817             for abs in repo.walk(m):
  2818             for abs in repo.walk(m):
  3029                                      or wctx[abs].cmp(ctx[abs])):
  3030                                      or wctx[abs].cmp(ctx[abs])):
  3030                             bakname = "%s.orig" % rel
  3031                             bakname = "%s.orig" % rel
  3031                             ui.note(_('saving current version of %s as %s\n') %
  3032                             ui.note(_('saving current version of %s as %s\n') %
  3032                                     (rel, bakname))
  3033                                     (rel, bakname))
  3033                             if not opts.get('dry_run'):
  3034                             if not opts.get('dry_run'):
  3034                                 util.rename(target, bakname)
  3035                                 if interactive:
       
  3036                                     util.copyfile(target, bakname)
       
  3037                                 else:
       
  3038                                     util.rename(target, bakname)
  3035                     if ui.verbose or not exact:
  3039                     if ui.verbose or not exact:
  3036                         if not isinstance(msg, basestring):
  3040                         if not isinstance(msg, basestring):
  3037                             msg = msg(abs)
  3041                             msg = msg(abs)
  3038                         ui.status(msg % rel)
  3042                         ui.status(msg % rel)
  3039                 elif exact:
  3043                 elif exact:
  3042 
  3046 
  3043 
  3047 
  3044         if not opts.get('dry_run'):
  3048         if not opts.get('dry_run'):
  3045             needdata = ('revert', 'add', 'undelete')
  3049             needdata = ('revert', 'add', 'undelete')
  3046             _revertprefetch(repo, ctx, *[actions[name][0] for name in needdata])
  3050             _revertprefetch(repo, ctx, *[actions[name][0] for name in needdata])
  3047             interactive = opts.get('interactive', False)
       
  3048             _performrevert(repo, parents, ctx, actions, interactive)
  3051             _performrevert(repo, parents, ctx, actions, interactive)
  3049 
  3052 
  3050         # get the list of subrepos that must be reverted
  3053         # get the list of subrepos that must be reverted
  3051         subrepomatch = scmutil.match(wctx, pats, opts)
  3054         subrepomatch = scmutil.match(wctx, pats, opts)
  3052         targetsubs = sorted(s for s in wctx.substate if subrepomatch(s))
  3055         targetsubs = sorted(s for s in wctx.substate if subrepomatch(s))