A handy tool that help to write release/change log from git commit message
-
Requirement
- Go >= 1.12
-
Clone the repo
git clone https://github.com/TheDevsTech/awesome-release-logger.git cd awesome-release-logger -
Build
makeorgo build -o bin/ar-logger main.go
- Cross compilation is hard, and docker is help us in that way! Install docker and pull
docker image
docker pull karalabe/xgo-latestand install a go packagego get github.com/karalabe/xgo - For build most of the platforms binary use
xgo github.com/TheDevsTech/awesome-release-logger - Or specific platform
xgo --targets=linux/amd64 github.com/TheDevsTech/awesome-release-logger - After build is finished you should have all platforms binary in your current directory.
- More build details find here
- after build or download the binary just move it to
/usr/local/bini.e:mv bin/ar-logger /usr/local/bin/arl - restart your shell
- verify installation
which arloutput should be/usr/local/bin/arl
- type
arl -hin terminal for help. You should get below outputUsage of arl: -b get logs from the beginning -d string project directory path (default ".") -n write new release log file -o string output file path (default ".") -v show the version number - Generate release log
- go to your project directory and type
arlthere - Or you can run
arlcommand from anywhere and point your project directory like thisarl -d <project_directory_path - By default
release-log.mdfile will generate in current directory. If you want it to other location thenarl -o <output_directory_path - By default this logger prepend logs if file exists. If you need separate file just pass
-nflag i.e:arl -n - By default this logger get commit logs between latest tag & HEAD(if tag doesn't exists then its get from the beginning)
- If tags are exists and you want to generate a fresh log from the beginning then ad
-bflag i.earl -b
- go to your project directory and type
- ❗Conventional Commits❗
- For proper release log you must follow conventonal commit types in your commit message
- The commit message should be structured as follows:
<type>[optional scope]: <description> - Commit types
- fix: a commit of the type fix patches a bug in your codebase (this correlates with PATCH in semantic versioning).
- feat: a commit of the type feat introduces a new feature to the codebase (this correlates with MINOR in semantic versioning).
- breaking change: a commit that has a footer BREAKING CHANGE:, or appends a ! after the type/scope, introduces a breaking API change (correlating with MAJOR in semantic versioning).A breaking change can be part of commits of any type. e.g., a fix:, feat: & chore: types would all be valid, in addition to any other type.
- chore: Update something without impacting the user (ex: bump a dependency in package.json).
- For more details here