# ChangeLog for sys-devel/gnuconfig
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*gnuconfig-99999999 (09 Aug 2015)
*gnuconfig-20150727 (09 Aug 2015)
*gnuconfig-20150308 (09 Aug 2015)
*gnuconfig-20150304 (09 Aug 2015)
*gnuconfig-20140728 (09 Aug 2015)
*gnuconfig-20140212 (09 Aug 2015)
*gnuconfig-20131128 (09 Aug 2015)
*gnuconfig-20130516 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org>
  +files/99999999/0002-Add-x32-support-to-config.guess.patch,
  +files/99999999/0002-add-ps2-targets-to-config.sub.patch,
  +gnuconfig-20130516.ebuild, +gnuconfig-20131128.ebuild,
  +gnuconfig-20140212.ebuild, +gnuconfig-20140728.ebuild,
  +gnuconfig-20150304.ebuild, +gnuconfig-20150308.ebuild,
  +gnuconfig-20150727.ebuild, +gnuconfig-99999999.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

  24 Nov 2015; Mike Frysinger <vapier@gentoo.org> metadata.xml:
  standardize various metadata.xml style

  18 Dec 2015; Mike Frysinger <vapier@gentoo.org> -gnuconfig-20130516.ebuild,
  -gnuconfig-20131128.ebuild, -gnuconfig-20140212.ebuild,
  -gnuconfig-20140728.ebuild, -gnuconfig-20150304.ebuild:
  drop versions <20150308

  18 Dec 2015; Mike Frysinger <vapier@gentoo.org> gnuconfig-20150727.ebuild:
  stabilize 20150727 for all

*gnuconfig-20151214 (18 Dec 2015)

  18 Dec 2015; Mike Frysinger <vapier@gentoo.org> +gnuconfig-20151214.ebuild:
  version bump to 20151214

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Unify quoting in metadata.xml files for machine processing

  Force unified quoting in all metadata.xml files since lxml does not
  preserve original use of single and double quotes. Ensuring unified
  quoting before the process allows distinguishing the GLEP 67-related
  metadata.xml changes from unrelated quoting changes.

  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)

  20 Apr 2016; Mike Frysinger <vapier@gentoo.org> -gnuconfig-20150308.ebuild:
  drop old <20150727 versions

  20 Apr 2016; Mike Frysinger <vapier@gentoo.org> gnuconfig-20151214.ebuild:
  mark 20151214 stable for all

*gnuconfig-20160402 (20 Apr 2016)

  20 Apr 2016; Mike Frysinger <vapier@gentoo.org> +gnuconfig-20160402.ebuild:
  version bump to 20160402

  04 Jun 2016; Mike Frysinger <vapier@gentoo.org> gnuconfig-20150727.ebuild,
  gnuconfig-20151214.ebuild, gnuconfig-20160402.ebuild,
  gnuconfig-99999999.ebuild:
  savannah: switch to https URLs

