diff --git a/local/local.go b/local/local.go index abe6e99..953b71f 100644 --- a/local/local.go +++ b/local/local.go @@ -18,7 +18,6 @@ import ( "github.com/go-git/go-git/v5/plumbing/transport" "github.com/go-git/go-git/v5/plumbing/transport/http" "github.com/go-git/go-git/v5/plumbing/transport/ssh" - "github.com/go-git/go-git/v5/storage/memory" "github.com/melbahja/goph" "github.com/mholt/archiver" "github.com/rs/zerolog/log" @@ -421,12 +420,12 @@ func VerifyHost(host string, remote net.Addr, key gossh.PublicKey) error { return goph.AddKnownHost(host, remote, key, "") } -func TempClone(repo types.Repo) (*git.Repository, error) { +func TempClone(repo types.Repo, tempdir string) (*git.Repository, error) { auth := &http.BasicAuth{ Username: "xyz", Password: repo.Token, } - r, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{ + r, err := git.PlainClone(tempdir, false, &git.CloneOptions{ URL: repo.URL, Auth: auth, }) diff --git a/main.go b/main.go index bcab18e..9662e62 100644 --- a/main.go +++ b/main.go @@ -228,7 +228,16 @@ func backup(repos []types.Repo, conf *types.Conf) { Msgf("mirroring %s to %s", types.Blue(r.Name), "https://github.com") if !cli.Dry { - temprepo, err := local.TempClone(r) + tempdir, err := os.MkdirTemp(os.TempDir(), fmt.Sprintf("github-%x", repotime)) + if err != nil { + log.Error(). + Str("stage", "tempclone"). + Str("url", r.URL). + Msg(err.Error()) + continue + } + defer os.RemoveAll(tempdir) + temprepo, err := local.TempClone(r, tempdir) if err != nil { log.Error(). Str("stage", "tempclone").