Mercurial > public > mercurial-scm > hg
comparison mercurial/manifest.py @ 24701:03ee576784e6
treemanifest: separate flags for trees in memory and trees on disk
When we start writing tree manifests with one manifest revlog per
directory, it will still be nice to be able to run tests using tree
manifests in memory but writing to a flat manifest to a single
revlog. Let's break the current '_usetreemanifest' flag on the revlog
into '_treeinmem' and '_treeondisk'. Both are populated from the same
config, but after this change, one can temporarily hard-code
_treeinmem=True to see that tests still pass.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 10 Apr 2015 18:54:33 -0700 |
parents | 32b268cbff00 |
children | 4ea521b3c554 |
comparison
equal
deleted
inserted
replaced
24700:32b268cbff00 | 24701:03ee576784e6 |
---|---|
759 cachesize = opts.get('manifestcachesize', cachesize) | 759 cachesize = opts.get('manifestcachesize', cachesize) |
760 usetreemanifest = opts.get('usetreemanifest', usetreemanifest) | 760 usetreemanifest = opts.get('usetreemanifest', usetreemanifest) |
761 usemanifestv2 = opts.get('manifestv2', usemanifestv2) | 761 usemanifestv2 = opts.get('manifestv2', usemanifestv2) |
762 self._mancache = util.lrucachedict(cachesize) | 762 self._mancache = util.lrucachedict(cachesize) |
763 revlog.revlog.__init__(self, opener, "00manifest.i") | 763 revlog.revlog.__init__(self, opener, "00manifest.i") |
764 self._usetreemanifest = usetreemanifest | 764 self._treeinmem = usetreemanifest |
765 self._treeondisk = usetreemanifest | |
765 self._usemanifestv2 = usemanifestv2 | 766 self._usemanifestv2 = usemanifestv2 |
766 | 767 |
767 def _newmanifest(self, data=''): | 768 def _newmanifest(self, data=''): |
768 if self._usetreemanifest: | 769 if self._treeinmem: |
769 return treemanifest('', data) | 770 return treemanifest('', data) |
770 return manifestdict(data) | 771 return manifestdict(data) |
771 | 772 |
772 def _slowreaddelta(self, node): | 773 def _slowreaddelta(self, node): |
773 r0 = self.deltaparent(self.rev(node)) | 774 r0 = self.deltaparent(self.rev(node)) |
780 if fl1: | 781 if fl1: |
781 md.setflag(f, fl1) | 782 md.setflag(f, fl1) |
782 return md | 783 return md |
783 | 784 |
784 def readdelta(self, node): | 785 def readdelta(self, node): |
785 if self._usemanifestv2 or self._usetreemanifest: | 786 if self._usemanifestv2 or self._treeondisk: |
786 return self._slowreaddelta(node) | 787 return self._slowreaddelta(node) |
787 r = self.rev(node) | 788 r = self.rev(node) |
788 d = mdiff.patchtext(self.revdiff(self.deltaparent(r), r)) | 789 d = mdiff.patchtext(self.revdiff(self.deltaparent(r), r)) |
789 return self._newmanifest(d) | 790 return self._newmanifest(d) |
790 | 791 |
815 return m.find(f) | 816 return m.find(f) |
816 except KeyError: | 817 except KeyError: |
817 return None, None | 818 return None, None |
818 | 819 |
819 def add(self, m, transaction, link, p1, p2, added, removed): | 820 def add(self, m, transaction, link, p1, p2, added, removed): |
820 if (p1 in self._mancache and not self._usetreemanifest | 821 if (p1 in self._mancache and not self._treeinmem |
821 and not self._usemanifestv2): | 822 and not self._usemanifestv2): |
822 # If our first parent is in the manifest cache, we can | 823 # If our first parent is in the manifest cache, we can |
823 # compute a delta here using properties we know about the | 824 # compute a delta here using properties we know about the |
824 # manifest up-front, which may save time later for the | 825 # manifest up-front, which may save time later for the |
825 # revlog layer. | 826 # revlog layer. |