Go 多模块仓库标签管理教程

发布于:2025-07-28 ⋅ 阅读:(18) ⋅ 点赞:(0)

为了方便自己开发,自己写了个小工具:DzhGO 代码生成工具

功能特点标题

  • 初始化项目基础结构
  • 生成插件模块代码
  • 生成模型和实体代码
  • 生成服务接口和实现代码
  • 支持 admin 和 app 两种模块类型
  • 生成项目基础目录

具体介绍看仓库:
https://github.com/gzdzh-cn/dzhcore/tree/master/dzhgo

因为要用到仓库多模块打标签,以下是自己项目的操作实例和步骤

Go 多模块仓库标签管理教程

目录结构

dzhcore/                          # 主仓库根目录
├── go.mod                        # 主模块:module github.com/gzdzh-cn/dzhcore
├── main.go                       # 主模块入口文件
├── core.go                       # 主模块代码
├── dzhgo/                        # 子模块目录
│   ├── go.mod                    # 子模块:module github.com/gzdzh-cn/dzhcore/dzhgo
│   ├── main.go                   # 子模块入口文件
│   ├── cmd/                      # 子模块命令目录
│   │   ├── root.go
│   │   └── ...
│   └── version/                  # 版本信息
│       └── version.go
└── README.md

模块配置

1. 主模块 go.mod

module github.com/gzdzh-cn/dzhcore

go 1.24.5

require (
    github.com/gogf/gf/v2 v2.9.0
    // ... 其他依赖
)

2. 子模块 go.mod

module github.com/gzdzh-cn/dzhcore/dzhgo

go 1.24.5

require github.com/gogf/gf/v2 v2.9.0
// ... 其他依赖

标签管理策略

主仓库标签

  • 格式v1.3.3
  • 用途:标识主模块 github.com/gzdzh-cn/dzhcore 的版本
  • 安装命令go install github.com/gzdzh-cn/dzhcore@v1.3.3

子模块标签

  • 格式dzhgo/v1.3.3
  • 用途:标识子模块 github.com/gzdzh-cn/dzhcore/dzhgo 的版本
  • 安装命令go install github.com/gzdzh-cn/dzhcore/dzhgo@v1.3.3

操作步骤

1. 准备工作

# 确保在主仓库根目录
cd /path/to/dzhcore

# 检查当前状态
git status
git remote -v

2. 创建主仓库标签

# 确保所有更改已提交
git add .
git commit -m "准备发布 v1.3.3"

# 推送最新代码
git push github master

# 创建主仓库标签
git tag v1.3.3

# 推送标签到远程
git push github v1.3.3

3. 创建子模块标签

# 创建子模块标签(在主仓库根目录)
git tag dzhgo/v1.3.3

# 推送子模块标签到远程
git push github dzhgo/v1.3.3

4. 验证标签

# 查看所有标签
git tag -l

# 查看标签详情
git show v1.3.3
git show dzhgo/v1.3.3

# 查看标签指向的 commit
git log --oneline v1.3.3
git log --oneline dzhgo/v1.3.3

调试和验证

1. 检查模块配置

# 检查主模块 go.mod
head -1 go.mod
# 应该输出:module github.com/gzdzh-cn/dzhcore

# 检查子模块 go.mod
head -1 dzhgo/go.mod
# 应该输出:module github.com/gzdzh-cn/dzhcore/dzhgo

2. 验证标签指向的内容

# 检查标签指向的 commit 下,子模块 go.mod 内容
git show v1.3.3:dzhgo/go.mod | head -1
git show dzhgo/v1.3.3:dzhgo/go.mod | head -1

# 检查子模块目录结构
git show v1.3.3:dzhgo/
git show dzhgo/v1.3.3:dzhgo/

3. 测试 Go Proxy 收录

# 等待几分钟让 Go Proxy 同步,然后测试

# 使用官方 Go Proxy 测试主模块
GOPROXY=https://proxy.golang.org go list -m -versions github.com/gzdzh-cn/dzhcore

# 使用官方 Go Proxy 测试子模块
GOPROXY=https://proxy.golang.org go list -m -versions github.com/gzdzh-cn/dzhcore/dzhgo

# 使用国内 Go Proxy 测试
go list -m -versions github.com/gzdzh-cn/dzhcore
go list -m -versions github.com/gzdzh-cn/dzhcore/dzhgo

4. 测试安装命令

# 创建测试目录
mkdir /tmp/gotest
cd /tmp/gotest

# 测试主模块安装
go mod init gotest
go get github.com/gzdzh-cn/dzhcore@v1.3.3

# 测试子模块安装
go install github.com/gzdzh-cn/dzhcore/dzhgo@v1.3.3

# 验证安装
dzhgo --version

5. 调试常见问题

# 如果子模块查不到版本,检查标签格式
git tag | grep dzhgo

# 如果安装失败,检查模块路径
curl https://proxy.golang.org/github.com/gzdzh-cn/dzhcore/dzhgo/@v/list

# 强制刷新 Go Proxy 缓存
GOPROXY=https://proxy.golang.org go get -x github.com/gzdzh-cn/dzhcore/dzhgo@v1.3.3

完整操作示例

# 1. 准备发布
cd /path/to/dzhcore
git add .
git commit -m "发布 v1.3.3 版本"
git push github master

# 2. 创建标签
git tag v1.3.3
git tag dzhgo/v1.3.3
git push github v1.3.3
git push github dzhgo/v1.3.3

# 3. 验证标签
git tag -l
git show v1.3.3:dzhgo/go.mod | head -1
git show dzhgo/v1.3.3:dzhgo/go.mod | head -1

# 4. 等待 Go Proxy 同步(5-10分钟)
sleep 300

# 5. 测试版本查询
GOPROXY=https://proxy.golang.org go list -m -versions github.com/gzdzh-cn/dzhcore
GOPROXY=https://proxy.golang.org go list -m -versions github.com/gzdzh-cn/dzhcore/dzhgo

# 6. 测试安装
mkdir /tmp/gotest && cd /tmp/gotest
go mod init gotest
go install github.com/gzdzh-cn/dzhcore/dzhgo@v1.3.3
dzhgo --version

注意事项

  1. 标签格式必须正确

    • 主模块:v1.3.3
    • 子模块:dzhgo/v1.3.3
  2. 模块路径必须正确

    • 主模块:module github.com/gzdzh-cn/dzhcore
    • 子模块:module github.com/gzdzh-cn/dzhcore/dzhgo
  3. Go Proxy 同步有延迟

    • 官方 proxy.golang.org 通常几分钟内同步
    • 国内 goproxy.cn 可能需要更长时间
  4. 仓库必须是公开的

    • Go Proxy 只收录公开仓库的版本
  5. 测试时不要在本地模块目录

    • 不要在 dzhcore 或 dzhgo 目录下测试 go get
    • 使用全新空目录测试

参考文档


网站公告

今日签到

点亮在社区的每一天
去签到