# ChangeLog for media-radio/tlf
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*tlf-1.2.1 (09 Aug 2015)
*tlf-1.2.0 (09 Aug 2015)
*tlf-1.1.6 (09 Aug 2015)
*tlf-1.1.5 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +metadata.xml,
  +tlf-1.1.5.ebuild, +tlf-1.1.6.ebuild, +tlf-1.2.0.ebuild, +tlf-1.2.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

  10 Nov 2015; Thomas Beierlein <tomjbe@gentoo.org> -tlf-1.1.5.ebuild,
  -tlf-1.1.6.ebuild:
  drop old

  10 Nov 2015; Thomas Beierlein <tomjbe@gentoo.org> tlf-1.2.0.ebuild,
  tlf-1.2.1.ebuild:
  fix slot deps

*tlf-1.2.2 (10 Nov 2015)

  10 Nov 2015; Thomas Beierlein <tomjbe@gentoo.org> +tlf-1.2.2.ebuild:
  Version bump

  Package-Manager: portage-2.2.24

  02 Jan 2016; Agostino Sarubbo <ago@gentoo.org> tlf-1.2.2.ebuild:
  amd64 stable wrt bug #570360

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

  06 Jan 2016; Agostino Sarubbo <ago@gentoo.org> tlf-1.2.2.ebuild:
  x86 stable wrt bug #570360

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

*tlf-1.2.3 (22 Jan 2016)

  22 Jan 2016; Thomas Beierlein <tomjbe@gentoo.org> +tlf-1.2.3.ebuild:
  Version bump

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

  23 Apr 2016; Thomas Beierlein <tomjbe@gentoo.org> -tlf-1.2.0.ebuild,
  -tlf-1.2.1.ebuild:
  Drop old

  Package-Manager: portage-2.2.28

  23 Apr 2016; Thomas Beierlein <tomjbe@gentoo.org> tlf-1.2.2.ebuild,
  tlf-1.2.3.ebuild:
  Fix missing USE-dep [bug #580684] Thanks Thoralf.

  Package-Manager: portage-2.2.28

*tlf-1.2.4.1 (18 May 2016)

  18 May 2016; Thomas Beierlein <tomjbe@gentoo.org> +tlf-1.2.4.1.ebuild:
  Version bump

  Package-Manager: portage-2.3.0_rc1

*tlf-1.2.4.3 (18 Sep 2016)

  18 Sep 2016; Thomas Beierlein <tomjbe@gentoo.org> +tlf-1.2.4.3.ebuild:
  Minor version bump

  Package-Manager: portage-2.3.0

  26 Sep 2016; Agostino Sarubbo <ago@gentoo.org> tlf-1.2.4.1.ebuild:
  amd64 stable wrt bug #588694

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

