Deployed in PyPi? TravisCI (linux) build ok? Apveyor (Windows) build? Test-case coverage report Auto-generated documentation status Dependencies needing updates? Code quality metric
pypi-repo:https://pypi.org/project/polyvers/, https://pypi.org/project/polyversion/
keywords:version-management, configuration-management, versioning, git, monorepos, tool, library
copyright:2018 JRC.C4(STU), European Commission (JRC)
license:EUPL 1.2

A Python 3.6+ command-line tool to manage PEP-440 version-ids of dependent sub-projects hosted in a Git monorepos, independently.

The key features are:

The leaf version scheme feature departs from the logic of Similar Tools. Specifically, when bumping the version of sub-project(s), this tool adds +2 tags and +1 commits:

  • one Version tag in-trunk like foo-proj-v0.1.0,

  • and another Release tag on a new out-of-trunk commit (leaf) like foo-proj-r0.1.0 (the new version-ids are engraved only in this release-commit):

    Leaf-commits & version/release tags for the two repo's sub-projects

    Leaf-commits & version/release-tags for the two sub-project’s, as shown in this repo’s git history.


The reason for this feature is to allow exchange code across branches (for the different sub-projects) without engravings getting in your way as merge-conflicts.

Additional capabilities and utilities:

  • It is still possible to use plain version tags (vtags) like v0.1.0, assuming you have a single project (called hereinafter a mono-project)
  • A separate Python 2.7+ polyversion project, which contains API to extract sub-project’s version from past tags (provided as a separate subproject so client programs do not get polyvers commands transitive dependencies). The library functions as a setuptools plugin.

Indices and tables