# HG changeset patch # User Augie Fackler # Date 1588601213 14400 # Node ID cfe86fbc722e490a87fd0181e77619246bea9e7f # Parent 16cba0ad8ac2ef598f74169179dd9491d74a83fb# Parent ee0790b67c45efa18ff66a40164956b32ef853c2 merge with stable diff -r 16cba0ad8ac2 -r cfe86fbc722e .hgsigs --- a/.hgsigs Fri May 01 08:07:25 2020 -0700 +++ b/.hgsigs Mon May 04 10:06:53 2020 -0400 @@ -195,3 +195,4 @@ 6d121acbb82e65fe4dd3c2318a1b61981b958492 0 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 diff -r 16cba0ad8ac2 -r cfe86fbc722e .hgtags --- a/.hgtags Fri May 01 08:07:25 2020 -0700 +++ b/.hgtags Mon May 04 10:06:53 2020 -0400 @@ -208,3 +208,4 @@ 6d121acbb82e65fe4dd3c2318a1b61981b958492 5.3.1 8fca7e8449a847e3cf1054f2c07b51237699fad3 5.3.2 26ce8e7515036d3431a03aaeb7bc72dd96cb1112 5.4rc0 +cf3e07d7648a4371ce584d15dd692e7a6845792f 5.4 diff -r 16cba0ad8ac2 -r cfe86fbc722e hgext/phabricator.py --- a/hgext/phabricator.py Fri May 01 08:07:25 2020 -0700 +++ b/hgext/phabricator.py Mon May 04 10:06:53 2020 -0400 @@ -1307,6 +1307,26 @@ if any(c for c in ctxs if c.obsolete()): raise error.Abort(_(b"obsolete commits cannot be posted for review")) + # Ensure the local commits are an unbroken range. The semantics of the + # --fold option implies this, and the auto restacking of orphans requires + # it. Otherwise A+C in A->B->C will cause B to be orphaned, and C' to + # get A' as a parent. + def _fail_nonlinear_revs(revs, skiprev, revtype): + badnodes = [repo[r].node() for r in revs if r != skiprev] + raise error.Abort( + _(b"cannot phabsend multiple %s revisions: %s") + % (revtype, scmutil.nodesummaries(repo, badnodes)), + hint=_(b"the revisions must form a linear chain"), + ) + + heads = repo.revs(b'heads(%ld)', revs) + if len(heads) > 1: + _fail_nonlinear_revs(heads, heads.max(), b"head") + + roots = repo.revs(b'roots(%ld)', revs) + if len(roots) > 1: + _fail_nonlinear_revs(roots, roots.min(), b"root") + fold = opts.get(b'fold') if fold: if len(revs) == 1: @@ -1322,13 +1342,6 @@ if not opts.get(b"amend"): raise error.Abort(_(b"cannot fold with --no-amend")) - # Ensure the local commits are an unbroken range - revrange = repo.revs(b'(first(%ld)::last(%ld))', revs, revs) - if any(r for r in revs if r not in revrange) or any( - r for r in revrange if r not in revs - ): - raise error.Abort(_(b"cannot fold non-linear revisions")) - # It might be possible to bucketize the revisions by the DREV value, and # iterate over those groups when posting, and then again when amending. # But for simplicity, require all selected revisions to be for the same diff -r 16cba0ad8ac2 -r cfe86fbc722e tests/test-phabricator.t --- a/tests/test-phabricator.t Fri May 01 08:07:25 2020 -0700 +++ b/tests/test-phabricator.t Mon May 04 10:06:53 2020 -0400 @@ -181,7 +181,7 @@ 1849d7828727 mapped to old nodes ['1849d7828727'] D7919 - skipped - 1849d7828727: create comment for phabricator test -Phabsend doesn't create an instability when rebasing existing revisions on top +Phabsend doesn't create an instability when restacking existing revisions on top of new revisions. $ hg init reorder @@ -589,6 +589,13 @@ applying patch from D7917 applying patch from D7918 +Phabsend requires a linear range of commits + + $ hg phabsend -r 0+2+3 + abort: cannot phabsend multiple head revisions: c44b38f24a45 + (the revisions must form a linear chain) + [255] + Validate arguments with --fold $ hg phabsend --fold -r 1 @@ -597,9 +604,6 @@ $ hg phabsend --fold --no-amend -r 1:: abort: cannot fold with --no-amend [255] - $ hg phabsend --fold -r 0+3 - abort: cannot fold non-linear revisions - [255] $ hg phabsend --fold -r 1:: abort: cannot fold revisions with different DREV values [255]