reclass (1.4.1-1tcp4) xenial; urgency=medium

  * rebuild for xenial

 -- Filip Pytloun <filip@pytloun.cz>  Thu, 09 Jun 2016 13:59:21 +0200

reclass (1.4.1-1tcp3) trusty; urgency=medium

  * backport UndefinedVariableError fix from master

 -- Filip Pytloun <filip@pytloun.cz>  Fri, 16 Oct 2015 21:01:14 +0200

reclass (1.4.1-1tcp2) trusty; urgency=medium

  * make symlink to reclass-salt and reclass-ansible

 -- Filip Pytloun <filip@pytloun.cz>  Tue, 13 Oct 2015 14:07:54 +0200

reclass (1.4.1-1tcp1) trusty; urgency=medium

  * trusty build

 -- Filip Pytloun <filip@pytloun.cz>  Mon, 13 Jul 2015 10:19:47 +0200

reclass (1.4.1-1) unstable; urgency=low

  * New upstream release reverting the logging changes, which weren't ready
    yet.

 -- martin f. krafft <madduck@debian.org>  Tue, 28 Oct 2014 15:56:59 +0100

reclass (1.4-1) unstable; urgency=low

  * New upstream release (closes: #761952).
  * Compliant with Debian Policy 3.9.6.

 -- martin f. krafft <madduck@debian.org>  Sat, 25 Oct 2014 15:12:25 +0200

reclass (1.3-2) UNRELEASED; urgency=medium

  * Add myself as uploader.
  * Update Vcs-Git and Vcs-Browser URLs.
  * Improve long description of reclass-doc.
  * Have python-reclass depend on python-pkg-resources.
    Closes: bug#757423.

 -- Jonas Smedegaard <dr@jones.dk>  Wed, 17 Sep 2014 10:17:04 +0200

reclass (1.3-1) unstable; urgency=low

  * New upstream release.

 -- martin f. krafft <madduck@debian.org>  Sat, 01 Mar 2014 14:48:19 +0100

reclass (1.2.2-1) unstable; urgency=medium

  * New upstream release, fixing recursion of class mappings.
  * Updated Standards-Version to 3.9.5; no changes required.

 -- martin f. krafft <madduck@debian.org>  Fri, 27 Dec 2013 09:44:42 +1300

reclass (1.2.1-1) unstable; urgency=low

  * New upstream release, fixing the Salt adapter.

 -- martin f. krafft <madduck@debian.org>  Thu, 26 Dec 2013 17:08:15 +1300

reclass (1.2-1) unstable; urgency=low

  * New upstream release, with the following major changes:
    - class mappings
    - parameter interpolation across lists
    - classes caching
    - yaml_fs: nodes may reside in subdirectories
  * Remove dangling symlink from /usr/share/doc/reclass/html, add a note about
    documentation in reclass-doc (and online) to README.Debian instead.

 -- martin f. krafft <madduck@debian.org>  Wed, 28 Aug 2013 13:24:17 +0200

reclass (1.1-1) unstable; urgency=low

  * Add a build-dependency on python-yaml, thanks Jeroen Dekkers.
  * Fix inter-package dependencies (use binary:Version instead of
    source:Version), again thanks Jeroen Dekkers.
  * Move reclass binary package into 'admin' section.

 -- martin f. krafft <madduck@debian.org>  Wed, 28 Aug 2013 09:13:48 +0200

reclass (1.0.2-1) unstable; urgency=low

  * New upstream release (version number fix).
  * Split Python module into python-reclass.

 -- martin f. krafft <madduck@debian.org>  Tue, 27 Aug 2013 21:43:20 +0200

reclass (1.0.1-1) unstable; urgency=low

  * New upstream release (documentation updates only).

 -- martin f. krafft <madduck@debian.org>  Tue, 27 Aug 2013 18:07:39 +0200

reclass (1.0-1) unstable; urgency=low

  * Initial release (closes: #720922).

 -- martin f. krafft <madduck@debian.org>  Mon, 26 Aug 2013 10:52:31 +0200
