From 4a796e64ac576d6a3e3f2fe6174c4aa476ea0c5c Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Mon, 23 Mar 2026 03:25:44 +0000 Subject: refstore: Improve interfaces, errors, and make batch work --- refstore/files/transaction_commit.go | 45 +++--------------------------------- 1 file changed, 3 insertions(+), 42 deletions(-) (limited to 'refstore/files/transaction_commit.go') diff --git a/refstore/files/transaction_commit.go b/refstore/files/transaction_commit.go index dae4d8ee..4839936a 100644 --- a/refstore/files/transaction_commit.go +++ b/refstore/files/transaction_commit.go @@ -1,50 +1,11 @@ package files -import ( - "errors" - "os" -) - func (tx *Transaction) Commit() error { - prepared, err := tx.prepare() - if err != nil { - return err - } - - defer func() { - _ = tx.cleanup(prepared) - }() - - for _, item := range prepared { - if item.op.kind == txDelete || item.op.kind == txDeleteSymbolic || item.op.kind == txVerify || item.op.kind == txVerifySymbolic { - continue - } - - err = tx.writeLoose(item) - if err != nil { - return err - } - } - - err = tx.applyPackedDeletes(prepared) + executor := &refUpdateExecutor{store: tx.store} + prepared, err := executor.prepareUpdates(tx.ops) if err != nil { return err } - for _, item := range prepared { - switch item.op.kind { - case txDelete, txDeleteSymbolic: - if item.target.ref.isLoose { - err = tx.store.rootFor(item.target.loc.root).Remove(item.target.loc.path) - if err != nil && !errors.Is(err, os.ErrNotExist) { - return err - } - - tx.tryRemoveEmptyParents(item.target.name) - } - case txCreate, txUpdate, txVerify, txCreateSymbolic, txUpdateSymbolic, txVerifySymbolic: - } - } - - return nil + return executor.commitPreparedUpdates(prepared) } -- cgit v1.3.1-10-gc9f91