comparison mercurial/commands.py @ 28795:f456834b2f7e

commands: allow debugobsolete to delete arbitrary obsmarkers Sample usage is: '$ hg debugobsolete --delete 0 5' This is a debug feature that will help people working on evolution and obsolescense.
author Kostia Balytskyi <ikostia@fb.com>
date Fri, 01 Apr 2016 15:12:50 -0700
parents 2637d6ad3e61
children 9b52094bb04d
comparison
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 = {}