mercurial/commands.py
changeset 28795 f456834b2f7e
parent 28794 2637d6ad3e61
child 28797 9b52094bb04d
equal deleted inserted replaced
28794:2637d6ad3e61 28795:f456834b2f7e
  3039         [('', 'flags', 0, _('markers flag')),
  3039         [('', 'flags', 0, _('markers flag')),
  3040          ('', 'record-parents', False,
  3040          ('', 'record-parents', False,
  3041           _('record parent information for the precursor')),
  3041           _('record parent information for the precursor')),
  3042          ('r', 'rev', [], _('display markers relevant to REV')),
  3042          ('r', 'rev', [], _('display markers relevant to REV')),
  3043          ('', 'index', False, _('display index of the marker')),
  3043          ('', 'index', False, _('display index of the marker')),
       
  3044          ('', 'delete', [], _('delete markers specified by indices')),
  3044         ] + commitopts2,
  3045         ] + commitopts2,
  3045          _('[OBSOLETED [REPLACEMENT ...]]'))
  3046          _('[OBSOLETED [REPLACEMENT ...]]'))
  3046 def debugobsolete(ui, repo, precursor=None, *successors, **opts):
  3047 def debugobsolete(ui, repo, precursor=None, *successors, **opts):
  3047     """create arbitrary obsolete marker
  3048     """create arbitrary obsolete marker
  3048 
  3049 
  3058                 raise TypeError()
  3059                 raise TypeError()
  3059             return n
  3060             return n
  3060         except TypeError:
  3061         except TypeError:
  3061             raise error.Abort('changeset references must be full hexadecimal '
  3062             raise error.Abort('changeset references must be full hexadecimal '
  3062                              'node identifiers')
  3063                              'node identifiers')
       
  3064 
       
  3065     if opts.get('delete'):
       
  3066         try:
       
  3067             indices = [int(v) for v in opts.get('delete')]
       
  3068         except ValueError:
       
  3069             raise error.Abort(_('invalid index value'),
       
  3070                               hint=_('use integers fro indices'))
       
  3071 
       
  3072         if repo.currenttransaction():
       
  3073             raise error.Abort(_('Cannot delete obsmarkers in the middle '
       
  3074                                 'of transaction.'))
       
  3075 
       
  3076         w = repo.wlock()
       
  3077         l = repo.lock()
       
  3078         try:
       
  3079             tr = repo.transaction('debugobsolete')
       
  3080             try:
       
  3081                 n = repo.obsstore.delete(indices)
       
  3082                 ui.write(_('Deleted %i obsolescense markers\n') % n)
       
  3083                 tr.close()
       
  3084             finally:
       
  3085                 tr.release()
       
  3086         finally:
       
  3087             l.release()
       
  3088             w.release()
       
  3089         return
  3063 
  3090 
  3064     if precursor is not None:
  3091     if precursor is not None:
  3065         if opts['rev']:
  3092         if opts['rev']:
  3066             raise error.Abort('cannot select revision when creating marker')
  3093             raise error.Abort('cannot select revision when creating marker')
  3067         metadata = {}
  3094         metadata = {}