[PATCH evolve-ext] topic: centralize compatibility logic between hg versions into compat module
Boris Feld
boris.feld at octobus.net
Thu Sep 14 15:01:23 EDT 2017
Thank you for your patch, they have been accepted.
On Fri, 2017-09-15 at 00:31 +0900, FUJIWARA Katsunori wrote:
> # HG changeset patch
> # User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> # Date 1505050914 -32400
> # Sun Sep 10 22:41:54 2017 +0900
> # Node ID 3412cce8dbb22a937e72939a5d726c0949715983
> # Parent 23c9600607e7ea3c6d95cddc5ad134cab4f7d7fe
> # Available At https://foozy@bitbucket.org/foozy/hgext-evolve
> # hg pull https://foozy@bitbucket.org/foozy/hgext-evolve
> -r 3412cce8dbb2
> # EXP-Topic topic-hg-version-portability
> topic: centralize compatibility logic between hg versions into compat
> module
>
> This patch can delay loading obsutil and obsolete modules until they
> are actually used at "hg topics" or so, if demandimport of Mercurial
> is enabled.
>
> diff --git a/hgext3rd/topic/__init__.py b/hgext3rd/topic/__init__.py
> --- a/hgext3rd/topic/__init__.py
> +++ b/hgext3rd/topic/__init__.py
> @@ -79,6 +79,7 @@ from mercurial import (
> )
>
> from . import (
> + compat,
> constants,
> revset as topicrevset,
> destination,
> @@ -727,16 +728,6 @@ def _showlasttouched(repo, fm, opts):
> fm.plain('\n')
> fm.end()
>
> -getmarkers = None
> -try:
> - from mercurial import obsutil
> - getmarkers = getattr(obsutil, 'getmarkers', None)
> -except ImportError:
> - pass
> -
> -if getmarkers is None:
> - getmarkers = obsolete.getmarkers
> -
> def _getlasttouched(repo, topics):
> """
> Calculates the last time a topic was used. Returns a dictionary
> of seconds
> @@ -758,7 +749,7 @@ def _getlasttouched(repo, topics):
> maxtime = rt
> # looking on the markers also to get more information
> and accurate
> # last touch time.
> - obsmarkers = getmarkers(repo, [repo[revs].node()])
> + obsmarkers = compat.getmarkers(repo,
> [repo[revs].node()])
> for marker in obsmarkers:
> rt = marker.date()
> if rt[0] > maxtime[0]:
> diff --git a/hgext3rd/topic/compat.py b/hgext3rd/topic/compat.py
> new file mode 100644
> --- /dev/null
> +++ b/hgext3rd/topic/compat.py
> @@ -0,0 +1,24 @@
> +# Copyright 2017 FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
> +#
> +# This software may be used and distributed according to the terms
> of the
> +# GNU General Public License version 2 or any later version.
> +"""
> +Compatibility module
> +"""
> +from __future__ import absolute_import
> +
> +from mercurial import obsolete
> +
> +getmarkers = None
> +successorssets = None
> +try:
> + from mercurial import obsutil
> + getmarkers = getattr(obsutil, 'getmarkers', None)
> + successorssets = getattr(obsutil, 'successorssets', None)
> +except ImportError:
> + pass
> +
> +if getmarkers is None:
> + getmarkers = obsolete.getmarkers
> +if successorssets is None:
> + successorssets = obsolete.successorssets
> diff --git a/hgext3rd/topic/evolvebits.py
> b/hgext3rd/topic/evolvebits.py
> --- a/hgext3rd/topic/evolvebits.py
> +++ b/hgext3rd/topic/evolvebits.py
> @@ -1,15 +1,6 @@
> import collections
> -from mercurial import obsolete
>
> -successorssets = None
> -try:
> - from mercurial import obsutil
> - successorssets = getattr(obsutil, 'successorssets', None)
> -except ImportError:
> - pass
> -
> -if successorssets is None:
> - successorssets = obsolete.successorssets
> +from . import compat
>
> # Copied from evolve 081605c2e9b6
>
> @@ -82,14 +73,14 @@ def _singlesuccessor(repo, p):
> return p.rev()
> obs = repo[p]
> ui = repo.ui
> - newer = successorssets(repo, obs.node())
> + newer = compat.successorssets(repo, obs.node())
> # search of a parent which is not killed
> while not newer:
> ui.debug("stabilize target %s is plain dead,"
> " trying to stabilize on its parent\n" %
> obs)
> obs = obs.parents()[0]
> - newer = successorssets(repo, obs.node())
> + newer = compat.successorssets(repo, obs.node())
> if len(newer) > 1 or len(newer[0]) > 1:
> raise MultipleSuccessorsError(newer)
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list