# HG changeset patch # User Durham Goode <dur...@fb.com> # Date 1494292924 25200 # Mon May 08 18:22:04 2017 -0700 # Node ID 6d02589fd6a76c354aff165503cc72333b14307a # Parent 8f1a2b848b52ea7bf3fe2404e3b62924c7aae93f treemanifest: allow manifestrevlog to take an explicit treemanifest arg
Previously we relied on the opener options to tell the revlog to be a tree manifest. This makes it complicated for extensions to create treemanifests and normal manifests at the same time. Let's add a construtor argument to create a treemanifest revlog as well. diff --git a/mercurial/manifest.py b/mercurial/manifest.py --- a/mercurial/manifest.py +++ b/mercurial/manifest.py @@ -1175,25 +1175,29 @@ class manifestrevlog(revlog.revlog): '''A revlog that stores manifest texts. This is responsible for caching the full-text manifest contents. ''' - def __init__(self, opener, dir='', dirlogcache=None, indexfile=None): + def __init__(self, opener, dir='', dirlogcache=None, indexfile=None, + treemanifest=False): """Constructs a new manifest revlog `indexfile` - used by extensions to have two manifests at once, like when transitioning between flatmanifeset and treemanifests. + + `treemanifest` - used to indicate this is a tree manifest revlog. If the + treemanifest opener option is set to True, this argument is ignored. """ # During normal operations, we expect to deal with not more than four # revs at a time (such as during commit --amend). When rebasing large # stacks of commits, the number can go up, hence the config knob below. cachesize = 4 - usetreemanifest = False + optiontreemanifest = False usemanifestv2 = False opts = getattr(opener, 'options', None) if opts is not None: cachesize = opts.get('manifestcachesize', cachesize) - usetreemanifest = opts.get('treemanifest', usetreemanifest) + optiontreemanifest = opts.get('treemanifest', False) usemanifestv2 = opts.get('manifestv2', usemanifestv2) - self._treeondisk = usetreemanifest + self._treeondisk = optiontreemanifest or treemanifest self._usemanifestv2 = usemanifestv2 self._fulltextcache = util.lrucachedict(cachesize) @@ -1232,7 +1236,8 @@ class manifestrevlog(revlog.revlog): assert self._treeondisk if dir not in self._dirlogcache: self._dirlogcache[dir] = manifestrevlog(self.opener, dir, - self._dirlogcache) + self._dirlogcache, + treemanifest=True) return self._dirlogcache[dir] def add(self, m, transaction, link, p1, p2, added, removed, readtree=None): _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel