从本地分支获取安装



我正在尝试从本地目录安装一个 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

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

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

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

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

我所知,你不能用go get做到这一点,你可以手动将目录复制到GOPATH中。如果您分叉了example.com/somepackage/Users/me/workspaces/go/somepackage复制到~/go/src/example.com/somepackage./vendor/example.com/somepackage

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

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

Go documentantion on 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 本地存储库的可能性。

相关内容

  • 没有找到相关文章

最新更新