Mercurial > hg
view mercurial/rewriteutil.py @ 39989:c9026e9297e3
identify: only query remote bookmarks if needed
Instead of all the time when operating on a remote repo. This
perf regression was introduced in 15a79ac823e8, in 4.3.
This datahint method returns nothing for -Tjson, -Tpickle, -Tdebug
--config ui.formatdebug=true and --config ui.formatjson, so the
bookmarks won't show up. I don't know what these formatters are for.
plainformatter and templateformatter work properly, and the few other
uses of datahint should have the same kind of problem.
There is further weirdness where "--template '{node}'" is not enough
to avoid querying the bookmarks, you also need to pass --id or -q.
Differential Revision: https://phab.mercurial-scm.org/D4819
author | Valentin Gatien-Baron <vgatien-baron@janestreet.com> |
---|---|
date | Mon, 01 Oct 2018 09:58:42 -0400 |
parents | 490df753894d |
children | 8c6329fa6038 |
line wrap: on
line source
# rewriteutil.py - utility functions for rewriting changesets # # Copyright 2017 Octobus <contact@octobus.net> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. from __future__ import absolute_import from .i18n import _ from . import ( error, node, obsolete, revset, ) def precheck(repo, revs, action='rewrite'): """check if revs can be rewritten action is used to control the error message. Make sure this function is called after taking the lock. """ if node.nullrev in revs: msg = _("cannot %s null changeset") % (action) hint = _("no changeset checked out") raise error.Abort(msg, hint=hint) publicrevs = repo.revs('%ld and public()', revs) if len(repo[None].parents()) > 1: raise error.Abort(_("cannot %s while merging") % action) if publicrevs: msg = _("cannot %s public changesets") % (action) hint = _("see 'hg help phases' for details") raise error.Abort(msg, hint=hint) newunstable = disallowednewunstable(repo, revs) if newunstable: raise error.Abort(_("cannot %s changeset with children") % action) def disallowednewunstable(repo, revs): """Checks whether editing the revs will create new unstable changesets and are we allowed to create them. To allow new unstable changesets, set the config: `experimental.evolution.allowunstable=True` """ allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt) if allowunstable: return revset.baseset() return repo.revs("(%ld::) - %ld", revs, revs)