mercurial/exchange.py
branchstable
changeset 45214 6063c1857d0a
parent 45156 c26335fa4225
child 45371 e58e234096de
--- a/mercurial/exchange.py	Fri Jul 24 00:50:57 2020 +0530
+++ b/mercurial/exchange.py	Thu Jul 23 16:57:56 2020 +0200
@@ -905,32 +905,27 @@
         # if repo.obsstore == False --> no obsolete
         # then, save the iteration
         if unfi.obsstore:
-            obsoletes = []
-            unstables = []
-            for node in outgoing.missing:
+            # this message are here for 80 char limit reason
+            mso = _(b"push includes obsolete changeset: %s!")
+            mspd = _(b"push includes phase-divergent changeset: %s!")
+            mscd = _(b"push includes content-divergent changeset: %s!")
+            mst = {
+                b"orphan": _(b"push includes orphan changeset: %s!"),
+                b"phase-divergent": mspd,
+                b"content-divergent": mscd,
+            }
+            # If we are to push if there is at least one
+            # obsolete or unstable changeset in missing, at
+            # least one of the missinghead will be obsolete or
+            # unstable. So checking heads only is ok
+            for node in outgoing.ancestorsof:
                 ctx = unfi[node]
                 if ctx.obsolete():
-                    obsoletes.append(ctx)
+                    raise error.Abort(mso % ctx)
                 elif ctx.isunstable():
-                    unstables.append(ctx)
-            if obsoletes or unstables:
-                msg = b""
-                if obsoletes:
-                    msg += _(b"push includes obsolete changesets:\n")
-                    msg += b"\n".join(b'  %s' % ctx for ctx in obsoletes)
-                if unstables:
-                    if msg:
-                        msg += b"\n"
-                    msg += _(b"push includes unstable changesets:\n")
-                    msg += b"\n".join(
-                        b'  %s (%s)'
-                        % (
-                            ctx,
-                            b", ".join(_(ins) for ins in ctx.instabilities()),
-                        )
-                        for ctx in unstables
-                    )
-                raise error.Abort(msg)
+                    # TODO print more than one instability in the abort
+                    # message
+                    raise error.Abort(mst[ctx.instabilities()[0]] % ctx)
 
         discovery.checkheads(pushop)
     return True