cache: create `cache` directory at init time
The cache directory will be needed very quickly, so it seems simpler to create
it early to make sure it has the same owner and permission than the other
directory in the repository.
# pullext.py - Simple extension to test pulling
#
# Copyright 2018 Gregory Szorc <gregory.szorc@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
from mercurial.i18n import _
from mercurial import (
commands,
error,
extensions,
localrepo,
repository,
)
def clonecommand(orig, ui, repo, *args, **kwargs):
if kwargs.get(r'include') or kwargs.get(r'exclude'):
kwargs[r'narrow'] = True
if kwargs.get(r'depth'):
try:
kwargs[r'depth'] = int(kwargs[r'depth'])
except ValueError:
raise error.Abort(_('--depth must be an integer'))
return orig(ui, repo, *args, **kwargs)
def featuresetup(ui, features):
features.add(repository.NARROW_REQUIREMENT)
def extsetup(ui):
entry = extensions.wrapcommand(commands.table, 'clone', clonecommand)
hasinclude = any(x[1] == 'include' for x in entry[1])
hasdepth = any(x[1] == 'depth' for x in entry[1])
if not hasinclude:
entry[1].append(('', 'include', [],
_('pattern of file/directory to clone')))
entry[1].append(('', 'exclude', [],
_('pattern of file/directory to not clone')))
if not hasdepth:
entry[1].append(('', 'depth', '',
_('ancestry depth of changesets to fetch')))
localrepo.featuresetupfuncs.add(featuresetup)