跳到主要内容

findCommitConflict()

function findCommitConflict(credentials, observed): CommitConflict | undefined;

Defined in: packages/rxdb-plugin-working-tree/src/working-tree/commit-conflict.ts:127

比一遍三个捕获位,产出第一处不匹配(FR-031)。

Parameters​

ParameterTypeDescription
credentialsWorkingTreeCredentials调用方捕获的三个位
observedWorkingTreeRevisionSnapshot命令在写事务里读到的当前值

Returns​

CommitConflict | undefined

第一处不匹配的 CommitConflict;三者全都对得上时返回 undefined

Remarks​

比较顺序是 activation → head → working tree,在第一处不匹配上停下。 顺序按 「错得有多离谱」排:分支认错了的话,后两个 revision 根本不属于同一条时间线,先报它们 会把调用方引向「重新读一次 head 再试」——而正确的出路是先搞清楚自己在哪条分支上。

调用点必须把它排在任何写入之前。 排在写之后的话,一次被拒的提交照样推进了一格 headRevision,别的 Tab 手里的凭据全部失效,而实际上什么都没提交。

分支 id 不匹配时,expected / actual 给的是两边的 activationRevision——它们可能 恰好相等(两条分支各自激活过同样多次)。这不是 bug:这一路的判据是 CommitConflict.branchId 与调用方手上的 expectedBranch.branchId 不同, 而不是两个数字的大小关系。