find_switch_branch_step()
function find_switch_branch_step(options): SwitchBranchStep[];
Defined in: packages/rxdb-plugin-history/src/find-switch-branch-step.ts:140
Internal
算出树上两个节点之间的切换路径
Parameters
| Parameter | Type | Description |
|---|---|---|
options | FindBranchPathOptions | 起点分支、目标分支、两侧当前变更 id,以及全量分支集合 |
Returns
按执行顺序排好的步骤;两侧停在同一个变更 id 时为空数组
Throws
RxDBError 父链成环或指向不存在的分支时(经 find_branch_path_to_root)
Remarks
规则四条:
- 两个节点有共同祖先时,路径是「当前节点 → 共同祖先 → 目标节点」
- 没有共同祖先时,路径是「当前节点 → 根 → 目标节点」
- 路径里每个节点都要算出自己那一段的变更区间,即
fromChangeId → toChangeId changeId在每条分支上都递增,所以逆向还原的那些步骤fromChangeId > toChangeId, 正向应用的则相反——方向由这两个数的大小关系表达,步骤上没有第二个方向字段
有两处提前返回会跳过父链遍历——变更 id 相同时返回空步骤,同分支不同变更 id 时返回 单步——因此本函数不是父链完整性的检查点,理由见 find_branch_path_to_root。