首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bump2version在删除释放后段时增加预释放

bump2version在删除释放后段时增加预释放
EN

Stack Overflow用户
提问于 2020-12-01 02:12:15
回答 1查看 2.2K关注 0票数 6

如何使用bump2version (关于它的调用和/或配置)来增加:

代码语言:javascript
复制
1.0.0.a2.post0 # post-release of a pre-release a2

代码语言:javascript
复制
1.0.0.a3 # pre-release a3

可复制的例子:

代码语言:javascript
复制
$ python3 -m pip install 'bump2version==1.0.*'

__init__.py

代码语言:javascript
复制
__version__ = "1.0.0.a2.post0"

setup.cfg

代码语言:javascript
复制
[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中的一些但不是所有规则:

代码语言:javascript
复制
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回购中问过这个问题,但没有任何运气。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-10 04:04:48

我们不得不与之搏斗(在过去的日子里,我们不得不与原始的bumpversion,而不是更好的bump2version)作斗争。

使用下面的配置,您可以使用bumpversion pre1.0.0.a2.post0转到1.0.0.a3

解释

由于prepost各有一个字符串前缀和一个数字,因此我认为有必要对它们进行相应的拆分。例如,pre部件可以拆分为一个prekind (字符串)和一个pre (数字)。然后,更好的是,您可以将prekind ('dev' to 'alpha' to 'beta'等)递增。独立于问题号(一个序列,像往常一样)。

下面,我已经提供了一个完整的配置和一个具有多个调用顺序的示例,以显示各种可能的突变。我相信,下面的设置可以进一步定制,但希望它将使您和其他降落在正确的轨道上。

代码语言:javascript
复制
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=...强制设置一个新版本。

代码语言:javascript
复制
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

Output (注释):

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65083808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档