cloudstack (4.2.0) unstable; urgency=low

  * Update the version to 4.2.0 to be in sync with Maven (again)

 -- Wido den Hollander <wido@widodh.nl>  Tue, 14 May 2013 15:56:42 +0200

cloudstack (4.2.0-incubating-0.0.snapshot) unstable; urgency=low

  * Update the version to 4.2.0 to be in sync with Maven

 -- Wido den Hollander <wido@widodh.nl>  Wed, 13 Mar 2013 19:15:00 +0100

cloudstack (4.1.0-incubating-0.0.snapshot) unstable; urgency=low

  * Incorporate incubating into version, remove epoch

 -- Noa Resare <noa@spotify.com>  Tue, 05 Feb 2013 18:05:28 +0000

cloud (1:4.0.0-1) unstable; urgency=low

  * Bumping the version to 4.0.0

 -- Chip Childers <chipchilders@apache.org>  Fri, 5 Oct 2012 16:00:00 -0500

cloud (1:4.0.0-beta6) unstable; urgency=low

  * Bumping the version to 4.0 Beta 6

 -- Wido den Hollander <wido@widodh.nl>  Fri, 5 Oct 2012 11:41:17 +0200

cloud (1:4.0.0-beta1) unstable; urgency=low

  * Bumping the version to 4.0 Beta 1

 -- Wido den Hollander <wido@widodh.nl>  Wed, 26 Sep 2012 21:14:48 +0200

cloud (4.0.0-rc2) unstable; urgency=low

  * Bumping the version to 4.0 RC2

 -- Wido den Hollander <wido@widodh.nl>  Mon, 24 Sep 2012 11:30:29 +0200
 
cloud (4.0.0-rc1) unstable; urgency=low

  * Bumping the version to 4.0 RC1

 -- Wido den Hollander <wido@widodh.nl>  Fri, 17 Aug 2012 11:10:41 +0200

cloud (3.0.2) unstable; urgency=low

  * Bumping the package version to the latest release.

 -- Wido den Hollander <wido@widodh.nl>  Wed, 25 Jul 2012 14:53:31 +0200

cloud (2.2.2) unstable; urgency=low

  * Bumping version number for next CloudStack release

 -- Engineering <info@cloud.com>  Mon, 7 Mar 2011 11:19:34 -0700

cloud (2.1.97) unstable; urgency=low

  * Bumping version number for next CloudStack release

 -- Rudd-O <manuel@cloud.com>  Sat, 31 Jul 2010 19:09:54 -0700

cloud (2.0.97) unstable; urgency=low

  * Bumping version number for next CloudStack release

 -- Rudd-O <manuel@cloud.com>  Mon, 12 Jul 2010 14:01:41 -0700

cloud (2.0.2) unstable; urgency=low

  * Bumping version number for next CloudStack release

 -- Rudd-O <manuel@cloud.com>  Fri, 2 Jul 2010 19:55:41 -0700

cloud (2.0.0) unstable; urgency=low

  * Bumping version number for next CloudStack release

 -- Rudd-O <manuel@cloud.com>  Tue, 15 Jun 2010 12:10:05 -0700

cloud (1.9.14) unstable; urgency=low

  * Bumping version number for next CloudStack release

 -- Rudd-O <manuel@cloud.com>  Tue, 11 May 2010 14:46:14 -0700

cloud (1.9.12) unstable; urgency=low

  * Bumping version number for CloudStack RC4 release

 -- Rudd-O <manuel@cloud.com>  Mon, 3 May 2010 14:46:14 -0700

cloud (1.9.11) unstable; urgency=low

  * Bumping version number for CloudStack release

 -- Rudd-O <manuel@cloud.com>  Fri, 30 Apr 2010 15:08:38 -0700

cloud (1.9.10) unstable; urgency=low

  * Bumping version number for FOSS release

 -- Rudd-O <manuel@vmops.com>  Wed, 28 Apr 2010 22:09:48 -0700

cloud (1.9.9) unstable; urgency=low

  * Bumping version number for new build prereleases

 -- Rudd-O <manuel@vmops.com>  Mon, 12 Apr 2010 17:39:44 -0700

cloud (1.9.8) unstable; urgency=low

  * Branching RC3

 -- Rudd-O <manuel@vmops.com>  Mon, 05 Apr 2010 12:46:06 -0700

cloud (1.9.7) unstable; urgency=low

  * Initial Release.

 -- Rudd-O <manuel@vmops.com>  Thu, 25 Mar 2010 15:12:06 -0700
