Golang版本对比工具Compver - 语义化版本核心比较命令行工具

Golang版本对比工具Compver - 语义化版本核心比较命令行工具 大家好,在过去的几周里,我一直在开发一个可以用于比较语义版本的小型 CLI 工具。你可以在这里找到它。

目前,通常只比较版本号的核心部分。 之后你会得到诸如 no changesmajor updatemajor downgrademinor updateminor downgradepatch updatepatch downgrade 这样的信息。当然,你也会在代码仓库中找到测试。我已经将其与 Github Action 集成,以便对每个发布或请求进行测试。

欢迎查看文档。我会非常乐意收到建设性的反馈。

整个项目当然是开源的,没有任何商业形式。感谢您抽出时间! octopus


更多关于Golang版本对比工具Compver - 语义化版本核心比较命令行工具的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang版本对比工具Compver - 语义化版本核心比较命令行工具的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是一个非常实用的工具!Compver 专注于语义化版本核心比较,解决了开发中常见的版本对比需求。以下是一个使用示例:

package main

import (
    "fmt"
    "github.com/yourusername/compver"
)

func main() {
    // 比较两个语义化版本
    result, err := compver.Compare("1.2.3", "1.2.4")
    if err != nil {
        fmt.Printf("比较错误: %v\n", err)
        return
    }
    
    fmt.Printf("版本变化: %s\n", result.ChangeType)
    fmt.Printf("是否更新: %v\n", result.IsUpgrade)
    fmt.Printf("是否降级: %v\n", result.IsDowngrade)
    
    // 输出: 版本变化: patch update
    //       是否更新: true
    //       是否降级: false
}

工具的核心比较逻辑很清晰,直接返回版本变化的类型,这在CI/CD流水线中特别有用。例如在GitHub Actions中检查依赖版本变化:

name: Check Version Bump
on: [pull_request]
jobs:
  check-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Compare versions
        run: |
          OLD_VERSION="1.2.3"
          NEW_VERSION="1.3.0"
          result=$(compver compare $OLD_VERSION $NEW_VERSION)
          echo "Version change: $result"
          # 可以基于结果进行后续操作

项目结构看起来也很完整,包含测试和GitHub Actions集成。语义化版本比较虽然看似简单,但实际需要考虑很多边界情况,比如:

  • 前导零的处理(“1.02.3” vs “1.2.3”)
  • 预发布版本的比较(“1.2.3-alpha” vs “1.2.3-beta”)
  • 构建元数据的处理

这个工具正好填补了标准库semver包在某些使用场景下的空白,特别是对于需要明确知道具体是major/minor/patch级别变化的场景。

回到顶部