I’ve been using the CMF tool for the last one year and I think its simplicity is its potential. Basically it is a terminal tool developd in Go by Walmart Digital that helps you to standarize the commits log of your projects.
I’ve been using for the last year and a half approximatley and all I can say its very useful. We agreed with the team the configuration we want to use and defined a set of changes that applies in our case. Also we choose the Jira flow and we changed the values for the change
adding an emojis to make the commits a bit more funny to check them in the log.
You can install it via npm:
npm install -g go-cmf
or from Go:
go install github.com/walmartdigital/commit-message-formatter
After that, open a terminal and navigate to the root of the project you want to use it. Then type:
cmf init
You will need to select one of the flows and it will create a .cmf.yaml
file with the template of the selected one. You can edit that file in the way you want. The unique condition is that any variable you wanna use have to be defined using {{}}
. Example: {{CHANGE}}
it will prompt you asking the CHANGE you did and displaying the options you defined in the template.
Here is the .cmf.yaml
file that I’m using on this site:
PROMPT:
- KEY: "CHANGE"
LABEL: "Type of change"
OPTIONS:
- VALUE: "feat โจ"
DESC: "A new feature"
- VALUE: "fix ๐"
DESC: "A bug fix"
- VALUE: "test ๐จ"
DESC: "Adding missing tests or correcting wrong ones"
- VALUE: "style ๐"
DESC: "A code change to improve clean code"
- VALUE: "build-ci ๐ทโโ๏ธ"
DESC: "Changes that affect the build system and/or CI configuration files and scripts"
- VALUE: "refactor ๐จ"
DESC: "A code change"
- VALUE: "docs ๐"
DESC: "Documentation only changes"
- VALUE: "chore ๐"
DESC: "Changes that don't fit any of the options above"
- KEY: "MESSAGE"
LABEL: "Commit message"
TEMPLATE: "{{CHANGE}}: {{MESSAGE}}"