# ChangeLog for games-arcade/gnome-nibbles
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*gnome-nibbles-3.16.1 (09 Aug 2015)
*gnome-nibbles-3.14.1 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org>
  +gnome-nibbles-3.14.1.ebuild, +gnome-nibbles-3.16.1.ebuild, +metadata.xml:
  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

  07 Sep 2015; Mikle Kolyada <zlogene@gentoo.org> gnome-nibbles-3.16.1.ebuild:
  amd64 stable wrt bug #551826

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

  12 Sep 2015; Agostino Sarubbo <ago@gentoo.org> gnome-nibbles-3.16.1.ebuild:
  x86 stable wrt bug #551826

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

*gnome-nibbles-3.18.2 (09 Nov 2015)

  09 Nov 2015; Pacho Ramos <pacho@gentoo.org> +gnome-nibbles-3.18.2.ebuild:
  Version bump

  Package-Manager: portage-2.2.24

  09 Nov 2015; Pacho Ramos <pacho@gentoo.org> -gnome-nibbles-3.14.1.ebuild:
  Drop old

  Package-Manager: portage-2.2.24

  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)

  21 Feb 2016; Pacho Ramos <pacho@gentoo.org> gnome-nibbles-3.18.2.ebuild:
  amd64 stable, bug 566378

  Package-Manager: portage-2.2.27
  RepoMan-Options: --include-arches="amd64"

  06 Mar 2016; Mikle Kolyada <zlogene@gentoo.org> gnome-nibbles-3.18.2.ebuild:
  x86 stable wrt bug #427546

  Package-Manager: portage-2.2.26

  25 Jun 2016; Pacho Ramos <pacho@gentoo.org> -gnome-nibbles-3.16.1.ebuild:
  Drop old

  Package-Manager: portage-2.3.0_rc1

*gnome-nibbles-3.20.1 (25 Jun 2016)

  25 Jun 2016; Pacho Ramos <pacho@gentoo.org> +gnome-nibbles-3.20.1.ebuild:
  Version bump

  Package-Manager: portage-2.3.0_rc1

  02 Jul 2016; Pacho Ramos <pacho@gentoo.org> -gnome-nibbles-3.20.1.ebuild:
  Drop old

  Package-Manager: portage-2.3.0_rc1

*gnome-nibbles-3.20.2.1 (02 Jul 2016)

  02 Jul 2016; Pacho Ramos <pacho@gentoo.org> +gnome-nibbles-3.20.2.1.ebuild:
  Version bump

  Package-Manager: portage-2.3.0_rc1

  04 Sep 2016; Gilles Dartiguelongue <eva@gentoo.org>
  gnome-nibbles-3.20.2.1.ebuild:
  raise libgames-support to >=1

  0.2 was available in overlay and does not provide needed symbols. Also
  librsvg is not needed anymore.

  Package-Manager: portage-2.3.0

  01 Oct 2016; Pacho Ramos <pacho@gentoo.org> gnome-nibbles-3.20.2.1.ebuild:
  amd64 stable, bug 587010

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

  01 Oct 2016; Pacho Ramos <pacho@gentoo.org> gnome-nibbles-3.20.2.1.ebuild:
  x86 stable, bug 587010

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

