##// END OF EJS Templates
Added tag v5.2.0 for changeset 50174967ed20
Added tag v5.2.0 for changeset 50174967ed20

File last commit:

r1249:5745b11f default
r1293:83dfc085 stable
Show More
hgcompat.py
92 lines | 3.1 KiB | text/x-python | PythonLexer
# RhodeCode VCSServer provides access to different vcs backends via network.
# Copyright (C) 2014-2023 RhodeCode GmbH
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
"""
Mercurial libs compatibility
"""
import mercurial
from mercurial import demandimport
# patch demandimport, due to bug in mercurial when it always triggers
# demandimport.enable()
from vcsserver.lib.str_utils import safe_bytes
demandimport.enable = lambda *args, **kwargs: 1
from mercurial import ui
from mercurial import patch
from mercurial import config
from mercurial import extensions
from mercurial import scmutil
from mercurial import archival
from mercurial import discovery
from mercurial import unionrepo
from mercurial import localrepo
from mercurial import merge as hg_merge
from mercurial import subrepo
from mercurial import subrepoutil
from mercurial import tags as hg_tag
from mercurial import util as hgutil
from mercurial.commands import clone, pull
from mercurial.node import nullid
from mercurial.context import memctx, memfilectx
from mercurial.error import (
LookupError, RepoError, RepoLookupError, Abort, InterventionRequired,
RequirementError, ProgrammingError)
from mercurial.hgweb import hgweb_mod
from mercurial.localrepo import instance
from mercurial.match import match, alwaysmatcher, patternmatcher
from mercurial.mdiff import diffopts
from mercurial.node import bin, hex
from mercurial.encoding import tolocal
from mercurial.discovery import findcommonoutgoing
from mercurial.hg import peer
from mercurial.httppeer import make_peer
from mercurial.utils.urlutil import url as hg_url
from mercurial.scmutil import revrange, revsymbol
from mercurial.node import nullrev
from mercurial import exchange
from hgext import largefiles
# those authnadlers are patched for python 2.6.5 bug an
# infinit looping when given invalid resources
from mercurial.url import httpbasicauthhandler, httpdigestauthhandler
# hg strip is in core now
from mercurial import strip as hgext_strip
def get_ctx(repo, ref):
if not isinstance(ref, int):
ref = safe_bytes(ref)
try:
ctx = repo[ref]
return ctx
except (ProgrammingError, TypeError):
# we're unable to find the rev using a regular lookup, we fallback
# to slower, but backward compat revsymbol usage
pass
except (LookupError, RepoLookupError):
# Similar case as above but only for refs that are not numeric
if isinstance(ref, int):
raise
ctx = revsymbol(repo, ref)
return ctx