使用go-git/v5并尝试对https进行克隆,如下所示:
_, err := git.Clone(memory.NewStorage(), fs, &git.CloneOptions{
URL: repo,
ReferenceName: plumbing.ReferenceName(branch),
Depth: 1,
SingleBranch: true,
Auth: &http.TokenAuth{Token: string(token)},
})其中token是表单ghp_XXXXXXXXX (我的个人GH访问令牌)的字符串。
repo等于我的私人回购https://github.com/pkaramol/arepo
错误是
"net/http: invalid header field value \"Bearer ghp_XXXXXXXXX`\\n\" for key Authorization"我也尝试用我的用户名和令牌作为密码使用basic auth。
_, err := git.Clone(memory.NewStorage(), fs, &git.CloneOptions{
URL: repo,
ReferenceName: plumbing.ReferenceName(branch),
Depth: 1,
SingleBranch: true,
Auth: &http.BasicAuth{Username: "pkaramol", Password: token},
})现在,错误变成:
authentication required在https上克隆的正确方法是什么?
令牌具有repo作用域fwiw。
编辑:
fs实例化如下所示
fs := memfs.New()使用的http包如下
"github.com/go-git/go-git/v5/plumbing/transport/http"发布于 2021-12-04 13:59:19
这应该是可行的:
package main
import (
"os"
"fmt"
"github.com/go-git/go-billy/v5/memfs"
"github.com/go-git/go-git/v5/plumbing"
"github.com/go-git/go-git/v5/plumbing/transport/http"
"github.com/go-git/go-git/v5/storage/memory"
git "github.com/go-git/go-git/v5"
)
func main() {
token := "ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
fs := memfs.New()
_, err := git.Clone(memory.NewStorage(), fs, &git.CloneOptions{
URL: "https://github.com/username/reponame",
ReferenceName: plumbing.ReferenceName("refs/heads/main"),
Depth: 1,
SingleBranch: true,
Auth: &http.BasicAuth{Username: "username", Password: token},
Progress: os.Stdout,
})
if err != nil {
fmt.Println(err)
}
fmt.Println("Done")
}https://stackoverflow.com/questions/70225815
复制相似问题