/usr/lib/python2.7/dist-packages/logilab/common/hg.py is in python-logilab-common 0.62.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | # 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]
|