com.io7m.changelog 4.0.0-beta0011
com.io7m.changelog 4.0.0-beta0011 Documentation
Package Information
Orientation
Overview
The com.io7m.changelog package implements a schema for expressing humanly readable software changelogs and a set of Java functions for manipulating them and converting them to various output formats (plain text, XHTML, etc).
Installation
Source compilation
The project can be compiled and installed with Maven:
$ mvn -C clean install
Maven
Regular releases are made to the Central Repository, so it's possible to use the com.io7m.changelog package in your projects with the following Maven dependencies:
<dependency>
  <groupId>com.io7m.changelog</groupId>
  <artifactId>com.io7m.changelog-core</artifactId>
  <version>4.0.0-beta0011</version>
</dependency>
<dependency>
  <groupId>com.io7m.changelog</groupId>
  <artifactId>com.io7m.changelog-xom</artifactId>
  <version>4.0.0-beta0011</version>
</dependency>
<dependency>
  <groupId>com.io7m.changelog</groupId>
  <artifactId>com.io7m.changelog-text</artifactId>
  <version>4.0.0-beta0011</version>
</dependency>
All io7m.com packages use Semantic Versioning [0], which implies that it is always safe to use version ranges with an exclusive upper bound equal to the next major version - the API of the package will not change in a backwards-incompatible manner before the next major version.
Platform Specific Issues
There are currently no known platform-specific issues.
License
All files distributed with the com.io7m.changelog package are placed under the following license:
Copyright © 2014 <code@io7m.com> http://io7m.com

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        
Informal Guide To Changelogs
Overview
A changelog records a series of releases, each of which may be associated with a ticket system. A release consists of a series of changes with each change affecting zero or more tickets of the current ticket system.
Each change has a type, the intention being that backwards-incompatible software changes can be easily distinguished by their type.
Example
An example changelog is as follows:
<c:changelog xmlns:c="http://schemas.io7m.com/changelog/2.0.0">
  <c:project>io7m-changelog</c:project>

  <c:release ticket-system="com.io7m.fossil.changelog">
    <c:date>2014-04-17</c:date>
    <c:version>2.0.0</c:version>
    <c:item>
      <c:date>2014-04-17</c:date>
      <c:type-code-new/>
      <c:summary>Allow for zero or more releases in a file</c:summary>
    </c:item>
    <c:item>
      <c:date>2014-04-17</c:date>
      <c:type-code-change/>
      <c:summary>Do not allow xml:id on changelogs</c:summary>
    </c:item>
    <c:item>
      <c:date>2014-04-17</c:date>
      <c:type-code-new/>
      <c:summary>Allow multiple tickets per changelog item</c:summary>
    </c:item>
    <c:item>
      <c:date>2014-04-17</c:date>
      <c:type-code-change/>
      <c:summary>Redevelop package in Java, eliminate XSLT stylesheets</c:summary>
    </c:item>
    <c:item>
      <c:date>2014-04-17</c:date>
      <c:type-code-change/>
      <c:summary>Change schema URI and increment version to 2.0.0</c:summary>
    </c:item>
  </c:release>

  <c:release ticket-system="com.io7m.fossil.changelog">
    <c:date>2012-03-15</c:date>
    <c:version>1.0.0</c:version>
    <c:item>
      <c:date>2012-03-15</c:date>
      <c:type-code-new/>
      <c:summary>Initial release</c:summary>
    </c:item>
  </c:release>

  <c:ticket-system xml:id="com.io7m.fossil.changelog">
    <c:ticket-url>http://fossil.io7m.com/repo.cgi/io7m-changelog/tktview?name=</c:ticket-url>
  </c:ticket-system>
</c:changelog>
The above, when processed with the CChangelogTextWriter class will produce the following output:
2014-04-17 Release: io7m-changelog 2.0.0
2014-04-17 Code new: Allow for zero or more releases in a file
2014-04-17 Code change: Do not allow xml:id on changelogs
2014-04-17 Code new: Allow multiple tickets per changelog item
2014-04-17 Code change: Redevelop package in Java, eliminate XSLT stylesheets
2014-04-17 Code change: Change schema URI and increment version to 2.0.0
2012-03-15 Release: io7m-changelog 1.0.0
2012-03-15 Code new: Initial release
Maven plugin
Overview
The changelog package provides a Maven plugin for generating site pages for changelogs, complete with an Atom feed for releases.
Usage
The following should be placed in the reporting section of your project's pom.xml:
<plugin>
  <groupId>com.io7m.changelog</groupId>
  <artifactId>com.io7m.changelog-plugin</artifactId>
  <version>4.0.0-beta0011</version>
  <configuration>
    <file>README-CHANGES.xml</file>
    <feedAuthorEmail>contact@io7m.com</feedAuthorEmail>
    <feedAuthorName>io7m release robot</feedAuthorName>
  </configuration>
</plugin>
Where the file parameter specifies the path to an XML changelog relative to the current project root, and the feedAuthorEmail and feedAuthorName parameters specify the author email and author name that will appear in the generated Atom feed, respectively.
The plugin will generate files changes.html and releases.atom in the root of the generated site directory.
API Reference
Javadoc
API documentation for the package is provided via the included Javadoc.