aboutsummaryrefslogtreecommitdiff
path: root/refstore/files/transaction_commit.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-23 03:25:44 +0000
committerGravatar Runxi Yu2026-03-23 03:27:52 +0000
commit4a796e64ac576d6a3e3f2fe6174c4aa476ea0c5c (patch)
tree44d72a20076ceab0981d0b553693d26ca36cc0be /refstore/files/transaction_commit.go
parentreceivepack: Lifecycle/ownership docs (diff)
signatureNo 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.go45
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)
}