This repository contains a tool for automatic git repository versioning. It can be quickly introduced to any repository via Github Actions. If you ever felt too lazy to create individual tags for each change in your project, this tool will be handy.
- Automatic Semantic Versioning via Tags, File Modifications and Commit Messages.
- Automatic Changelog Entries Creation based on the Commit Messages.
- Easily adjustable.
- Easily extendible by creating a new class that overrides just a single abstract method.
Copy the GitVersioniser.yml to the .github/workflows/
in your repository!
- You can start start any line in message with
A:
(added),F:
(fixed),R:
(removed), ... etc., to tag the action you did, which will create corresponding changelog entry. - You can add
#major
,#minor
,#patch
, ... etc., to increment version of the repository. src\gitversioniser\config\patterns\commit_change_tags\changelog_category.py
If you would like to contribute, you are more than welcome by opening a new discussion on the issues or directly adding changes by opening new merge requests.
First and foremost - this tool will automatically create new semantic version tags for your repository. It will increment the build version by default, but you can choose what will get bumped using the increment tags. GitVersioniser will automatically add the version tag to the commit message in the default version, which gives an excellent overview of which files were when modified.
Using this repository out-of-the-box gives you a free, automatically managed CHANGELOG.md
file. It uses prefix tags that are one-letter shorthands of the joint summarization of a commit. This will encourage the developers to create tiny and descriptive commits. Additionally, there will be no more fights over the usage of imperative "Fix" or declarative "Fixed". Everyone can add the rest individually in their thoughts to their liking.
This repository is written to be understood as easily as reading documentation.
If you want to adjust the way of working to your liking, feel free to check the available options! Because we are the developers, I believe that the documentation for us is just duplicated code. Thus, I encourage you to trust the communicative method names and see the options through code for yourself! ๐ฑ
Hint: Think about the repository as a device that can be entirely customized by the flavor-modules you choose to plug-in. Simply copy the class name and replace it in yml config.
Version based on:
- Describe Changes:
- With Emoji (default)
- With Letters
- Null
- Format Version Tag:
- Place Version Tag:
- Summarize Changes:
- Push Origin Amend (default)
- Push Origin New Commit
- Versionise Files (default)
- Null
Changelog based on:
For more available options, check out the FEATURES.md
file!