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

*coverage-3.7.1 (09 Aug 2015)
*coverage-3.7 (09 Aug 2015)
*coverage-3.6 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +coverage-3.6.ebuild,
  +coverage-3.7.ebuild, +coverage-3.7.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> coverage-3.6.ebuild,
  coverage-3.7.ebuild, coverage-3.7.1.ebuild:
  Use https by default

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

  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

*coverage-4.0 (21 Sep 2015)

  21 Sep 2015; Dirkjan Ochtman <djc@gentoo.org> +coverage-4.0.ebuild:
  version bump to 4.0

  Package-Manager: portage-2.2.20.1

*coverage-4.0-r1 (11 Oct 2015)

  11 Oct 2015; Justin Lecher <jlec@gentoo.org> +coverage-4.0-r1.ebuild:
  Add python3.5 support

  Package-Manager: portage-2.2.23
  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  14 Oct 2015; Michał Górny <mgorny@gentoo.org> coverage-4.0.ebuild,
  -coverage-4.0-r1.ebuild:
  dev-python/*: Restore keywords and un-revbump for py3.5

  Restore keywords that were removed unnecessarily, and collapse
  unnecessary revbumps on packages with added python3.5 support.

*coverage-4.0.1 (15 Oct 2015)

  15 Oct 2015; Justin Lecher <jlec@gentoo.org> +coverage-4.0.1.ebuild:
  Version Bump

  Package-Manager: portage-2.2.23
  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  19 Oct 2015; Justin Lecher <jlec@gentoo.org> coverage-4.0.1.ebuild:
  Add pypy* support

  Package-Manager: portage-2.2.23
  Signed-off-by: Justin Lecher <jlec@gentoo.org>

*coverage-4.0.2 (04 Nov 2015)

  04 Nov 2015; Justin Lecher <jlec@gentoo.org> +coverage-4.0.2.ebuild:
  Version Bump

  Package-Manager: portage-2.2.23
  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  11 Nov 2015; Justin Lecher <jlec@gentoo.org> coverage-3.6.ebuild,
  coverage-3.7.ebuild, coverage-3.7.1.ebuild, coverage-4.0.ebuild,
  coverage-4.0.1.ebuild, coverage-4.0.2.ebuild:
  Depend on threading support in python

  Package-Manager: portage-2.2.23
  Signed-off-by: Justin Lecher <jlec@gentoo.org>

*coverage-4.0.3 (28 Nov 2015)

  28 Nov 2015; Justin Lecher <jlec@gentoo.org> +coverage-4.0.3.ebuild:
  Version Bump

  Package-Manager: portage-2.2.25
  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  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)

  22 May 2016; Dirkjan Ochtman <djc@gentoo.org> -coverage-3.6.ebuild,
  -coverage-3.7.ebuild, -coverage-4.0.ebuild, -coverage-4.0.1.ebuild,
  -coverage-4.0.2.ebuild:
  remove old versions

  Package-Manager: portage-2.2.28

*coverage-4.1 (22 May 2016)

  22 May 2016; Dirkjan Ochtman <djc@gentoo.org> +coverage-4.1.ebuild:
  version bump to 4.1

  Package-Manager: portage-2.2.28

  17 Jul 2016; Tobias Klausmann <klausman@gentoo.org> coverage-4.1.ebuild:
  4.1-r0: add alpha keyword

  Gentoo-Bug: 588304

  18 Jul 2016; Markus Meier <maekke@gentoo.org> coverage-4.1.ebuild:
  arm stable, bug #588304

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

*coverage-4.2 (29 Jul 2016)

  29 Jul 2016; Dirkjan Ochtman <djc@gentoo.org> +coverage-4.2.ebuild:
  version bump to 4.2

  Package-Manager: portage-2.2.28

  26 Sep 2016; Agostino Sarubbo <ago@gentoo.org> coverage-4.1.ebuild:
  amd64 stable wrt bug #588304

  Package-Manager: portage-2.2.28
  RepoMan-Options: --include-arches="amd64"
  Signed-off-by: Agostino Sarubbo <ago@gentoo.org>

  02 Oct 2016; Jeroen Roovers <jer@gentoo.org> coverage-4.1.ebuild:
  Stable for HPPA PPC64 (bug #588304).

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

