至于不允许相对导入的原因,您可以从某种角度阅读此讨论:https ://groups.google.com/forum/#! msg/golang- nuts/n9d8RzVnadk/07f9RDlwLsYJ
就我个人而言,我宁愿至少针对内部导入启用它们,完全出于您所描述的原因。
现在,该如何处理呢?
如果您的fork只是来自另一个项目的一个小修复,可能很快就会被接受为PR-只需手动编辑git remotes,使其引用您自己的git repo,而不是原始的git repo。如果您使用的是Godep之类的供应商解决方案,那么它将顺利运行,因为保存它只会出售您的分叉代码,并且go get
永远不会直接使用。
如果您的前叉有很大的变化,并且您打算保留分支,请重写所有导入路径。您可以sed
使用来自动化它,也可以使用gofmt -r
它来支持重写正在格式化的代码。
[编辑]我还找到了专门用于解决这种情况的工具:https ://github.com/rogpeppe/govers
我已经完成了1和2的工作- 当我对某个库进行了一个小错误修正时,我只是更改了遥控器并对其进行了授权。当我实际上分叉一个库而不打算将更改合并回去时,我更改了所有导入路径,并继续仅使用我的存储库。