phase: make if abort on nullid for the good reason
authorPatrick Mezard <patrick@mezard.eu>
Sat, 12 May 2012 00:24:07 +0200
changeset 16659 58edd786e96f
parent 16658 6b3d31d04a69
child 16660 2a71cc53f244
phase: make if abort on nullid for the good reason The good reason being you cannot call retractboundary() on nullid, not revset.set() cannot resolve '-1'.
mercurial/commands.py
mercurial/phases.py
tests/test-phases.t
--- a/mercurial/commands.py	Sat May 12 00:24:07 2012 +0200
+++ b/mercurial/commands.py	Sat May 12 00:24:07 2012 +0200
@@ -4375,9 +4375,9 @@
         lock = repo.lock()
         try:
             # set phase
-            nodes = [ctx.node() for ctx in repo.set('%ld', revs)]
-            if not nodes:
-                raise util.Abort(_('empty revision set'))
+            if not revs:
+                 raise util.Abort(_('empty revision set'))
+            nodes = [repo[r].node() for r in revs]
             olddata = repo._phasecache.getphaserevs(repo)[:]
             phases.advanceboundary(repo, targetphase, nodes)
             if opts['force']:
--- a/mercurial/phases.py	Sat May 12 00:24:07 2012 +0200
+++ b/mercurial/phases.py	Sat May 12 00:24:07 2012 +0200
@@ -101,6 +101,7 @@
 import errno
 from node import nullid, nullrev, bin, hex, short
 from i18n import _
+import util
 
 allphases = public, draft, secret = range(3)
 trackedphases = allphases[1:]
@@ -250,6 +251,8 @@
         newroots = [n for n in nodes
                     if self.phase(repo, repo[n].rev()) < targetphase]
         if newroots:
+            if nullid in newroots:
+                raise util.Abort(_('cannot change null revision phase'))
             currentroots = currentroots.copy()
             currentroots.update(newroots)
             ctxs = repo.set('roots(%ln::)', currentroots)
--- a/tests/test-phases.t	Sat May 12 00:24:07 2012 +0200
+++ b/tests/test-phases.t	Sat May 12 00:24:07 2012 +0200
@@ -13,7 +13,7 @@
 Cannot change null revision phase
 
   $ hg phase --force --secret null
-  abort: unknown revision '-1'!
+  abort: cannot change null revision phase
   [255]
   $ hg phase null
   -1: public