mercurial/cmdutil.py
changeset 22489 0d57bf80c7cb
parent 22488 6c52ed3f888e
child 22490 bcab7bc7280e
equal deleted inserted replaced
22488:6c52ed3f888e 22489:0d57bf80c7cb
  2602             target = repo.wjoin(abs)
  2602             target = repo.wjoin(abs)
  2603             if os.path.lexists(target):
  2603             if os.path.lexists(target):
  2604                 dsremovunk.add(abs)
  2604                 dsremovunk.add(abs)
  2605         dsremoved -= dsremovunk
  2605         dsremoved -= dsremovunk
  2606 
  2606 
  2607         ## computation of the action to performs on `names` content.
       
  2608 
       
  2609         def removeforget(abs):
       
  2610             if repo.dirstate[abs] == 'a':
       
  2611                 return _('forgetting %s\n')
       
  2612             return _('removing %s\n')
       
  2613 
       
  2614         # action to be actually performed by revert
  2607         # action to be actually performed by revert
  2615         # (<list of file>, message>) tuple
  2608         # (<list of file>, message>) tuple
  2616         actions = {'revert': ([], _('reverting %s\n')),
  2609         actions = {'revert': ([], _('reverting %s\n')),
  2617                    'add': ([], _('adding %s\n')),
  2610                    'add': ([], _('adding %s\n')),
  2618                    'remove': ([], removeforget),
  2611                    'remove': ([], _('removing %s\n')),
       
  2612                    'forget': ([], _('forgetting %s\n')),
  2619                    'undelete': ([], _('undeleting %s\n')),
  2613                    'undelete': ([], _('undeleting %s\n')),
  2620                    'noop': (None, _('no changes needed to %s\n')),
  2614                    'noop': (None, _('no changes needed to %s\n')),
  2621                    'unknown': (None, _('file not managed: %s\n')),
  2615                    'unknown': (None, _('file not managed: %s\n')),
  2622                   }
  2616                   }
  2623 
  2617 
  2640             # Modified compared to target, local change
  2634             # Modified compared to target, local change
  2641             (dsmodified,    actions['revert'],   backup),
  2635             (dsmodified,    actions['revert'],   backup),
  2642             # Added since target
  2636             # Added since target
  2643             (added,         actions['remove'],   discard),
  2637             (added,         actions['remove'],   discard),
  2644             # Added in working directory
  2638             # Added in working directory
  2645             (dsadded,       actions['remove'],   discard),
  2639             (dsadded,       actions['forget'],   discard),
  2646             # Removed since  target, before working copy parent
  2640             # Removed since  target, before working copy parent
  2647             (removed,       actions['add'],      discard),
  2641             (removed,       actions['add'],      discard),
  2648             # Same as `removed` but an unknown file exists at the same path
  2642             # Same as `removed` but an unknown file exists at the same path
  2649             (removunk,      actions['add'],      backup),
  2643             (removunk,      actions['add'],      backup),
  2650             # Removed since targe, marked as such in working copy parent
  2644             # Removed since targe, marked as such in working copy parent
  2715     def checkout(f):
  2709     def checkout(f):
  2716         fc = ctx[f]
  2710         fc = ctx[f]
  2717         repo.wwrite(f, fc.data(), fc.flags())
  2711         repo.wwrite(f, fc.data(), fc.flags())
  2718 
  2712 
  2719     audit_path = pathutil.pathauditor(repo.root)
  2713     audit_path = pathutil.pathauditor(repo.root)
       
  2714     for f in actions['forget'][0]:
       
  2715         repo.dirstate.drop(f)
  2720     for f in actions['remove'][0]:
  2716     for f in actions['remove'][0]:
  2721         if repo.dirstate[f] == 'a':
       
  2722             repo.dirstate.drop(f)
       
  2723             continue
       
  2724         audit_path(f)
  2717         audit_path(f)
  2725         try:
  2718         try:
  2726             util.unlinkpath(repo.wjoin(f))
  2719             util.unlinkpath(repo.wjoin(f))
  2727         except OSError:
  2720         except OSError:
  2728             pass
  2721             pass