-1

我正在尝试使用https://github.com/libgit2/git2go从 GCP Source 存储库克隆存储库

但是,我得到failed to resolve path '/tmp/repo/.git/': No such file or directory"

通过使用 gcloud source repo clone,它可以工作。

func initRepo(url, path, auth string) (*git.Repository, error) {
    var repo *git.Repository
    var err error
    osPath := "/tmp/" + path

    repo, err = git.OpenRepository(osPath)
    if err != nil {
        repo, err = git.Clone(url, osPath, &git.CloneOptions{
            FetchOptions: &git.FetchOptions{
                Headers: []string{auth},
            },
        })
    }
    return repo, err
}

func main() {
    ctx := context.Background() 
    ts, err := google.DefaultTokenSource(ctx, sourcerepo.SourceFullControlScope)
    if err != nil {
        panic(err)
    }
    token, err := ts.Token()
    if err != nil {
        panic(err)
    }

    auth := "Authorization: " + token.Type() + " " + token.AccessToken

    gitRepo, err := initRepo("https://source.developers.google.com/p/project/r/repo", "repo", auth)
    if err != nil {
        panic(err)
    }

什么会导致此错误?即使在我的 docker 容器中,它也可以在本地机器上运行。

4

1 回答 1

1

我将赌注押在您使用的 git2go 库无法在/tmp/repo/.git/. 确保/tmp/repo自己先 mkdir 吧?也许/tmp不存在?

于 2021-02-12T01:37:16.137 回答