跳转到主要内容

Hatch插件,用于使用您首选的版本控制系统(如Git)进行版本管理

项目描述

hatch-vcs

CI/CD CI - Test CD - Build
PyPI - Version PyPI - Python Version
元数据 Hatch project code style - black types - Mypy License - MIT GitHub Sponsors

这为Hatch提供了一个插件,它使用您首选的版本控制系统(如Git)来确定项目版本。

目录

全局依赖

确保在您的pyproject.toml文件中的build-system.requires字段中定义了hatch-vcs

[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"

版本源

版本源插件的名称是vcs

  • pyproject.toml

    [tool.hatch.version]
    source = "vcs"
    
  • hatch.toml

    [version]
    source = "vcs"
    

版本源选项

选项 类型 默认值 描述
tag-pattern str 代码 用于从VCS标签中提取版本部分的正则表达式。该模式需要包含单个匹配组,或者一个名为version的组,它捕获实际的版本信息。
fallback-version str 如果没有其他版本检测方法成功,将使用的版本。如果没有指定,则未成功的版本检测将引发错误。
raw-options dict 一个表,其中包含setuptools-scm参数,这些参数将覆盖上述列出的任何选项。参数write_towrite_to_template被忽略。

版本源环境变量

  • SETUPTOOLS_SCM_PRETEND_VERSION:当定义且非空时,用作版本的主要来源,在这种情况下,它将是一个未解析的字符串。

构建钩子

构建钩子插件的名称是vcs

  • pyproject.toml

    [tool.hatch.build.hooks.vcs]
    version-file = "_version.py"
    
  • hatch.toml

    [build.hooks.vcs]
    version-file = "_version.py"
    

当最新标签是v1.2.3时构建或安装将生成文件

  • _version.py

    # coding: utf-8
    # file generated by setuptools_scm
    # don't change, don't track in version control
    __version__ = version = '1.2.3'
    __version_tuple__ = version_tuple = (1, 2, 3)
    

构建钩子选项

选项 类型 默认值 描述
version-file str REQUIRED 文件相对于当前版本的相对路径,该文件会更新。
template str 用于覆盖version-file的模板。请参阅代码以获取每个文件扩展名的默认模板。

可编辑安装

版本文件仅在安装或构建时更新。因此,如果版本更改且项目未重新构建,则可编辑安装(Hatch的开发模式)中的版本号将不正确。有关保持版本号更新的不支持的解决方案,请参阅hatch-vcs-footgun-example

元数据钩子

注意:仅支持Git

元数据钩子插件的名称是vcs,用于将VCS数据(目前是提交哈希)插入除version之外的元数据字段。

  • pyproject.toml

    [tool.hatch.metadata.hooks.vcs]
    
  • hatch.toml

    [metadata.hooks.vcs]
    

元数据钩子选项

URL

urls选项等同于project.urls,除了每个URL都支持以下字段的上下文格式化

  • commit_hash - 最新提交哈希

请务必将urls添加到project.dynamic

  • pyproject.toml

    [project]
    dynamic = [
      "urls",
    ]
    

示例

  • pyproject.toml

    [tool.hatch.metadata.hooks.vcs.urls]
    Homepage = "https://www.example.com"
    source_archive = "https://github.com/org/repo/archive/{commit_hash}.zip"
    
  • hatch.toml

    [metadata.hooks.vcs.urls]
    Homepage = "https://www.example.com"
    source_archive = "https://github.com/org/repo/archive/{commit_hash}.zip"
    

迁移技巧

如果您是从setuptools迁移,您可能希望访问版本而不执行完整的构建。

默认情况下,python -m setuptools_scm将显示版本并执行任何副作用,如写入文件。"hatch"将这些功能分开。

显示版本

hatch version将在不修改源目录的情况下将版本打印到终端。

$ hatch version
23.0.0.dev17+g462372ba

将版本写入文件

如果定义了version-file,您可以使用build命令将其写入源目录,使用--hooks-only标志修改源树但跳过创建sdists或wheels。

$ hatch build --hooks-only
$ cat package/_version.py
# file generated by setuptools_scm
# don't change, don't track in version control
__version__ = version = '23.0.0.dev17+g462372ba'
__version_tuple__ = version_tuple = (23, 0, 0, 'dev17', 'g462372ba')

许可证

hatch-vcs是在MIT许可下分发的。

项目详情


下载文件

下载适合您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

hatch_vcs-0.4.0.tar.gz (10.9 kB 查看哈希)

上传于 源代码

构建版本

hatch_vcs-0.4.0-py3-none-any.whl (8.4 kB 查看哈希值)

上传于 Python 3

支持者