diff --git a/mercurial/exchange.py b/mercurial/exchange.py index 41021660baa1bdb3fb089d6ddb6b6658c9e540b1_bWVyY3VyaWFsL2V4Y2hhbmdlLnB5..6063c1857d0a2d4dd985807c31ebf68aeb0bbf38_bWVyY3VyaWFsL2V4Y2hhbmdlLnB5 100644 --- a/mercurial/exchange.py +++ b/mercurial/exchange.py @@ -905,8 +905,19 @@ # 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(): @@ -911,4 +922,4 @@ ctx = unfi[node] if ctx.obsolete(): - obsoletes.append(ctx) + raise error.Abort(mso % ctx) elif ctx.isunstable(): @@ -914,23 +925,7 @@ 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 diff --git a/tests/test-obsolete-divergent.t b/tests/test-obsolete-divergent.t index 41021660baa1bdb3fb089d6ddb6b6658c9e540b1_dGVzdHMvdGVzdC1vYnNvbGV0ZS1kaXZlcmdlbnQudA==..6063c1857d0a2d4dd985807c31ebf68aeb0bbf38_dGVzdHMvdGVzdC1vYnNvbGV0ZS1kaXZlcmdlbnQudA== 100644 --- a/tests/test-obsolete-divergent.t +++ b/tests/test-obsolete-divergent.t @@ -118,9 +118,7 @@ $ hg push ../other pushing to ../other searching for changes - abort: push includes unstable changesets: - 82623d38b9ba (content-divergent) - 392fd25390da (content-divergent) + abort: push includes content-divergent changeset: 392fd25390da! [255] $ cd .. diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t index 41021660baa1bdb3fb089d6ddb6b6658c9e540b1_dGVzdHMvdGVzdC1vYnNvbGV0ZS50..6063c1857d0a2d4dd985807c31ebf68aeb0bbf38_dGVzdHMvdGVzdC1vYnNvbGV0ZS50 100644 --- a/tests/test-obsolete.t +++ b/tests/test-obsolete.t @@ -251,8 +251,7 @@ $ hg push ../tmpa pushing to ../tmpa searching for changes - abort: push includes unstable changesets: - 5601fb93a350 (phase-divergent) + abort: push includes phase-divergent changeset: 5601fb93a350! [255] Fixing "bumped" situation @@ -617,8 +616,7 @@ $ hg push ../tmpc/ -r 'desc("original_d")' pushing to ../tmpc/ searching for changes - abort: push includes obsolete changesets: - 94b33453f93b + abort: push includes obsolete changeset: 94b33453f93b! [255] refuse to push unstable changeset @@ -626,10 +624,7 @@ $ hg push ../tmpc/ pushing to ../tmpc/ searching for changes - abort: push includes obsolete changesets: - 94b33453f93b - push includes unstable changesets: - cda648ca50f5 (orphan) + abort: push includes orphan changeset: cda648ca50f5! [255] with --force it will work anyway @@ -652,26 +647,6 @@ no changes found [1] -pushing should work even if the outgoing changes contain an unrelated changeset -(neither obsolete nor unstable) (issue6372) - - $ hg up 1 -q - $ hg branch new -q - $ mkcommit c - - $ hg push ../tmpc/ --new-branch - pushing to ../tmpc/ - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - -make later tests work unmodified - - $ hg --config extensions.strip= strip tip -q - $ hg up 5 -q - Test that extinct changeset are properly detected $ hg log -r 'extinct()' @@ -1221,14 +1196,6 @@ phase-divergent: immutable predecessor 245b content-divergent: predecessor 245b - $ hg push ../tmpf -r 50c51b361e60 - pushing to ../tmpf - searching for changes - abort: push includes unstable changesets: - 50c51b361e60 (orphan, phase-divergent, content-divergent) - [255] - - #if serve $ hg serve -n test -p $HGPORT -d --pid-file=hg.pid -A access.log -E errors.log