如何使用bump2version (关于它的调用和/或配置)来增加:
1.0.0.a2.post0 # post-release of a pre-release a2至
1.0.0.a3 # pre-release a3可复制的例子:
$ python3 -m pip install 'bump2version==1.0.*'__init__.py
__version__ = "1.0.0.a2.post0"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此方案的有效版本示例,该方案采用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)例如,我尝试过bump2version --verbose prerelversion,或者使用--new-version=1.0.0.a3显式地使用。这两次尝试都保留了.post0,而不是放弃它。
注意:几周前,我以用法问题的身份在bump2version回购中问过这个问题,但没有任何运气。
发布于 2020-12-10 04:04:48
我们不得不与之搏斗(在过去的日子里,我们不得不与原始的bumpversion,而不是更好的bump2version)作斗争。
使用下面的配置,您可以使用bumpversion pre从1.0.0.a2.post0转到1.0.0.a3。
解释
由于pre和post各有一个字符串前缀和一个数字,因此我认为有必要对它们进行相应的拆分。例如,pre部件可以拆分为一个prekind (字符串)和一个pre (数字)。然后,更好的是,您可以将prekind ('dev' to 'alpha' to '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测试
它们执行一系列的颠簸操作来演示一些可能的突变。当然,您可以使用--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
doneOutput (注释):
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.post1https://stackoverflow.com/questions/65083808
复制相似问题