Commit Rules

Main Branches

The main branches are master and develop as described here:


Please create a new branch for each issue. Also it would be a good idea to call the branch with the number of the issue and a short text, ie:

git checkout -b 77_crashonstart

Commit Message

We use conventional commits guideline as specified in Each commit must be for a reason, and we should have an issue for that, so we decided to add the issue number in the footer.


<type>[optional scope]: <description>

[optional body]

footer #issue


fix: active virtual machines can not be started

When a virtual machine is already active, do not try to start it and return


Show the branch in the message

Add the file prepare-commit-msg to the directory .git/hooks/ with this content:


Remember to give permission to execute, chmod a+x prepare-commit-msg

# Automatically adds branch name and branch description to every commit message.

NAME=$(git branch | grep '*' | sed 's/* //')
DESCRIPTION=$(git config branch."$NAME".description)
TEXT=$(cat "$1" | sed '/^#.*/d')

if [ -n "$TEXT" ]
    echo "$NAME"': '$(cat "$1" | sed '/^#.*/d') > "$1"
    if [ -n "$DESCRIPTION" ]
       echo "" >> "$1"
       echo $DESCRIPTION >> "$1"
    echo "Aborting commit due to empty commit message."
    exit 1


Before committing, make sure it passes all the tests. This should be run specially when changing the master and develop branches. Notice some tests require root access, so it must run with sudo.

perl Makefile.PL && make && sudo make test

If you want to run only one test:

perl Makefile.PL && make && sudo prove -b t/dir/file.t

Proper testing requires the Perl Module Test::SQL::Data, available here:

Contribution Guide

Check our contribution guide for more information about this topic.