findCommitConflict()
function findCommitConflict(credentials, observed): CommitConflict | undefined;
Defined in: packages/rxdb-plugin-working-tree/src/working-tree/commit-conflict.ts:127
比一遍三个捕获位,产出第一处不匹配(FR-031)。
Parameters
| Parameter | Type | Description |
|---|---|---|
credentials | WorkingTreeCredentials | 调用方捕获的三个位 |
observed | WorkingTreeRevisionSnapshot | 命令在写事务里读到的当前值 |
Returns
CommitConflict | undefined
第一处不匹配的 CommitConflict;三者全都对得上时返回 undefined
Remarks
比较顺序是 activation → head → working tree,在第一处不匹配上停下。 顺序按 「错得有多离谱」排:分支认错了的话,后两个 revision 根本不属于同一条时间线,先报它们 会把调用方引向「重新读一次 head 再试」——而正确的出路是先搞清楚自己在哪条分支上。
调用点必须把它排在任何写入之前。 排在写之后的话,一次被拒的提交照样推进了一格
headRevision,别的 Tab 手里的凭据全部失效,而实际上什么都没提交。
分支 id 不匹配时,expected / actual 给的是两边的 activationRevision——它们可能
恰好相等(两条分支各自激活过同样多次)。这不是 bug:这一路的判据是
CommitConflict.branchId 与调用方手上的 expectedBranch.branchId 不同,
而不是两个数字的大小关系。