Skip to content

Why hyper-bump-it?

There are multiple other version bumping tools available. Before creating hyper-bump-it, I had used bump2version and tbump. However, each time I would end up writing a script to wrap the tool to get the full functionality I desired.

This page covers some of the more significant differences between hyper-bump-it, bump2version, and tbump1. This includes some things that are not supported by hyper-bump-it2.

Key Differences

Branch Version Control Support

Both bump2version and tbump support committing and tagging the change in the local repository. However, it is common to not allow pushing directly to the default branch of a repository.

hyper-bump-it can be used to create a branch for the commit that updates the version. This branch can then be push and merged as part of a pull request.

Push Version Control Support

bump2version can only make changes to the local repository. tbump can push changes to the remote repository (and will do that by default).

hyper-bump-it can push changes to the remote repository, but will only do that when configured to do so.

Current Version from File

Most software build/release tools already have an authoritative place for the version to be stored. hyper-bump-it can be configured to extract the current version for that file (see Current Version). This has the added benefit of the configuration file not being edited every time version is updated.

This functionality is optional. Explicitly listing the current version in the configuration file is supported in the same way as done in bump2version and tbump.

TOML Configuration File

bump2version uses an INI configuration file. However, that file format does not have a standard specification and different implementation have varying support for some features.

hyper-bump-it and tbump use a TOML configuration files. The specification of this file format ensures that there are no ambiguities. It is straight forward for people to read and programs to parse. The requirement for quoting strings resolves potential issues that can arise when dealing with multi-line string and/or strings that contain comment characters.

Multiline Search & Replacement Patterns

hyper-bump-it and bump2version support search or replacement patterns that span multiple lines. This can be helpful for dealing with ambiguities in a file that needs to be updated or adding multiple lines of text as part of the update.

tbump does not have support for this feature.

Date Support

hyper-bump-it and bump2version support including date information in the search and replacement text. However, bump2version will always use the current date when looking in a file for a match. This means bump2version is not able to update text containing an older date. In contrast, when hyper-bump-it can match on arbitrary dates as part of the search text.

tbump does not have support for this feature.

Mercurial Support

bump2version can work with projects that use Mercurial or Git.

hyper-bump-it and tbump only support Git.

Custom Version Schemes

hyper-bump-it assumes that the full version is compatible with the semantic versioning specification.

bump2version and tbump allow for fully customized version. However, this doesn't mean that every file must contain the full version (see Format Patterns).

Table of Differences

Feature hyper-bump-it bump2version tbump
VCS Branching Yes No No
VCS Push Yes (opt-in) No Yes (opt-out)
Current Version from File Yes No No
Configuration File Format TOML INI TOML
Multiline Search & Replace Yes Yes No
Date Support Yes Partial (exact match) No
Git Yes Yes Yes
Mercurial No Yes No
Custom Version Schemes No Yes Yes

  1. As of the writing of this page (2023-02-20). 

  2. Support for these feature could be added in the future.