comparison mercurial/revlog.py @ 39232:0a5b20c107a6

repository: remove storedeltachains from ifilestorage The ifilestorage interface was bootstrapped from requirements of callers outside the storage implementation (revlogs). I believe we even made some members public so they could be part of the interface! Historically, the changegroup code was a gross offender when it came to accessing low-level storage primitives. There are a handful of members on the ifilestorage interface that are/were used only for changegroup code. With the recent refactor of changegroup code and the establishment of a formal API on the storage interface for producing revision deltas, the changegroup code is no longer accessing these low-level primitives related to delta generation directly. Instead, things are abstracted away in the storage implementation. This means we can remove elements from the storage interface that are no longer needed. We start with "storedeltachains." We remove it from the interface. Then we make it a private attribute and update all references. .. api:: storedeltachains has been dropped from ifilestorage interface .. api:: storedeltachains on revlog classes is now _storedeltachains Differential Revision: https://phab.mercurial-scm.org/D4227
author Gregory Szorc <gregory.szorc@gmail.com>
date Thu, 09 Aug 2018 16:11:24 -0700
parents b41d023a412a
children 729082bb9938
comparison
equal deleted inserted replaced
39231:b41d023a412a 39232:0a5b20c107a6
625 curr = len(revlog) 625 curr = len(revlog)
626 prev = curr - 1 626 prev = curr - 1
627 p1r, p2r = revlog.rev(p1), revlog.rev(p2) 627 p1r, p2r = revlog.rev(p1), revlog.rev(p2)
628 628
629 # should we try to build a delta? 629 # should we try to build a delta?
630 if prev != nullrev and revlog.storedeltachains: 630 if prev != nullrev and revlog._storedeltachains:
631 tested = set() 631 tested = set()
632 # This condition is true most of the time when processing 632 # This condition is true most of the time when processing
633 # changegroup data into a generaldelta repo. The only time it 633 # changegroup data into a generaldelta repo. The only time it
634 # isn't true is if this is the first revision in a delta chain 634 # isn't true is if this is the first revision in a delta chain
635 # or if ``format.generaldelta=true`` disabled ``lazydeltabase``. 635 # or if ``format.generaldelta=true`` disabled ``lazydeltabase``.
1073 (flags >> 16, fmt, self.indexfile)) 1073 (flags >> 16, fmt, self.indexfile))
1074 else: 1074 else:
1075 raise RevlogError(_('unknown version (%d) in revlog %s') % 1075 raise RevlogError(_('unknown version (%d) in revlog %s') %
1076 (fmt, self.indexfile)) 1076 (fmt, self.indexfile))
1077 1077
1078 self.storedeltachains = True 1078 self._storedeltachains = True
1079 1079
1080 self._io = revlogio() 1080 self._io = revlogio()
1081 if self.version == REVLOGV0: 1081 if self.version == REVLOGV0:
1082 self._io = revlogoldio() 1082 self._io = revlogoldio()
1083 try: 1083 try:
2993 # delta against p1 may require resolving the raw text of p1, 2993 # delta against p1 may require resolving the raw text of p1,
2994 # which could be expensive. The revlog caches should have prev 2994 # which could be expensive. The revlog caches should have prev
2995 # cached, meaning less CPU for delta generation. There is 2995 # cached, meaning less CPU for delta generation. There is
2996 # likely room to add a flag and/or config option to control this 2996 # likely room to add a flag and/or config option to control this
2997 # behavior. 2997 # behavior.
2998 if deltaparentrev == nullrev and self.storedeltachains: 2998 if deltaparentrev == nullrev and self._storedeltachains:
2999 baserev = prevrev 2999 baserev = prevrev
3000 3000
3001 # Revlog is configured to use full snapshot for a reason. 3001 # Revlog is configured to use full snapshot for a reason.
3002 # Stick to full snapshot. 3002 # Stick to full snapshot.
3003 elif deltaparentrev == nullrev: 3003 elif deltaparentrev == nullrev: