def collect_streams_at_offset(self, offset): """ As the version in the PackFile, but can resolve REF deltas within this pack For more info, see ``collect_streams`` :param offset: offset into the pack file at which the object can be found""" streams = self._pack.collect_streams(offset) # try to resolve the last one if needed. It is assumed to be either # a REF delta, or a base object, as OFFSET deltas are resolved by the pack if streams[-1].type_id == REF_DELTA: stream = streams[-1] while stream.type_id in delta_types: if stream.type_id == REF_DELTA: sindex = self._index.sha_to_index( to_bytes(stream.delta_info)) if sindex is None: break stream = self._pack.stream(self._index.offset(sindex)) streams.append(stream) else: # must be another OFS DELTA - this could happen if a REF # delta we resolve previously points to an OFS delta. Who # would do that ;) ? We can handle it though stream = self._pack.stream(stream.delta_info) streams.append(stream) # END handle ref delta # END resolve ref streams # END resolve streams return streams
def collect_streams_at_offset(self, offset): """ As the version in the PackFile, but can resolve REF deltas within this pack For more info, see ``collect_streams`` :param offset: offset into the pack file at which the object can be found""" streams = self._pack.collect_streams(offset) # try to resolve the last one if needed. It is assumed to be either # a REF delta, or a base object, as OFFSET deltas are resolved by the pack if streams[-1].type_id == REF_DELTA: stream = streams[-1] while stream.type_id in delta_types: if stream.type_id == REF_DELTA: sindex = self._index.sha_to_index(to_bytes(stream.delta_info)) if sindex is None: break stream = self._pack.stream(self._index.offset(sindex)) streams.append(stream) else: # must be another OFS DELTA - this could happen if a REF # delta we resolve previously points to an OFS delta. Who # would do that ;) ? We can handle it though stream = self._pack.stream(stream.delta_info) streams.append(stream) # END handle ref delta # END resolve ref streams # END resolve streams return streams