diff options
| author | 2026-03-07 21:01:13 +0800 | |
|---|---|---|
| committer | 2026-03-07 21:16:05 +0800 | |
| commit | d86d30116b7509e616d4dfedc8b9aca2db5ae3e8 (patch) | |
| tree | 433b0aabe9d9dac194bd689aad5ca177311658df /receivepack | |
| parent | receivepack: Use refs (diff) | |
| signature | No signature | |
receivepack: Propagate the rename error properly
Diffstat (limited to 'receivepack')
| -rw-r--r-- | receivepack/internal/service/quarantine.go | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/receivepack/internal/service/quarantine.go b/receivepack/internal/service/quarantine.go index 101cadc7..e028f54d 100644 --- a/receivepack/internal/service/quarantine.go +++ b/receivepack/internal/service/quarantine.go @@ -141,16 +141,25 @@ func finalizeQuarantineFile(root *os.Root, src, dst string, skipCollisionCheck b if statErr == nil { err = fs.ErrExist } else if errors.Is(statErr, fs.ErrNotExist) { - if renameErr := root.Rename(src, dst); renameErr == nil { + renameErr := root.Rename(src, dst) + if renameErr == nil { return nil } - return fmt.Errorf("promote quarantine %q -> %q: %w", src, dst, err) + err = renameErr } else { + _ = root.Remove(src) + return statErr } } + if !errors.Is(err, fs.ErrExist) { + _ = root.Remove(src) + + return fmt.Errorf("promote quarantine %q -> %q: %w", src, dst, err) + } + if skipCollisionCheck { _ = root.Remove(src) |
