ref: df1f2fb3daa1acd25c88510f259d5535fb482126
dir: /ref/store/files/update_cleanup.go/
package files
import (
"errors"
"os"
"slices"
)
func (executor *refUpdateExecutor) cleanupPreparedUpdates(prepared []preparedUpdate) error {
var firstErr error
lockNames := make([]string, 0, len(prepared)+1)
for _, item := range prepared {
lockNames = append(lockNames, updateTargetKey(item.target.loc))
}
lockNames = append(lockNames, updateTargetKey(refPath{root: rootCommon, path: "packed-refs"}))
slices.Sort(lockNames)
lockNames = slices.Compact(lockNames)
for _, lockKey := range lockNames {
lockPath := refPathFromKey(lockKey)
lockName := lockPath.path + ".lock"
root := executor.store.rootFor(lockPath.root)
err := root.Remove(lockName)
if err == nil || errors.Is(err, os.ErrNotExist) {
executor.tryRemoveEmptyParentPaths(lockPath.root, lockName)
continue
}
if firstErr == nil {
firstErr = err
}
}
return firstErr
}