[PATCH 5 of 8] manifest: add manifestlog.get to obtain subdirectory instances
durham at fb.com
Mon Sep 19 20:09:43 EDT 2016
On 9/15/16 11:07 AM, Martin von Zweigbergk wrote:
> On Wed, Sep 14, 2016 at 4:04 PM, Durham Goode <durham at fb.com> wrote:
>> # HG changeset patch
>> # User Durham Goode <durham at fb.com>
>> # Date 1473893509 25200
>> # Wed Sep 14 15:51:49 2016 -0700
>> # Node ID 33a7df42b989c555972280f6b84e2fac38babf7b
>> # Parent d41da1522f8efb5bf5aa75a51f0093b1129b6b5a
>> manifest: add manifestlog.get to obtain subdirectory instances
>> Previously manifestlog only allowed obtaining root level manifests. Future
>> patches will need direct access to subdirectory manifests as part of changegroup
>> creation, so let's add a get() function that knows how to deal with
>> diff --git a/mercurial/manifest.py b/mercurial/manifest.py
>> --- a/mercurial/manifest.py
>> +++ b/mercurial/manifest.py
>> @@ -1040,20 +1040,34 @@ class manifestlog(object):
>> """Retrieves the manifest instance for the given node. Throws a KeyError
>> if not found.
>> - if node in self._mancache:
>> - cachemf = self._mancache[node]
>> - # The old manifest may put non-ctx manifests in the cache, so skip
>> - # those since they don't implement the full api.
>> - if (isinstance(cachemf, manifestctx) or
>> - isinstance(cachemf, treemanifestctx)):
>> - return cachemf
>> + return self.get('', node)
>> - if self._treeinmem:
>> - m = treemanifestctx(self._revlog, '', node)
>> + def get(self, dir, node):
>> + """Retrieves the manifest instance for the given node. Throws a KeyError
>> + if not found.
>> + """
>> + if dir:
>> + if self._treeinmem:
> I think this should be checking treeondisk. When using flat manifests
> on disk and trees in memory, it still doesn't make sense to ask for a
> specific directory and node.
> Speaking of that, have you tried setting treeinmem=True a few times
> during this refactoring? I wouldn't be surprised if it was broken even
> before you started, so that would be the first thing to check if you
> haven't already.
I'll switch this to treeondisk. I've not tried treeinmem=True. Is that
not automatically covered by the tests?
More information about the Mercurial-devel