0

我正在尝试使用用户/密码(BasicAuth)执行一组 git clone 操作,它运行正常,但在某些时候它会因错误而停止。

  1. 我正在使用git.PlainClone(...)+ http.BasicAuth{}
  2. 我尝试了几个具有相同结果的文件夹。我收到类似的消息,但每次运行都不同:error: mkdir /tmp/foo/.git/refs/remotes/origin/addusers: not a directory.
  3. 它适用于开放的 Git 存储库。

这是代码:


import (
    "fmt"
    "log"
    "os"

    git "github.com/go-git/go-git/v5"
    "github.com/go-git/go-git/v5/plumbing/transport/http"
)

func main() {
    Info("git clone https://bitbucket.org/mycompany/some-repo.git")

    _, err := git.PlainClone("/tmp/foo", false, &git.CloneOptions{
        URL:      "https://bitbucket.org/mycompany/some-repo.git",
        Progress: os.Stdout,
        Auth:     &http.BasicAuth{Username: "my user", Password: "my password"},
    })

    CheckIfError(err)
}

func CheckIfError(err error) {
    if err == nil {
        return
    }

    fmt.Printf("\x1b[31;1m%s\x1b[0m\n", fmt.Sprintf("error: %s", err))
    os.Exit(1)
}

func Info(format string, args ...interface{}) {
    log.Printf("\x1b[34;1m%s\x1b[0m\n", fmt.Sprintf(format, args...))
}

错误:

$ go run main.go
2021/06/14 16:03:02 git clone https://bitbucket.org/mycompany/some-repo.git
error: open /tmp/foo/.git/refs/remotes/origin/Secret: is a directory
exit status 1
$ go run main.go
2021/06/14 16:06:05 git clone https://bitbucket.org/mycompany/some-repo.git
Counting objects: 196484, done.
Compressing objects: 100% (72375/72375), done.
Total 196484 (delta 138772), reused 173972 (delta 123792)
error: mkdir /tmp/foo/.git/refs/remotes/origin/addusers: not a directory
exit status 1
4

0 回答 0