Skip to content

Commit 08ee70c

Browse files
committed
fix(fetch): fix "invalid cross-device link" when moving downloaded data from tmp to system cache dir
1 parent f3353ce commit 08ee70c

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

pkg/fetch/src_dl.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/go-git/go-git/v5/plumbing/storer"
1313
"github.com/go-git/go-git/v5/plumbing/transport"
1414
"github.com/mholt/archives"
15+
cp "github.com/otiai10/copy"
1516
log "github.com/sirupsen/logrus"
1617
"io"
1718
"net/http"
@@ -352,8 +353,14 @@ func postDownloadStep(packageName, tempPath, packageCacheDir string) error {
352353
}
353354

354355
// perform renaming: move from tem dir to the system cache dir.
355-
if err := os.Rename(tempPath, packageCacheDir); err != nil {
356-
return err
356+
if err := os.Rename(tempPath, packageCacheDir); err != nil { // try rename
357+
if err := cp.Copy(tempPath, packageCacheDir); err != nil { // try copy and remove
358+
return err
359+
}
360+
// remove the dir
361+
if err := os.RemoveAll(tempPath); err != nil {
362+
return err
363+
}
357364
}
358365
}
359366
return nil

0 commit comments

Comments
 (0)