Mercurial > hg-stable
view hgext/narrow/__init__.py @ 50654:c2633c69cbe0
stream-clone: document the ext-stream-clone-steps.py utility extension
This extension is useful, let us clarify how to use it.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 29 May 2023 01:38:34 +0200 |
parents | 6000f5b25c9b |
children | f4733654f144 |
line wrap: on
line source
# __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 mercurial import ( localrepo, registrar, requirements, ) from . import ( narrowbundle2, narrowcommands, narrowrepo, narrowtemplates, narrowwirepeer, ) # 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. testedwith = b'ships-with-hg-core' 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. configitem( b'experimental', b'narrowservebrokenellipses', default=False, alias=[(b'narrow', b'serveellipses')], ) # Export the commands table for Mercurial to see. cmdtable = narrowcommands.table def featuresetup(ui, features): features.add(requirements.NARROW_REQUIREMENT) def uisetup(ui): """Wraps user-facing mercurial commands with narrow-aware versions.""" localrepo.featuresetupfuncs.add(featuresetup) narrowbundle2.setup() narrowcommands.setup() narrowwirepeer.uisetup() def reposetup(ui, repo): """Wraps local repositories with narrow repo support.""" if not repo.local(): return repo.ui.setconfig(b'experimental', b'narrow', True, b'narrow-ext') if requirements.NARROW_REQUIREMENT in repo.requirements: narrowrepo.wraprepo(repo) narrowwirepeer.reposetup(repo) templatekeyword = narrowtemplates.templatekeyword revsetpredicate = narrowtemplates.revsetpredicate