aboutsummaryrefslogtreecommitdiff
path: root/receivepack/internal/service/quarantine.go
diff options
context:
space:
mode:
Diffstat (limited to 'receivepack/internal/service/quarantine.go')
-rw-r--r--receivepack/internal/service/quarantine.go13
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)