在 Go 中,某些包有版本控制是很常见的。所以一个程序可能看起来像这样:
package main
import (
"github.com/go-gl/gl/v3.3-core/gl"
"github.com/go-gl/glfw/v3.2/glfw"
)
// ... do stuff
有时,我可能想更新glfw的版本。让我们想象一下 GLFW 3.3 绑定来到 Go,我想从 3.2 进行更新。
我的项目中可能有多个使用 glfw 的 Go 文件。我不想深入研究每一个并手动更新导入的版本。理想情况下,我也不会复制那么长的路径,并且我可以在每个项目的一个位置定义它。
也许我可以编写一个脚本来查找+替换“github.com/go-gl/glfw/v3.2/glfw”
也许我可以和 Genny 一起模板化文件
也许我可以在根Go路径“glfw”->“github.com/go-gl/glfw/v3.2/glfw”中创建一个符号链接,在更改版本时更新它,然后使用import "glfw"
但此信息位于项目“外部”,因此克隆我的项目的人都不知道要使用哪个版本
但这是一个全局变化,我可能有多个项目想要依赖不同的版本
理想情况下,我能够在每个源文件中执行类似的操作:
package main
import (
$gl
$glfw
)
在一些项目级点文件中,类似:
gl=github.com/go-gl/gl/v3.3-core/gl
glfw=github.com/go-gl/glfw/v3.2/glfw
或者,附加到定义常量的命令行参数go build可能类似于:
go build -Dgl=github.com/go-gl/gl/v3.3-core/gl -Dglfw=github.com/go-gl/glfw/v3.2/glfw
目前其他人如何处理这个问题?
FFIVE
相关分类