obsolete: move hint punching to push stable
authorPierre-Yves David <pierre-yves.david@logilab.fr>
Wed, 25 Jul 2012 17:43:38 +0200
branchstable
changeset 376 188afb394e10
parent 375 1525b240d806
child 377 1d6cc8c22cd9
child 395 822e5305e377
obsolete: move hint punching to push Core does not raise the warning in check heads
hgext/obsolete.py
--- a/hgext/obsolete.py	Wed Jul 25 17:40:50 2012 +0200
+++ b/hgext/obsolete.py	Wed Jul 25 17:43:38 2012 +0200
@@ -487,30 +487,22 @@
     * patch remote to ignore obsolete heads on remote
     """
     # do not push instability
-    try:
-        for h in outgoing.missingheads:
-            # checking heads only is enought because any thing base on obsolete
-            # changeset is either obsolete or unstable.
-            ctx =  repo[h]
-            if ctx.unstable():
-                raise util.Abort(_("push includes an unstable changeset: %s!")
-                                 % ctx)
-            if ctx.obsolete():
-                raise util.Abort(_("push includes an  obsolete changeset: %s!")
-                                 % ctx)
-            if ctx.latecomer():
-                raise util.Abort(_("push includes an latecomer changeset: %s!")
-                                 % ctx)
-            if ctx.conflicting():
-                raise util.Abort(_("push includes conflicting changeset: %s!")
-                                 % ctx)
-    except util.Abort, ex:
-        hint = _("use 'hg stabilize' to get a stable history (or --force to proceed)")
-        if (len(ex.args) >= 1
-            and ex.args[0].startswith('push includes ')
-            and ex.hint is None):
-            ex.hint = hint
-        raise
+    for h in outgoing.missingheads:
+        # checking heads only is enought because any thing base on obsolete
+        # changeset is either obsolete or unstable.
+        ctx =  repo[h]
+        if ctx.unstable():
+            raise util.Abort(_("push includes an unstable changeset: %s!")
+                             % ctx)
+        if ctx.obsolete():
+            raise util.Abort(_("push includes an  obsolete changeset: %s!")
+                             % ctx)
+        if ctx.latecomer():
+            raise util.Abort(_("push includes an latecomer changeset: %s!")
+                             % ctx)
+        if ctx.conflicting():
+            raise util.Abort(_("push includes conflicting changeset: %s!")
+                             % ctx)
     ### patch remote branch map
     # do not read it this burn eyes
     try:
@@ -1208,7 +1200,15 @@
         def push(self, remote, *args, **opts):
             """wrapper around pull that pull obsolete relation"""
             self._turn_extinct_secret()
-            result = opush(remote, *args, **opts)
+            try:
+                result = opush(remote, *args, **opts)
+            except util.Abort, ex:
+                hint = _("use 'hg stabilize' to get a stable history (or --force to proceed)")
+                if (len(ex.args) >= 1
+                    and ex.args[0].startswith('push includes ')
+                    and ex.hint is None):
+                    ex.hint = hint
+                raise
             if 'obsolete' in remote.listkeys('namespaces') and self.obsstore:
                 data = self.obsstore._writemarkers()
                 r = remote.pushkey('obsolete', 'dump', '',