go get -u对于带有go1分支的软件包失败

时间:2018-09-06 06:06:37

标签: go

我正在分发一个go程序包,该程序包需要很多我不想包含在git存储库的master分支中的生成文件。我希望人们能够使用go get安装我的软件。由于go get未运行go generate,因此我的解决方案是将所有生成的文件粘贴在go1分支中,该分支是master之后的提交,但还包括所有生成的文件。我还可以向go1分支添加第二个伪父提交,以便无论人们获取go1都是什么,它都是快速合并。只要go1保持原始状态,我不在乎master分支会变得多么丑陋。

这种技术第一次很好用。不幸的是,go get -u的所有后续调用都对人失败,即使go1分支根本没有改变,因为go get仍处于结帐状态存储库处于分离的HEAD状态,而不是go1分支上。我可以自己手动解决此问题,方法是手动进入gopath来运行git checkout go1,这将创建本地go1分支跟踪origin/go1,但这很烦人,不得不指导其他人做。那时,我最好只是与gopath系统战斗,并告诉人们使用Makefile来构建软件。

关于如何解决此问题或告诉别人的任何想法?我真的不想做的一件事是运行git symbolic-ref来更改服务器上的HEAD,因为master实际上是所有开发人员的默认分支。无论如何,不​​必在服务器上更改HEAD,因为go get是获取go1分支的一种选择,因此为什么不创建本地go1origin/go1提取的分支?

1 个答案:

答案 0 :(得分:0)

结果证明这只是cmd / go中的错误。这是问题的链接:

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

如果此错误在1.12中得到修复,那么我想做的将正常工作。