I define a changelog as a document that, for every release, contains a section describing the changes in that release. I define releasenotes as the changes made in a specific release. Most notes below can be applied to both, but I'm just going to talk about changelogs. To keep it simple.

The problem

Changelogs are important! But there are some problems that comes with having a changelog.

  • Boring Keeping the changelog updated is boring!
  • Availability You may be required to make the changelog available to people who are not developers.
  • Reliability Some change may not be in the changelog, or some change may be there but not in the actual release.
  • Formatting Very few developers enjoy fiddling with text formatting!

Other solutions

There are some solutions, if you google it. What I was missing in the solutions that I found was:

  • Templating Companies may have very specific requirements on the formatting of the changelog.
  • Wiki integration I needed to publish the changelog in MediaWiki.

My solution

Is Git Changelog Lib. A library, Java, that create a changelog for you, using the information that is already in the GIT repository. The lib can be used:

The basic idea is to have library that gathers a data structure and supplies it to a Mustache template so that the changelog becomes completely customizable.

# Git Changelog changelog

Changelog of Git Changelog.
{{#tags}}
## {{name}}
 {{#issues}}
  {{#hasLink}}
### {{name}} [{{issue}}]({{link}}) {{title}}
  {{/hasLink}}
  {{^hasLink}}
### {{name}} {{title}}
  {{/hasLink}}
  {{#authors}}
* {{authorName}}
   {{#commits}}
[{{hash}}](https://server/{{hash}}) *{{commitTime}}*
{{{message}}}

   {{/commits}}

  {{/authors}}
 {{/issues}}
{{/tags}}

Some of the features included are:

  • Templating Using Mustache templates.
  • MediaWiki Integrated with MediaWiki to publish changelogs.
  • Jenkins plugin To publish the changelog on Jenkins summary page. Or let Jenkins create MediaWiki page or file in workspace.
  • Bitbucket Server plugin Adds a changelog in the repository page.
  • Gradle plugin To add a changelog task to the Gradle build.
  • Maven plugin To add a changelog task to the Maven build.