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

*crossfire-client-1.71.0 (09 Aug 2015)
*crossfire-client-1.70.0 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org>
  +crossfire-client-1.70.0.ebuild, +crossfire-client-1.71.0.ebuild,
  +files/crossfire-client-1.70.0-gold.patch, +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

*crossfire-client-1.71.0-r1 (06 Nov 2015)

  06 Nov 2015; Michael Sterrett <mr_bones_@gentoo.org>
  +crossfire-client-1.71.0-r1.ebuild:
  fix sound and lua config options; dep fixups

  Package-Manager: portage-2.2.20.1

  09 Dec 2015; Agostino Sarubbo <ago@gentoo.org>
  crossfire-client-1.71.0-r1.ebuild:
  amd64 stable wrt bug #567754

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

  25 Dec 2015; Agostino Sarubbo <ago@gentoo.org>
  crossfire-client-1.71.0-r1.ebuild:
  x86 stable wrt bug #567754

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

  26 Dec 2015; Agostino Sarubbo <ago@gentoo.org>
  crossfire-client-1.71.0-r1.ebuild:
  ppc stable wrt bug #567754

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

  29 Dec 2015; Michael Sterrett <mr_bones_@gentoo.org>
  -crossfire-client-1.70.0.ebuild, -crossfire-client-1.71.0.ebuild,
  -files/crossfire-client-1.70.0-gold.patch:
  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)

*crossfire-client-1.71.0-r2 (05 Aug 2016)

  05 Aug 2016; Austin English <wizardedit@gentoo.org>
  +crossfire-client-1.71.0-r2.ebuild:
  remove deprecated games eclass

  Also update to EAPI 6

  Gentoo-Bug: https://bugs.gentoo.org/574082

  Package-Manager: portage-2.3.0

