为了账号安全,请及时绑定邮箱和手机立即绑定

分叉存储库上的“go build”问题

分叉存储库上的“go build”问题

Go
隔江千里 2023-06-05 19:35:50
我为 GitHub 存储库(go 代码)构建了一个二进制文件,它工作正常。没有问题。我分叉了那个 repo,并修改了 HTML 文件中与 GO 代码无关的一行,为新的分叉 repo 构建了二进制文件,但它生成的二进制文件引用了原始 repo 代码,不明白为什么。我什至使用命令清理了所有代码go clean -i all并手动删除了所有已安装的代码、$home/go/bin 和 repo 目录中的二进制文件,但它仍然引用原始 repo 代码而不是新的分叉代码。根据 Tobias 建议的解决方案,我执行了以下步骤:之后,我go build在那个repo目录下执行,但是新的二进制文件仍然引用旧代码。我什至删除了旧的二进制文件并生成了一个新文件。
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

这是一个常见的问题。“基于位置”的参考系统因此它在“正确”路径中搜索这些文件。Idk if go modules 解决了这个问题,但至少在不使用 go modules 时你必须解决它。

你可以解决它

解决方案 1

  1. 下载您通过以下方式分叉的原始存储库:

去获取http://github.com/awesome-org/tool

  1. 将您的分叉添加为远程

git remote 添加 awesome-you-fork http://github.com/awesome-you/tool

  1. 您必须在原始下载的 repo 的文件夹中进行更改,并向/从您的叉子推送和拉取。

git pull --rebase awesome-you-fork

git push awesome-you-fork

方案二

解决 go get:您创建原始存储库的路径,但将您自己的分支克隆到其中。这样你就可以推拉你的叉子。这可能是更好的解决方案

cd $GOPATH

mkdir -p {src,bin,pkg}

mkdir -p src/github.com/awesome-org/

cd src/github.com/awesome-org/


git clone git@github.com:awesome-you/tool.git # OR: git clone https://github.com/awesome-you/tool.git

cd tool/

go get ./...

这些解决方案是在这里找到的:http://code.openark.org/blog/development/forking-golang-repositories-on-github-and-managing-the-import-path


查看完整回答
反对 回复 2023-06-05
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

一个 go 包的分叉副本的问题是当包实际上是一个 repo 中的多个 go 包时,导入语句引用原始基础 repo,即:github.com/orig/repo

对于只有一个 go 包的 repos 来说这不是问题,因为它从不引用自己。

但是如果它有多个,即:包github.com/orig/repo/A导入github.com/orig/repo/B

然后你把它分叉为:github.com/fork/repo

然后当 go 编译器看到import "github.com/orig/repo/B"源代码时,它会去下载原始版本而不是你的 fork。

幸运的是,go modules解决了这个问题。

go.mod基本上,在你的分叉回购的顶部 创建一个并添加:module github.com/orig/repo

然后,go 编译器将假定您是“orig/repo”,而不管您实际上是从哪里检出的。

所以,当orig/repo/Aimports时orig/repo/B,它会在本地查找。

如果您需要覆盖主分支仓库之外的其他导入,您还可以使用replace强制依赖项来自另一个地方


查看完整回答
反对 回复 2023-06-05
?
倚天杖

TA贡献1828条经验 获得超3个赞

解决了

起初我以为是 FORK 的问题(这是 Go 语言 repo 的 fork 的常见问题),但事实证明,这是 Repo 特定的问题。必须重新安装其中一个依赖库才能使分叉的回购工作,这在原始回购文档中没有提到。问题不是通用的,而是特定于 repo 我按照上面链接中的以下步骤解决了对 go-bindata 的依赖

go get github.com/jteeuwen/go-bindata
cd $GOPATH/src/github.com/jteeuwen/go-bindata/go-bindata
go build


查看完整回答
反对 回复 2023-06-05
  • 3 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信