# ChangeLog for dev-perl/MooseX-AttributeHelpers
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-perl/MooseX-AttributeHelpers/ChangeLog,v 1.8 2010/01/03 16:06:10 tove Exp $

*MooseX-AttributeHelpers-0.23 (03 Jan 2010)

  03 Jan 2010; Torsten Veller <tove@gentoo.org>
  +MooseX-AttributeHelpers-0.23.ebuild:
  Version bump

  12 Oct 2009; Torsten Veller <tove@gentoo.org>
  -MooseX-AttributeHelpers-0.21.ebuild:
  Cleanup

*MooseX-AttributeHelpers-0.22 (15 Sep 2009)

  15 Sep 2009; Torsten Veller <tove@gentoo.org>
  +MooseX-AttributeHelpers-0.22.ebuild:
  Version bump

  07 Sep 2009; Torsten Veller <tove@gentoo.org>
  -MooseX-AttributeHelpers-0.18.01.ebuild,
  -MooseX-AttributeHelpers-0.19.ebuild,
  -MooseX-AttributeHelpers-0.20.ebuild:
  Cleanup

*MooseX-AttributeHelpers-0.21 (20 Jul 2009)

  20 Jul 2009; Torsten Veller <tove@gentoo.org>
  +MooseX-AttributeHelpers-0.21.ebuild:
  Version bump

*MooseX-AttributeHelpers-0.20 (26 Jun 2009)

  26 Jun 2009; Torsten Veller <tove@gentoo.org>
  +MooseX-AttributeHelpers-0.20.ebuild:
  Version bump

*MooseX-AttributeHelpers-0.19 (15 Jun 2009)

  15 Jun 2009; Torsten Veller <tove@gentoo.org>
  +MooseX-AttributeHelpers-0.19.ebuild:
  Version bump

  09 Jun 2009; Torsten Veller <tove@gentoo.org>
  +MooseX-AttributeHelpers-0.18.01.ebuild, +metadata.xml:
  Initial import from perl-experimental. Ebuild from Michele Beltrame and
  Kent Fredric

*MooseX-AttributeHelpers-0.18.01 (07 Jun 2009)

  07 Jun 2009; Kent Fredric <kentfredric@gmail.com> metadata.xml,
  MooseX-AttributeHelpers-0.14.ebuild,
  +MooseX-AttributeHelpers-0.18.01.ebuild:
  Bumped to devel version
  Fixed depends/test on 0.14

*MooseX-AttributeHelpers-0.17 (17 Apr 2009)

  17 Apr 2009; Kent Fredric <kentfredric@gmail.com> metadata.xml,
  +MooseX-AttributeHelpers-0.17.ebuild:
  Bumping.

