You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保持Poetry与Commitizen版本同步?解决版本不一致问题

解决Commitizen与Poetry版本不一致的同步工作流

问题根源在于Commitizen默认仅更新[tool.commitizen]下的version字段,不会同步[tool.poetry]中的版本,导致两者与Git标签错位。以下是两种能让所有内容保持一致的工作流:

方案一:配置Commitizen同时更新多个版本字段

直接让Commitizen在版本升级时同步修改Poetry的版本字段,步骤如下:

  1. 修改pyproject.toml,给Commitizen添加version_files配置,指定需要同步更新的版本字段路径:
[tool.poetry]
name = "my-project"
version = "0.1.0"

[tool.commitizen]
name = "cz_conventional_commits"
version = "0.1.0"
version_files = [
    "pyproject.toml:tool.poetry.version",
    "pyproject.toml:tool.commitizen.version"
]
  1. 日常工作流:
    • 提交代码时使用符合Conventional Commits规范的信息(比如feat: 新增功能参数)
    • 执行版本升级命令:commitizen bump
      此时Commitizen会自动分析commit类型升级版本,同步更新两个version字段,提交版本变更并打上对应Git标签,三者完全对齐。

方案二:统一版本来源,让Poetry自动同步

无需维护两个独立版本字段,让Poetry直接复用Commitizen的版本:

  1. 修改pyproject.toml,让Poetry版本指向Commitizen的版本字段:
[tool.poetry]
name = "my-project"
version = { path = "pyproject.toml", from_section = "tool.commitizen", from_key = "version" }

[tool.commitizen]
name = "cz_conventional_commits"
version = "0.1.0"
  1. 日常工作流和方案一一致:提交符合规范的commit后执行commitizen bump,Commitizen更新自身版本字段,Poetry会自动同步该值,Git标签也与版本匹配。

如果偏好从Git标签读取版本,可以配合poetry-dynamic-versioning插件,配置Poetry直接从Git标签获取版本号,彻底消除版本字段维护的重复工作。

内容的提问来源于stack exchange,提问作者Shay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:25:15