diff -r 02be5fc18c0c -r ffcc649a4e8f mercurial/commands.py --- a/mercurial/commands.py Wed Mar 09 10:47:33 2016 -0500 +++ b/mercurial/commands.py Tue Apr 12 03:40:53 2016 -0700 @@ -3063,29 +3063,22 @@ 'node identifiers') if opts.get('delete'): - try: - indices = [int(v) for v in opts.get('delete')] - except ValueError: - raise error.Abort(_('invalid index value'), - hint=_('use integers fro indices')) + indices = [] + for v in opts.get('delete'): + try: + indices.append(int(v)) + except ValueError: + raise error.Abort(_('invalid index value: %r') % v, + hint=_('use integers for indices')) if repo.currenttransaction(): - raise error.Abort(_('Cannot delete obsmarkers in the middle ' + raise error.Abort(_('cannot delete obsmarkers in the middle ' 'of transaction.')) - w = repo.wlock() - l = repo.lock() - try: - tr = repo.transaction('debugobsolete') - try: - n = repo.obsstore.delete(indices) - ui.write(_('Deleted %i obsolescense markers\n') % n) - tr.close() - finally: - tr.release() - finally: - l.release() - w.release() + with repo.lock(): + n = repo.obsstore.delete(indices) + ui.write(_('deleted %i obsolescense markers\n') % n) + return if precursor is not None: