mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
44343769f8
Summary: We want to rename away from "mercurial". Rather than rename the "mercurial" Python package, we opted to just collapse it into the parent "edenscm" package. This is also a step towards further organizing we want to do around the new project name. To ease the transition wrt hotfixes, we now replace "edenscm.mercurial" with "mercurial" to fix imports within base64-python extensions. Reviewed By: sggutier Differential Revision: D38943169 fbshipit-source-id: 03fa18079c51e2f7fac05d65b127095da3ab7c99
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
#
|
|
# This software may be used and distributed according to the terms of the
|
|
# GNU General Public License version 2.
|
|
|
|
from __future__ import absolute_import
|
|
|
|
from typing import Iterable
|
|
|
|
import edenscm # noqa: F401
|
|
|
|
from . import util
|
|
from .node import wdirid
|
|
|
|
|
|
def prefetchtextstream(
|
|
repo: "edenscm.localrepo.localrepository",
|
|
ctxstream: "Iterable[edenscm.context.basectx]",
|
|
) -> "Iterable[edenscm.context.basectx]":
|
|
"""Prefetch commit text for a stream of ctx"""
|
|
|
|
return _prefetchtextstream(repo, ctxstream)
|
|
|
|
|
|
def _prefetchtextstream(repo, ctxstream):
|
|
for ctxbatch in util.eachslice(ctxstream, 10000, maxtime=2):
|
|
# ctxbatch: [ctx]
|
|
nodes = [_rewritenone(c.node()) for c in ctxbatch]
|
|
texts = repo.changelog.inner.getcommitrawtextlist(nodes)
|
|
for ctx, text in zip(ctxbatch, texts):
|
|
ctx._text = text
|
|
yield ctx
|
|
|
|
|
|
def _rewritenone(n):
|
|
# None is used as a way to refer to "working parent", ex. `repo[None]`.
|
|
# Rust bindings do not like None. Rewrite it to `wdirid`.
|
|
if n is None:
|
|
return wdirid
|
|
else:
|
|
return n
|