2 回答
TA贡献1829条经验 获得超6个赞
如何移动到版本 2 有两个选项:分支和子目录。
这两个选项使一个版本可以依赖另一个版本。例如,当您实施版本 2 时,您可以更新版本 1 以依赖于版本 2(但保持相同的 v1 API)。然后,您只需要为您的库实现一种逻辑。根据项目类型、您要提供的支持以及它需要的修复,这可能适合您也可能不适合您。
分支机构
master: A -> B (v1.0.0) -> D (v1.0.1) \ v2: -> C (v2.0.0)
在这种情况下:
你在分支上开始你的项目
master
,做一些提交(
A
和B
),标签
v1.0.0
。您决定进行重大更改。因此,您创建了一个新分支 (
git checkout -b v2
) 并进行了重大更改。您的 go.mod 现在必须更新,以便模块名称以/v2
(它本质上是一个新模块!)结尾。您决定修复 中的错误
v1
,因此您返回该分支,进行新提交并标记新v1
版本。
当用户需要您的模块的特定版本时,go
将在两个分支中查找哪个提供了正确的模块。
子目录
不想在分支上开发怎么办?您可以为每个主要版本创建一个子目录。版本 1 位于顶层,然后新版本移至子目录:
go.mod (module example.com/foo)
foo.go
v2/
go.mod (module example.com/foo/v2)
foo.go
当您使用新版本标记此 repo 时,v1将使用顶级版本。v2标签将使用v2子目录。
TA贡献1871条经验 获得超8个赞
来自模块 wiki 的发布模块(v2 或更高版本)部分:
有两种可供选择的机制来发布 v2 或更高版本的模块。请注意,使用这两种技术,当模块作者推送新标签时,新模块版本可供消费者使用。使用创建发布的示例
v3.0.0
,两个选项是:
主要分支:更新文件以在指令中的模块路径末尾
go.mod
包含一个(例如,)。更新模块中的 import 语句以也使用(eg, )。用 标记发布。/v3
module
module github.com/my/module/v3
/v3
import "github.com/my/module/v3/mypkg"
v3.0.0
Go 版本 1.9.7+、1.10.3+ 和 1.11+ 能够正确使用和构建使用这种方法创建的 v2+ 模块,而无需更新尚未选择加入模块的消费者代码(如“语义导入版本控制” 部分)。
注意:不需要创建新分支。例如,如果您之前已经在 master 上发布,并且更愿意在 master 上标记 v3.0.0,这也是一个可行的选择。[...]
[...]
主要子目录:创建一个新的
v3
子目录(例如,my/module/v3
)并go.mod
在该子目录中放置一个新文件。模块路径必须以/v3
. 将代码复制或移动到v3
子目录中。更新模块中的 import 语句以也使用/v3
(eg,import "github.com/my/module/v3/mypkg"
)。用 标记发布v3.0.0
。
但是,该部分中还有其他值得回顾的详细信息。
- 2 回答
- 0 关注
- 110 浏览
添加回答
举报