python - 如果主要版本为 0,则没有预发布标签
问题描述
我正在使用bump2version
语义版本控制。如果主要版本为 0(即快速开发?),有没有办法防止标签的预发布组件出现。就目前而言,我.bumpversion.cfg
的是
[bumpversion]
current_version = 0.0.0
tag = False
tag_name = {new_version}
commit = True
parse =
(?P<major>\d+)
\.
(?P<minor>\d+)
\.
(?P<patch>\d+)
(\-(?P<pre>[a-z]+)\.(?P<prenum>\d+))?
serialize =
{major}.{minor}.{patch}-{pre}.{prenum}
{major}.{minor}.{patch}
[bumpversion:part:pre]
optional_value = placeholder
first_value = alpha
values =
alpha
beta
rc
placeholder
[bumpversion:part:prenum]
first_value = 1
[bumpversion:file:pyproject.toml]
当我碰撞部分时添加预发布值minor
>>> bumpversion minor
Bumpversion: 0.0.0 -> 0.1.0-alpha.1
当我处于主要版本时,我不希望标签的-alpha.N
,等部分出现(即快速开发;在主要版本和更高版本之前不会对我进行预发布测试)。-beta.N
0
1
0
从主要版本到1
全部版本时N
,我确实想要预发布部分(因为预发布测试将在这些阶段进行),而不是为了快速开发。在快速开发过程中,我不希望每次颠簸都必须手动输入(尤其是因为在 1.0.0 之前我会有很多版本)。N+1
N > 0
--new-version
有没有人有办法解决吗?
解决方案
作为“猴子补丁”/解决方法,在 中bumpversion.version_part
,我_choose_serialize_format()
从
def _choose_serialize_format(self, version, context):
chosen = None
logger.debug(
"Available serialization formats: '%s'", "', '".join(self.serialize_formats)
)
for serialize_format in self.serialize_formats:
try:
self._serialize(
version, serialize_format, context, raise_if_incomplete=True
)
chosen = serialize_format
logger.debug("Found '%s' to be a usable serialization format", chosen)
except IncompleteVersionRepresentationException as e:
if not chosen:
chosen = serialize_format
except MissingValueForSerializationException as e:
logger.info(e.message)
raise e
if not chosen:
raise KeyError("Did not find suitable serialization format")
logger.debug("Selected serialization format '%s'", chosen)
return chosen
到
def _choose_serialize_format(self, version, context):
chosen = None
logger.debug(
"Available serialization formats: '%s'", "', '".join(self.serialize_formats)
)
if version._values["major"].value == "0":
_serialize_formats = [
self.serialize_formats[-1],
]
else:
_serialize_formats = self.serialize_formats
for serialize_format in _serialize_formats:
try:
self._serialize(
version, serialize_format, context, raise_if_incomplete=True
)
chosen = serialize_format
logger.debug("Found '%s' to be a usable serialization format", chosen)
except IncompleteVersionRepresentationException as e:
if not chosen:
chosen = serialize_format
except MissingValueForSerializationException as e:
logger.info(e.message)
raise e
if not chosen:
raise KeyError("Did not find suitable serialization format")
logger.debug("Selected serialization format '%s'", chosen)
return chosen
添加的行是
if version._values["major"].value == "0":
_serialize_formats = [
self.serialize_formats[-1],
]
else:
_serialize_formats = self.serialize_formats
并且更改的行是
for serialize_format in self.serialize_formats:
到
for serialize_format in _serialize_formats:
推荐阅读
- flutter - 如何通过 bloc 正确传递参数
- java - 使用当前 pom 指定并执行另一个 pom.xml
- python - 我做了一个机器人,但有时无法回答
- if-statement - VB 脚本 - 带有十六进制 const 的 If 子句
- python - 堆叠直方图表达
- javascript - 使用 React 未处理的拒绝(错误)创建 Pdf:在结束后写入
- kotlin - 使用 IntelliJ 内部控制台的 Kotlin readLine() 函数出现问题
- matlab - 无法执行分配,因为左侧和右侧的元素数量不同。MATLAB 错误
- django - Django rest 框架嵌套序列化程序部分更新
- javascript - 使用 Chrome 自动点击扩展的动态 ID 的 XPath