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 = {} |