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

为了方便自己开发,自己写了个小工具: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/dzhcorego 1.24.5require (github.com/gogf/gf/v2 v2.9.0// ... 其他依赖
)

2. 子模块 go.mod

module github.com/gzdzh-cn/dzhcore/dzhgogo 1.24.5require 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
    • 使用全新空目录测试

参考文档

  • Go Modules: Publishing multi-module repositories
  • Go Modules: Module version numbering

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92916.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA 类上方注释 签名

File -->settings–>Editor–>File and Code Templates–>class新建 Class 类上方添加内容:/*** author Jagger* since ${DATE} ${TIME}*/

卫星通信终端天线对星之:参考星对星

我们在前面的文章中介绍了3种卫星通信终端的对星模式,分别是: 卫星通信终端天线的5种对星模式之一:信标跟踪 卫星通信终端天线的5种对星模式之二:功率检测型载波跟踪 卫星通信终端天线的5种对星模式之二:DVB跟踪 今…

来自麻省理工和AI制药公司 Recursion 的结构与结合亲和力预测模型Boltz-2,解决小分子药物发现的关键问题

1. Boltz-2介绍 文章来源:http://jeremywohlwend.com/assets/boltz2.pdf 开源代码来源:https://github.com/jwohlwend/boltz 该AI模型由麻省理工学院计算机科学与人工智能实验室与上市AI制药公司Recursion一起开发,双方在Boltz-1的基础之上…

从零用java实现 小红书 springboot vue uniapp(14) 集成阿里云短信验证码

从零用java实现 小红书 springboot vue uniapp(14) 集成阿里云短信验证码 移动端演示 http://8.146.211.120:8081/#/ 管理端演示 http://8.146.211.120:8088/#/ 项目整体介绍及演示 前言 在现代应用中,手机号不仅是用户的唯一标识&#xff0…

`<< EOF` 与 `<< ‘EOF‘` 与 `<< “EOF“`有无引号的区别多回答笔记250722

<< EOF 与 << EOF 与 << "EOF"有无引号的区别多回答笔记250722 实测 自测代码: # 定义变量 hello"ni hao"# 无引号 tee << EOF # 无引号 ${hello} world \n $(date) # 无引号 EOF# 单引号 tee << EOF # 单…

点击按钮滚动到底功能vue的v-on:scroll运用

使用vue自带的监听滚动功能v-on:scroll&#xff0c;滚动条变化时&#xff0c;会调用方法 checkScrollStatus&#xff0c;如果滚动条在容器底部时&#xff0c;则隐藏按钮&#xff0c;否则显示按钮&#xff0c;点击按钮能一键滚动到底部。<div class"chat-area" ref…

Linux下编译SLEPc

本文记录在Linux下编译安装SLEPc的流程。 一、下载代码 git clone https://github.com/slepc/slepc.git cd ./slepc二、安装依赖 2.1 安装PETSc 参见: <Linux下编译安装PETSc> 2.2 安装intel oneAPI sudo apt install intel-oneapi-base-toolkit sudo apt install i…

【无标题】qwen3-8b 强化学习训练后的模型,可以接着 进行其他grpo 强化学习训练 吗

ser_count’, 0),)} {((‘valid_user_count’, 1),)} 44 0.0 88 [0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.0, 0.6, 0.0, 0.6, 0.0, 0.6] 55 100%|???{‘loss’: 0.0132, ‘grad_norm’: 0.07552657276391983, ‘learning_rate’: 2e-06, ‘num_tokens’: 2098…

IDC权威认可:瑞数信息双项入选《中国大模型安全保护市场概览》

近日&#xff0c;国际数据公司IDC正式发布了《中国大模型安全保护市场概览&#xff0c;2025&#xff1a;全方位安全检测与防护构建可信AI》报告。本次报告中IDC结合全球统一定义以及中国市场特色&#xff0c;将中国大模型安全保护市场划分为7个细分领域&#xff0c;并通过对中国…

多智能体(Multi-agent)策略模式:思维链CoT和ReAct

参考&#xff1a;https://zhuanlan.zhihu.com/p/704523060 &#x1f3af; 一句话记住 CoT&#xff1a;像“考试时在草稿纸上写完所有步骤&#xff0c;再抄答案”。ReAct&#xff1a;像“玩密室逃脱&#xff0c;每开一个箱子就去找下一个线索”。 用小学生能听懂的话 两个小故事…

ChatGPT指令大全:输入需求=输出完整方案

ChatGPT指令大全提供数百个精炼过的指令语句 (提示词)&#xff0c;让你充分发挥 ChatGPT 的强大功能 一、核心功能模块分类 1. 求职与面试 简历优化 专业反馈&#xff1a;按面试官视角分析简历并提出改进建议量化数据&#xff1a;为经历添加具体数字&#xff08;如提升效率30…

Java零基础入门学习知识点2-JDK安装配置+Maven

文章目录版本提示参考视频Maven环境准备一、安装Java开发工具包&#xff08;JDK&#xff09;二、JDK环境配置三、下载Maven安装包*四、Maven环境配置&#xff08;可省略&#xff09;*五、验证安装&#xff08;上一步没做&#xff0c;这步无法验证&#xff0c;可省&#xff09;六…

基于单片机智能衣柜/智能衣橱设计

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 本设计实现了一种基于单片机的多功能智能衣柜&#xff0c;融合环境检测、安全防护与用户交互功能…

自动语音识别(ASR)技术详解

语音识别&#xff08;Automatic Speech Recognition, ASR&#xff09;是人工智能和自然语言处理领域的重要技术&#xff0c;旨在将人类的语音信号转换为对应的文本。近年来&#xff0c;深度学习的突破推动语音识别系统从实验室走入日常生活&#xff0c;为智能助手、实时翻译、医…

【MySQL】MySQL 事务和锁详解

一、MySQL 事务 1.1 事务介绍 在 MySQL 中&#xff0c;事务&#xff08;Transaction&#xff09; 是一组不可分割的 SQL 操作序列&#xff0c;这些操作要么全部成功执行&#xff0c;要么全部失败回滚&#xff0c;以此保证数据库操作的完整性和一致性。 事务将数据库从一种一致…

虚拟直线阈值告警人员计数算法暑期应用

智慧人员计数助力暑期&#xff1a;技术赋能安全管理的创新实践一、背景&#xff1a;暑期人流激增下的安全管理挑战暑期是旅游、商业、交通等场景的客流高峰期&#xff0c;人员密集区域易引发踩踏事故、管理混乱等安全隐患。传统人工计数方式效率低、误差大&#xff0c;难以满足…

SQL164 2021年11月每天新用户的次日留存率

SQL164 2021年11月每天新用户的次日留存率 思路 ​找出新用户​&#xff1a;确定每个用户首次活跃的日期&#xff08;即新用户&#xff09; 例如101用户在11月1日首次出现 ​处理跨天活跃​&#xff1a;考虑用户可能跨天活跃的情况&#xff08;in_time和out_time不在同一天&a…

基于单片机的数字电压表设计

2 系统原理及基本框图 如图2.1所示&#xff0c;模拟电压经过档位切换到不同的分压电路衰减后&#xff0c;经隔离干扰送到A/D转换器进行A/D转换&#xff0c;然后送到单片机中进行数据处理。处理后的数据送到LCD中显示&#xff0c;同时通过串行通讯与上位机通信。图2.1系统基本方…

[NLP]UPF基本语法及其在 native low power verification中的典型流程

UPF基本语法及其在 native low power verification中的典型流程 摘要:本文首先简要介绍 UPF(Unified Power Format),然后解释其在 native low power verification(原生低功耗验证)中的典型流程。最后,我将使用50个具体例子来完整展示 UPF 的关键语法。这些例子基…

fish-speech 在50系列显卡使用 --compile加速兼容

#环境说明 GPU: NVIDIA GeForce RTX 5080 Laptop GPU (sm_120) win11家庭版 24H2 #问题汇总 baize.exceptions.HTTPException: (500, "RuntimeError: ptxas failed with error code 4294967295: \\n\\n") 问题汇总 1 baize.exceptions.HTTPException: (500, "…