manifest: make tree a public attribute
changegroup generation accesses this attribute. We should make it
public and expose it on the interface.
Differential Revision: https://phab.mercurial-scm.org/D4387
--- a/mercurial/changegroup.py Mon Aug 27 10:15:15 2018 -0700
+++ b/mercurial/changegroup.py Wed Aug 15 16:50:44 2018 +0000
@@ -1065,7 +1065,7 @@
tree, nodes = tmfnodes.popitem()
store = mfl.getstorage(tree)
- if not self._filematcher.visitdir(store._tree[:-1] or '.'):
+ if not self._filematcher.visitdir(store.tree[:-1] or '.'):
prunednodes = []
else:
frev, flr = store.rev, store.linkrev
--- a/mercurial/manifest.py Mon Aug 27 10:15:15 2018 -0700
+++ b/mercurial/manifest.py Wed Aug 15 16:50:44 2018 +0000
@@ -1285,7 +1285,8 @@
if tree:
indexfile = "meta/" + tree + indexfile
- self._tree = tree
+ self.tree = tree
+
# The dirlogcache is kept on the root manifest log
if tree:
self._dirlogcache = dirlogcache
@@ -1330,7 +1331,7 @@
def clearcaches(self, clear_persisted_data=False):
self._revlog.clearcaches()
self._fulltextcache.clear(clear_persisted_data=clear_persisted_data)
- self._dirlogcache = {self._tree: self}
+ self._dirlogcache = {self.tree: self}
def dirlog(self, d):
if d:
@@ -1366,8 +1367,8 @@
# process.
if self._treeondisk:
assert readtree, "readtree must be set for treemanifest writes"
- m1 = readtree(self._tree, p1)
- m2 = readtree(self._tree, p2)
+ m1 = readtree(self.tree, p1)
+ m2 = readtree(self.tree, p2)
n = self._addtree(m, transaction, link, m1, m2, readtree)
arraytext = None
else:
@@ -1383,7 +1384,7 @@
def _addtree(self, m, transaction, link, m1, m2, readtree):
# If the manifest is unchanged compared to one parent,
# don't write a new revision
- if self._tree != '' and (m.unmodifiedsince(m1) or m.unmodifiedsince(
+ if self.tree != '' and (m.unmodifiedsince(m1) or m.unmodifiedsince(
m2)):
return m.node()
def writesubtree(subm, subp1, subp2):
@@ -1393,7 +1394,7 @@
m.writesubtrees(m1, m2, writesubtree)
text = m.dirtext()
n = None
- if self._tree != '':
+ if self.tree != '':
# Double-check whether contents are unchanged to one parent
if text == m1.dirtext():
n = m1.node()
--- a/mercurial/repository.py Mon Aug 27 10:15:15 2018 -0700
+++ b/mercurial/repository.py Wed Aug 15 16:50:44 2018 +0000
@@ -991,6 +991,12 @@
class imanifeststorage(interfaceutil.Interface):
"""Storage interface for manifest data."""
+ tree = interfaceutil.Attribute(
+ """The path to the directory this manifest tracks.
+
+ The empty bytestring represents the root manifest.
+ """)
+
index = interfaceutil.Attribute(
"""An ``ifilerevisionssequence`` instance.""")