Patchwork [1,of,2,v2] commands: disallow 'hg debugobsolete --index --rev <smth>'

login
register
mail settings
Submitter Kostia Balytskyi
Date April 1, 2016, 10:23 p.m.
Message ID <ad2dcfb236925128183b.1459549420@dev1902.lla1.facebook.com>
Download mbox | patch
Permalink /patch/14237/
State Superseded
Delegated to: Pierre-Yves David
Headers show

Comments

Kostia Balytskyi - April 1, 2016, 10:23 p.m.
# HG changeset patch
# User Kostia Balytskyi <ikostia@fb.com>
# Date 1459549231 25200
#      Fri Apr 01 15:20:31 2016 -0700
# Node ID ad2dcfb236925128183bfec0e1ea8cf105c83f10
# Parent  1490e850cffc0103fd42714cf1245a55bcbdc4a6
commands: disallow 'hg debugobsolete --index --rev <smth>'

A bug in the original --index implementation. The goal of --index is to allow
unique obsmarker identification that would be consistent between invocations
of this command in the unchanged repo. Further goal is to use this index to
delete arbitrary obsmarkers. So calling --index together with --rev would
cause obsmarker indices to be different than just calling --index. This is
not desired and current pattern for getting the index of an interesting
obsmarker is: `$ hg debugobsolete --index | grep <interesting hash>`.
It would clearly be better if we could somehow compute a hash of an obsmarker
and use it to identify the one we want to delete, but it seems a bit too
heavy for our current goals, so we can do this later if we want.

Patch

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -3100,6 +3100,9 @@  def debugobsolete(ui, repo, precursor=No
         finally:
             l.release()
     else:
+        if opts.get('rev') and opts.get('index'):
+            hint = _("call 'hg debugobsolete --index' without other arguments")
+            raise error.Abort(_("cannot use --index with --rev"), hint=hint)
         if opts['rev']:
             revs = scmutil.revrange(repo, opts['rev'])
             nodes = [repo[r].node() for r in revs]