跳到主要内容

selectRestoreReplayPath()

function selectRestoreReplayPath(
executor,
headCommitId,
targetCommitId
): Promise<readonly string[] | undefined>;

Defined in: packages/rxdb-plugin-working-tree/src/working-tree/restore-precheck.ts:211

选定「恢复到目标节点」要回退的那条确定性路径。

Parameters​

ParameterTypeDescription
executorTransactionExecutor当前事务执行器
headCommitIdstring | null当前分支 HEAD;空分支为 null
targetCommitIdstring目标 commit id

Returns​

Promise<readonly string[] | undefined>

要逐个应用 inversePatch 的节点,按重放顺序(HEAD 在前); 目标不在 HEAD 的可达父链上时返回 undefined

Remarks​

路径 = HEAD 可达集减去目标可达集,而不是「从 HEAD 往回走到目标为止」。两者在线性历史 上一样,在菱形历史上不一样:目标自己的祖先也在 HEAD 的可达集里,从另一条边绕过去就会把 它们一并算进要回退的节点,于是恢复动作把目标之前的历史也退掉了。

顺序取 HEAD 侧的逐层回溯序,所以它是确定性的:同一张图每次给出同一条路径, 「首个不兼容节点」才可能稳定(FR-050)。

返回 undefined 而不是抛错:「这个 commit 不在当前分支的历史里」是调用方要转成失败出口的 一种判定结果(FR-033 只允许恢复可达节点),不是库坏了。