当我使用Git克隆带有HTTP和用户密码的远程存储库时,是否可以在Windows上使用.netrc文件?
即使我已经GOPATH正确设置,我仍然无法"go build"或"go run"来找到我自己的包.我究竟做错了什么?
$ echo $GOROOT
/usr/local/go
$ echo $GOPATH
/home/mitchell/go
$ cat ~/main.go
package main
import "foobar"
func main() { }
$ cat /home/mitchell/go/src/foobar.go
package foobar
$ go build main.go
main.go:3:8: import "foobar": cannot find package
Run Code Online (Sandbox Code Playgroud) 我开始研究一个Go项目,它使用 Github 私有存储库中的一些私有模块,每当我尝试运行go run main.go它时,都会出现以下410 Gone错误:
验证 github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go-proto@v2.86.0+incompatible/go.mod:阅读https://sum.golang。 org/lookup/github.com/!repoURL/go-proto@v2.86.0+incompatible : 410 Gone
我可以轻松地从终端克隆私有 repo,这意味着我的ssh密钥配置正确。我在这里读到我需要设置GOPRIVATE环境变量,但我不知道该怎么做。
任何人都可以回答或指向相关教程吗?
转到: v1.13,操作系统: macOS Mojave
Gitlab是一种免费的,开源的托管私有.git存储库的方式,但它似乎不适用于GoLang.创建项目时,它会生成以下形式的URL:
git@1.2.3.4:private-developers/project.git
Run Code Online (Sandbox Code Playgroud)
哪里:
1.2.3.4 是gitlab服务器的IP地址private-developers 是一个可以访问私人仓库的用户组Golang 1.2.1似乎不理解这种语法.
go get git@1.2.3.4:private-developers/project.git
Run Code Online (Sandbox Code Playgroud)
结果是:
package git@23.251.148.129/project.git: unrecognized import path "git@1.2.3.4/project.git"
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个工作?
所以基本上,我有一个Openshift项目,在Git推送下,使用'Go get'下载所有库并在运行中构建项目,所以,我有一些代码,我不希望别人从我自己的库中看到,并且为了正确编译,代码需要从github.com或其他repo中获取,所以我创建了一个私有的bitbucket.org repo,现在,作为一个公共回购它工作正常,但是当我试图'Go Get'时来自我的私人回购,它给了我'Forbidden 403'
我怎样才能避免这种情况发生?感谢您阅读并度过美好的一天!
我在个人VPS上托管我的git存储库,我有一个我想要"go get"的软件包.我试图通过发出"go help importpath"找到帮助文档,但没有运气.无论我做什么,我都会收到以下错误:
package example.com/user/package: unrecognized import path "example.com/user/package"
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所提到的META标签的每个组合以及相同的结果.
<meta name="go-import" content="example.com git http://example.com/user/package">
Run Code Online (Sandbox Code Playgroud)
可以通过http://example.com/user/package.git访问实际的git存储库.我可以直接克隆它,但我想去下载并正确安装它.
根据帮助文档,如果go向http://example.com/user/package?go-get=1发出请求,则返回的页面包含META标记.如果go然后向http://example.com/?go-get=1发出后续请求,则返回的页面也包含完全相同的META标记.
是否需要在服务器上进行任何特殊配置?我不这么认为,因为go会通过http请求访问存储库.
我的智慧结束了.我们将非常感谢您提供的任何帮助.
我正在我的组织 gitlab 组中镜像一个流行的 go 库(用于冗余)。
在我的代码中,我有: import ( "gitlab.com/org/group/library.git" )
我使用这个答案来指导如何使用带有私有存储库的 go get。在我的机器上go get ./...工作是因为我使用以下命令配置了 git:
$ git config --global url.git@gitlab.com:.insteadOf https://gitlab.com/
Run Code Online (Sandbox Code Playgroud)
当我尝试构建 docker 容器时,命令RUN go get ./...失败并显示以下输出:
package gitlab.com/org/group/library.git: cannot download, git://gitlab.com/org/group/library uses insecure protocol
Run Code Online (Sandbox Code Playgroud)
似乎来自类似线程或本文的流行答案是执行诸如将 ssh 密钥上传到 docker 容器之类的操作。我真的对此感到不舒服,因为我不完全了解正在做什么或安全隐患。
任何有关如何正确配置我的 dockerfile 或我的 golang 工作流程的见解都会有很大帮助。
我正在尝试下载 Entreprise Github 上的 Go 软件包。
值得注意的是,该域在 VPN 外部不可见,但我已连接到该 VPN。
我可以使用浏览器浏览https://github.mydomain.com/some_repository,但需要登录。
$ go get -v github.mydomain.com/some_repository
get "github.mydomain.com/some_repository": found meta tag get.metaImport{Prefix:"github.mydomain.com/some_repository", VCS:"git", RepoRoot:"https://github.mydomain.com/some_repository.git"} at //github.mydomain.com/some_repository?go-get=1
go: downloading github.mydomain.com/some_repository v0.0.0
go get github.mydomain.com/some_repository: github.mydomain.com/some_repository@v0.0.0: verifying module: github.mydomain.com/some_repository@v0.0.0: reading https://sum.golang.org/lookup/github.mydomain.com/some_repository@v0.0.0: 410 Gone
server response: not found: github.mydomain.com/some_repository@v0.0.0: unrecognized import path "github.mydomain.com/some_repository": https fetch: Get "https://github.mydomain.com/some_repository?go-get=1": dial tcp: lookup github.mydomain.com on 8.8.8.8:53: no such host
Run Code Online (Sandbox Code Playgroud)
我最初认为这是由于命令行工具没有访问令牌,因为浏览器可以访问但不能访问go get。我在 Entreprise Github 上生成了一个令牌,并尝试通过以下方式解决此问题:
git config --local http.extraheader "PRIVATE-TOKEN: <token>"
git config …Run Code Online (Sandbox Code Playgroud) 我们使用私有 Bitbucket 存储库来管理我们的 Go 库。通过使用例如在这个Stackoverflow answer 中描述的insteadOf配置,我们有一个工作构建到 Go 版本 1.12。1.13 和 1.14 版本不再起作用。我们看到这样的错误:git
$ go vet ./...
go: downloading bitbucket.org/travelloapp/golibs v1.0.42
usercache/usercache.go:6:2: bitbucket.org/travelloapp/golibs@v1.0.42: verifying module: bitbucket.org/travelloapp/golibs@v1.0.42: reading https://sum.golang.org/lookup/bitbucket.org/travelloapp/golibs@v1.0.42: 410 Gone
server response:
not found: bitbucket.org/travelloapp/golibs@v1.0.42: reading https://api.bitbucket.org/2.0/repositories/travelloapp/golibs?fields=scm: 403 Forbidden
server response: Access denied. You must have write or admin access.
Run Code Online (Sandbox Code Playgroud)
在转到FAQ建议设立curl的~/.netrc文件。我已经做到了,使用 Bitbucket 的“应用密码”功能。它不会改变结果。我已经添加了bitbucket.org和api.bitbucket.org作为主机名。
我可以curl直接测试文件设置是否正确:
$ curl -n https://api.bitbucket.org/2.0/repositories/travelloapp/golibs?fields=scm
{"scm": "git"}
Run Code Online (Sandbox Code Playgroud)
记录:尽管有 Bitbucket 错误消息。存储库读取访问似乎是唯一需要的权限,尽管我也尝试过启用所有权限。 …
执行时
go get bitbucket.org/../..
我收到这个错误
yash.jain projectname % go get bitbucket.org/../..
go: bitbucket.org/../..
https://api.bitbucket.org/2.0/repositories/../..?fields=scm: 403 Forbidden
go: error loading module requirements
Run Code Online (Sandbox Code Playgroud)
我尝试过的
设置 ssh 密钥(按预期工作,通过推送和拉取代码进行测试)
将 go 环境变量设置为:
GOPRIVATE=""
GOPROXY="direct"
GOSUMDB="off"
Run Code Online (Sandbox Code Playgroud)
.gitconfig 看起来像这样
[url "git@bitbucket.org:"]
insteadOf = https://bitbucket.org/
[user]
email = yash.jain@company.in
name = yashjain
Run Code Online (Sandbox Code Playgroud)
向 ssh-agent 添加密钥
ssh-add -l
ssh-add -k
Run Code Online (Sandbox Code Playgroud)
.ssh/config 文件看起来像这样
Host bitbucket.org
HostName bitbucket.org
User git
IdentityFile ~/.ssh/id_rsa
UseKeychain yes
StrictHostKeyChecking no
Run Code Online (Sandbox Code Playgroud)
尽管如此,我还是遇到了同样的错误。如果我做错了什么,请告诉我。
我在本地服务器上有一个 git repo。我可以使用git clone user@10.xxx.yyy.zzz:/srv/git/liqid.git用户具有 ssh 访问权限和读/写到 git/ 目录的方式从它进行克隆。
当我尝试使用它时,go get -v user@10.xxx.yyy.zzz:/srv/git/liqid.git它会给出
go: cannot use path@version syntax in GOPATH mode
我尝试了各种其他组合,例如省略了:,但它们都失败了。
可以go get在本地服务器上使用 repo 吗?