---
# System prepended metadata

title: bumpversion
tags: [Python]

---

---
tags: Python
---
# bumpversion

[TOC]

以往在跳[版本號](https://semver.org/lang/zh-TW/)時，經常要去手動一一修改版本號，很容易漏掉某一個程式碼下的某一段版本號，因此我們需要 [bumpversion](https://pypi.org/project/bumpversion/) 來**更方便跳版本號**。

## 應用

1. 新建一個新的專案，並安裝 bumpversion 。

   ```shell
   $ pip install bumpversion
   ```

2. 新增 `.bumpversion.cfg` 配置 bumpversion 的[相關設定](https://github.com/peritus/bumpversion#configuration) 。

   ```
   [bumpversion]
   current_version = 0.1.0
   commit = True
   ```

   `commit = True` 表示跳版本號時會自動送出 commit 。
   
   `tag = True` 在這邊沒有設置的原因為：PET 目前大部分的部署都是透過 tag 來觸發，所以採用手動觸發的方式會比較保險。

3. 進行跳號 `$ bumpversion {major/minor/patch}` 。

   ```shell
   $ bumpversion patch
   ```

   此時 `.bumpversion.cfg` 內的 `current_version` 會變成 0.1.1 。

4. 假設有其他文件需要替換版本訊息，可以在 `.bumpversion.cfg` 內設定。

   ```
   [bumpversion]
   current_version = 0.1.0
   commit = True
   
   [bumpversion:file:demo.py]
   search = __version__ = '{current_version}'
   replace = __version__ = '{new_version}'
   ```

   `demo.py` 跳號前的內容：
   
   ```python
   __version__ = 0.1.1
   version = 0.1.1
   ```

   執行跳號就會去修改符合條件的部分。
   
   `demo.py` 跳號後的內容：
   
   ```python
   __version__ = 0.1.2
   version = 0.1.1
   ```