comparison mercurial/revlog.py @ 51025:509f0f7fc89e

delta-computer: stop explicitly taking file handle The revlog has all the logic for opening and caching such handles, so no need to duplicate it here. In addition, this let the revlog handle that logic by itself which is better.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 25 Sep 2023 22:51:57 +0200
parents 720e5a5f2b95
children 33d2f0164d0d
comparison
equal deleted inserted replaced
51024:66c139d33cfe 51025:509f0f7fc89e
2578 ) 2578 )
2579 if self._writinghandles is None: 2579 if self._writinghandles is None:
2580 msg = b'adding revision outside `revlog._writing` context' 2580 msg = b'adding revision outside `revlog._writing` context'
2581 raise error.ProgrammingError(msg) 2581 raise error.ProgrammingError(msg)
2582 2582
2583 if self._inline:
2584 fh = self._writinghandles[0]
2585 else:
2586 fh = self._writinghandles[1]
2587
2588 btext = [rawtext] 2583 btext = [rawtext]
2589 2584
2590 curr = len(self) 2585 curr = len(self)
2591 prev = curr - 1 2586 prev = curr - 1
2592 2587
2648 textlen, 2643 textlen,
2649 cachedelta, 2644 cachedelta,
2650 flags, 2645 flags,
2651 ) 2646 )
2652 2647
2653 deltainfo = deltacomputer.finddeltainfo(revinfo, fh) 2648 deltainfo = deltacomputer.finddeltainfo(revinfo)
2654 2649
2655 compression_mode = COMP_MODE_INLINE 2650 compression_mode = COMP_MODE_INLINE
2656 if self._docket is not None: 2651 if self._docket is not None:
2657 default_comp = self._docket.default_compression_header 2652 default_comp = self._docket.default_compression_header
2658 r = deltautil.delta_compression(default_comp, deltainfo) 2653 r = deltautil.delta_compression(default_comp, deltainfo)
2736 ) 2731 )
2737 2732
2738 rawtext = btext[0] 2733 rawtext = btext[0]
2739 2734
2740 if alwayscache and rawtext is None: 2735 if alwayscache and rawtext is None:
2741 rawtext = deltacomputer.buildtext(revinfo, fh) 2736 rawtext = deltacomputer.buildtext(revinfo)
2742 2737
2743 if type(rawtext) == bytes: # only accept immutable objects 2738 if type(rawtext) == bytes: # only accept immutable objects
2744 self._revisioncache = (node, curr, rawtext) 2739 self._revisioncache = (node, curr, rawtext)
2745 self._chainbasecache[curr] = deltainfo.chainbase 2740 self._chainbasecache[curr] = deltainfo.chainbase
2746 return curr 2741 return curr