如何保持Poetry与Commitizen版本同步?解决版本不一致问题
解决Commitizen与Poetry版本不一致的同步工作流
问题根源在于Commitizen默认仅更新[tool.commitizen]下的version字段,不会同步[tool.poetry]中的版本,导致两者与Git标签错位。以下是两种能让所有内容保持一致的工作流:
方案一:配置Commitizen同时更新多个版本字段
直接让Commitizen在版本升级时同步修改Poetry的版本字段,步骤如下:
- 修改
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" ]
- 日常工作流:
- 提交代码时使用符合Conventional Commits规范的信息(比如
feat: 新增功能参数) - 执行版本升级命令:
commitizen bump
此时Commitizen会自动分析commit类型升级版本,同步更新两个version字段,提交版本变更并打上对应Git标签,三者完全对齐。
- 提交代码时使用符合Conventional Commits规范的信息(比如
方案二:统一版本来源,让Poetry自动同步
无需维护两个独立版本字段,让Poetry直接复用Commitizen的版本:
- 修改
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"
- 日常工作流和方案一一致:提交符合规范的commit后执行
commitizen bump,Commitizen更新自身版本字段,Poetry会自动同步该值,Git标签也与版本匹配。
如果偏好从Git标签读取版本,可以配合poetry-dynamic-versioning插件,配置Poetry直接从Git标签获取版本号,彻底消除版本字段维护的重复工作。
内容的提问来源于stack exchange,提问作者Shay
相关产品推荐
相关产品推荐

