__init__.py
78 lines
| 2.4 KiB
| text/x-python
|
PythonLexer
Augie Fackler
|
r36096 | # __init__.py - narrowhg extension | ||
# | ||||
# Copyright 2017 Google, Inc. | ||||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
'''create clones which fetch history data for subset of files (EXPERIMENTAL)''' | ||||
from __future__ import absolute_import | ||||
Augie Fackler
|
r36102 | # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for | ||
# extensions which SHIP WITH MERCURIAL. Non-mainline extensions should | ||||
# be specifying the version(s) of Mercurial they are tested with, or | ||||
# leave the attribute unspecified. | ||||
Augie Fackler
|
r43347 | testedwith = b'ships-with-hg-core' | ||
Augie Fackler
|
r36096 | |||
from mercurial import ( | ||||
localrepo, | ||||
registrar, | ||||
Pulkit Goyal
|
r43078 | ) | ||
Augie Fackler
|
r43346 | from mercurial.interfaces import repository | ||
Augie Fackler
|
r36096 | |||
from . import ( | ||||
narrowbundle2, | ||||
narrowcommands, | ||||
narrowrepo, | ||||
narrowtemplates, | ||||
narrowwirepeer, | ||||
) | ||||
configtable = {} | ||||
configitem = registrar.configitem(configtable) | ||||
# Narrowhg *has* support for serving ellipsis nodes (which are used at | ||||
# least by Google's internal server), but that support is pretty | ||||
# fragile and has a lot of problems on real-world repositories that | ||||
# have complex graph topologies. This could probably be corrected, but | ||||
# absent someone needing the full support for ellipsis nodes in | ||||
# repositories with merges, it's unlikely this work will get done. As | ||||
# of this writining in late 2017, all repositories large enough for | ||||
# ellipsis nodes to be a hard requirement also enforce strictly linear | ||||
# history for other scaling reasons. | ||||
Augie Fackler
|
r43346 | configitem( | ||
Augie Fackler
|
r43347 | b'experimental', | ||
b'narrowservebrokenellipses', | ||||
Augie Fackler
|
r43346 | default=False, | ||
Augie Fackler
|
r43347 | alias=[(b'narrow', b'serveellipses')], | ||
Augie Fackler
|
r36096 | ) | ||
# Export the commands table for Mercurial to see. | ||||
cmdtable = narrowcommands.table | ||||
Augie Fackler
|
r43346 | |||
Gregory Szorc
|
r37154 | def featuresetup(ui, features): | ||
Martin von Zweigbergk
|
r38871 | features.add(repository.NARROW_REQUIREMENT) | ||
Augie Fackler
|
r36096 | |||
Augie Fackler
|
r43346 | |||
Augie Fackler
|
r36096 | def uisetup(ui): | ||
"""Wraps user-facing mercurial commands with narrow-aware versions.""" | ||||
Gregory Szorc
|
r37154 | localrepo.featuresetupfuncs.add(featuresetup) | ||
Augie Fackler
|
r36096 | narrowbundle2.setup() | ||
narrowcommands.setup() | ||||
narrowwirepeer.uisetup() | ||||
Augie Fackler
|
r43346 | |||
Augie Fackler
|
r36096 | def reposetup(ui, repo): | ||
"""Wraps local repositories with narrow repo support.""" | ||||
Martin von Zweigbergk
|
r37203 | if not repo.local(): | ||
Augie Fackler
|
r36096 | return | ||
Augie Fackler
|
r43347 | repo.ui.setconfig(b'experimental', b'narrow', True, b'narrow-ext') | ||
Martin von Zweigbergk
|
r38871 | if repository.NARROW_REQUIREMENT in repo.requirements: | ||
Kyle Lippincott
|
r38142 | narrowrepo.wraprepo(repo) | ||
Augie Fackler
|
r36096 | narrowwirepeer.reposetup(repo) | ||
Augie Fackler
|
r43346 | |||
Augie Fackler
|
r36108 | templatekeyword = narrowtemplates.templatekeyword | ||
revsetpredicate = narrowtemplates.revsetpredicate | ||||