Mercurial > hg
comparison mercurial/changegroup.py @ 28231:3faba927dd93
changegroup: introduce makelookupmflinknode(dir)
This is another step towards making the manifest generation recurse
along the directory trees. It makes the two calls to _packmanifests()
more similar.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 12 Feb 2016 23:26:15 -0800 |
parents | 0c2a088ffcc5 |
children | 829d369fc5a8 |
comparison
equal
deleted
inserted
replaced
28230:0c2a088ffcc5 | 28231:3faba927dd93 |
---|---|
759 tmfnodes = {} | 759 tmfnodes = {} |
760 | 760 |
761 # Callback for the manifest, used to collect linkrevs for filelog | 761 # Callback for the manifest, used to collect linkrevs for filelog |
762 # revisions. | 762 # revisions. |
763 # Returns the linkrev node (collected in lookupcl). | 763 # Returns the linkrev node (collected in lookupcl). |
764 if fastpathlinkrev: | 764 def makelookupmflinknode(dir): |
765 lookupmflinknode = mfs.__getitem__ | 765 if fastpathlinkrev: |
766 else: | 766 assert not dir |
767 return mfs.__getitem__ | |
768 | |
769 if dir: | |
770 return tmfnodes[dir].get | |
771 | |
767 def lookupmflinknode(x): | 772 def lookupmflinknode(x): |
768 """Callback for looking up the linknode for manifests. | 773 """Callback for looking up the linknode for manifests. |
769 | 774 |
770 Returns the linkrev node for the specified manifest. | 775 Returns the linkrev node for the specified manifest. |
771 | 776 |
816 tmfclnodes = tmfnodes.setdefault(submf.dir(), {}) | 821 tmfclnodes = tmfnodes.setdefault(submf.dir(), {}) |
817 tmfclnode = tmfclnodes.setdefault(submf._node, clnode) | 822 tmfclnode = tmfclnodes.setdefault(submf._node, clnode) |
818 if clrevorder[clnode] < clrevorder[tmfclnode]: | 823 if clrevorder[clnode] < clrevorder[tmfclnode]: |
819 tmfclnodes[n] = clnode | 824 tmfclnodes[n] = clnode |
820 return clnode | 825 return clnode |
826 return lookupmflinknode | |
821 | 827 |
822 mfnodes = self.prune(ml, mfs, commonrevs) | 828 mfnodes = self.prune(ml, mfs, commonrevs) |
823 size = 0 | 829 size = 0 |
824 for x in self._packmanifests('', mfnodes, lookupmflinknode): | 830 for x in self._packmanifests('', mfnodes, makelookupmflinknode('')): |
825 size += len(x) | 831 size += len(x) |
826 yield x | 832 yield x |
827 for dir, nodes in tmfnodes.iteritems(): | 833 for dir, nodes in tmfnodes.iteritems(): |
828 prunednodes = self.prune(ml.dirlog(dir), nodes, commonrevs) | 834 prunednodes = self.prune(ml.dirlog(dir), nodes, commonrevs) |
829 for x in self._packmanifests(dir, prunednodes, nodes.get): | 835 for x in self._packmanifests(dir, prunednodes, |
836 makelookupmflinknode(dir)): | |
830 size += len(x) | 837 size += len(x) |
831 yield x | 838 yield x |
832 self._verbosenote(_('%8.i (manifests)\n') % size) | 839 self._verbosenote(_('%8.i (manifests)\n') % size) |
833 yield self._manifestsdone() | 840 yield self._manifestsdone() |
834 | 841 |