mercurial/cmdutil.py
changeset 36194 39b3aab6231e
parent 36141 62719115875d
child 36203 01280638bdb1
equal deleted inserted replaced
36193:a228b2f55ad6 36194:39b3aab6231e
  2901     Make sure you have the working directory locked when calling this function.
  2901     Make sure you have the working directory locked when calling this function.
  2902     """
  2902     """
  2903     parent, p2 = parents
  2903     parent, p2 = parents
  2904     node = ctx.node()
  2904     node = ctx.node()
  2905     excluded_files = []
  2905     excluded_files = []
  2906     matcher_opts = {"exclude": excluded_files}
       
  2907 
  2906 
  2908     def checkout(f):
  2907     def checkout(f):
  2909         fc = ctx[f]
  2908         fc = ctx[f]
  2910         repo.wwrite(f, fc.data(), fc.flags())
  2909         repo.wwrite(f, fc.data(), fc.flags())
  2911 
  2910 
  2922             choice = repo.ui.promptchoice(
  2921             choice = repo.ui.promptchoice(
  2923                 _("forget added file %s (Yn)?$$ &Yes $$ &No") % f)
  2922                 _("forget added file %s (Yn)?$$ &Yes $$ &No") % f)
  2924             if choice == 0:
  2923             if choice == 0:
  2925                 repo.dirstate.drop(f)
  2924                 repo.dirstate.drop(f)
  2926             else:
  2925             else:
  2927                 excluded_files.append(repo.wjoin(f))
  2926                 excluded_files.append(f)
  2928         else:
  2927         else:
  2929             repo.dirstate.drop(f)
  2928             repo.dirstate.drop(f)
  2930     for f in actions['remove'][0]:
  2929     for f in actions['remove'][0]:
  2931         audit_path(f)
  2930         audit_path(f)
  2932         if interactive:
  2931         if interactive:
  2933             choice = repo.ui.promptchoice(
  2932             choice = repo.ui.promptchoice(
  2934                 _("remove added file %s (Yn)?$$ &Yes $$ &No") % f)
  2933                 _("remove added file %s (Yn)?$$ &Yes $$ &No") % f)
  2935             if choice == 0:
  2934             if choice == 0:
  2936                 doremove(f)
  2935                 doremove(f)
  2937             else:
  2936             else:
  2938                 excluded_files.append(repo.wjoin(f))
  2937                 excluded_files.append(f)
  2939         else:
  2938         else:
  2940             doremove(f)
  2939             doremove(f)
  2941     for f in actions['drop'][0]:
  2940     for f in actions['drop'][0]:
  2942         audit_path(f)
  2941         audit_path(f)
  2943         repo.dirstate.remove(f)
  2942         repo.dirstate.remove(f)
  2953             normal = repo.dirstate.normal
  2952             normal = repo.dirstate.normal
  2954 
  2953 
  2955     newlyaddedandmodifiedfiles = set()
  2954     newlyaddedandmodifiedfiles = set()
  2956     if interactive:
  2955     if interactive:
  2957         # Prompt the user for changes to revert
  2956         # Prompt the user for changes to revert
  2958         torevert = [repo.wjoin(f) for f in actions['revert'][0]]
  2957         torevert = [f for f in actions['revert'][0] if f not in excluded_files]
  2959         m = scmutil.match(ctx, torevert, matcher_opts)
  2958         m = scmutil.matchfiles(repo, torevert)
  2960         diffopts = patch.difffeatureopts(repo.ui, whitespace=True)
  2959         diffopts = patch.difffeatureopts(repo.ui, whitespace=True)
  2961         diffopts.nodates = True
  2960         diffopts.nodates = True
  2962         diffopts.git = True
  2961         diffopts.git = True
  2963         operation = 'discard'
  2962         operation = 'discard'
  2964         reversehunks = True
  2963         reversehunks = True