# ChangeLog for dev-php/PHPonTrax
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-php/PHPonTrax/ChangeLog,v 1.3 2015/03/15 02:08:32 grknight Exp $

*PHPonTrax-0.18.0 (15 Mar 2015)

  15 Mar 2015; Brian Evans <grknight@gentoo.org> +PHPonTrax-0.18.0.ebuild,
  -PHPonTrax-0.17.0.ebuild:
  Version bump and fix repoman issues; drop old;  Upstream is rather morbid.
  This package may not last long

*PHPonTrax-0.17.0 (19 Jan 2012)

  19 Jan 2012; Matti Bickel <mabi@gentoo.org> +PHPonTrax-0.17.0.ebuild,
  -PHPonTrax-0.14.0.ebuild:
  version bump & remove apache2 dep (use any php capable webserver) & remove old

*PHPonTrax-0.14.0 (29 Nov 2007)

  29 Nov 2007; Markus Ullmann <jokey@gentoo.org> +metadata.xml,
  +PHPonTrax-0.14.0.ebuild:
  Initial import from project overlay

  17 Aug 2007; Jakub Moc <jakub@gentoo.org> +metadata.xml,
  +PHPonTrax-0.14.0.ebuild:
  New ebuild, Bug 139514.
