# ChangeLog for java-virtuals/javamail
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*javamail-1.0-r3 (09 Aug 2015)
*javamail-1.0-r2 (09 Aug 2015)
*javamail-1.0-r1 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +javamail-1.0-r1.ebuild,
  +javamail-1.0-r2.ebuild, +javamail-1.0-r3.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> javamail-1.0-r1.ebuild,
  javamail-1.0-r2.ebuild, javamail-1.0-r3.ebuild, 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

*javamail-1.0-r4 (10 Nov 2015)

  10 Nov 2015; Patrice Clement <monsieurp@gentoo.org> +javamail-1.0-r4.ebuild:
  EAPI 5 bump.

  Package-Manager: portage-2.2.20.1
  Signed-off-by: Patrice Clement <monsieurp@gentoo.org>

  10 Nov 2015; Patrice Clement <monsieurp@gentoo.org> javamail-1.0-r4.ebuild:
  Stable for amd64. Stable for ppc+ppc64+x86 using the ALLARCHES policy.

  Package-Manager: portage-2.2.20.1
  Signed-off-by: Patrice Clement <monsieurp@gentoo.org>

  10 Nov 2015; Patrice Clement <monsieurp@gentoo.org> -javamail-1.0-r1.ebuild,
  -javamail-1.0-r2.ebuild, -javamail-1.0-r3.ebuild:
  Clean up old.

  Package-Manager: portage-2.2.20.1
  Signed-off-by: Patrice Clement <monsieurp@gentoo.org>

  16 Jan 2016; James Le Cuirot <chewi@gentoo.org> javamail-1.0-r4.ebuild:
  Drop support for Java on ppc across the tree

  Sorry! *sniff*

  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)

