首页 > 解决方案 > go get -u 对带有 go1 分支的包失败

问题描述

我正在分发一个 go 包,它需要大量生成的文件,我不想将这些文件包含在master我的 git 存储库的分支中。我希望人们能够使用go get. 由于go getdoesn't run go generate,我的解决方案是将所有生成的文件粘贴到一个go1分支中,该分支是一次提交,master但也包括所有生成的文件。我还可以向go1分支添加第二个假父提交,这样无论人们获取go1它总是一个快进合并。go1只要master保持原始状态,我不在乎树枝变得多么丑陋。

这种技术第一次效果很好。不幸的是,即使分支根本没有改变,每次后续调用都会go get -u失败,因为将签出的存储库留在分离的 HEAD 状态而不是在分支上。我可以通过手动深入我的 gopath 来解决这个问题,这将创建一个本地分支跟踪,但是必须指示其他人这样做非常烦人。在这一点上,我最好只与 gopath 系统作斗争并告诉人们使用 Makefile 构建软件。go1go getgo1git checkout go1go1origin/go1

关于如何解决这个问题的任何想法,或者告诉人们什么?我真正不想做的一件事是在服务器上运行git symbolic-ref更改HEAD,因为master确实需要成为所有开发人员的默认分支。无论如何,HEAD不​​需要在服务器上进行更改,因为go get选择获取go1分支的人,那么为什么不创建一个go1从中提取的本地分支origin/go1呢?

标签: go

解决方案


原来这只是 cmd/go 中的一个错误。这是该问题的链接:

https://github.com/golang/go/issues/27526

如果这个错误在 1.12 中得到修复,那么我想做的就可以了。


推荐阅读