From d86d30116b7509e616d4dfedc8b9aca2db5ae3e8 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 7 Mar 2026 21:01:13 +0800 Subject: receivepack: Propagate the rename error properly --- receivepack/internal/service/quarantine.go | 13 +++++++++++-- 1 file 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) -- cgit v1.3.1-10-gc9f91