# update-git-proj-ver **Repository Path**: itcraft-cn/update-git-proj-ver ## Basic Information - **Project Name**: update-git-proj-ver - **Description**: 基于 .version 管理版本 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-23 - **Last Updated**: 2026-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: 版本管理, 脚本, Git, shell ## README # update-git-proj-ver 通过放置 `.version` 文件,自动更新 Git 项目版本号。 ## 核心功能 - **ugv**:单一版本号更新工具,支持 Maven/Gradle/Rust/Python/Node.js - **fastugv**:Git 主/开发分支版本发布自动化 ## 安装 ```console sudo cp ugv /usr/local/bin sudo cp fastugv /usr/local/bin ``` ## 依赖 1. `git` 2. `sed` 3. [fdfind](https://github.com/sharkdp/fd) ## ugv - 版本更新工具 ### 前提 1. 在项目根目录下放置 `.version` 文件,内容为版本号,如 `1.0.0`。 2. 在需要管理的文件中,对版本号进行标识。 1. Maven pom.xml ```xml 1.0.0 ``` 2. Gradle build.gradle ```groovy version = '1.0.0' // managed by updgitver ``` 3. Rust Cargo.toml ```toml version = "1.0.0" # managed by updgitver ``` 4. Python pyproject.toml ```toml version = "1.0.0" # managed by updgitver ``` 5. Python setup.py ```python version = "1.0.0", # managed by updgitver ``` 6. Node.js package.json ```json { "name": "my-project", "version": "1.0.0" } ``` 注意:package.json 版本号必须在第 3 行。 3. (可选) 项目基于 `git` 管理。 ### 使用 ```console ugv 1.0.1 ``` 将会按如下顺序执行: 1. 基于当前最新 Git `HEAD` 及当日日期建立 Git tag `v{旧版本}_{yyyymmdd}`。 2. 基于当前最新 Git `HEAD` 建立 Git branch `v{旧版本}`。 3. 更新 `pom.xml`/`build.gradle`/`Cargo.toml`/`pyproject.toml`/`setup.py`/`package.json` 中的版本号。 4. 更新 `.version` 文件中的版本号。 5. 提交变更,提交信息为 `build: change to new version: {新版本}`。 ## fastugv - 分支发布自动化 ### 作用 为采用主/开发分支分离的项目自动化版本发布流程,实现分支间的双向同步和版本更新。 ### 使用 ```console # 默认:main 和 dev 分支 fastugv # 自定义分支名 fastugv <主分支> <开发分支> ``` ### 工作流示例 ```console fastugv 1.0.0 1.1.0 ``` 将会执行: 1. 切换到 `main` 分支 2. 将 `dev` 分支合并到 `main` 3. 在 `main` 分支执行 `ugv 1.0.0`(创建 tag、分支、更新版本号) 4. 切换到 `dev` 分支 5. 将 `main` 分支合并到 `dev` 6. 在 `dev` 分支执行 `ugv 1.1.0`(创建 tag、分支、更新版本号) 7. 切回 `main` 分支 ### 适用场景 - 主/开发分支分离的发布流程 - 自动完成版本同步和发布 - 确保发布后两个分支版本号正确 ## 设计理念 1. **单一真相源**:`.version` 文件作为版本号的唯一来源 2. **标记即管理**:通过 `managed by updgitver` 注释标记需要管理的版本号 3. **Git 深度集成**:自动创建 tag 和分支保存历史版本 4. **发布工作流**:`fastugv` 实现 main/dev 分支的双向同步和版本发布