Index: third_party/logilab/common/hg.py |
=================================================================== |
--- third_party/logilab/common/hg.py (revision 292986) |
+++ 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] |