diff --git a/treemanifest/__init__.py b/treemanifest/__init__.py --- a/treemanifest/__init__.py +++ b/treemanifest/__init__.py @@ -562,7 +562,7 @@ # Since we're adding the root flat manifest, let's add the corresponding # root tree manifest. tmfl = mfl.treemanifestlog - _converttotree(tr, mfl, tmfl, mfl[n], link) + _converttotree(tr, mfl, tmfl, mfl[n], link, True) return n @@ -709,22 +709,30 @@ ui.progress(converting, count, total=len(revs)) count = count + 1 - _converttotree(tr, mfl, tmfl, repo[rev].manifestctx(), rev) + _converttotree(tr, mfl, tmfl, repo[rev].manifestctx(), rev, True) ui.progress(converting, None) -def _converttotree(tr, mfl, tmfl, mfctx, rev): - p1node = mfctx.parents[0] +def _converttotree(tr, mfl, tmfl, mfctx, rev=None, isserver=False): + p1node, p2node = mfctx.parents newflat = mfctx.read() if p1node != nullid: parentflat = mfl[p1node].read() parenttree = tmfl[p1node].read() else: parentflat = manifest.manifestdict() - parenttree = manifest.treemanifest() + + if isserver: + parenttree = manifest.treemanifest() + else: + parenttree = cstore.treemanifest(tmfl.datastore) newtree, added, removed = _getnewtree(newflat, parenttree, parentflat) - _addtotreerevlog(newtree, tr, tmfl, rev, mfctx, added, removed) + + if isserver: + _addtotreerevlog(newtree, tr, tmfl, rev, mfctx, added, removed) + else: + _writeclientmanifest(newtree, tr, tmfl, mfctx.node(), p1node, p2node) def _getnewtree(newflat, parenttree, parentflat): diff = parentflat.diff(newflat)