最小化版本工具
项目描述
Miniver
类似于 versioneer,但更小
Miniver是一个 最小 的 版本 工具,它服务于与Versioneer相同的目的,但只适用于Git,且跨平台支持仍然是实验性的。
为什么我会使用这个?
如果您在Git仓库内部开发Python包,并希望直接从Git标签获取版本,而不是在各个地方都硬编码版本字符串。
这正是Versioneer解决的问题,但Miniver只有不到200行代码,而Versioneer则有超过2000行。权衡是Miniver只适用于Git和Python 3.5(或更高版本)。
支持Python 2不是一个目标,因为Python 2即将结束其生命周期(2020年),我们希望鼓励人们使用Python 3!也就是说,Christian Marquardt有一个分支也支持Python 2
用法
使用Miniver最简单的方法是在项目根目录中运行以下命令
curl https://raw.githubusercontent.com/jbweston/miniver/master/miniver/app.py | python - install <your_package_directory>
这将从GitHub获取最新文件并为您的项目设置Miniver。
我得到一个 unknown
版本!
当git历史中没有有效标签时,版本被报告为 unknown
(加上当前的git哈希值)。您应该创建一个 标注标签,这样Miniver就能报告一个合理的版本。
如果你的项目使用未标记的标签进行版本控制(尽管这不是推荐的方式),那么你需要运行以下命令来修改Miniver的行为
curl https://raw.githubusercontent.com/jbweston/miniver/master/unannotated-tags.patch | patch <your_package_directory>/_version.py
我不想每次都输入这个URL
你可以使用pip install miniver
安装miniver,这将为你提供miniver
命令。然后,你只需从项目的根目录运行以下命令即可使用Miniver
miniver install <your_package_directory>
我能否在不执行互联网上的随机代码的情况下使用它?
当然可以!从本存储库将miniver/_version.py
和miniver/_static_version.py
复制到你的包目录中,然后将以下代码段复制到相应的文件中
# Your package's __init__.py
from ._version import __version__
del _version
# Your project's setup.py
from setuptools import setup
# Loads _version.py module without importing the whole package.
def get_version_and_cmdclass(pkg_path):
import os
from importlib.util import module_from_spec, spec_from_file_location
spec = spec_from_file_location(
'version', os.path.join(pkg_path, '_version.py'),
)
module = module_from_spec(spec)
spec.loader.exec_module(module)
return module.__version__, module.get_cmdclass(pkg_path)
version, cmdclass = get_version_and_cmdclass('my_package')
setup(
name='my_package',
version=version,
cmdclass=cmdclass,
)
# Your project's .gitattributes
my_package/_static_version.py export-subst
在上面的代码中将'my_package'
替换为你的包名(这应该与复制miniver
内容的目录名称相同)。
这就完成了!
许可证
Miniver在CC0许可证下属于公共领域。
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪一个,请了解更多关于安装包的信息。