Mercurial > public > mercurial-scm > hg-stable
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 = {} |