0

我正在尝试从本地目录安装 go 包(基本上我检查了现有包并应用了挂起的拉取请求)。

$ # Both commands give a similar output
$ go get -u file:///Users/me/workspaces/go/somepackage
$ go get -u /Users/me/workspaces/go/somepackage
unrecognized import path "[...]" (import path does not begin with hostname)

由于go get正在下载然后安装,我尝试了:

$ go install /Users/me/workspaces/go/somepackage
[] cannot import absolute path

任何有经验的围棋用户可以帮忙吗?

4

3 回答 3

1

如果您只想使用不同的分支(您的 PR 分支),您可以继续使用原始导入路径。

  • 先去拿原包。
  • 进入本地文件系统中下载的包cd $GOPATH/pkg/<package directory>
  • 从本地包缓存中,切换到要从中提取的分支。git checkout <PR branch>
  • 现在go get -u <package>

如果包在本地可用, go get update 只会从本地包签出的分支中提取最新代码。

于 2019-04-22T17:13:04.153 回答
0

我可能是错的,也许存在解决方法

cmd/go/#hdr-Remote_import_paths上的文档说:

支持的版本控制系统有:

Bazaar      .bzr
Fossil      .fossil
Git         .git
Mercurial   .hg
Subversion  .svn

后来:

例如,

import "example.org/pkg/foo"

将导致以下请求:

https://example.org/pkg/foo?go-get=1 (preferred)
http://example.org/pkg/foo?go-get=1  (fallback, only with -insecure)

所以我想这go get永远不会出现在文件系统存储库中。

需要调查源代码go get才能确定。

如果有人能证明我在这个问题上是不正确的,我会很高兴。

更新

也许我错了,但我想go get使用 VCS 的所有能力都在这里:https ://github.com/golang/go/blob/master/src/cmd/go/internal/get/vcs.go

而且我在这里看不到使用 git local repos 的可能性。

于 2019-04-22T09:31:29.077 回答
0

据我所知,您不能使用go get, bur 来执行此操作,您可以手动将目录复制到 GOPATH 中。如果你分叉example.com/somepackage然后复制/Users/me/workspaces/go/somepackage~/go/src/example.com/somepackageor ./vendor/example.com/somepackage

话虽如此,最好的解决方案通常是将分叉代码托管在某个地方,然后使用该导入路径。dep 和 modules 等体面工具支持为包获取不同的来源。

于 2019-04-22T09:12:03.037 回答