跳到主要内容

discardWorkingTree()

function discardWorkingTree(executor, options): Promise<WorkingTreeDiscardResult>;

Defined in: packages/rxdb-plugin-working-tree/src/working-tree/discard-command.ts:108

把当前分支的工作树整体退回当前 HEAD(FR-016)。

Parameters​

ParameterTypeDescription
executorTransactionExecutor调用方那个写事务的执行器;本函数不自己开事务
optionsWorkingTreeCredentials见 WorkingTreeDiscardOptions;三个捕获位全部必填

Returns​

Promise<WorkingTreeDiscardResult>

见 WorkingTreeDiscardResult

Throws​

CommitGraphCorruptedError 当前分支的提交图已损坏时(FR-051)

Throws​

NoActiveBranchError 零 active 分支时

Remarks​

损坏分支上先拒绝再说:「反正这个分支坏了,顺手清干净」会让用户在唯一还能导出 诊断的时刻失去未提交的那部分数据。

no-op 的判据取实际条目行数而不是 entryCount 冗余列:两者万一已经分岔,按冗余列 判会把一批真实存在的条目永久留在表里(而 status() 报干净),按行数判则顺带把冗余列 收敛回真实值。真正发现分岔是 assertWorkingTreeEntryCountIntact 的职责。

恢复会话与条目一并清除(US-307 AC5):丢弃掉的正是那次恢复写进工作树的全部内容, 留着会话会让 status() 继续报 restoring,而它指向的那批变更已经不在库里了。 discardActiveRestoreSession 排在状态行 UPDATE 之后,且只在非 no-op 路径上—— 上面第 2 条要求 clean 丢弃一条写语句都不发。