# ChangeLog for app-xemacs/clearcase
# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-xemacs/clearcase/ChangeLog,v 1.12 2008/03/19 19:20:09 graaff Exp $

  19 Mar 2008; Hans de Graaff <graaff@gentoo.org> metadata.xml:
  A herd should not be listed as maintainer

  21 Oct 2007; Hans de Graaff <graaff@gentoo.org> -clearcase-1.04.ebuild:
  Remove old version

  03 Jun 2007; Hans de Graaff <graaff@gentoo.org> clearcase-1.10.ebuild:
  Stable on amd64, ppc, ppc64, sparc, x86 as per #175560

  29 May 2007; Raúl Porcel <armin76@gentoo.org> clearcase-1.10.ebuild:
  alpha stable wrt #175560

  22 Feb 2007; Piotr Jaroszyński <peper@gentoo.org> ChangeLog:
  Transition to Manifest2.

*clearcase-1.10 (11 Nov 2006)

  11 Nov 2006; Hans de Graaff <graaff@gentoo.org> +metadata.xml,
  +clearcase-1.10.ebuild:
  Version bump with updated dependencies; add metadata.xml.

  02 Oct 2003; Aron Griffis <agriffis@gentoo.org> clearcase-1.04.ebuild:
  Stable on alpha

*clearcase-1.04 (16 Dec 2002)

  22 Feb 2003;  <rendhalver@gentoo.org> clearcase-1.04.ebuild :
  Add ~alpha to KEYWORDS

  16 Dec 2002; Rendhalver [Peter Brown] <rendhalver@gentoo.org> :
  Initial import.
