Tooling to create smart git commit messages.
Checkout the repository and create a virtual environment a venv folder.
python3 -m venv venvEverytime you interact with the project, activate your virtual environment.
source venv/bin/activateInstall development requirements with:
pip install -r requirements/development.txtTake a look at the cli at src/main.py
In order to run it, use:
python -m gitcommitTo run the tests use pytest in the repo-root.
pytest --cov gitcommitThis runs all tests and prints the current coverage to the terminal.
To build and install the programm run pip install -e .
You can access it via igit
Finding the right commit message is hard. Maybe it's even tempting to ignore them and add a placeholder instead. Every git user did the git commit -m '.' at some point in their career.
igit commit takes information from your issue tracker, the git repository and the staged code. Those are used to render a smart commit message template, helping the developer to fill them with meaningful and explaining content.
We built igit as a python package with focus on extensibility of information sources, e.g. the issue tracker or language support. To interface with git, we used pygit2. Template rendering is done via jinja2.
Information are gathered in dedicated modules and rendered with a template that can be configured for different git repositories similar to a .gitignorefile.
- missing or incomplete documentation for a package
- working on a subset of files with multiple people (happy merging!)
- working command line interface
- structured repository
We learned that collaborative work, given only a short amount of time, is challenging. But working in a small (local) team makes prioritizing issues and solving problems as they arise a lot easier. Someone with an idea is around to help.
The next steps involve building a igit command line interface, supporting:
- other programming languages
- different issue trackers (e.g. GitHub, Atlassian Bitbucket)
- more subcommands, helping the developers with changelog creation or merge request processing