diff options
| author | 2026-03-23 03:25:44 +0000 | |
|---|---|---|
| committer | 2026-03-23 03:27:52 +0000 | |
| commit | 4a796e64ac576d6a3e3f2fe6174c4aa476ea0c5c (patch) | |
| tree | 44d72a20076ceab0981d0b553693d26ca36cc0be /refstore/files/transaction_commit.go | |
| parent | receivepack: Lifecycle/ownership docs (diff) | |
| signature | No signature | |
refstore: Improve interfaces, errors, and make batch work v0.1.92
Diffstat (limited to 'refstore/files/transaction_commit.go')
| -rw-r--r-- | refstore/files/transaction_commit.go | 45 |
1 files changed, 3 insertions, 42 deletions
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) } |
