Bra*_*mon 5 python python-3.x bump2version
我将如何使用bump2version
(关于它的调用和/或它的配置)来增加:
1.0.0.a2.post0 # post-release of a pre-release a2
Run Code Online (Sandbox Code Playgroud)
到
1.0.0.a3 # pre-release a3
Run Code Online (Sandbox Code Playgroud)
可重现的例子:
1.0.0.a2.post0 # post-release of a pre-release a2
Run Code Online (Sandbox Code Playgroud)
__init__.py
:
1.0.0.a3 # pre-release a3
Run Code Online (Sandbox Code Playgroud)
setup.cfg
:
[bumpversion]
current_version = 1.0.0.a2.post0
parse = ^
(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+) # minimum major.minor.patch, 1.2.3
(?:
\.
(?P<prerel>a|alpha|b|beta|d|dev|rc) # pre-release segment
(?P<prerelversion>\d+) # pre-release version num
)?
(?:\.post(?P<post>\d+))? # post-release
serialize =
{major}.{minor}.{patch}.{prerel}{prerelversion}.post{post}
{major}.{minor}.{patch}.{prerel}{prerelversion}
{major}.{minor}.{patch}.post{post}
{major}.{minor}.{patch}
[bumpversion:file:__init__.py]
[bumpversion:part:prerel]
optional_value = dev
values =
dev
d
alpha
a
beta
b
rc
Run Code Online (Sandbox Code Playgroud)
此方案的有效版本示例,它采用了 PEP 440 中的一些但不是全部规则:
1.2.3 # (1) final
1.2.3.dev0 # (2) prerelease
1.2.3.a0
1.2.3.alpha0
1.2.3.b0
1.2.3.beta0
1.2.3.rc0
1.2.3.rc3.post0 # (3) postrelease (of a pre-release version)
1.2.3.post0 # (4) postrelease (of a final version)
Run Code Online (Sandbox Code Playgroud)
例如,我已经尝试过,bump2version --verbose prerelversion
或者--new-version=1.0.0.a3
明确地尝试过。这两种尝试都保留.post0
而不是放弃它。
注意:几周前,我在bump2version repo 中将此作为使用问题提出,但没有成功。
我们必须努力解决这个问题(而且,在过去,是用原来的bumpversion
,而不是更好的bump2version
)。
通过下面的配置,您可以使用bumpversion pre
from1.0.0.a2.post0
到1.0.0.a3
。
解释:
由于pre
和post
每个都有字符串前缀和数字,我认为有必要相应地拆分它们。例如,该pre
部分可以分为 a prekind
(字符串)和 a pre
(数字)。然后,好处是您可以独立于问题编号(像往常一样的序列)来递增prekind
('dev'
到'alpha'
到等)。'beta'
下面,我按顺序提供了完整的配置和包含多个调用的示例,以显示可能的各种突变。我确信下面的设置可以进一步定制,但希望它能让您和其他人走上正确的轨道。
cat > .bumpversion.cfg << "EOF"
[bumpversion]
current_version = 1.0.0.a2.post0
files = __init__.py
commit = False
parse = ^
(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)
(\.(?P<prekind>a|alpha|b|beta|d|dev|rc)
(?P<pre>\d+) # pre-release version num
)?
(\.(?P<postkind>post)(?P<post>\d+))? # post-release
serialize =
{major}.{minor}.{patch}.{prekind}{pre}.{postkind}{post}
{major}.{minor}.{patch}.{prekind}{pre}
{major}.{minor}.{patch}.{postkind}{post}
{major}.{minor}.{patch}
[bumpversion:part:prekind]
optional_value = _
values =
_
dev
d
alpha
a
beta
b
rc
[bumpversion:part:postkind]
optional_value = _
values =
_
post
EOF
echo '__version__ = "1.0.0.a2.post0"' > __init__.py
Run Code Online (Sandbox Code Playgroud)
测试:
它们执行一系列的碰撞版本操作来演示一些可能的突变。当然,您可以使用--new-version=...
强制设置新版本。
for op in \
start post post pre pre prekind prekind pre postkind post prekind minor \
postkind post pre postkind prekind postkind post major prekind postkind post; do
if [[ $op == 'start' ]]; then
printf "starting from: %s\n" $(perl -ne 'print "$1\n" if /"(.*)"/' __init__.py)
else
bumpversion $op
printf "%10s --> %s\n" $op $(perl -ne 'print "$1\n" if /"(.*)"/' __init__.py)
fi
done
Run Code Online (Sandbox Code Playgroud)
输出(已注释):
starting from: 1.0.0.a2.post0
post --> 1.0.0.a2.post1 # no issue incrementing post
post --> 1.0.0.a2.post2
pre --> 1.0.0.a3 # can move to the next 'pre'release
pre --> 1.0.0.a4
prekind --> 1.0.0.beta0 # can upgrade the kind of prerelease
prekind --> 1.0.0.b0
pre --> 1.0.0.b1 # and keep incrementing
postkind --> 1.0.0.b1.post0 # bring a post component again
post --> 1.0.0.b1.post1 # and incrementing
prekind --> 1.0.0.rc0 # upgrade pre kind directly
minor --> 1.1.0 # patch/minor/major cut the optional parts
postkind --> 1.1.0.post0 # but we can bring a post component (without pre)
post --> 1.1.0.post1
pre --> 1.1.0 # BAD & silent: cannot increment a missing part
postkind --> 1.1.0.post0
prekind --> 1.1.0.dev0 # default: pre part starts at 'dev'
postkind --> 1.1.0.dev0.post0 # can add post part to a pre part
post --> 1.1.0.dev0.post1 # etc...
major --> 2.0.0
prekind --> 2.0.0.dev0
postkind --> 2.0.0.dev0.post0
post --> 2.0.0.dev0.post1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
701 次 |
最近记录: |