import "github.com/RichardKnop/somelibrary"
如果我理解正确的话,这将基于您的 Go 版本尝试查找一个分支,如果找不到,则默认为主分支。
因此,没有办法导入特定版本的依赖关系,例如:
import "github.com/RichardKnop/somelibrary#v1.4.8"
那么在Go中管理依赖关系的最佳实践是什么?
我可以看到两种方法。
I. 版本模块
是创建具有重大更改的主要版本的新模块吗?
例如,我的Go库可以定义模块v1和v2,然后您可以执行以下操作:
import "github.com/RichardKnop/somelibrary/v1"
或者:import "github.com/RichardKnop/somelibrary/v2"
根据您的需求,对v1或v2所做的任何更改都需要确保不会破坏任何API或工作功能。
II. 分叉
这将使您完全控制您的Go代码所需的外部依赖版本。
例如,您可以将github.com/RichardKnop/somelibrary分叉到您自己的GitHub帐户中,然后在您的代码中执行:
import "github.com/ForkingUser/somelibrary"
那么你将不得不分叉所有外部依赖项,这似乎有点过度。但是这将使您完全控制版本。您可以将您的分支保持在一个您知道与您的代码配合工作的版本,并且只有在检查到依赖项的新版本不会破坏任何内容后才更新分支。
你怎么想?