首页 > 解决方案 > 为什么 go module 伪版本有特定版本?

问题描述

我有一个 go.mod 看起来像

require(
   ...
   github.com/google/wire v0.3.1-0.20190716160000-66f78fc84606
   ...
)

根据我的理解,如果一个包看起来像那样(yyyymmddMMSS-commit_id),应该是哪个版本,v0.0.0但不v0.3.1作为这个例子。

有人可以指导我如何解释这个吗?go mod 会忽略v0.3.1-前缀吗?

标签: go

解决方案


事实上,有 3 种可接受的伪版本形式:

  1. vX.0.0-yyyymmddhhmmss-abcdefxyz
    在目标提交之前没有具有适当主要版本的早期版本提交

  2. vX.YZ-pre.0.yyyymmddhhmmss-abcdefxyz
    当目标提交之前的最新版本化提交是 vX.YZ-pre

  3. vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdefxyz
    当目标提交之前的最新版本化提交是 vX.YZ

有关管理 Go 模块伪版本的更多详细信息:
https ://hackernoon.com/managing-go-module-pseudo-versions-in-go-113-412h30lw


推荐阅读