bump2version在删除发布后段时增加发布前版本

2024-05-15 03:32:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我将如何使用^{}(关于其调用和/或配置)来增加:

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回购协议中以usage question issue的形式提出了这个问题,但没有运气


Tags: ofa2releaseversionpostprepost0a3
1条回答
网友
1楼 · 发布于 2024-05-15 03:32:09

我们必须努力解决这个问题(在过去的日子里,我们是用原来的bumpversion,而不是更好的bump2version

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

说明

由于prepost都有一个字符串前缀和一个数字,我认为有必要将它们相应地拆分。例如,pre部分可以分为prekind(字符串)和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

测试

它们执行一系列的变异操作,以证明某些可能的变异。当然,您可以使用 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

输出(已评论):

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

相关问题 更多 >

    热门问题