| Index: third_party/logilab/common/hg.py
|
| ===================================================================
|
| --- third_party/logilab/common/hg.py (revision 292881)
|
| +++ third_party/logilab/common/hg.py (working copy)
|
| @@ -1,130 +0,0 @@
|
| -# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
|
| -# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
|
| -#
|
| -# This file is part of logilab-common.
|
| -#
|
| -# logilab-common is free software: you can redistribute it and/or modify it under
|
| -# the terms of the GNU Lesser General Public License as published by the Free
|
| -# Software Foundation, either version 2.1 of the License, or (at your option) any
|
| -# later version.
|
| -#
|
| -# logilab-common is distributed in the hope that it will be useful, but WITHOUT
|
| -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
| -# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
| -# details.
|
| -#
|
| -# You should have received a copy of the GNU Lesser General Public License along
|
| -# with logilab-common. If not, see <http://www.gnu.org/licenses/>.
|
| -"""mercurial utilities (mercurial should be installed)"""
|
| -
|
| -__docformat__ = "restructuredtext en"
|
| -
|
| -import os
|
| -import sys
|
| -import os.path as osp
|
| -
|
| -try:
|
| - from mercurial.error import RepoError
|
| - from mercurial.__version__ import version as hg_version
|
| -except ImportError:
|
| - from mercurial.repo import RepoError
|
| - from mercurial.version import get_version
|
| - hg_version = get_version()
|
| -
|
| -from mercurial.hg import repository as Repository
|
| -from mercurial.ui import ui as Ui
|
| -from mercurial.node import short
|
| -try:
|
| - # mercurial >= 1.2 (?)
|
| - from mercurial.cmdutil import walkchangerevs
|
| -except ImportError, ex:
|
| - from mercurial.commands import walkchangerevs
|
| -try:
|
| - # mercurial >= 1.1 (.1?)
|
| - from mercurial.util import cachefunc
|
| -except ImportError, ex:
|
| - def cachefunc(func):
|
| - return func
|
| -try:
|
| - # mercurial >= 1.3.1
|
| - from mercurial import encoding
|
| - _encoding = encoding.encoding
|
| -except ImportError:
|
| - try:
|
| - from mercurial.util import _encoding
|
| - except ImportError:
|
| - import locale
|
| - # stay compatible with mercurial 0.9.1 (etch debian release)
|
| - # (borrowed from mercurial.util 1.1.2)
|
| - try:
|
| - _encoding = os.environ.get("HGENCODING")
|
| - if sys.platform == 'darwin' and not _encoding:
|
| - # On darwin, getpreferredencoding ignores the locale environment and
|
| - # always returns mac-roman. We override this if the environment is
|
| - # not C (has been customized by the user).
|
| - locale.setlocale(locale.LC_CTYPE, '')
|
| - _encoding = locale.getlocale()[1]
|
| - if not _encoding:
|
| - _encoding = locale.getpreferredencoding() or 'ascii'
|
| - except locale.Error:
|
| - _encoding = 'ascii'
|
| -try:
|
| - # demandimport causes problems when activated, ensure it isn't
|
| - # XXX put this in apycot where the pb has been noticed?
|
| - from mercurial import demandimport
|
| - demandimport.disable()
|
| -except:
|
| - pass
|
| -
|
| -Ui.warn = lambda *args, **kwargs: 0 # make it quiet
|
| -
|
| -def find_repository(path):
|
| - """returns <path>'s mercurial repository
|
| -
|
| - None if <path> is not under hg control
|
| - """
|
| - path = osp.realpath(osp.abspath(path))
|
| - while not osp.isdir(osp.join(path, ".hg")):
|
| - oldpath = path
|
| - path = osp.dirname(path)
|
| - if path == oldpath:
|
| - return None
|
| - return path
|
| -
|
| -
|
| -def get_repository(path):
|
| - """Simple function that open a hg repository"""
|
| - repopath = find_repository(path)
|
| - if repopath is None:
|
| - raise RuntimeError('no repository found in %s' % osp.abspath(path))
|
| - return Repository(Ui(), path=repopath)
|
| -
|
| -def incoming(wdrepo, masterrepo):
|
| - try:
|
| - return wdrepo.findincoming(masterrepo)
|
| - except AttributeError:
|
| - from mercurial import hg, discovery
|
| - revs, checkout = hg.addbranchrevs(wdrepo, masterrepo, ('', []), None)
|
| - common, incoming, rheads = discovery.findcommonincoming(
|
| - wdrepo, masterrepo, heads=revs)
|
| - if not masterrepo.local():
|
| - from mercurial import bundlerepo, changegroup
|
| - if revs is None and masterrepo.capable('changegroupsubset'):
|
| - revs = rheads
|
| - if revs is None:
|
| - cg = masterrepo.changegroup(incoming, "incoming")
|
| - else:
|
| - cg = masterrepo.changegroupsubset(incoming, revs, 'incoming')
|
| - fname = changegroup.writebundle(cg, None, "HG10UN")
|
| - # use the created uncompressed bundlerepo
|
| - masterrepo = bundlerepo.bundlerepository(wdrepo.ui, wdrepo.root, fname)
|
| - return masterrepo.changelog.nodesbetween(incoming, revs)[0]
|
| -
|
| -def outgoing(wdrepo, masterrepo):
|
| - try:
|
| - return wdrepo.findoutgoing(masterrepo)
|
| - except AttributeError:
|
| - from mercurial import hg, discovery
|
| - revs, checkout = hg.addbranchrevs(wdrepo, wdrepo, ('', []), None)
|
| - o = discovery.findoutgoing(wdrepo, masterrepo)
|
| - return wdrepo.changelog.nodesbetween(o, revs)[0]
|
|
|