# ChangeLog for dev-ruby/ruby_parser
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*ruby_parser-3.7.1 (09 Aug 2015)
*ruby_parser-3.7.0 (09 Aug 2015)
*ruby_parser-3.6.6 (09 Aug 2015)
*ruby_parser-3.1.3 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +metadata.xml,
  +ruby_parser-3.1.3.ebuild, +ruby_parser-3.6.6.ebuild,
  +ruby_parser-3.7.0.ebuild, +ruby_parser-3.7.1.ebuild:
  proj/gentoo: Initial commit

  This commit represents a new era for Gentoo:
  Storing the gentoo-x86 tree in Git, as converted from CVS.

  This commit is the start of the NEW history.
  Any historical data is intended to be grafted onto this point.

  Creation process:
  1. Take final CVS checkout snapshot
  2. Remove ALL ChangeLog* files
  3. Transform all Manifests to thin
  4. Remove empty Manifests
  5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
  5.1. Do not touch files with -kb/-ko keyword flags.

  Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
  X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration
  tests
  X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this
  project
  X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo
  developer, wrote Git features for the migration
  X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve
  cvs2svn
  X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
  X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014
  work in migration
  X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
  X-Thanks: All of other Gentoo developers - many ideas and lots of paint on
  the bikeshed

  24 Aug 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Use https by default

  Convert all URLs for sites supporting encrypted connections from http to
  https

  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  24 Aug 2015; Mike Gilbert <floppym@gentoo.org> metadata.xml:
  Revert DOCTYPE SYSTEM https changes in metadata.xml

  repoman does not yet accept the https version.
  This partially reverts eaaface92ee81f30a6ac66fe7acbcc42c00dc450.

  Bug: https://bugs.gentoo.org/552720

  26 Aug 2015; Manuel Rüger <mrueg@gentoo.org> -ruby_parser-3.1.3.ebuild:
  Remove old

  Gentoo-Bug: #552244

  Package-Manager: portage-2.2.20.1

  23 Sep 2015; Agostino Sarubbo <ago@gentoo.org> ruby_parser-3.6.6.ebuild:
  ppc64 stable wrt bug #552244

  Package-Manager: portage-2.2.20.1
  RepoMan-Options: --include-arches="ppc64"

*ruby_parser-3.7.2 (27 Oct 2015)

  27 Oct 2015; Hans de Graaff <graaff@gentoo.org> +ruby_parser-3.7.2.ebuild:
  add 3.7.2

  Package-Manager: portage-2.2.20.1

  22 Jan 2016; Hans de Graaff <graaff@gentoo.org> -ruby_parser-3.7.0.ebuild,
  -ruby_parser-3.7.1.ebuild:
  cleanup

  Package-Manager: portage-2.2.26

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Replace all herds with appropriate projects (GLEP 67)

  Replace all uses of herd with appropriate project maintainers, or no
  maintainers in case of herds requested to be disbanded.

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Set appropriate maintainer types in metadata.xml (GLEP 67)

*ruby_parser-3.7.3 (03 Feb 2016)

  03 Feb 2016; Hans de Graaff <graaff@gentoo.org> +ruby_parser-3.7.3.ebuild:
  add 3.7.3

  Package-Manager: portage-2.2.26

*ruby_parser-3.8.1 (11 Mar 2016)

  11 Mar 2016; Hans de Graaff <graaff@gentoo.org> +ruby_parser-3.8.1.ebuild:
  add 3.8.1

  Package-Manager: portage-2.2.26

  10 Apr 2016; Manuel Rüger <mrueg@gentoo.org> ruby_parser-3.6.6.ebuild:
  Remove ruby19

  Package-Manager: portage-2.2.28

*ruby_parser-3.8.2 (06 May 2016)

  06 May 2016; Hans de Graaff <graaff@gentoo.org> +ruby_parser-3.8.2.ebuild:
  add 3.8.2

  Package-Manager: portage-2.2.26

  06 Aug 2016; Markus Meier <maekke@gentoo.org> ruby_parser-3.8.2.ebuild:
  arm stable, bug #589690

  Package-Manager: portage-2.3.0
  RepoMan-Options: --include-arches="arm"

  23 Sep 2016; Tobias Klausmann <klausman@gentoo.org>
  ruby_parser-3.8.2.ebuild:
  3.8.2-r0: add alpha keyword

  Gentoo-Bug: 589690

  02 Oct 2016; Jeroen Roovers <jer@gentoo.org> ruby_parser-3.8.2.ebuild:
  Stable for HPPA (bug #589690).

  Package-Manager: portage-2.3.1
  RepoMan-Options: --ignore-arches

*ruby_parser-3.8.3 (11 Oct 2016)

  11 Oct 2016; Hans de Graaff <graaff@gentoo.org> +ruby_parser-3.8.3.ebuild:
  add 3.8.3

  Package-Manager: portage-2.3.0

