# ChangeLog for net-misc/goog-sitemapgen
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/goog-sitemapgen/ChangeLog,v 1.16 2014/08/10 20:44:05 slyfox Exp $

  10 Aug 2014; Sergei Trofimovich <slyfox@gentoo.org>
  goog-sitemapgen-1.5.ebuild:
  QA: drop trailing '.' from DESCRIPTION

  17 Oct 2012; Michael Palimaka <kensington@gentoo.org>
  -files/goog-sitemapgen-1.4.patch, -goog-sitemapgen-1.4.ebuild:
  Remove old.

  17 Oct 2012; Pawel Hajdan jr <phajdan.jr@gentoo.org>
  goog-sitemapgen-1.5.ebuild:
  x86 stable wrt bug #436320

  27 Sep 2012; Sergey Popov <pinkbyte@gentoo.org> goog-sitemapgen-1.5.ebuild:
  Stable for amd64 wrt bug #436320

  07 Aug 2012; Michael Palimaka <kensington@gentoo.org>
  goog-sitemapgen-1.5.ebuild:
  Tidy ebuild.

*goog-sitemapgen-1.5 (20 Mar 2012)

  20 Mar 2012; Pacho Ramos <pacho@gentoo.org> +files/goog-sitemapgen-1.5.patch,
  +goog-sitemapgen-1.5.ebuild:
  Version bump.

  05 Mar 2012; Markos Chandras <hwoarang@gentoo.org> metadata.xml:
  Remove betelgeuse

  05 Apr 2011; Arfrever Frehtes Taifersar Arahesis <arfrever@gentoo.org>
  goog-sitemapgen-1.4.ebuild:
  Use Python 2 (bug #315827).

  08 Feb 2010; Peter Volkov <pva@gentoo.org> goog-sitemapgen-1.4.ebuild:
  Add inherit eutils for epatch.

  03 May 2009; Markus Meier <maekke@gentoo.org> goog-sitemapgen-1.4.ebuild:
  amd64/x86 stable, bug #267820

  29 Apr 2009; Petteri Räty <betelgeuse@gentoo.org> metadata.xml:
  Take maintenance.

  12 Mar 2008; Christian Heim <phreak@gentoo.org> metadata.xml:
  Removing Josh Glover (jmglov, #206782) from metadata.xml.

  13 Feb 2008; Christian Faulhammer <opfer@gentoo.org>
  goog-sitemapgen-1.4.ebuild:
  quote variable and remove useless COPYING file

  13 Feb 2008; Christian Faulhammer <opfer@gentoo.org> metadata.xml:
  add no-herd

  20 Sep 2007; Christoph Mende <angelos@gentoo.org>
  goog-sitemapgen-1.4.ebuild:
  Added ~amd64 wrt bug #192464

*goog-sitemapgen-1.4 (23 Jun 2007)

  23 Jun 2007; Josh Glover <jmglov@gentoo.org>
  +files/goog-sitemapgen-1.4.patch, +metadata.xml,
  +goog-sitemapgen-1.4.ebuild:
  This package was submitted by Josh Glover in bug #182950
