# HG changeset patch # User Pierre-Yves David # Date 1500858260 -7200 # Node ID 58e4b51ee9029c527a19af1b5e8d677d66b90ac9 # Parent f51efb2bb8c996d3976ac2fed5c73b35c0c5a4c7 prefetc: point at the offending changeset when aborting We do our best to display comptact but usable information. diff -r f51efb2bb8c9 -r 58e4b51ee902 hgext3rd/evolve/rewriteutil.py --- a/hgext3rd/evolve/rewriteutil.py Mon Jul 24 02:06:14 2017 +0200 +++ b/hgext3rd/evolve/rewriteutil.py Mon Jul 24 03:04:20 2017 +0200 @@ -19,10 +19,12 @@ error, hg, lock as lockmod, + node, obsolete, phases, repair, revset, + util, ) from mercurial.i18n import _ @@ -31,13 +33,37 @@ compat, ) +def _formatrevs(repo, revs, maxrevs=4): + """return a string summarising revision in a descent size + + If there is few enough revision, we list them otherwise we display a + summary in the form: + + 1ea73414a91b and 5 others + """ + tonode = repo.changelog.node + numrevs = len(revs) + if numrevs < maxrevs: + shorts = [node.short(tonode(r)) for r in revs] + summary = ', '.join(shorts) + else: + if util.safehasattr(revs, 'first'): + first = revs.first() + else: + first = revs[0] + summary = _('%s and %d others') + summary %= (node.short(tonode(first)), numrevs - 1) + return summary + def precheck(repo, revs, action='rewrite'): """check if can be rewritten can be used to control the commit message. """ - if repo.revs('%ld and public()', revs): - msg = _("cannot %s public changesets") % action + publicrevs = repo.revs('%ld and public()', revs) + if publicrevs: + summary = _formatrevs(repo, publicrevs) + msg = _("cannot %s public changesets: %s") % (action, summary) hint = _("see 'hg help phases' for details") raise error.Abort(msg, hint=hint) diff -r f51efb2bb8c9 -r 58e4b51ee902 tests/test-fold.t --- a/tests/test-fold.t Mon Jul 24 02:06:14 2017 +0200 +++ b/tests/test-fold.t Mon Jul 24 03:04:20 2017 +0200 @@ -73,7 +73,7 @@ [255] $ hg phase --public 0 $ hg fold --from -r 0 - abort: cannot fold public changesets + abort: cannot fold public changesets: 1ea73414a91b (see 'hg help phases' for details) [255] diff -r f51efb2bb8c9 -r 58e4b51ee902 tests/test-metaedit.t --- a/tests/test-metaedit.t Mon Jul 24 02:06:14 2017 +0200 +++ b/tests/test-metaedit.t Mon Jul 24 03:04:20 2017 +0200 @@ -103,7 +103,7 @@ abort: revisions must be specified with --fold [255] $ hg metaedit -r 0 --fold - abort: cannot fold public changesets + abort: cannot fold public changesets: ea207398892e (see 'hg help phases' for details) [255] $ hg metaedit 'desc(C) + desc(F)' --fold