manifest: get rid of manifest.readshallowfast
This removes manifest.readshallowfast and converts it's one user to use
manifestlog instead.
--- a/mercurial/changegroup.py Wed Nov 02 17:10:47 2016 -0700
+++ b/mercurial/changegroup.py Wed Nov 02 17:10:47 2016 -0700
@@ -677,7 +677,8 @@
def generatemanifests(self, commonrevs, clrevorder, fastpathlinkrev, mfs,
fnodes):
repo = self._repo
- dirlog = repo.manifest.dirlog
+ mfl = repo.manifestlog
+ dirlog = mfl._revlog.dirlog
tmfnodes = {'': mfs}
# Callback for the manifest, used to collect linkrevs for filelog
@@ -705,7 +706,7 @@
treemanifests to send.
"""
clnode = tmfnodes[dir][x]
- mdata = dirlog(dir).readshallowfast(x)
+ mdata = mfl.get(dir, x).readfast(shallow=True)
for p, n, fl in mdata.iterentries():
if fl == 't': # subdirectory manifest
subdir = dir + p + '/'
--- a/mercurial/manifest.py Wed Nov 02 17:10:47 2016 -0700
+++ b/mercurial/manifest.py Wed Nov 02 17:10:47 2016 -0700
@@ -1351,6 +1351,12 @@
return self._data
def readfast(self, shallow=False):
+ '''Calls either readdelta or read, based on which would be less work.
+ readdelta is called if the delta is against the p1, and therefore can be
+ read quickly.
+
+ If `shallow` is True, nothing changes since this is a flat manifest.
+ '''
rl = self._repo.manifestlog._revlog
r = rl.rev(self._node)
deltaparent = rl.deltaparent(r)
@@ -1440,6 +1446,13 @@
return md
def readfast(self, shallow=False):
+ '''Calls either readdelta or read, based on which would be less work.
+ readdelta is called if the delta is against the p1, and therefore can be
+ read quickly.
+
+ If `shallow` is True, it only returns the entries from this manifest,
+ and not any submanifests.
+ '''
rl = self._revlog()
r = rl.rev(self._node)
deltaparent = rl.deltaparent(r)
@@ -1522,15 +1535,6 @@
d = mdiff.patchtext(self.revdiff(self.deltaparent(r), r))
return manifestdict(d)
- def readshallowfast(self, node):
- '''like readfast(), but calls readshallowdelta() instead of readdelta()
- '''
- r = self.rev(node)
- deltaparent = self.deltaparent(r)
- if deltaparent != revlog.nullrev and deltaparent in self.parentrevs(r):
- return self.readshallowdelta(node)
- return self.readshallow(node)
-
def read(self, node):
if node == revlog.nullid:
return self._newmanifest() # don't upset local cache
@@ -1558,13 +1562,6 @@
self.fulltextcache[node] = arraytext
return m
- def readshallow(self, node):
- '''Reads the manifest in this directory. When using flat manifests,
- this manifest will generally have files in subdirectories in it. Does
- not cache the manifest as the callers generally do not read the same
- version twice.'''
- return manifestdict(self.revision(node))
-
def find(self, node, f):
'''look up entry for a single file efficiently.
return (node, flags) pair if found, (None, None) if not.'''