[PATCH 9 of 9 V4] manifest: remove manifest.readshallowdelta
Martin von Zweigbergk
martinvonz at google.com
Tue Oct 25 16:22:21 EDT 2016
On Tue, Oct 25, 2016 at 1:19 PM, Durham Goode <durham at fb.com> wrote:
>
>
> On 9/21/16 1:33 PM, Martin von Zweigbergk wrote:
>>
>> On Tue, Sep 20, 2016 at 4:47 PM, Durham Goode <durham at fb.com> wrote:
>>>
>>> # HG changeset patch
>>> # User Durham Goode <durham at fb.com>
>>> # Date 1474399441 25200
>>> # Tue Sep 20 12:24:01 2016 -0700
>>> # Node ID f24ed91bde0ea4307546848e1100735d13879372
>>> # Parent b16ce237ed47ef8c6f0f72bbc511b29ea9289ef3
>>> manifest: remove manifest.readshallowdelta
>>>
>>> This removes manifest.readshallowdelta and converts its one consumer to
>>> use
>>> manifestlog instead.
>>>
>>> diff --git a/mercurial/manifest.py b/mercurial/manifest.py
>>> --- a/mercurial/manifest.py
>>> +++ b/mercurial/manifest.py
>>> @@ -1246,41 +1246,6 @@ class manifest(manifestrevlog):
>>> self._dirlogcache)
>>> return self._dirlogcache[dir]
>>>
>>> - def _slowreaddelta(self, node):
>>> - r0 = self.deltaparent(self.rev(node))
>>> - m0 = self.read(self.node(r0))
>>> - m1 = self.read(node)
>>> - md = self._newmanifest()
>>> - for f, ((n0, fl0), (n1, fl1)) in m0.diff(m1).iteritems():
>>> - if n1:
>>> - md[f] = n1
>>> - if fl1:
>>> - md.setflag(f, fl1)
>>> - return md
>>> -
>>> - def readdelta(self, node):
>>> - if self._usemanifestv2 or self._treeondisk:
>>> - return self._slowreaddelta(node)
>>> - r = self.rev(node)
>>> - d = mdiff.patchtext(self.revdiff(self.deltaparent(r), r))
>>> - return self._newmanifest(d)
>>> -
>>> - def readshallowdelta(self, node):
>>> - '''For flat manifests, this is the same as readdelta(). For
>>> - treemanifests, this will read the delta for this revlog's
>>> directory,
>>> - without recursively reading subdirectory manifests. Instead, any
>>> - subdirectory entry will be reported as it appears in the
>>> manifests, i.e.
>>> - the subdirectory will be reported among files and distinguished
>>> only by
>>> - its 't' flag.'''
>>
>> I thought this comment might be useful. Could you add it to the new
>> method, thanks. Same thing applies to readshallow() in the previous
>> patch.
>
> Will do.
>
>>
>>> - if not self._treeondisk:
>>> - return self.readdelta(node)
>>> - if self._usemanifestv2:
>>> - raise error.Abort(
>>> - _("readshallowdelta() not implemented for manifestv2"))
>>> - r = self.rev(node)
>>> - d = mdiff.patchtext(self.revdiff(self.deltaparent(r), r))
>>> - return manifestdict(d)
>>> -
>>> def read(self, node):
>>> if node == revlog.nullid:
>>> return self._newmanifest() # don't upset local cache
>>> diff --git a/mercurial/verify.py b/mercurial/verify.py
>>> --- a/mercurial/verify.py
>>> +++ b/mercurial/verify.py
>>> @@ -201,7 +201,8 @@ class verifier(object):
>>> progress=None):
>>> repo = self.repo
>>> ui = self.ui
>>> - mf = self.repo.manifest.dirlog(dir)
>>> + mf = self.repo.manifestlog._revlog.dirlog(dir)
>>> + mfl = self.repo.manifestlog
>>
>> nit: write mf in terms of mfl instead, but feel free to leave as is if
>> this is changing again before the end of the series (feel free to
>> ignore otherwise too :-))
>
> I'm not sure I understand what you mean by "in terms of mfl"?
I just mean to replace
mf = self.repo.manifestlog._revlog.dirlog(dir)
mfl = self.repo.manifestlog
by
mfl = self.repo.manifestlog
mf = mfl._revlog.dirlog(dir)
But it's definitely nitpicking.
>>
>>
>>> if not dir:
>>> self.ui.status(_("checking manifests\n"))
>>> @@ -235,7 +236,8 @@ class verifier(object):
>>> self.err(lr, _("%s not in changesets") % short(n),
>>> label)
>>>
>>> try:
>>> - for f, fn, fl in mf.readshallowdelta(n).iterentries():
>>> + mfdelta = mfl.get(dir, n).readdelta(shallow=True)
>>> + for f, fn, fl in mfdelta.iterentries():
>>> if not f:
>>> self.err(lr, _("entry without name in
>>> manifest"))
>>> elif f == "/dev/null": # ignore this in very old
>>> repos
>>> _______________________________________________
>>> Mercurial-devel mailing list
>>> Mercurial-devel at mercurial-scm.org
>>>
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__www.mercurial-2Dscm.org_mailman_listinfo_mercurial-2Ddevel&d=DQIBaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=nuarHzhP1wi1T9iURRCj1A&m=g23kxRa7I_WePzUCgsxSI92ed8zsD4GVzkhJgLrw8eg&s=-N_dUrq34DPROF4fJwAyTK6oFG8nFVVMUaUVPCRskfY&e=
>
>
More information about the Mercurial-devel
mailing list